diff --git a/.idea/deployment.xml b/.idea/deployment.xml
new file mode 100644
index 0000000..598cfa6
--- /dev/null
+++ b/.idea/deployment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/php-test-framework.xml b/.idea/php-test-framework.xml
new file mode 100644
index 0000000..8e19676
--- /dev/null
+++ b/.idea/php-test-framework.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
new file mode 100644
index 0000000..e25e5f1
--- /dev/null
+++ b/.idea/php.xml
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..ce70d64
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,281 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $PROJECT_DIR$/management-panel/composer.json
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "associatedIndex": 4
+}
+
+
+
+
+
+ {
+ "keyToString": {
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "git-widget-placeholder": "master",
+ "last_opened_file_path": "E:/data-collection-terminal",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "vue.rearranger.settings.migration": "true"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1724720814509
+
+
+ 1724720814509
+
+
+
+
+
+
+
+ 1724721872017
+
+
+
+ 1724721872017
+
+
+
+ 1724721878854
+
+
+
+ 1724721878854
+
+
+
+ 1724722497361
+
+
+
+ 1724722497361
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..2ecb045
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "filament/spatie-laravel-settings-plugin": "^3.2"
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..8a9ffe3
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,7983 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "a5d82b72eee1504d2f808d7e5e2a499c",
+ "packages": [
+ {
+ "name": "anourvalar/eloquent-serialize",
+ "version": "1.2.23",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/AnourValar/eloquent-serialize.git",
+ "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f",
+ "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "laravel/framework": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.26",
+ "laravel/legacy-factories": "^1.1",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.5|^10.5",
+ "psalm/plugin-laravel": "^2.8",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "AnourValar\\EloquentSerialize\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Laravel Query Builder (Eloquent) serialization",
+ "homepage": "https://github.com/AnourValar/eloquent-serialize",
+ "keywords": [
+ "anourvalar",
+ "builder",
+ "copy",
+ "eloquent",
+ "job",
+ "laravel",
+ "query",
+ "querybuilder",
+ "queue",
+ "serializable",
+ "serialization",
+ "serialize"
+ ],
+ "support": {
+ "issues": "https://github.com/AnourValar/eloquent-serialize/issues",
+ "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.23"
+ },
+ "time": "2024-07-12T10:52:26+00:00"
+ },
+ {
+ "name": "blade-ui-kit/blade-heroicons",
+ "version": "2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/blade-ui-kit/blade-heroicons.git",
+ "reference": "a7c377a4ef88cd54712e3e15cbed30446820da0b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/a7c377a4ef88cd54712e3e15cbed30446820da0b",
+ "reference": "a7c377a4ef88cd54712e3e15cbed30446820da0b",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "blade-ui-kit/blade-icons": "^1.6",
+ "illuminate/support": "^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "BladeUI\\Heroicons\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "description": "A package to easily make use of Heroicons in your Laravel Blade views.",
+ "homepage": "https://github.com/blade-ui-kit/blade-heroicons",
+ "keywords": [
+ "Heroicons",
+ "blade",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/blade-ui-kit/blade-heroicons/issues",
+ "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/driesvints",
+ "type": "github"
+ },
+ {
+ "url": "https://www.paypal.com/paypalme/driesvints",
+ "type": "paypal"
+ }
+ ],
+ "time": "2024-07-16T07:00:01+00:00"
+ },
+ {
+ "name": "blade-ui-kit/blade-icons",
+ "version": "1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/blade-ui-kit/blade-icons.git",
+ "reference": "74275f44c71e815b85bf7cea66e3bf98c57fb7e4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/74275f44c71e815b85bf7cea66e3bf98c57fb7e4",
+ "reference": "74275f44c71e815b85bf7cea66e3bf98c57fb7e4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/view": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0",
+ "symfony/console": "^5.3|^6.0|^7.0",
+ "symfony/finder": "^5.3|^6.0|^7.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5.1",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "bin": [
+ "bin/blade-icons-generate"
+ ],
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Icons\\BladeIconsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "BladeUI\\Icons\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "description": "A package to easily make use of icons in your Laravel Blade views.",
+ "homepage": "https://github.com/blade-ui-kit/blade-icons",
+ "keywords": [
+ "blade",
+ "icons",
+ "laravel",
+ "svg"
+ ],
+ "support": {
+ "issues": "https://github.com/blade-ui-kit/blade-icons/issues",
+ "source": "https://github.com/blade-ui-kit/blade-icons"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/driesvints",
+ "type": "github"
+ },
+ {
+ "url": "https://www.paypal.com/paypalme/driesvints",
+ "type": "paypal"
+ }
+ ],
+ "time": "2024-07-29T21:49:30+00:00"
+ },
+ {
+ "name": "brick/math",
+ "version": "0.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/brick/math.git",
+ "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^9.0",
+ "vimeo/psalm": "5.0.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Brick\\Math\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Arbitrary-precision arithmetic library",
+ "keywords": [
+ "Arbitrary-precision",
+ "BigInteger",
+ "BigRational",
+ "arithmetic",
+ "bigdecimal",
+ "bignum",
+ "brick",
+ "math"
+ ],
+ "support": {
+ "issues": "https://github.com/brick/math/issues",
+ "source": "https://github.com/brick/math/tree/0.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/BenMorel",
+ "type": "github"
+ }
+ ],
+ "time": "2023-01-15T23:15:59+00:00"
+ },
+ {
+ "name": "carbonphp/carbon-doctrine-types",
+ "version": "2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
+ "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb",
+ "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<3.7.0 || >=4.0.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.7.0",
+ "nesbot/carbon": "^2.71.0 || ^3.0.0",
+ "phpunit/phpunit": "^10.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "KyleKatarn",
+ "email": "kylekatarnls@gmail.com"
+ }
+ ],
+ "description": "Types to use Carbon in Doctrine",
+ "keywords": [
+ "carbon",
+ "date",
+ "datetime",
+ "doctrine",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
+ "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-11T17:09:12+00:00"
+ },
+ {
+ "name": "danharrin/date-format-converter",
+ "version": "v0.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/danharrin/date-format-converter.git",
+ "reference": "7c31171bc981e48726729a5f3a05a2d2b63f0b1e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/danharrin/date-format-converter/zipball/7c31171bc981e48726729a5f3a05a2d2b63f0b1e",
+ "reference": "7c31171bc981e48726729a5f3a05a2d2b63f0b1e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/helpers.php",
+ "src/standards.php"
+ ],
+ "psr-4": {
+ "DanHarrin\\DateFormatConverter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dan Harrin",
+ "email": "dan@danharrin.com"
+ }
+ ],
+ "description": "Convert token-based date formats between standards.",
+ "homepage": "https://github.com/danharrin/date-format-converter",
+ "support": {
+ "issues": "https://github.com/danharrin/date-format-converter/issues",
+ "source": "https://github.com/danharrin/date-format-converter"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/danharrin",
+ "type": "github"
+ }
+ ],
+ "time": "2024-06-13T09:38:44+00:00"
+ },
+ {
+ "name": "danharrin/livewire-rate-limiting",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/danharrin/livewire-rate-limiting.git",
+ "reference": "bf16003f0d977b5a41071526d697eec94ac41735"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/bf16003f0d977b5a41071526d697eec94ac41735",
+ "reference": "bf16003f0d977b5a41071526d697eec94ac41735",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/support": "^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "livewire/livewire": "^3.0",
+ "livewire/volt": "^1.3",
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DanHarrin\\LivewireRateLimiting\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dan Harrin",
+ "email": "dan@danharrin.com"
+ }
+ ],
+ "description": "Apply rate limiters to Laravel Livewire actions.",
+ "homepage": "https://github.com/danharrin/livewire-rate-limiting",
+ "support": {
+ "issues": "https://github.com/danharrin/livewire-rate-limiting/issues",
+ "source": "https://github.com/danharrin/livewire-rate-limiting"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/danharrin",
+ "type": "github"
+ }
+ ],
+ "time": "2024-01-21T14:53:34+00:00"
+ },
+ {
+ "name": "dflydev/dot-access-data",
+ "version": "v3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+ "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f",
+ "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.42",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
+ "scrutinizer/ocular": "1.6.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dflydev\\DotAccessData\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dragonfly Development Inc.",
+ "email": "info@dflydev.com",
+ "homepage": "http://dflydev.com"
+ },
+ {
+ "name": "Beau Simensen",
+ "email": "beau@dflydev.com",
+ "homepage": "http://beausimensen.com"
+ },
+ {
+ "name": "Carlos Frutos",
+ "email": "carlos@kiwing.it",
+ "homepage": "https://github.com/cfrutos"
+ },
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com"
+ }
+ ],
+ "description": "Given a deep data structure, access data by dot notation.",
+ "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+ "keywords": [
+ "access",
+ "data",
+ "dot",
+ "notation"
+ ],
+ "support": {
+ "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
+ "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3"
+ },
+ "time": "2024-07-08T12:26:09+00:00"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "~7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/coding-standard": "^9",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "symfony/cache": "^4.4 || ^5.4 || ^6",
+ "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
+ "homepage": "https://www.doctrine-project.org/projects/cache.html",
+ "keywords": [
+ "abstraction",
+ "apcu",
+ "cache",
+ "caching",
+ "couchdb",
+ "memcached",
+ "php",
+ "redis",
+ "xcache"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/cache/issues",
+ "source": "https://github.com/doctrine/cache/tree/2.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-05-20T20:07:39+00:00"
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "3.8.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/b7411825cf7efb7e51f9791dea19d86e43b399a1",
+ "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "composer-runtime-api": "^2",
+ "doctrine/cache": "^1.11|^2.0",
+ "doctrine/deprecations": "^0.5.3|^1",
+ "doctrine/event-manager": "^1|^2",
+ "php": "^7.4 || ^8.0",
+ "psr/cache": "^1|^2|^3",
+ "psr/log": "^1|^2|^3"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "12.0.0",
+ "fig/log-test": "^1",
+ "jetbrains/phpstorm-stubs": "2023.1",
+ "phpstan/phpstan": "1.11.5",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpunit/phpunit": "9.6.19",
+ "psalm/plugin-phpunit": "0.18.4",
+ "slevomat/coding-standard": "8.13.1",
+ "squizlabs/php_codesniffer": "3.10.1",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/console": "^4.4|^5.4|^6.0|^7.0",
+ "vimeo/psalm": "4.30.0"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "bin": [
+ "bin/doctrine-dbal"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\DBAL\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
+ "homepage": "https://www.doctrine-project.org/projects/dbal.html",
+ "keywords": [
+ "abstraction",
+ "database",
+ "db2",
+ "dbal",
+ "mariadb",
+ "mssql",
+ "mysql",
+ "oci8",
+ "oracle",
+ "pdo",
+ "pgsql",
+ "postgresql",
+ "queryobject",
+ "sasql",
+ "sql",
+ "sqlite",
+ "sqlserver",
+ "sqlsrv"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/dbal/issues",
+ "source": "https://github.com/doctrine/dbal/tree/3.8.6"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-06-19T10:38:17+00:00"
+ },
+ {
+ "name": "doctrine/deprecations",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "phpstan/phpstan": "1.4.10 || 1.10.15",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psalm/plugin-phpunit": "0.18.4",
+ "psr/log": "^1 || ^2 || ^3",
+ "vimeo/psalm": "4.30.0 || 5.12.0"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+ "homepage": "https://www.doctrine-project.org/",
+ "support": {
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
+ },
+ "time": "2024-01-30T19:34:25+00:00"
+ },
+ {
+ "name": "doctrine/event-manager",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/event-manager.git",
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e",
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "conflict": {
+ "doctrine/common": "<2.9"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.8.8",
+ "phpunit/phpunit": "^10.5",
+ "vimeo/psalm": "^5.24"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
+ "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
+ "keywords": [
+ "event",
+ "event dispatcher",
+ "event manager",
+ "event system",
+ "events"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/event-manager/issues",
+ "source": "https://github.com/doctrine/event-manager/tree/2.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-22T20:47:39+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "2.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^11.0",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25 || ^5.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-18T20:23:39+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.5",
+ "psalm/plugin-phpunit": "^0.18.3",
+ "vimeo/psalm": "^5.21"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/3.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-05T11:56:58+00:00"
+ },
+ {
+ "name": "dragonmantank/cron-expression",
+ "version": "v3.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dragonmantank/cron-expression.git",
+ "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a",
+ "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2|^8.0",
+ "webmozart/assert": "^1.0"
+ },
+ "replace": {
+ "mtdowling/cron-expression": "^1.0"
+ },
+ "require-dev": {
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-webmozart-assert": "^1.0",
+ "phpunit/phpunit": "^7.0|^8.0|^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cron\\": "src/Cron/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Tankersley",
+ "email": "chris@ctankersley.com",
+ "homepage": "https://github.com/dragonmantank"
+ }
+ ],
+ "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
+ "keywords": [
+ "cron",
+ "schedule"
+ ],
+ "support": {
+ "issues": "https://github.com/dragonmantank/cron-expression/issues",
+ "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/dragonmantank",
+ "type": "github"
+ }
+ ],
+ "time": "2023-08-10T19:36:49+00:00"
+ },
+ {
+ "name": "egulias/email-validator",
+ "version": "4.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/egulias/EmailValidator.git",
+ "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e",
+ "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "doctrine/lexer": "^2.0 || ^3.0",
+ "php": ">=8.1",
+ "symfony/polyfill-intl-idn": "^1.26"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.2",
+ "vimeo/psalm": "^5.12"
+ },
+ "suggest": {
+ "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Egulias\\EmailValidator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Eduardo Gulias Davis"
+ }
+ ],
+ "description": "A library for validating emails against several RFCs",
+ "homepage": "https://github.com/egulias/EmailValidator",
+ "keywords": [
+ "email",
+ "emailvalidation",
+ "emailvalidator",
+ "validation",
+ "validator"
+ ],
+ "support": {
+ "issues": "https://github.com/egulias/EmailValidator/issues",
+ "source": "https://github.com/egulias/EmailValidator/tree/4.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/egulias",
+ "type": "github"
+ }
+ ],
+ "time": "2023-10-06T06:47:41+00:00"
+ },
+ {
+ "name": "filament/actions",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/actions.git",
+ "reference": "483557cc10c84c8536e12280da7855bf53c2a4e2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/actions/zipball/483557cc10c84c8536e12280da7855bf53c2a4e2",
+ "reference": "483557cc10c84c8536e12280da7855bf53c2a4e2",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "anourvalar/eloquent-serialize": "^1.2",
+ "filament/forms": "self.version",
+ "filament/infolists": "self.version",
+ "filament/notifications": "self.version",
+ "filament/support": "self.version",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "league/csv": "^9.14",
+ "openspout/openspout": "^4.23",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Actions\\ActionsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Filament\\Actions\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful action modals to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-10T12:07:37+00:00"
+ },
+ {
+ "name": "filament/filament",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/panels.git",
+ "reference": "c89fcc0ef9f9d9222cc25bcd4f7c327a23c8352c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/panels/zipball/c89fcc0ef9f9d9222cc25bcd4f7c327a23c8352c",
+ "reference": "c89fcc0ef9f9d9222cc25bcd4f7c327a23c8352c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "danharrin/livewire-rate-limiting": "^0.3|^1.0",
+ "filament/actions": "self.version",
+ "filament/forms": "self.version",
+ "filament/infolists": "self.version",
+ "filament/notifications": "self.version",
+ "filament/support": "self.version",
+ "filament/tables": "self.version",
+ "filament/widgets": "self.version",
+ "illuminate/auth": "^10.45|^11.0",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/cookie": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/http": "^10.45|^11.0",
+ "illuminate/routing": "^10.45|^11.0",
+ "illuminate/session": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\FilamentServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/global_helpers.php",
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Filament\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A collection of full-stack components for accelerated Laravel app development.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-10T12:07:43+00:00"
+ },
+ {
+ "name": "filament/forms",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/forms.git",
+ "reference": "f58cc7d23ef2df1594f13d01e8dd016ed9033803"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/forms/zipball/f58cc7d23ef2df1594f13d01e8dd016ed9033803",
+ "reference": "f58cc7d23ef2df1594f13d01e8dd016ed9033803",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "danharrin/date-format-converter": "^0.3",
+ "filament/actions": "self.version",
+ "filament/support": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/validation": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Forms\\FormsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Filament\\Forms\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful forms to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-10T12:07:33+00:00"
+ },
+ {
+ "name": "filament/infolists",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/infolists.git",
+ "reference": "82f96586e082905a7c86362e83309829f0d23bd0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/infolists/zipball/82f96586e082905a7c86362e83309829f0d23bd0",
+ "reference": "82f96586e082905a7c86362e83309829f0d23bd0",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/actions": "self.version",
+ "filament/support": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Infolists\\InfolistsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Filament\\Infolists\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful read-only infolists to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-10T12:07:27+00:00"
+ },
+ {
+ "name": "filament/notifications",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/notifications.git",
+ "reference": "a78b0be5e5b2a598e65ba62ae5cfbb3d464f6bbb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/notifications/zipball/a78b0be5e5b2a598e65ba62ae5cfbb3d464f6bbb",
+ "reference": "a78b0be5e5b2a598e65ba62ae5cfbb3d464f6bbb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/actions": "self.version",
+ "filament/support": "self.version",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/notifications": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Notifications\\NotificationsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Testing/Autoload.php"
+ ],
+ "psr-4": {
+ "Filament\\Notifications\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful notifications to any Livewire app.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-05-30T12:37:03+00:00"
+ },
+ {
+ "name": "filament/spatie-laravel-settings-plugin",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/spatie-laravel-settings-plugin.git",
+ "reference": "bdb75d72cb32545b29f7cf506f18b57730d6a2a7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/spatie-laravel-settings-plugin/zipball/bdb75d72cb32545b29f7cf506f18b57730d6a2a7",
+ "reference": "bdb75d72cb32545b29f7cf506f18b57730d6a2a7",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/filament": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-settings": "^2.2|^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\SpatieLaravelSettingsPluginServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Filament\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Filament support for `spatie/laravel-settings`.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-05T09:38:32+00:00"
+ },
+ {
+ "name": "filament/support",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/support.git",
+ "reference": "a62d52739d661042123da30fa2b8e64e46bef901"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/support/zipball/a62d52739d661042123da30fa2b8e64e46bef901",
+ "reference": "a62d52739d661042123da30fa2b8e64e46bef901",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "blade-ui-kit/blade-heroicons": "^2.2.1",
+ "doctrine/dbal": "^3.2",
+ "ext-intl": "*",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "livewire/livewire": "^3.4.10",
+ "php": "^8.1",
+ "ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0",
+ "spatie/color": "^1.5",
+ "spatie/invade": "^1.0|^2.0",
+ "spatie/laravel-package-tools": "^1.9",
+ "symfony/console": "^6.0|^7.0",
+ "symfony/html-sanitizer": "^6.1|^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Support\\SupportServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Filament\\Support\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Core helper methods and foundation code for all Filament packages.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-10T12:07:53+00:00"
+ },
+ {
+ "name": "filament/tables",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/tables.git",
+ "reference": "4debcc2b5dca501e6061a39c30565692c156ecd1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/tables/zipball/4debcc2b5dca501e6061a39c30565692c156ecd1",
+ "reference": "4debcc2b5dca501e6061a39c30565692c156ecd1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/actions": "self.version",
+ "filament/forms": "self.version",
+ "filament/support": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "kirschbaum-development/eloquent-power-joins": "^3.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Tables\\TablesServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Filament\\Tables\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful tables to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-10T12:07:59+00:00"
+ },
+ {
+ "name": "filament/widgets",
+ "version": "v3.2.87",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/widgets.git",
+ "reference": "0253f4312909a17e2d80b70021daae3f1659e7da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/widgets/zipball/0253f4312909a17e2d80b70021daae3f1659e7da",
+ "reference": "0253f4312909a17e2d80b70021daae3f1659e7da",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/support": "self.version",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Widgets\\WidgetsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Filament\\Widgets\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful dashboard widgets to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "time": "2024-06-05T09:38:52+00:00"
+ },
+ {
+ "name": "fruitcake/php-cors",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruitcake/php-cors.git",
+ "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e",
+ "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.4|^8.0",
+ "symfony/http-foundation": "^4.4|^5.4|^6"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "phpunit/phpunit": "^9",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fruitcake\\Cors\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fruitcake",
+ "homepage": "https://fruitcake.nl"
+ },
+ {
+ "name": "Barryvdh",
+ "email": "barryvdh@gmail.com"
+ }
+ ],
+ "description": "Cross-origin resource sharing library for the Symfony HttpFoundation",
+ "homepage": "https://github.com/fruitcake/php-cors",
+ "keywords": [
+ "cors",
+ "laravel",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/fruitcake/php-cors/issues",
+ "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://fruitcake.nl",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/barryvdh",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-20T15:07:15+00:00"
+ },
+ {
+ "name": "graham-campbell/result-type",
+ "version": "v1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/GrahamCampbell/Result-Type.git",
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862",
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GrahamCampbell\\ResultType\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "An Implementation Of The Result Type",
+ "keywords": [
+ "Graham Campbell",
+ "GrahamCampbell",
+ "Result Type",
+ "Result-Type",
+ "result"
+ ],
+ "support": {
+ "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-11-12T22:16:48+00:00"
+ },
+ {
+ "name": "guzzlehttp/uri-template",
+ "version": "v1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/uri-template.git",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "symfony/polyfill-php80": "^1.24"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15",
+ "uri-template/tests": "1.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\UriTemplate\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ }
+ ],
+ "description": "A polyfill class for uri_template of PHP",
+ "keywords": [
+ "guzzlehttp",
+ "uri-template"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/uri-template/issues",
+ "source": "https://github.com/guzzle/uri-template/tree/v1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-03T19:50:20+00:00"
+ },
+ {
+ "name": "kirschbaum-development/eloquent-power-joins",
+ "version": "3.5.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
+ "reference": "fc8bb379f062cd120ffab20a6913ad824c3366d8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/fc8bb379f062cd120ffab20a6913ad824c3366d8",
+ "reference": "fc8bb379f062cd120ffab20a6913ad824c3366d8",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/database": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "laravel/legacy-factories": "^1.0@dev",
+ "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^8.0|^9.0|^10.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Kirschbaum\\PowerJoins\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Luis Dalmolin",
+ "email": "luis.nh@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "The Laravel magic applied to joins.",
+ "homepage": "https://github.com/kirschbaum-development/eloquent-power-joins",
+ "keywords": [
+ "eloquent",
+ "join",
+ "laravel",
+ "mysql"
+ ],
+ "support": {
+ "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
+ "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.4"
+ },
+ "time": "2024-03-26T19:12:33+00:00"
+ },
+ {
+ "name": "laravel/framework",
+ "version": "v10.48.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/framework.git",
+ "reference": "590afea38e708022662629fbf5184351fa82cf08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/590afea38e708022662629fbf5184351fa82cf08",
+ "reference": "590afea38e708022662629fbf5184351fa82cf08",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
+ "composer-runtime-api": "^2.2",
+ "doctrine/inflector": "^2.0.5",
+ "dragonmantank/cron-expression": "^3.3.2",
+ "egulias/email-validator": "^3.2.1|^4.0",
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "ext-session": "*",
+ "ext-tokenizer": "*",
+ "fruitcake/php-cors": "^1.2",
+ "guzzlehttp/uri-template": "^1.0",
+ "laravel/prompts": "^0.1.9",
+ "laravel/serializable-closure": "^1.3",
+ "league/commonmark": "^2.2.1",
+ "league/flysystem": "^3.8.0",
+ "monolog/monolog": "^3.0",
+ "nesbot/carbon": "^2.67",
+ "nunomaduro/termwind": "^1.13",
+ "php": "^8.1",
+ "psr/container": "^1.1.1|^2.0.1",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "ramsey/uuid": "^4.7",
+ "symfony/console": "^6.2",
+ "symfony/error-handler": "^6.2",
+ "symfony/finder": "^6.2",
+ "symfony/http-foundation": "^6.4",
+ "symfony/http-kernel": "^6.2",
+ "symfony/mailer": "^6.2",
+ "symfony/mime": "^6.2",
+ "symfony/process": "^6.2",
+ "symfony/routing": "^6.2",
+ "symfony/uid": "^6.2",
+ "symfony/var-dumper": "^6.2",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.5",
+ "vlucas/phpdotenv": "^5.4.1",
+ "voku/portable-ascii": "^2.0"
+ },
+ "conflict": {
+ "carbonphp/carbon-doctrine-types": ">=3.0",
+ "doctrine/dbal": ">=4.0",
+ "mockery/mockery": "1.6.8",
+ "phpunit/phpunit": ">=11.0.0",
+ "tightenco/collect": "<5.5.33"
+ },
+ "provide": {
+ "psr/container-implementation": "1.1|2.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0"
+ },
+ "replace": {
+ "illuminate/auth": "self.version",
+ "illuminate/broadcasting": "self.version",
+ "illuminate/bus": "self.version",
+ "illuminate/cache": "self.version",
+ "illuminate/collections": "self.version",
+ "illuminate/conditionable": "self.version",
+ "illuminate/config": "self.version",
+ "illuminate/console": "self.version",
+ "illuminate/container": "self.version",
+ "illuminate/contracts": "self.version",
+ "illuminate/cookie": "self.version",
+ "illuminate/database": "self.version",
+ "illuminate/encryption": "self.version",
+ "illuminate/events": "self.version",
+ "illuminate/filesystem": "self.version",
+ "illuminate/hashing": "self.version",
+ "illuminate/http": "self.version",
+ "illuminate/log": "self.version",
+ "illuminate/macroable": "self.version",
+ "illuminate/mail": "self.version",
+ "illuminate/notifications": "self.version",
+ "illuminate/pagination": "self.version",
+ "illuminate/pipeline": "self.version",
+ "illuminate/process": "self.version",
+ "illuminate/queue": "self.version",
+ "illuminate/redis": "self.version",
+ "illuminate/routing": "self.version",
+ "illuminate/session": "self.version",
+ "illuminate/support": "self.version",
+ "illuminate/testing": "self.version",
+ "illuminate/translation": "self.version",
+ "illuminate/validation": "self.version",
+ "illuminate/view": "self.version"
+ },
+ "require-dev": {
+ "ably/ably-php": "^1.0",
+ "aws/aws-sdk-php": "^3.235.5",
+ "doctrine/dbal": "^3.5.1",
+ "ext-gmp": "*",
+ "fakerphp/faker": "^1.21",
+ "guzzlehttp/guzzle": "^7.5",
+ "league/flysystem-aws-s3-v3": "^3.0",
+ "league/flysystem-ftp": "^3.0",
+ "league/flysystem-path-prefixing": "^3.3",
+ "league/flysystem-read-only": "^3.3",
+ "league/flysystem-sftp-v3": "^3.0",
+ "mockery/mockery": "^1.5.1",
+ "nyholm/psr7": "^1.2",
+ "orchestra/testbench-core": "^8.23.4",
+ "pda/pheanstalk": "^4.0",
+ "phpstan/phpstan": "^1.4.7",
+ "phpunit/phpunit": "^10.0.7",
+ "predis/predis": "^2.0.2",
+ "symfony/cache": "^6.2",
+ "symfony/http-client": "^6.2.4",
+ "symfony/psr-http-message-bridge": "^2.0"
+ },
+ "suggest": {
+ "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
+ "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).",
+ "brianium/paratest": "Required to run tests in parallel (^6.0).",
+ "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).",
+ "ext-apcu": "Required to use the APC cache driver.",
+ "ext-fileinfo": "Required to use the Filesystem class.",
+ "ext-ftp": "Required to use the Flysystem FTP driver.",
+ "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
+ "ext-memcached": "Required to use the memcache cache driver.",
+ "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.",
+ "ext-pdo": "Required to use all database features.",
+ "ext-posix": "Required to use all features of the queue worker.",
+ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
+ "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
+ "filp/whoops": "Required for friendly error pages in development (^2.14.3).",
+ "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).",
+ "laravel/tinker": "Required to use the tinker console command (^2.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
+ "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
+ "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
+ "league/flysystem-read-only": "Required to use read-only disks (^3.3)",
+ "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
+ "mockery/mockery": "Required to use mocking (^1.5.1).",
+ "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
+ "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
+ "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).",
+ "predis/predis": "Required to use the predis connector (^2.0.2).",
+ "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^6.2).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).",
+ "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).",
+ "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).",
+ "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "10.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Illuminate/Collections/helpers.php",
+ "src/Illuminate/Events/functions.php",
+ "src/Illuminate/Filesystem/functions.php",
+ "src/Illuminate/Foundation/helpers.php",
+ "src/Illuminate/Support/helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\": "src/Illuminate/",
+ "Illuminate\\Support\\": [
+ "src/Illuminate/Macroable/",
+ "src/Illuminate/Collections/",
+ "src/Illuminate/Conditionable/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Laravel Framework.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "framework",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2024-05-28T15:46:19+00:00"
+ },
+ {
+ "name": "laravel/prompts",
+ "version": "v0.1.23",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/prompts.git",
+ "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
+ "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "illuminate/collections": "^10.0|^11.0",
+ "php": "^8.1",
+ "symfony/console": "^6.2|^7.0"
+ },
+ "conflict": {
+ "illuminate/console": ">=10.17.0 <10.25.0",
+ "laravel/framework": ">=10.17.0 <10.25.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5",
+ "pestphp/pest": "^2.3",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-mockery": "^1.1"
+ },
+ "suggest": {
+ "ext-pcntl": "Required for the spinner to be animated."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Laravel\\Prompts\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Add beautiful and user-friendly forms to your command-line applications.",
+ "support": {
+ "issues": "https://github.com/laravel/prompts/issues",
+ "source": "https://github.com/laravel/prompts/tree/v0.1.23"
+ },
+ "time": "2024-05-27T13:53:20+00:00"
+ },
+ {
+ "name": "laravel/serializable-closure",
+ "version": "v1.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/serializable-closure.git",
+ "reference": "3dbf8a8e914634c48d389c1234552666b3d43754"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754",
+ "reference": "3dbf8a8e914634c48d389c1234552666b3d43754",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.3|^8.0"
+ },
+ "require-dev": {
+ "nesbot/carbon": "^2.61",
+ "pestphp/pest": "^1.21.3",
+ "phpstan/phpstan": "^1.8.2",
+ "symfony/var-dumper": "^5.4.11"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\SerializableClosure\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ },
+ {
+ "name": "Nuno Maduro",
+ "email": "nuno@laravel.com"
+ }
+ ],
+ "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
+ "keywords": [
+ "closure",
+ "laravel",
+ "serializable"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/serializable-closure/issues",
+ "source": "https://github.com/laravel/serializable-closure"
+ },
+ "time": "2023-11-08T14:08:06+00:00"
+ },
+ {
+ "name": "league/commonmark",
+ "version": "2.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/commonmark.git",
+ "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf",
+ "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "league/config": "^1.1.1",
+ "php": "^7.4 || ^8.0",
+ "psr/event-dispatcher": "^1.0",
+ "symfony/deprecation-contracts": "^2.1 || ^3.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
+ "cebe/markdown": "^1.0",
+ "commonmark/cmark": "0.30.3",
+ "commonmark/commonmark.js": "0.30.0",
+ "composer/package-versions-deprecated": "^1.8",
+ "embed/embed": "^4.4",
+ "erusev/parsedown": "^1.0",
+ "ext-json": "*",
+ "github/gfm": "0.29.0",
+ "michelf/php-markdown": "^1.4 || ^2.0",
+ "nyholm/psr7": "^1.5",
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
+ "scrutinizer/ocular": "^1.8.1",
+ "symfony/finder": "^5.3 | ^6.0 || ^7.0",
+ "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0",
+ "unleashedtech/php-coding-standard": "^3.1.1",
+ "vimeo/psalm": "^4.24.0 || ^5.0.0"
+ },
+ "suggest": {
+ "symfony/yaml": "v2.3+ required if using the Front Matter extension"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\CommonMark\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
+ "homepage": "https://commonmark.thephpleague.com",
+ "keywords": [
+ "commonmark",
+ "flavored",
+ "gfm",
+ "github",
+ "github-flavored",
+ "markdown",
+ "md",
+ "parser"
+ ],
+ "support": {
+ "docs": "https://commonmark.thephpleague.com/",
+ "forum": "https://github.com/thephpleague/commonmark/discussions",
+ "issues": "https://github.com/thephpleague/commonmark/issues",
+ "rss": "https://github.com/thephpleague/commonmark/releases.atom",
+ "source": "https://github.com/thephpleague/commonmark"
+ },
+ "funding": [
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-02T11:59:32+00:00"
+ },
+ {
+ "name": "league/config",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/config.git",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "dflydev/dot-access-data": "^3.0.1",
+ "nette/schema": "^1.2",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.5",
+ "scrutinizer/ocular": "^1.8.1",
+ "unleashedtech/php-coding-standard": "^3.1",
+ "vimeo/psalm": "^4.7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Config\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Define configuration arrays with strict schemas and access values with dot notation",
+ "homepage": "https://config.thephpleague.com",
+ "keywords": [
+ "array",
+ "config",
+ "configuration",
+ "dot",
+ "dot-access",
+ "nested",
+ "schema"
+ ],
+ "support": {
+ "docs": "https://config.thephpleague.com/",
+ "issues": "https://github.com/thephpleague/config/issues",
+ "rss": "https://github.com/thephpleague/config/releases.atom",
+ "source": "https://github.com/thephpleague/config"
+ },
+ "funding": [
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ }
+ ],
+ "time": "2022-12-11T20:36:23+00:00"
+ },
+ {
+ "name": "league/csv",
+ "version": "9.16.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/csv.git",
+ "reference": "998280c6c34bd67d8125fdc8b45bae28d761b440"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/csv/zipball/998280c6c34bd67d8125fdc8b45bae28d761b440",
+ "reference": "998280c6c34bd67d8125fdc8b45bae28d761b440",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^8.1.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^2.2.2",
+ "ext-dom": "*",
+ "ext-xdebug": "*",
+ "friendsofphp/php-cs-fixer": "^3.57.1",
+ "phpbench/phpbench": "^1.2.15",
+ "phpstan/phpstan": "^1.11.1",
+ "phpstan/phpstan-deprecation-rules": "^1.2.0",
+ "phpstan/phpstan-phpunit": "^1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.6.0",
+ "phpunit/phpunit": "^10.5.16 || ^11.1.3",
+ "symfony/var-dumper": "^6.4.6 || ^7.0.7"
+ },
+ "suggest": {
+ "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes",
+ "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters",
+ "ext-mbstring": "Needed to ease transcoding CSV using mb stream filters"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "League\\Csv\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://github.com/nyamsprod/",
+ "role": "Developer"
+ }
+ ],
+ "description": "CSV data manipulation made easy in PHP",
+ "homepage": "https://csv.thephpleague.com",
+ "keywords": [
+ "convert",
+ "csv",
+ "export",
+ "filter",
+ "import",
+ "read",
+ "transform",
+ "write"
+ ],
+ "support": {
+ "docs": "https://csv.thephpleague.com",
+ "issues": "https://github.com/thephpleague/csv/issues",
+ "rss": "https://github.com/thephpleague/csv/releases.atom",
+ "source": "https://github.com/thephpleague/csv"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2024-05-24T11:04:54+00:00"
+ },
+ {
+ "name": "league/flysystem",
+ "version": "3.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c",
+ "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "league/flysystem-local": "^3.0.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
+ },
+ "conflict": {
+ "async-aws/core": "<1.19.0",
+ "async-aws/s3": "<1.14.0",
+ "aws/aws-sdk-php": "3.209.31 || 3.210.0",
+ "guzzlehttp/guzzle": "<7.0",
+ "guzzlehttp/ringphp": "<1.1.1",
+ "phpseclib/phpseclib": "3.0.15",
+ "symfony/http-client": "<5.2"
+ },
+ "require-dev": {
+ "async-aws/s3": "^1.5 || ^2.0",
+ "async-aws/simple-s3": "^1.1 || ^2.0",
+ "aws/aws-sdk-php": "^3.295.10",
+ "composer/semver": "^3.0",
+ "ext-fileinfo": "*",
+ "ext-ftp": "*",
+ "ext-mongodb": "^1.3",
+ "ext-zip": "*",
+ "friendsofphp/php-cs-fixer": "^3.5",
+ "google/cloud-storage": "^1.23",
+ "guzzlehttp/psr7": "^2.6",
+ "microsoft/azure-storage-blob": "^1.1",
+ "mongodb/mongodb": "^1.2",
+ "phpseclib/phpseclib": "^3.0.36",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.5.11|^10.0",
+ "sabre/dav": "^4.6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "File storage abstraction for PHP",
+ "keywords": [
+ "WebDAV",
+ "aws",
+ "cloud",
+ "file",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "s3",
+ "sftp",
+ "storage"
+ ],
+ "support": {
+ "issues": "https://github.com/thephpleague/flysystem/issues",
+ "source": "https://github.com/thephpleague/flysystem/tree/3.28.0"
+ },
+ "time": "2024-05-22T10:09:12+00:00"
+ },
+ {
+ "name": "league/flysystem-local",
+ "version": "3.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem-local.git",
+ "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/13f22ea8be526ea58c2ddff9e158ef7c296e4f40",
+ "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "league/flysystem": "^3.0.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\Local\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Local filesystem adapter for Flysystem.",
+ "keywords": [
+ "Flysystem",
+ "file",
+ "files",
+ "filesystem",
+ "local"
+ ],
+ "support": {
+ "source": "https://github.com/thephpleague/flysystem-local/tree/3.28.0"
+ },
+ "time": "2024-05-06T20:05:52+00:00"
+ },
+ {
+ "name": "league/mime-type-detection",
+ "version": "1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/mime-type-detection.git",
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "phpstan/phpstan": "^0.12.68",
+ "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\MimeTypeDetection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Mime-type detection for Flysystem",
+ "support": {
+ "issues": "https://github.com/thephpleague/mime-type-detection/issues",
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-28T23:22:08+00:00"
+ },
+ {
+ "name": "league/uri",
+ "version": "7.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/uri.git",
+ "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5",
+ "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "league/uri-interfaces": "^7.3",
+ "php": "^8.1"
+ },
+ "conflict": {
+ "league/uri-schemes": "^1.0"
+ },
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-fileinfo": "to create Data URI from file contennts",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
+ "league/uri-components": "Needed to easily manipulate URI objects components",
+ "php-64bit": "to improve IPV4 host parsing",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "URI manipulation library",
+ "homepage": "https://uri.thephpleague.com",
+ "keywords": [
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "middleware",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "uri-template",
+ "url",
+ "ws"
+ ],
+ "support": {
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri/tree/7.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2023-12-01T06:24:25+00:00"
+ },
+ {
+ "name": "league/uri-interfaces",
+ "version": "7.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/uri-interfaces.git",
+ "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3",
+ "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^8.1",
+ "psr/http-factory": "^1",
+ "psr/http-message": "^1.1 || ^2.0"
+ },
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "php-64bit": "to improve IPV4 host parsing",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "Common interfaces and classes for URI representation and interaction",
+ "homepage": "https://uri.thephpleague.com",
+ "keywords": [
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "url",
+ "ws"
+ ],
+ "support": {
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2023-11-24T15:40:42+00:00"
+ },
+ {
+ "name": "livewire/livewire",
+ "version": "v3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/livewire/livewire.git",
+ "reference": "72e900825c560f0e4e620185b26c5441a8914435"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/livewire/livewire/zipball/72e900825c560f0e4e620185b26c5441a8914435",
+ "reference": "72e900825c560f0e4e620185b26c5441a8914435",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/database": "^10.0|^11.0",
+ "illuminate/routing": "^10.0|^11.0",
+ "illuminate/support": "^10.0|^11.0",
+ "illuminate/validation": "^10.0|^11.0",
+ "league/mime-type-detection": "^1.9",
+ "php": "^8.1",
+ "symfony/console": "^6.0|^7.0",
+ "symfony/http-kernel": "^6.2|^7.0"
+ },
+ "require-dev": {
+ "calebporzio/sushi": "^2.1",
+ "laravel/framework": "^10.15.0|^11.0",
+ "laravel/prompts": "^0.1.6",
+ "mockery/mockery": "^1.3.1",
+ "orchestra/testbench": "^8.21.0|^9.0",
+ "orchestra/testbench-dusk": "^8.24|^9.1",
+ "phpunit/phpunit": "^10.4",
+ "psy/psysh": "^0.11.22|^0.12"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Livewire\\LivewireServiceProvider"
+ ],
+ "aliases": {
+ "Livewire": "Livewire\\Livewire"
+ }
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Livewire\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Caleb Porzio",
+ "email": "calebporzio@gmail.com"
+ }
+ ],
+ "description": "A front-end framework for Laravel.",
+ "support": {
+ "issues": "https://github.com/livewire/livewire/issues",
+ "source": "https://github.com/livewire/livewire/tree/v3.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/livewire",
+ "type": "github"
+ }
+ ],
+ "time": "2024-05-21T13:39:04+00:00"
+ },
+ {
+ "name": "masterminds/html5",
+ "version": "2.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Masterminds/html5-php.git",
+ "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf",
+ "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Masterminds\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matt Butcher",
+ "email": "technosophos@gmail.com"
+ },
+ {
+ "name": "Matt Farina",
+ "email": "matt@mattfarina.com"
+ },
+ {
+ "name": "Asmir Mustafic",
+ "email": "goetas@gmail.com"
+ }
+ ],
+ "description": "An HTML5 parser and serializer.",
+ "homepage": "http://masterminds.github.io/html5-php",
+ "keywords": [
+ "HTML5",
+ "dom",
+ "html",
+ "parser",
+ "querypath",
+ "serializer",
+ "xml"
+ ],
+ "support": {
+ "issues": "https://github.com/Masterminds/html5-php/issues",
+ "source": "https://github.com/Masterminds/html5-php/tree/2.8.1"
+ },
+ "time": "2023-05-10T11:58:31+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "^2.0 || ^3.0"
+ },
+ "provide": {
+ "psr/log-implementation": "3.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "elasticsearch/elasticsearch": "^7 || ^8",
+ "ext-json": "*",
+ "graylog2/gelf-php": "^1.4.2 || ^2.0",
+ "guzzlehttp/guzzle": "^7.4.5",
+ "guzzlehttp/psr7": "^2.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.4",
+ "phpunit/phpunit": "^10.5.17",
+ "predis/predis": "^1.1 || ^2",
+ "ruflin/elastica": "^7",
+ "symfony/mailer": "^5.4 || ^6",
+ "symfony/mime": "^5.4 || ^6"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "https://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-04-12T21:02:21+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "2.72.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed",
+ "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "carbonphp/carbon-doctrine-types": "*",
+ "ext-json": "*",
+ "php": "^7.1.8 || ^8.0",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0",
+ "doctrine/orm": "^2.7 || ^3.0",
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "kylekatarnls/multi-tester": "^2.0",
+ "ondrejmirtes/better-reflection": "*",
+ "phpmd/phpmd": "^2.9",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+ "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev",
+ "dev-2.x": "2.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "https://markido.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "https://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "https://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "docs": "https://carbon.nesbot.com/docs",
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-06-03T19:18:41+00:00"
+ },
+ {
+ "name": "nette/schema",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/schema.git",
+ "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
+ "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.3"
+ },
+ "require-dev": {
+ "nette/tester": "^2.4",
+ "phpstan/phpstan-nette": "^1.0",
+ "tracy/tracy": "^2.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "📐 Nette Schema: validating data structures against a given Schema.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "config",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/schema/issues",
+ "source": "https://github.com/nette/schema/tree/v1.3.0"
+ },
+ "time": "2023-12-11T11:54:22+00:00"
+ },
+ {
+ "name": "nette/utils",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/utils.git",
+ "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0 <8.4"
+ },
+ "conflict": {
+ "nette/finder": "<3",
+ "nette/schema": "<1.2.2"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "dev-master",
+ "nette/tester": "^2.5",
+ "phpstan/phpstan": "^1.0",
+ "tracy/tracy": "^2.9"
+ },
+ "suggest": {
+ "ext-gd": "to use Image",
+ "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
+ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
+ "ext-json": "to use Nette\\Utils\\Json",
+ "ext-mbstring": "to use Strings::lower() etc...",
+ "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "array",
+ "core",
+ "datetime",
+ "images",
+ "json",
+ "nette",
+ "paginator",
+ "password",
+ "slugify",
+ "string",
+ "unicode",
+ "utf-8",
+ "utility",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/utils/issues",
+ "source": "https://github.com/nette/utils/tree/v4.0.4"
+ },
+ "time": "2024-01-17T16:50:36+00:00"
+ },
+ {
+ "name": "nunomaduro/termwind",
+ "version": "v1.15.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nunomaduro/termwind.git",
+ "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc",
+ "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": "^8.0",
+ "symfony/console": "^5.3.0|^6.0.0"
+ },
+ "require-dev": {
+ "ergebnis/phpstan-rules": "^1.0.",
+ "illuminate/console": "^8.0|^9.0",
+ "illuminate/support": "^8.0|^9.0",
+ "laravel/pint": "^1.0.0",
+ "pestphp/pest": "^1.21.0",
+ "pestphp/pest-plugin-mock": "^1.0",
+ "phpstan/phpstan": "^1.4.6",
+ "phpstan/phpstan-strict-rules": "^1.1.0",
+ "symfony/var-dumper": "^5.2.7|^6.0.0",
+ "thecodingmachine/phpstan-strict-rules": "^1.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Termwind\\Laravel\\TermwindServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Termwind\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "Its like Tailwind CSS, but for the console.",
+ "keywords": [
+ "cli",
+ "console",
+ "css",
+ "package",
+ "php",
+ "style"
+ ],
+ "support": {
+ "issues": "https://github.com/nunomaduro/termwind/issues",
+ "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/paypalme/enunomaduro",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/nunomaduro",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/xiCO2k",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-08T01:06:31+00:00"
+ },
+ {
+ "name": "openspout/openspout",
+ "version": "v4.24.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/openspout/openspout.git",
+ "reference": "393299ae21153f042f48b185f2adeb4b157d1d93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/openspout/openspout/zipball/393299ae21153f042f48b185f2adeb4b157d1d93",
+ "reference": "393299ae21153f042f48b185f2adeb4b157d1d93",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-fileinfo": "*",
+ "ext-filter": "*",
+ "ext-libxml": "*",
+ "ext-xmlreader": "*",
+ "ext-zip": "*",
+ "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
+ },
+ "require-dev": {
+ "ext-zlib": "*",
+ "friendsofphp/php-cs-fixer": "^3.60.0",
+ "infection/infection": "^0.29.6",
+ "phpbench/phpbench": "^1.3.1",
+ "phpstan/phpstan": "^1.11.8",
+ "phpstan/phpstan-phpunit": "^1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.6.0",
+ "phpunit/phpunit": "^10.5.20 || ^11.2.8"
+ },
+ "suggest": {
+ "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)",
+ "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "OpenSpout\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Adrien Loison",
+ "email": "adrien@box.com"
+ }
+ ],
+ "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way",
+ "homepage": "https://github.com/openspout/openspout",
+ "keywords": [
+ "OOXML",
+ "csv",
+ "excel",
+ "memory",
+ "odf",
+ "ods",
+ "office",
+ "open",
+ "php",
+ "read",
+ "scale",
+ "spreadsheet",
+ "stream",
+ "write",
+ "xlsx"
+ ],
+ "support": {
+ "issues": "https://github.com/openspout/openspout/issues",
+ "source": "https://github.com/openspout/openspout/tree/v4.24.5"
+ },
+ "funding": [
+ {
+ "url": "https://paypal.me/filippotessarotto",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/Slamdunk",
+ "type": "github"
+ }
+ ],
+ "time": "2024-07-26T05:48:04+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.8.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "doctrine/deprecations": "^1.0",
+ "php": "^7.3 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpstan/phpdoc-parser": "^1.13"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.13.9",
+ "vimeo/psalm": "^4.25"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
+ },
+ "time": "2024-02-23T11:10:43+00:00"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.9.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54",
+ "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpOption\\": "src/PhpOption/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "support": {
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-07-20T21:41:07+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc",
+ "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^4.15",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.5",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0"
+ },
+ "time": "2024-05-06T12:04:23+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00"
+ },
+ {
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+ },
+ "time": "2023-04-10T20:10:41+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ },
+ "time": "2021-10-29T13:26:27+00:00"
+ },
+ {
+ "name": "ramsey/collection",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/collection.git",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "captainhook/plugin-composer": "^5.3",
+ "ergebnis/composer-normalize": "^2.28.3",
+ "fakerphp/faker": "^1.21",
+ "hamcrest/hamcrest-php": "^2.0",
+ "jangregor/phpstan-prophecy": "^1.0",
+ "mockery/mockery": "^1.5",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcsstandards/phpcsutils": "^1.0.0-rc1",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpstan/extension-installer": "^1.2",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "ramsey/coding-standard": "^2.0.3",
+ "ramsey/conventional-commits": "^1.3",
+ "vimeo/psalm": "^5.4"
+ },
+ "type": "library",
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ },
+ "ramsey/conventional-commits": {
+ "configFile": "conventional-commits.json"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Ramsey\\Collection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
+ }
+ ],
+ "description": "A PHP library for representing and manipulating collections.",
+ "keywords": [
+ "array",
+ "collection",
+ "hash",
+ "map",
+ "queue",
+ "set"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/collection/issues",
+ "source": "https://github.com/ramsey/collection/tree/2.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-12-31T21:50:55+00:00"
+ },
+ {
+ "name": "ramsey/uuid",
+ "version": "4.7.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+ "ext-json": "*",
+ "php": "^8.0",
+ "ramsey/collection": "^1.2 || ^2.0"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "captainhook/captainhook": "^5.10",
+ "captainhook/plugin-composer": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.8",
+ "ergebnis/composer-normalize": "^2.15",
+ "mockery/mockery": "^1.3",
+ "paragonie/random-lib": "^2",
+ "php-mock/php-mock": "^2.2",
+ "php-mock/php-mock-mockery": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.1",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "ramsey/composer-repl": "^1.4",
+ "slevomat/coding-standard": "^8.4",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.9"
+ },
+ "suggest": {
+ "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
+ "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
+ "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
+ "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
+ },
+ "type": "library",
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
+ "keywords": [
+ "guid",
+ "identifier",
+ "uuid"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/uuid/issues",
+ "source": "https://github.com/ramsey/uuid/tree/4.7.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-11-08T05:53:05+00:00"
+ },
+ {
+ "name": "ryangjchandler/blade-capture-directive",
+ "version": "v1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ryangjchandler/blade-capture-directive.git",
+ "reference": "cb6f58663d97f17bece176295240b740835e14f1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/cb6f58663d97f17bece176295240b740835e14f1",
+ "reference": "cb6f58663d97f17bece176295240b740835e14f1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/contracts": "^10.0|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9.2"
+ },
+ "require-dev": {
+ "nunomaduro/collision": "^7.0|^8.0",
+ "nunomaduro/larastan": "^2.0",
+ "orchestra/testbench": "^8.0|^9.0",
+ "pestphp/pest": "^2.0",
+ "pestphp/pest-plugin-laravel": "^2.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^10.0",
+ "spatie/laravel-ray": "^1.26"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider"
+ ],
+ "aliases": {
+ "BladeCaptureDirective": "RyanChandler\\BladeCaptureDirective\\Facades\\BladeCaptureDirective"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "RyanChandler\\BladeCaptureDirective\\": "src",
+ "RyanChandler\\BladeCaptureDirective\\Database\\Factories\\": "database/factories"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ryan Chandler",
+ "email": "support@ryangjchandler.co.uk",
+ "role": "Developer"
+ }
+ ],
+ "description": "Create inline partials in your Blade templates with ease.",
+ "homepage": "https://github.com/ryangjchandler/blade-capture-directive",
+ "keywords": [
+ "blade-capture-directive",
+ "laravel",
+ "ryangjchandler"
+ ],
+ "support": {
+ "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues",
+ "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v1.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ryangjchandler",
+ "type": "github"
+ }
+ ],
+ "time": "2024-02-26T18:08:49+00:00"
+ },
+ {
+ "name": "spatie/color",
+ "version": "1.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/color.git",
+ "reference": "49739265900cabce4640cd26c3266fd8d2cca390"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/color/zipball/49739265900cabce4640cd26c3266fd8d2cca390",
+ "reference": "49739265900cabce4640cd26c3266fd8d2cca390",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.3|^8.0"
+ },
+ "require-dev": {
+ "pestphp/pest": "^1.22",
+ "phpunit/phpunit": "^6.5||^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\Color\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian De Deyne",
+ "email": "sebastian@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "A little library to handle color conversions",
+ "homepage": "https://github.com/spatie/color",
+ "keywords": [
+ "color",
+ "conversion",
+ "rgb",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/color/issues",
+ "source": "https://github.com/spatie/color/tree/1.5.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2022-12-18T12:58:32+00:00"
+ },
+ {
+ "name": "spatie/invade",
+ "version": "2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/invade.git",
+ "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/invade/zipball/b920f6411d21df4e8610a138e2e87ae4957d7f63",
+ "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "pestphp/pest": "^1.20",
+ "phpstan/phpstan": "^1.4",
+ "spatie/ray": "^1.28"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Spatie\\Invade\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "A PHP function to work with private properties and methods",
+ "homepage": "https://github.com/spatie/invade",
+ "keywords": [
+ "invade",
+ "spatie"
+ ],
+ "support": {
+ "source": "https://github.com/spatie/invade/tree/2.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-05-17T09:06:10+00:00"
+ },
+ {
+ "name": "spatie/laravel-package-tools",
+ "version": "1.16.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-package-tools.git",
+ "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53",
+ "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/contracts": "^9.28|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5",
+ "orchestra/testbench": "^7.7|^8.0",
+ "pestphp/pest": "^1.22",
+ "phpunit/phpunit": "^9.5.24",
+ "spatie/pest-plugin-test-time": "^1.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\LaravelPackageTools\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Tools for creating Laravel packages",
+ "homepage": "https://github.com/spatie/laravel-package-tools",
+ "keywords": [
+ "laravel-package-tools",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-package-tools/issues",
+ "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-20T07:29:11+00:00"
+ },
+ {
+ "name": "spatie/laravel-settings",
+ "version": "3.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-settings.git",
+ "reference": "395066797823856638a0a2feb243b396a94e22e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/395066797823856638a0a2feb243b396a94e22e5",
+ "reference": "395066797823856638a0a2feb243b396a94e22e5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/database": "^8.73|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0",
+ "phpdocumentor/type-resolver": "^1.5",
+ "spatie/temporary-directory": "^1.3|^2.0"
+ },
+ "require-dev": {
+ "ext-redis": "*",
+ "larastan/larastan": "^2.0",
+ "mockery/mockery": "^1.4",
+ "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0",
+ "pestphp/pest": "^1.21|^2.0",
+ "pestphp/pest-plugin-laravel": "^1.2|^2.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^9.5|^10.0",
+ "spatie/laravel-data": "^1.0.0|^2.0.0|^4.0.0",
+ "spatie/pest-plugin-snapshots": "^1.1|^2.0",
+ "spatie/phpunit-snapshot-assertions": "^4.2|^5.0",
+ "spatie/ray": "^1.36"
+ },
+ "suggest": {
+ "spatie/data-transfer-object": "Allows for DTO casting to settings. (deprecated)"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Spatie\\LaravelSettings\\LaravelSettingsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spatie\\LaravelSettings\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ruben Van Assche",
+ "email": "ruben@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Store your application settings",
+ "homepage": "https://github.com/spatie/laravel-settings",
+ "keywords": [
+ "laravel-settings",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-settings/issues",
+ "source": "https://github.com/spatie/laravel-settings/tree/3.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-22T07:50:04+00:00"
+ },
+ {
+ "name": "spatie/temporary-directory",
+ "version": "2.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/temporary-directory.git",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\TemporaryDirectory\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alex Vanderbist",
+ "email": "alex@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Easily create, use and destroy temporary directories",
+ "homepage": "https://github.com/spatie/temporary-directory",
+ "keywords": [
+ "php",
+ "spatie",
+ "temporary-directory"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/temporary-directory/issues",
+ "source": "https://github.com/spatie/temporary-directory/tree/2.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2023-12-25T11:46:58+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91",
+ "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/string": "^5.4|^6.0|^7.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command-line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v7.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
+ "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Converts CSS selectors to XPath expressions",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/css-selector/tree/v7.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:57:53+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-05-23T14:45:45+00:00"
+ },
+ {
+ "name": "symfony/error-handler",
+ "version": "v6.4.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/error-handler.git",
+ "reference": "231f1b2ee80f72daa1972f7340297d67439224f0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0",
+ "reference": "231f1b2ee80f72daa1972f7340297d67439224f0",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "^1|^2|^3",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ },
+ "conflict": {
+ "symfony/deprecation-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4"
+ },
+ "require-dev": {
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/serializer": "^5.4|^6.0|^7.0"
+ },
+ "bin": [
+ "Resources/bin/patch-type-declarations"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ErrorHandler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to manage errors and ease debugging PHP code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/error-handler/tree/v6.4.10"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-07-26T12:30:32+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v7.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
+ "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/event-dispatcher-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<6.4",
+ "symfony/service-contracts": "<2.5"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/stopwatch": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:57:53+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
+ "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-05-23T14:45:45+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v6.4.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "af29198d87112bebdd397bd7735fbd115997824c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c",
+ "reference": "af29198d87112bebdd397bd7735fbd115997824c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v6.4.10"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-07-24T07:06:38+00:00"
+ },
+ {
+ "name": "symfony/html-sanitizer",
+ "version": "v7.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/html-sanitizer.git",
+ "reference": "737cbaa8082b696d0574afd91b9f471eca67fc65"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/737cbaa8082b696d0574afd91b9f471eca67fc65",
+ "reference": "737cbaa8082b696d0574afd91b9f471eca67fc65",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "league/uri": "^6.5|^7.0",
+ "masterminds/html5": "^2.7.2",
+ "php": ">=8.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HtmlSanitizer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Titouan Galopin",
+ "email": "galopintitouan@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "Purifier",
+ "html",
+ "sanitizer"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/html-sanitizer/tree/v7.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:55:39+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "27de8cc95e11db7a50b027e71caaab9024545947"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947",
+ "reference": "27de8cc95e11db7a50b027e71caaab9024545947",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php83": "^1.27"
+ },
+ "conflict": {
+ "symfony/cache": "<6.3"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.13.1|^3|^4",
+ "predis/predis": "^1.1|^2.0",
+ "symfony/cache": "^6.3|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0",
+ "symfony/mime": "^5.4|^6.0|^7.0",
+ "symfony/rate-limiter": "^5.4|^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Defines an object-oriented layer for the HTTP specification",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-foundation/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1",
+ "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "^1|^2|^3",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<5.4",
+ "symfony/cache": "<5.4",
+ "symfony/config": "<6.1",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/doctrine-bridge": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-client": "<5.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/mailer": "<5.4",
+ "symfony/messenger": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/translation-contracts": "<2.5",
+ "symfony/twig-bridge": "<5.4",
+ "symfony/validator": "<6.4",
+ "symfony/var-dumper": "<6.3",
+ "twig/twig": "<2.13"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/cache": "^1.0|^2.0|^3.0",
+ "symfony/browser-kit": "^5.4|^6.0|^7.0",
+ "symfony/clock": "^6.2|^7.0",
+ "symfony/config": "^6.1|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/css-selector": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/dom-crawler": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/property-access": "^5.4.5|^6.0.5|^7.0",
+ "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^6.4.4|^7.0.4",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/translation": "^5.4|^6.0|^7.0",
+ "symfony/translation-contracts": "^2.5|^3",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/var-dumper": "^5.4|^6.4|^7.0",
+ "symfony/var-exporter": "^6.2|^7.0",
+ "twig/twig": "^2.13|^3.0.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a structured process for converting a Request into a Response",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-kernel/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-06-02T16:06:25+00:00"
+ },
+ {
+ "name": "symfony/mailer",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mailer.git",
+ "reference": "76326421d44c07f7824b19487cfbf87870b37efc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/76326421d44c07f7824b19487cfbf87870b37efc",
+ "reference": "76326421d44c07f7824b19487cfbf87870b37efc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "egulias/email-validator": "^2.1.10|^3|^4",
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1",
+ "psr/log": "^1|^2|^3",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/mime": "^6.2|^7.0",
+ "symfony/service-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/http-kernel": "<5.4",
+ "symfony/messenger": "<6.2",
+ "symfony/mime": "<6.2",
+ "symfony/twig-bridge": "<6.2.1"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^6.2|^7.0",
+ "symfony/twig-bridge": "^6.2|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mailer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Helps sending emails",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/mailer/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "symfony/mime",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mime.git",
+ "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33",
+ "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-intl-idn": "^1.10",
+ "symfony/polyfill-mbstring": "^1.0"
+ },
+ "conflict": {
+ "egulias/email-validator": "~3.0.0",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/mailer": "<5.4",
+ "symfony/serializer": "<6.3.2"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.1.10|^3.1|^4",
+ "league/html-to-markdown": "^5.0",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.4|^7.0",
+ "symfony/property-access": "^5.4|^6.0|^7.0",
+ "symfony/property-info": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^6.3.2|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mime\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Allows manipulating MIME messages",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "mime",
+ "mime-type"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/mime/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-06-01T07:50:16+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+ "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-29T20:11:03+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.30.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T15:07:36+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.30.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
+ "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T15:07:36+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
+ "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-29T20:11:03+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-29T20:11:03+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25",
+ "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-29T20:11:03+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-29T20:11:03+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.30.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
+ "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-06-19T12:35:24+00:00"
+ },
+ {
+ "name": "symfony/polyfill-uuid",
+ "version": "v1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-uuid.git",
+ "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853",
+ "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-uuid": "*"
+ },
+ "suggest": {
+ "ext-uuid": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Uuid\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for uuid functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-29T20:11:03+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5",
+ "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58",
+ "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.12",
+ "symfony/config": "<6.2",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.12|^2",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.2|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Routing\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Maps an HTTP request to a set of configuration variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "router",
+ "routing",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/routing/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
+ "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/container": "^2.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-07-30T20:28:31+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v7.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8",
+ "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.5"
+ },
+ "require-dev": {
+ "symfony/emoji": "^7.1",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/translation-contracts": "^2.5|^3.0",
+ "symfony/var-exporter": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v7.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-06-28T09:27:18+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a",
+ "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^2.5|^3.0"
+ },
+ "conflict": {
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/http-kernel": "<5.4",
+ "symfony/service-contracts": "<2.5",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.3|3.0"
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4.18|^5.0",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^5.4|^6.0|^7.0",
+ "symfony/polyfill-intl-icu": "^1.21",
+ "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to internationalize your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v3.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "06450585bf65e978026bda220cdebca3f867fde7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7",
+ "reference": "06450585bf65e978026bda220cdebca3f867fde7",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-26T14:02:43+00:00"
+ },
+ {
+ "name": "symfony/uid",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/uid.git",
+ "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
+ "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/polyfill-uuid": "^1.15"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Uid\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to generate and represent UIDs",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "UID",
+ "ulid",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/uid/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v6.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25",
+ "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/console": "<5.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^6.3|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "twig/twig": "^2.13|^3.0.4"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides mechanisms for walking through any arbitrary PHP variable",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T14:49:08+00:00"
+ },
+ {
+ "name": "tijsverkoyen/css-to-inline-styles",
+ "version": "v2.2.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
+ "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb",
+ "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "php": "^5.5 || ^7.0 || ^8.0",
+ "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TijsVerkoyen\\CssToInlineStyles\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Tijs Verkoyen",
+ "email": "css_to_inline_styles@verkoyen.eu",
+ "role": "Developer"
+ }
+ ],
+ "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
+ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
+ "support": {
+ "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7"
+ },
+ "time": "2023-12-08T13:03:43+00:00"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v5.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
+ "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-pcre": "*",
+ "graham-campbell/result-type": "^1.1.2",
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9.2",
+ "symfony/polyfill-ctype": "^1.24",
+ "symfony/polyfill-mbstring": "^1.24",
+ "symfony/polyfill-php80": "^1.24"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "ext-filter": "*",
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+ },
+ "suggest": {
+ "ext-filter": "Required to use the boolean validator."
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
+ "branch-alias": {
+ "dev-master": "5.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "https://github.com/vlucas"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "support": {
+ "issues": "https://github.com/vlucas/phpdotenv/issues",
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-11-12T22:43:29+00:00"
+ },
+ {
+ "name": "voku/portable-ascii",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/voku/portable-ascii.git",
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
+ },
+ "suggest": {
+ "ext-intl": "Use Intl for transliterator_transliterate() support"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "voku\\": "src/voku/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Lars Moelleken",
+ "homepage": "http://www.moelleken.org/"
+ }
+ ],
+ "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
+ "homepage": "https://github.com/voku/portable-ascii",
+ "keywords": [
+ "ascii",
+ "clean",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/voku/portable-ascii/issues",
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/moelleken",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/voku",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/portable-ascii",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-08T17:03:00+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-ctype": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ },
+ "time": "2022-06-03T18:03:27+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": [],
+ "plugin-api-version": "2.6.0"
+}
diff --git a/management-panel/app/Settings/DataSourceSettings.php b/management-panel/app/Settings/DataSourceSettings.php
new file mode 100644
index 0000000..c58295b
--- /dev/null
+++ b/management-panel/app/Settings/DataSourceSettings.php
@@ -0,0 +1,47 @@
+migrator->add('datasource.data_source_type', 'opcua');
+ $this->migrator->add('datasource.name', '');
+ $this->migrator->add('datasource.description', '');
+ $this->migrator->add('datasource.opcua_service_address', '');
+ $this->migrator->add('datasource.security_policy_address', '');
+ $this->migrator->add('datasource.security_mode', '');
+ $this->migrator->add('datasource.key_authentication_file', '');
+ $this->migrator->add('datasource.certificate_authentication_file', '');
+ $this->migrator->add('datasource.trusted_list', '');
+ $this->migrator->add('datasource.measurement_point_address', '');
+ $this->migrator->add('datasource.interface_address', '');
+ $this->migrator->add('datasource.username', '');
+ $this->migrator->add('datasource.password', '');
+ $this->migrator->add('datasource.certificate_identity_file', '');
+ $this->migrator->add('datasource.key_identity_file', '');
+ $this->migrator->add('datasource.state', false);
+ }
+};
diff --git a/vendor/anourvalar/eloquent-serialize/.github/workflows/run-tests.yml b/vendor/anourvalar/eloquent-serialize/.github/workflows/run-tests.yml
new file mode 100644
index 0000000..4809494
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/.github/workflows/run-tests.yml
@@ -0,0 +1,48 @@
+name: run-tests
+
+on: [push, pull_request]
+
+jobs:
+ test:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ os: [ubuntu-latest]
+ php: [8.3, 8.2, 8.1]
+ laravel: [11.*, 10.*]
+ stability: [prefer-stable]
+ include:
+ - laravel: 11.*
+ testbench: 9.*
+ - laravel: 10.*
+ testbench: 8.*
+ exclude:
+ - laravel: 11.*
+ php: 8.1
+
+ name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick
+ coverage: none
+
+ - name: Setup problem matchers
+ run: |
+ echo "::add-matcher::${{ runner.tool_cache }}/php.json"
+ echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
+
+ - name: Install dependencies
+ run: |
+ composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
+ composer update --${{ matrix.stability }} --prefer-dist --no-interaction
+
+ - name: Execute tests
+ run: vendor/bin/phpunit
diff --git a/vendor/anourvalar/eloquent-serialize/.gitignore b/vendor/anourvalar/eloquent-serialize/.gitignore
new file mode 100644
index 0000000..debc9e3
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/.gitignore
@@ -0,0 +1,5 @@
+/vendor
+composer.lock
+.idea
+.phpunit.result.cache
+.DS_Store
\ No newline at end of file
diff --git a/vendor/anourvalar/eloquent-serialize/.php-cs-fixer.php b/vendor/anourvalar/eloquent-serialize/.php-cs-fixer.php
new file mode 100644
index 0000000..1344ecb
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/.php-cs-fixer.php
@@ -0,0 +1,11 @@
+exclude('vendor')
+ ->in(__DIR__);
+
+$config = new PhpCsFixer\Config();
+return $config->setRules([
+ '@PSR12' => true,
+ ])
+ ->setFinder($finder);
diff --git a/vendor/anourvalar/eloquent-serialize/LICENSE b/vendor/anourvalar/eloquent-serialize/LICENSE
new file mode 100644
index 0000000..6bf614e
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 AnourValar
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/anourvalar/eloquent-serialize/README.md b/vendor/anourvalar/eloquent-serialize/README.md
new file mode 100644
index 0000000..e9e0bbd
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/README.md
@@ -0,0 +1,31 @@
+# Serialization for Eloquent's QueryBuilder
+Supports: Laravel 6 - Laravel 11
+
+## Installation
+
+```bash
+composer require anourvalar/eloquent-serialize
+```
+
+
+## Usage
+
+### Serialize
+```php
+$package = \EloquentSerialize::serialize(
+ \App\User::query()
+ ->with('userPhones')
+ ->where('id', '>', '10')
+ ->limit(20)
+);
+```
+
+
+### Unserialize
+```php
+$builder = \EloquentSerialize::unserialize($package);
+
+foreach ($builder->get() as $item) {
+ // ...
+}
+```
diff --git a/vendor/anourvalar/eloquent-serialize/composer.json b/vendor/anourvalar/eloquent-serialize/composer.json
new file mode 100644
index 0000000..f41794e
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/composer.json
@@ -0,0 +1,33 @@
+{
+ "name": "anourvalar/eloquent-serialize",
+ "description": "Laravel Query Builder (Eloquent) serialization",
+ "keywords": ["laravel", "query", "builder", "querybuilder", "anourvalar", "serialize", "serialization", "eloquent", "serializable", "job", "queue", "copy"],
+ "homepage": "https://github.com/AnourValar/eloquent-serialize",
+ "license": "MIT",
+ "require": {
+ "php": "^7.4|^8.0",
+ "laravel/framework": "^8.0|^9.0|^10.0|^11.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5|^10.5",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "laravel/legacy-factories": "^1.1",
+ "phpstan/phpstan": "^1.10",
+ "friendsofphp/php-cs-fixer": "^3.26",
+ "squizlabs/php_codesniffer": "^3.7",
+ "psalm/plugin-laravel": "^2.8"
+ },
+ "autoload": {
+ "psr-4": {"AnourValar\\EloquentSerialize\\": "src/"}
+ },
+ "autoload-dev": {
+ "psr-4": {"AnourValar\\EloquentSerialize\\Tests\\": "tests/"}
+ },
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade"
+ }
+ }
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/phpcs.xml b/vendor/anourvalar/eloquent-serialize/phpcs.xml
new file mode 100644
index 0000000..6d6f9dd
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/phpcs.xml
@@ -0,0 +1,37 @@
+
+
+
+
+ PHPCS ruleset
+
+ src
+ tests
+ src/resources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tests/
+
+
+
+ tests/
+
+
+
diff --git a/vendor/anourvalar/eloquent-serialize/phpstan.neon b/vendor/anourvalar/eloquent-serialize/phpstan.neon
new file mode 100644
index 0000000..fc091de
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/phpstan.neon
@@ -0,0 +1,30 @@
+parameters:
+
+ paths:
+ - src
+ - tests
+
+ # The level 9 is the highest level
+ level: 5
+
+ ignoreErrors:
+ - '#Access to protected property#'
+ - '#should return#'
+ - '#Call to an undefined static method#'
+ - '#Call to an undefined method#'
+ - '#Call to static method#'
+ - '#Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Pending#'
+ - '#Property Illuminate\\Database\\Query\\Builder\:\:\$groupLimit \(array\)#'
+
+ excludePaths:
+
+ checkFunctionNameCase: true
+ checkInternalClassCaseSensitivity: true
+ checkAlwaysTrueInstanceof: true
+ reportMaybesInMethodSignatures: true
+ reportStaticMethodSignatures: true
+ checkUninitializedProperties: true
+ checkDynamicProperties: true
+ reportAlwaysTrueInLastCondition: true
+ reportWrongPhpDocTypeInVarTag: true
+ checkMissingCallableSignature: true
diff --git a/vendor/anourvalar/eloquent-serialize/phpunit.xml b/vendor/anourvalar/eloquent-serialize/phpunit.xml
new file mode 100644
index 0000000..02d260a
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/phpunit.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ tests
+
+
+
+
+
+
+
+ src/
+
+
+
diff --git a/vendor/anourvalar/eloquent-serialize/phpunit9.xml b/vendor/anourvalar/eloquent-serialize/phpunit9.xml
new file mode 100644
index 0000000..0e39206
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/phpunit9.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ src/
+
+
+
+
+ tests
+
+
+
+
+
+
diff --git a/vendor/anourvalar/eloquent-serialize/psalm.xml b/vendor/anourvalar/eloquent-serialize/psalm.xml
new file mode 100644
index 0000000..b0a746e
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/psalm.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/anourvalar/eloquent-serialize/src/Facades/EloquentSerializeFacade.php b/vendor/anourvalar/eloquent-serialize/src/Facades/EloquentSerializeFacade.php
new file mode 100644
index 0000000..6228d33
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/src/Facades/EloquentSerializeFacade.php
@@ -0,0 +1,20 @@
+ $this->getEagers($builder), // preloaded ("eager") relations
+ 'removed_scopes' => $builder->removedScopes(), // global scopes
+ 'casts' => $builder->getModel()->getCasts(),
+ ];
+ }
+
+ /**
+ * Unserialize state for \Illuminate\Database\Eloquent\Builder
+ *
+ * @param array $data
+ * @param \Illuminate\Database\Eloquent\Builder $builder
+ * @return void
+ */
+ protected function unpackEloquentBuilder(array $data, \Illuminate\Database\Eloquent\Builder &$builder): void
+ {
+ // Preloaded ("eager") relations
+ $this->setEagers($builder, $data['with']);
+
+ // Global scopes
+ if ($data['removed_scopes']) {
+ $builder->withoutGlobalScopes($data['removed_scopes']);
+ }
+
+ // Casts
+ if (method_exists($builder->getModel(), 'mergeCasts')) { // old versions support
+ $builder->getModel()->mergeCasts($data['casts']);
+ }
+ }
+
+ /**
+ * @param \Illuminate\Database\Eloquent\Builder $builder
+ * @return array
+ */
+ private function getEagers(\Illuminate\Database\Eloquent\Builder $builder): array
+ {
+ $result = [];
+
+ foreach ($builder->getEagerLoads() as $name => $value) {
+ $relation = $builder;
+ foreach (explode('.', $name) as $part) {
+ $relation = $relation->getRelation($part); // get a relation without "constraints"
+ }
+ $referenceRelation = clone $relation;
+
+ $value($relation); // apply closure
+ $result[$name] = [
+ 'query' => $this->packQueryBuilder($relation->getQuery()->getQuery()),
+ 'eloquent' => $this->packEloquentBuilder($relation->getQuery()),
+ 'extra' => $relation->exportExtraParametersForSerialize(),
+ ];
+
+ $relation->getQuery()->getModel()->newInstance()->with($name)->getEagerLoads()[$name]($referenceRelation);
+ $this->cleanStaticConstraints($result[$name]['query'], $this->packQueryBuilder($referenceRelation->getQuery()->getQuery()));
+ }
+
+ return $result;
+ }
+
+ /**
+ * @param \Illuminate\Database\Eloquent\Builder $builder
+ * @param array $eagers
+ * @return void
+ */
+ private function setEagers(\Illuminate\Database\Eloquent\Builder $builder, array $eagers): void
+ {
+ foreach ($eagers as &$value) {
+ $value = function ($query) use ($value) {
+ if (isset($value['extra'])) {
+ $query->importExtraParametersForSerialize($value['extra']);
+ }
+
+ // Input argument may be different depends on context
+ while (! ($query instanceof \Illuminate\Database\Eloquent\Builder)) {
+ $query = $query->getQuery();
+ }
+ if (isset($value['eloquent'])) {
+ $this->unpackEloquentBuilder($value['eloquent'], $query);
+ }
+
+ // Input argument may be different depends on context
+ while (! ($query instanceof \Illuminate\Database\Query\Builder)) {
+ $query = $query->getQuery();
+ }
+
+ $this->unpackQueryBuilder(isset($value['query']) ? $value['query'] : $value, $query);
+ };
+ }
+ unset($value);
+
+ $builder->setEagerLoads($eagers);
+ }
+
+ /**
+ * @param array $packedQueryBuilder
+ * @param array $packedReferenceQueryBuilder
+ * @return void
+ */
+ private function cleanStaticConstraints(array &$packedQueryBuilder, array $packedReferenceQueryBuilder): void
+ {
+ $properties = [
+ 'aggregate', 'columns', 'distinct', 'wheres', 'groups', 'havings', 'orders', 'limit', 'offset', 'unions',
+ 'unionLimit', 'unionOffset', 'unionOrders', 'joins', 'groupLimit',
+ ];
+
+ foreach ($properties as $property) {
+ if (! is_array($packedQueryBuilder[$property] ?? null)) {
+ continue;
+ }
+
+ foreach ($packedQueryBuilder[$property] as $key => $item) {
+ if (in_array($item, (array) ($packedReferenceQueryBuilder[$property] ?? null), true)) {
+ unset($packedQueryBuilder[$property][$key]);
+ }
+ }
+ }
+
+ foreach ($packedQueryBuilder['bindings'] as $binding => $data) {
+ if (! is_array($data)) {
+ continue; // just in case ;)
+ }
+
+ foreach ($data as $key => $value) {
+ if (
+ isset($packedReferenceQueryBuilder['bindings'][$binding][$key])
+ && $packedReferenceQueryBuilder['bindings'][$binding][$key] === $value
+ ) {
+ unset($packedQueryBuilder['bindings'][$binding][$key]);
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/src/Grammars/ModelGrammar.php b/vendor/anourvalar/eloquent-serialize/src/Grammars/ModelGrammar.php
new file mode 100644
index 0000000..1716938
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/src/Grammars/ModelGrammar.php
@@ -0,0 +1,69 @@
+setup();
+
+ return new \AnourValar\EloquentSerialize\Package([
+ 'model' => get_class($builder->getModel()),
+ 'connection' => $builder->getModel()->getConnectionName(),
+ 'eloquent' => $this->packEloquentBuilder($builder),
+ 'query' => $this->packQueryBuilder($builder->getQuery()),
+ ]);
+ }
+
+ /**
+ * Unpack
+ *
+ * @param \AnourValar\EloquentSerialize\Package $package
+ * @return \Illuminate\Database\Eloquent\Builder
+ */
+ protected function unpack(\AnourValar\EloquentSerialize\Package $package): \Illuminate\Database\Eloquent\Builder
+ {
+ $this->setup();
+
+ $builder = $package->get('model');
+ $builder = $builder::on($package->get('connection'));
+
+ $this->unpackEloquentBuilder($package->get('eloquent'), $builder);
+ $this->unpackQueryBuilder($package->get('query'), $builder->getQuery());
+
+ return $builder;
+ }
+
+ /**
+ * init
+ *
+ * @return void
+ */
+ private function setup(): void
+ {
+ \Illuminate\Database\Eloquent\Relations\Relation::macro('importExtraParametersForSerialize', function (array $params) {
+ foreach ($params as $key => $value) {
+ $this->$key = $value;
+ }
+ });
+
+ \Illuminate\Database\Eloquent\Relations\Relation::macro('exportExtraParametersForSerialize', function () {
+ if ($this instanceof \Illuminate\Database\Eloquent\Relations\MorphTo) {
+ return [
+ 'morphableEagerLoads' => $this->morphableEagerLoads,
+ 'morphableEagerLoadCounts' => $this->morphableEagerLoadCounts,
+ 'morphableConstraints' => $this->morphableConstraints,
+ ];
+ }
+
+ return null;
+ });
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/src/Grammars/QueryBuilderGrammar.php b/vendor/anourvalar/eloquent-serialize/src/Grammars/QueryBuilderGrammar.php
new file mode 100644
index 0000000..b425011
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/src/Grammars/QueryBuilderGrammar.php
@@ -0,0 +1,182 @@
+ $builder->bindings,
+ 'aggregate' => $builder->aggregate,
+ 'columns' => $builder->columns,
+ 'distinct' => $builder->distinct,
+ 'from' => $builder->from,
+ 'wheres' => $this->packWheres($builder->wheres),
+ 'groups' => $builder->groups,
+ 'havings' => $builder->havings,
+ 'groupLimit' => $builder->groupLimit ?? null,
+ 'orders' => $builder->orders,
+ 'limit' => $builder->limit,
+ 'offset' => $builder->offset,
+ 'unions' => $this->packUnions($builder->unions),
+ 'unionLimit' => $builder->unionLimit,
+ 'unionOffset' => $builder->unionOffset,
+ 'unionOrders' => $builder->unionOrders,
+
+ 'joins' => $this->packJoins($builder->joins), // must be the last
+ ], fn ($item) => isset($item));
+ }
+
+ /**
+ * @param array $data
+ * @param \Illuminate\Database\Query\Builder $builder
+ * @return \Illuminate\Database\Query\Builder
+ */
+ protected function unpackQueryBuilder(array $data, \Illuminate\Database\Query\Builder $builder): \Illuminate\Database\Query\Builder
+ {
+ foreach ($data as $key => $value) {
+ if ($key == 'wheres') {
+ $value = $this->unpackWheres($value, $builder);
+ }
+
+ if ($key == 'unions') {
+ $value = $this->unpackUnions($value);
+ }
+
+ if ($key == 'joins') {
+ $value = $this->unpackJoins($value, $builder);
+ }
+
+ if (is_array($builder->$key) && is_array($value)) {
+ $builder->$key = array_merge_recursive($builder->$key, $value);
+ } else {
+ $builder->$key = $value;
+ }
+ }
+
+ return $builder;
+ }
+
+ /**
+ * @param mixed $wheres
+ * @return mixed
+ */
+ private function packWheres($wheres)
+ {
+ foreach ($wheres as &$item) {
+ if (isset($item['query'])) {
+ $item['query'] = $this->packQueryBuilder($item['query']);
+ }
+ }
+ unset($item);
+
+ return $wheres;
+ }
+
+ /**
+ * @param mixed $unions
+ * @return mixed
+ */
+ private function packUnions($unions)
+ {
+ if (! is_array($unions)) {
+ return $unions;
+ }
+
+ foreach ($unions as &$item) {
+ if (isset($item['query'])) {
+ $item['query'] = $this->pack($item['query']);
+ }
+ }
+ unset($item);
+
+ return $unions;
+ }
+
+ /**
+ * @param mixed $joins
+ * @return mixed
+ */
+ private function packJoins($joins)
+ {
+ if (! is_array($joins)) {
+ return $joins;
+ }
+
+ foreach ($joins as &$item) {
+ $item = array_replace(
+ ['type' => $item->type, 'table' => $item->table],
+ $this->packQueryBuilder($item)
+ );
+ }
+ unset($item);
+
+ return $joins;
+ }
+
+ /**
+ * @param mixed $wheres
+ * @param \Illuminate\Database\Query\Builder $builder
+ * @return mixed
+ */
+ private function unpackWheres($wheres, \Illuminate\Database\Query\Builder $builder)
+ {
+ foreach ($wheres as &$item) {
+ if (isset($item['query'])) {
+ $item['query'] = $this->unpackQueryBuilder($item['query'], $builder->newQuery());
+ }
+ }
+ unset($item);
+
+ return $wheres;
+ }
+
+ /**
+ * @param mixed $unions
+ * @return mixed
+ */
+ private function unpackUnions($unions)
+ {
+ if (! is_array($unions)) {
+ return $unions;
+ }
+
+ foreach ($unions as &$item) {
+ if (isset($item['query'])) {
+ $item['query'] = $this->unpack($item['query']);
+ }
+ }
+ unset($item);
+
+ return $unions;
+ }
+
+ /**
+ * @param mixed $joins
+ * @param \Illuminate\Database\Query\Builder $builder
+ * @return mixed
+ */
+ private function unpackJoins($joins, \Illuminate\Database\Query\Builder $builder)
+ {
+ if (! is_array($joins)) {
+ return $joins;
+ }
+
+ foreach ($joins as &$item) {
+ $parentQuery = new \Illuminate\Database\Query\JoinClause($builder, $item['type'], $item['table']);
+ unset($item['type'], $item['table']);
+
+ $item = $this->unpackQueryBuilder($item, $parentQuery);
+ }
+ unset($item);
+
+ return $joins;
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/src/Package.php b/vendor/anourvalar/eloquent-serialize/src/Package.php
new file mode 100644
index 0000000..323cf5b
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/src/Package.php
@@ -0,0 +1,33 @@
+data = $data;
+ }
+
+ /**
+ * @param string $key
+ * @return mixed
+ */
+ public function get(string $key = null)
+ {
+ if (is_null($key)) {
+ return $this->data;
+ }
+
+ return ($this->data[$key] ?? null);
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/src/Service.php b/vendor/anourvalar/eloquent-serialize/src/Service.php
new file mode 100644
index 0000000..5554eef
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/src/Service.php
@@ -0,0 +1,44 @@
+pack($builder);
+
+ return serialize($package); // important!
+ }
+
+ /**
+ * Unpack
+ *
+ * @param mixed $package
+ * @throws \LogicException
+ * @return \Illuminate\Database\Eloquent\Builder
+ */
+ public function unserialize($package): \Illuminate\Database\Eloquent\Builder
+ {
+ // Prepare data
+ if (is_string($package)) {
+ $package = unserialize($package);
+ }
+ if (! ($package instanceof Package)) {
+ throw new \LogicException('Incorrect argument.');
+ }
+
+ // Unpack
+ return $this->unpack($package);
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/AbstractSuite.php b/vendor/anourvalar/eloquent-serialize/tests/AbstractSuite.php
new file mode 100644
index 0000000..5933d66
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/AbstractSuite.php
@@ -0,0 +1,146 @@
+withFactories(__DIR__.'/factories');
+ $this->setUpDatabase($this->app);
+ $this->setUpSeeder();
+
+ \DB::enableQueryLog();
+
+ $this->service = \App::make(\AnourValar\EloquentSerialize\Service::class);
+ }
+
+ /**
+ * @param \Illuminate\Foundation\Application $app
+ * @return void
+ */
+ protected function setUpDatabase(\Illuminate\Foundation\Application $app)
+ {
+ $app['db']->connection()->getSchemaBuilder()->create('users', function (Blueprint $table) {
+ $table->increments('id');
+ $table->string('title');
+ $table->integer('sort');
+ $table->jsonb('meta')->nullable();
+ $table->timestamps();
+ $table->softDeletes();
+ });
+
+ $app['db']->connection()->getSchemaBuilder()->create('user_phones', function (Blueprint $table) {
+ $table->increments('id');
+ $table->integer('user_id');
+ $table->string('phone');
+ $table->boolean('is_primary');
+ $table->timestamps();
+ });
+
+ $app['db']->connection()->getSchemaBuilder()->create('user_phone_notes', function (Blueprint $table) {
+ $table->increments('id');
+ $table->integer('user_phone_id');
+ $table->string('note');
+ $table->timestamps();
+ });
+
+ $app['db']->connection()->getSchemaBuilder()->create('posts', function (Blueprint $table) {
+ $table->increments('id');
+ $table->integer('user_id');
+ $table->string('title');
+ $table->text('body');
+ $table->timestamps();
+ });
+
+ $app['db']->connection()->getSchemaBuilder()->create('files', function (Blueprint $table) {
+ $table->id();
+ $table->foreignIdFor(User::class);
+ $table->string('type');
+ $table->timestamps();
+ });
+
+ $app['db']->connection()->getSchemaBuilder()->create('tags', function (Blueprint $table) {
+ $table->increments('id');
+ $table->string('title');
+ $table->bigInteger('taggable_id');
+ $table->string('taggable_type');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * @return void
+ */
+ protected function setUpSeeder()
+ {
+ factory(UserPhoneNote::class)->times(80)->create();
+ factory(File::class)->times(40)->create();
+
+ factory(Post::class)->times(10)->create();
+ factory(Tag::class)->times(10)->create();
+ }
+
+ /**
+ * @param \Illuminate\Database\Eloquent\Builder $builder
+ * @param bool $execute
+ * @return void
+ */
+ protected function compare(\Illuminate\Database\Eloquent\Builder $builder, bool $execute = true): void
+ {
+ $referenceBuilder = clone $builder;
+ $referenceSerialize = $this->service->serialize($builder);
+
+ for ($i = 1; $i <= 3; $i++) {
+ $builder = $this->service->serialize($builder);
+ $this->assertSame($referenceSerialize, $builder, "#$i");
+
+ $builder = json_encode($builder);
+ $builder = json_decode($builder, true);
+ $builder = $this->service->unserialize($builder);
+ $this->assertSame($this->getScheme($referenceBuilder, $execute), $this->getScheme($builder, $execute), "#$i");
+ }
+ }
+
+ /**
+ * @param \Illuminate\Database\Eloquent\Builder $builder
+ * @param bool $execute
+ * @return string
+ */
+ private function getScheme(\Illuminate\Database\Eloquent\Builder $builder, bool $execute): string
+ {
+ \DB::flushQueryLog();
+ if ($execute) {
+ $result = $builder->get();
+ } else {
+ $result = [];
+ }
+ $logs = \DB::getQueryLog();
+
+ foreach ($logs as &$log) {
+ unset($log['time']);
+ }
+ unset($log);
+
+ return json_encode(['query' => $logs, 'result' => $result], JSON_PRETTY_PRINT);
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/Casts/TestCast.php b/vendor/anourvalar/eloquent-serialize/tests/Casts/TestCast.php
new file mode 100644
index 0000000..e7a8c8c
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/Casts/TestCast.php
@@ -0,0 +1,36 @@
+service->serialize(User::where('id', '!=', 1));
+ $package = json_encode($package);
+
+ $package = json_decode($package, true);
+ $builder = $this->service->unserialize($package);
+
+ $this->assertEquals('testing', $builder->getQuery()->getConnection()->getName());
+ $this->assertEquals('testing', $builder->first()->getConnectionName());
+ }
+
+ /**
+ * @return void
+ */
+ public function testSimple()
+ {
+ config(['database.connections.foo' => config('database.connections.testing')]);
+
+ $package = $this->service->serialize((new User())->setConnection('foo')->where('id', '!=', 1));
+ $package = json_encode($package);
+
+ $package = json_decode($package, true);
+ $builder = $this->service->unserialize($package);
+
+ $this->assertEquals('foo', $builder->getQuery()->getConnection()->getName());
+ $this->assertEquals('foo', $builder->getModel()->getConnectionName());
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/DistinctTest.php b/vendor/anourvalar/eloquent-serialize/tests/DistinctTest.php
new file mode 100644
index 0000000..1479888
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/DistinctTest.php
@@ -0,0 +1,16 @@
+compare(User::distinct('title'));
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/EagerTest.php b/vendor/anourvalar/eloquent-serialize/tests/EagerTest.php
new file mode 100644
index 0000000..d104982
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/EagerTest.php
@@ -0,0 +1,355 @@
+compare(User::query());
+
+ // with
+ $this->compare(User::with('userPhones'));
+
+ // with count
+ $this->compare(User::withCount('userPhones'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testComplex()
+ {
+ // with
+ $this->compare(User::with('userPhonesSorted'));
+ $this->compare(User::with('userPhonesPrimary'));
+ $this->compare(User::with(['userPhonesSorted', 'userPhonesPrimary']));
+ $this->compare(User::query()->with('filesAB', 'filesC', 'filesDE'));
+
+ // with count
+ $this->compare(User::withCount('userPhonesSorted'));
+ $this->compare(User::withCount('userPhonesPrimary'));
+ $this->compare(User::withCount(['userPhonesSorted', 'userPhonesPrimary']));
+ $this->compare(User::query()->withCount('filesAB', 'filesC', 'filesDE'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testNested()
+ {
+ // with
+ $this->compare(User::with('userPhones.userPhoneNote'));
+ $this->compare(User::with('userPhones.userPhoneNote:id,user_phone_id,note'));
+ $this->compare(User::with(['userPhones' => ['userPhoneNote']]));
+ $this->compare(User::with(['userPhones' => fn ($query) => $query->with('userPhoneNote')]));
+
+ // with (reverse)
+ $this->compare(UserPhone::with('user.userPhones'));
+ $this->compare(UserPhone::with(['user' => ['userPhones']]));
+ }
+
+ /**
+ * @return void
+ */
+ public function testNestedComplex()
+ {
+ // with
+ $this->compare(User::with('userPhonesSorted.userPhoneNote'));
+ $this->compare(User::with('userPhonesPrimary.userPhoneNote'));
+
+ // with (reverse)
+ $this->compare(UserPhone::with('user.userPhonesSorted'));
+ $this->compare(UserPhone::with('user.userPhonesPrimary'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testWithBuilder()
+ {
+ // 1 level
+ $this->compare(
+ User::with(['userPhones' => function ($query) {
+ $query->orderBy('id', 'ASC')->limit(1)->select(['id', 'phone']);
+ }])
+ );
+
+ // 2 levels
+ $this->compare(
+ User::with(['userPhones' => function ($query) {
+ $query->where(function ($query) {
+ $query->where('phone', '=', '111')->orWhere('phone', '!=', '222')->limit(5);
+ });
+ }])
+ );
+
+ // 3 levels
+ $this->compare(
+ User::with(['userPhones' => function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('phone', '=', '111')
+ ->orWhere(function ($query) {
+ $query->where('phone', '=', '222')->orWhere('created_at', '>', '2010-01-01');
+ });
+ });
+ }])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testWithComplexBuilder()
+ {
+ // 1 level
+ $this->compare(
+ User::with(['userPhonesPrimary' => function ($query) {
+ $query->orderBy('id', 'ASC')->limit(1)->select(['id', 'phone']);
+ }])
+ );
+
+ // 2 levels
+ $this->compare(
+ User::with(['userPhonesPrimary' => function ($query) {
+ $query->where(function ($query) {
+ $query->where('phone', '=', '111')->orWhere('phone', '!=', '222');
+ });
+ }])
+ );
+
+ // 3 levels
+ $this->compare(
+ User::with(['userPhonesPrimary' => function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('phone', '=', '111')
+ ->orWhere(function ($query) {
+ $query->where('phone', '=', '222')->orWhere('created_at', '>', '2010-01-01');
+ });
+ });
+ }])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testWithCountBuilder()
+ {
+ // 1 level
+ $this->compare(
+ User::withCount(['userPhones' => function ($query) {
+ $query->limit(2);
+ }])
+ );
+
+ // 2 levels
+ $this->compare(
+ User::withCount(['userPhones' => function ($query) {
+ $query->where(function ($query) {
+ $query->where('phone', '=', '111')->orWhere('phone', '!=', '222');
+ });
+ }])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testWithComplexCountBuilder()
+ {
+ // 1 level
+ $this->compare(
+ User::withCount(['userPhonesSorted' => function ($query) {
+ $query->limit(2);
+ }])
+ );
+
+ // 2 levels
+ $this->compare(
+ User::withCount(['userPhonesSorted' => function ($query) {
+ $query->where(function ($query) {
+ $query->where('phone', '=', '111')->orWhere('phone', '!=', '222');
+ });
+ }])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testWithCountAlias()
+ {
+ // simple
+ $this->compare(
+ User::withCount('userPhones as test')
+ );
+
+ // builder
+ $this->compare(
+ User::withCount([
+ 'userPhones as primary' => function ($query) {
+ $query->where(function ($query) {
+ $query->where('is_primary', true);
+ });
+ },
+ 'userPhones as not_primary' => function ($query) {
+ $query->where('is_primary', false);
+ },
+ ])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testBelongs()
+ {
+ // simple
+ $this->compare(
+ UserPhone::with('user')
+ );
+
+ // simple count
+ $this->compare(
+ UserPhone::withCount('user')
+ );
+
+ // builder
+ $this->compare(
+ UserPhone::with([
+ 'user' => function ($query) {
+ $query->where('title', '=', 'admin')->limit(1);
+ },
+ ])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testHasManyThrough()
+ {
+ // simple
+ $this->compare(User::with('userPhoneNote'));
+ $this->compare(User::with('userPhonesSorted'));
+ $this->compare(User::with('userPhonesPrimary'));
+
+ // simple count
+ $this->compare(User::withCount('userPhoneNote'));
+ $this->compare(User::withCount('userPhonesSorted'));
+ $this->compare(User::withCount('userPhonesPrimary'));
+
+ // builder
+ $this->compare(
+ User::with([
+ 'userPhoneNote' => function ($query) {
+ $query->limit(1);
+ },
+ ])
+ );
+ $this->compare(
+ User::with([
+ 'userPhonesSorted' => function ($query) {
+ $query->limit(1);
+ },
+ ])
+ );
+ $this->compare(
+ User::with([
+ 'userPhonesPrimary' => function ($query) {
+ $query->limit(1);
+ },
+ ])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testThroughBuilder()
+ {
+ // simple
+ $this->compare(User::with('userPhoneNoteAlt'));
+
+ // simple count
+ $this->compare(User::withCount('userPhoneNoteAlt'));
+
+ // builder
+ $this->compare(
+ User::with([
+ 'userPhoneNoteAlt' => function ($query) {
+ $query->limit(1);
+ },
+ ])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testHasOne()
+ {
+ // simple
+ $this->compare(
+ UserPhone::with('userPhoneNote')
+ );
+
+ // simple count
+ $this->compare(
+ UserPhone::withCount('userPhoneNote')
+ );
+
+ // builder
+ $this->compare(
+ UserPhone::with([
+ 'userPhoneNote' => function ($query) {
+ $query->whereNotNull('note');
+ },
+ ])
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testMorphTo()
+ {
+ // Nested
+ $this->compare(
+ Tag::with(['taggable' => function (\Illuminate\Database\Eloquent\Relations\MorphTo $morphTo) {
+ $morphTo->morphWith([
+ Post::class => ['user'],
+ ]);
+ }])
+ );
+
+ // Nested count
+ $this->compare(
+ Tag::with(['taggable' => function (\Illuminate\Database\Eloquent\Relations\MorphTo $morphTo) {
+ $morphTo->morphWithCount([
+ Post::class => ['user'],
+ ]);
+ }])
+ );
+
+ // Nested (reverse)
+ $this->compare(
+ Post::with(['tag' => function (\Illuminate\Database\Eloquent\Relations\MorphOne $morphOne) {
+ $morphOne->with('taggable');
+ }])
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/FromTest.php b/vendor/anourvalar/eloquent-serialize/tests/FromTest.php
new file mode 100644
index 0000000..760b4c3
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/FromTest.php
@@ -0,0 +1,36 @@
+compare(
+ User::whereExists(function ($query) {
+ $query
+ ->from('user_phones')
+ ->whereRaw('user_phones.user_id = users.id');
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testAlias()
+ {
+ $this->compare(
+ User::whereExists(function ($query) {
+ $query
+ ->from('user_phones AS up')
+ ->whereRaw('up.user_id = users.id');
+ })
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/GroupByTest.php b/vendor/anourvalar/eloquent-serialize/tests/GroupByTest.php
new file mode 100644
index 0000000..fa57ba2
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/GroupByTest.php
@@ -0,0 +1,17 @@
+compare(User::groupBy('title'));
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/HavingTest.php b/vendor/anourvalar/eloquent-serialize/tests/HavingTest.php
new file mode 100644
index 0000000..fedb478
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/HavingTest.php
@@ -0,0 +1,23 @@
+compare(User::groupBy(['id'])->having('id', '>', 1));
+
+ // Two columns
+ $this->compare(User::groupBy(['id', 'title'])->having('id', '>', 1)->orHaving('title', '=', 'abc'));
+
+ // Raw
+ $this->compare(User::groupBy('id')->havingRaw('COUNT(id) > ?', [1]));
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/JoinTest.php b/vendor/anourvalar/eloquent-serialize/tests/JoinTest.php
new file mode 100644
index 0000000..5c544e1
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/JoinTest.php
@@ -0,0 +1,88 @@
+compare(
+ User::leftJoin('user_phones', 'users.id', '=', 'user_phones.user_id')->selectRaw('users.*, user_phones.phone')
+ );
+
+ $this->compare(
+ UserPhone::leftJoin('users', 'users.id', '=', 'user_phones.user_id')->groupBy('users.id')
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testInner()
+ {
+ $this->compare(
+ UserPhone::join('users', 'users.id', '=', 'user_phones.user_id')
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testCross()
+ {
+ $this->compare(UserPhone::crossJoin('users'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testMultiple()
+ {
+ $this->compare(
+ UserPhone::join('users', 'users.id', '=', 'user_phones.user_id')
+ ->join('posts', 'users.id', '=', 'posts.user_id')
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testExpression()
+ {
+ $this->compare(
+ User::join('posts', function ($join) {
+ $join->on('users.id', '=', 'posts.user_id')->orOn('users.id', '=', 'posts.user_id');
+ })
+ );
+
+ $this->compare(
+ User::join('posts', function ($join) {
+ $join->on('users.id', '=', 'posts.user_id')->where('posts.title', '=', 'abc');
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testSubQuery()
+ {
+ $latestPosts = Post::select('user_id', \DB::raw('MAX(created_at) as last_post_created_at'))
+ ->groupBy('user_id');
+
+ $this->compare($latestPosts);
+
+ $this->compare(
+ User::joinSub($latestPosts, 'latest_posts', function ($join) {
+ $join->on('users.id', '=', 'latest_posts.user_id');
+ })
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/LimitTest.php b/vendor/anourvalar/eloquent-serialize/tests/LimitTest.php
new file mode 100644
index 0000000..2799b39
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/LimitTest.php
@@ -0,0 +1,29 @@
+compare(User::limit(10));
+
+ // Limit with offset
+ $this->compare(User::offset(20)->limit(10));
+ }
+
+ /**
+ * @return void
+ */
+ public function testNested()
+ {
+ $this->compare(User::with(['userPhones' => fn ($query) => $query->limit(1)]));
+ $this->compare(User::with(['userPhones' => fn ($query) => $query->limit(2)]));
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/File.php b/vendor/anourvalar/eloquent-serialize/tests/Models/File.php
new file mode 100644
index 0000000..5865a1d
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/Models/File.php
@@ -0,0 +1,7 @@
+belongsTo(User::class);
+ }
+
+ public function tag()
+ {
+ return $this->morphOne(Tag::class, 'taggable');
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/Tag.php b/vendor/anourvalar/eloquent-serialize/tests/Models/Tag.php
new file mode 100644
index 0000000..cda6e1f
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/Models/Tag.php
@@ -0,0 +1,11 @@
+morphTo();
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/User.php b/vendor/anourvalar/eloquent-serialize/tests/Models/User.php
new file mode 100644
index 0000000..0199dbb
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/Models/User.php
@@ -0,0 +1,76 @@
+hasMany(UserPhone::class);
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasMany
+ */
+ public function userPhonesSorted()
+ {
+ return $this->hasMany(UserPhone::class)->orderBy('phone', 'ASC');
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasMany
+ */
+ public function userPhonesPrimary()
+ {
+ return $this->hasMany(UserPhone::class)->where('is_primary', '=', true);
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
+ */
+ public function userPhoneNote()
+ {
+ return $this->hasManyThrough(UserPhoneNote::class, UserPhone::class);
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough
+ */
+ public function userPhoneNoteAlt()
+ {
+ return $this->through($this->userPhones())
+ ->has(fn (UserPhone $userPhone) => $userPhone->userPhoneNote());
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasMany
+ */
+ public function filesAB()
+ {
+ return $this->hasMany(File::class, 'user_id')->whereIn('type', ['a', 'b']);
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasMany
+ */
+ public function filesC()
+ {
+ return $this->hasMany(File::class, 'user_id', 'id')->where('type', 'c');
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasMany
+ */
+ public function filesDE()
+ {
+ return $this->hasOne(File::class)
+ ->whereNotIn('type', ['f', 'g'])
+ ->whereIn('type', ['d', 'e'])
+ ->whereNotIn('type', ['a', 'b', 'c']);
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhone.php b/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhone.php
new file mode 100644
index 0000000..d712bbc
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhone.php
@@ -0,0 +1,44 @@
+belongsTo(User::class);
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasOne
+ */
+ public function userPhoneNote()
+ {
+ return $this->hasOne(UserPhoneNote::class);
+ }
+
+ /**
+ * @param \Illuminate\Database\Eloquent\Builder $query
+ * @param bool $isPrimary
+ * @return void
+ */
+ public function scopeMajor(\Illuminate\Database\Eloquent\Builder $query, bool $isPrimary)
+ {
+ $query->where('is_primary', '=', $isPrimary);
+ }
+
+ /**
+ * @param \Illuminate\Database\Eloquent\Builder $query
+ * @param string $pattern
+ * @return void
+ */
+ public function scopeSearch(\Illuminate\Database\Eloquent\Builder $query, string $pattern)
+ {
+ $query->where(function ($query) use ($pattern) {
+ $query->where('phone', 'LIKE', "%$pattern%");
+ });
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhoneNote.php b/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhoneNote.php
new file mode 100644
index 0000000..ef88d10
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhoneNote.php
@@ -0,0 +1,11 @@
+belongsTo(UserPhone::class);
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/OrderByTest.php b/vendor/anourvalar/eloquent-serialize/tests/OrderByTest.php
new file mode 100644
index 0000000..c7771bc
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/OrderByTest.php
@@ -0,0 +1,37 @@
+compare(User::orderBy('id', 'ASC'));
+
+ // Two columns
+ $this->compare(User::orderBy('id', 'ASC')->orderBy('sort', 'DESC'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testExpression()
+ {
+ // ASC
+ $this->compare(
+ User::orderBy(UserPhone::select('created_at')->whereColumn('user_id', 'users.id')->limit(1)->orderBy('created_at', 'ASC'))
+ );
+
+ // DESC
+ $this->compare(
+ User::orderByDesc(UserPhone::select('phone')->whereColumn('user_id', 'users.id')->limit(1)->orderBy('phone', 'DESC'))
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/ScopeTest.php b/vendor/anourvalar/eloquent-serialize/tests/ScopeTest.php
new file mode 100644
index 0000000..3341cbe
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/ScopeTest.php
@@ -0,0 +1,36 @@
+compare(User::withTrashed());
+
+ // Reverted
+ $this->compare(User::withTrashed()->withoutTrashed());
+ }
+
+ /**
+ * @return void
+ */
+ public function testWithParams()
+ {
+ // Primary
+ $this->compare(UserPhone::major(true));
+
+ // NOT primary
+ $this->compare(UserPhone::major(false));
+
+ // Combine
+ $this->compare(UserPhone::major(false)->search('906'));
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/SelectTest.php b/vendor/anourvalar/eloquent-serialize/tests/SelectTest.php
new file mode 100644
index 0000000..b571fe4
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/SelectTest.php
@@ -0,0 +1,31 @@
+compare(User::select(['id', 'title']));
+
+ // Raw
+ $this->compare(User::selectRaw('id, (SELECT COUNT(*) FROM user_phones WHERE user_id = users.id)'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testExpression()
+ {
+ $this->compare(
+ User::select(['users.*', 'test' => UserPhone::selectRaw('MAX(created_at)')->whereColumn('user_id', 'users.id')])
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/UnionTest.php b/vendor/anourvalar/eloquent-serialize/tests/UnionTest.php
new file mode 100644
index 0000000..230b600
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/UnionTest.php
@@ -0,0 +1,79 @@
+compare(
+ User::whereIn('title', ['a', 'b'])->union(User::whereIn('id', ['1', '2']))
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testNested()
+ {
+ // 2 levels
+ $union = User::where('id', '=', '1');
+ $union = User::where('id', '=', '2')->union($union);
+
+ $this->compare(
+ User::whereIn('title', ['a', 'b'])->union($union)
+ );
+
+ // 3 levels
+ $union = User::where('id', '=', '1');
+ $union = User::where('id', '=', '2')->union($union);
+ $union = User::where('id', '=', '3')->union($union);
+
+ $this->compare(
+ User::whereIn('title', ['a', 'b'])->union($union)
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testExpression()
+ {
+ $union1 = User::where(function ($query) {
+ $query->whereDoesnthave('userPhones', function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('created_at', '>=', '2010-01-01')
+ ->orWhere('id', '=', '1');
+ });
+ });
+ });
+
+ $union2 = User::whereHas('userPhones', function ($query) {
+ $query->where('created_at', '>=', '2010-01-01');
+ });
+
+ $union2 = User::union($union2)->where(function ($query) {
+ $query
+ ->where('id', '=', '1')
+ ->orWhere(function ($query) {
+ $query
+ ->where('id', '=', '2')
+ ->orWhere(function ($query) {
+ $query
+ ->where('title', '!=', 'admin')
+ ->orWhere('id', '=', '3');
+ });
+ });
+ });
+
+ $this->compare(
+ User::whereNotIn('title', ['a', 'b'])->union($union1)->union($union2, true)
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/WhereTest.php b/vendor/anourvalar/eloquent-serialize/tests/WhereTest.php
new file mode 100644
index 0000000..1a59377
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/WhereTest.php
@@ -0,0 +1,285 @@
+compare(User::where('id', '=', '1'));
+
+ // Two columns
+ $this->compare(User::where('id', '=', '1')->orWhere('id', '=', '2'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testExpression()
+ {
+ // Raw
+ $this->compare(
+ User::whereRaw('(id = ? or (SELECT COUNT(*) FROM user_phones WHERE user_id = users.id) > ?)', [5, 1])
+ );
+
+ // DB Raw
+ $this->compare(
+ User::where(\DB::raw('(id = ? or (SELECT COUNT(*) FROM user_phones WHERE user_id = users.id) > ?)', [5, 1]))
+ );
+
+ // 1 level
+ $this->compare(
+ User::where(function ($query) {
+ $query->where('id', '=', '1')->orWhere('id', '=', 2);
+ })
+ );
+
+ // 2 levels
+ $this->compare(
+ User::where(function ($query) {
+ $query
+ ->where('id', '=', '1')
+ ->orWhere(function ($query) {
+ $query->where('id', '=', '2')->where('title', '!=', 'admin');
+ });
+ })
+ );
+
+ // 3 levels
+ $this->compare(
+ User::where(function ($query) {
+ $query
+ ->where('id', '=', '1')
+ ->orWhere(function ($query) {
+ $query
+ ->where('id', '=', '2')
+ ->orWhere(function ($query) {
+ $query
+ ->where('title', '!=', 'admin')
+ ->orWhere('id', '=', '3');
+ });
+ });
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testHas()
+ {
+ // has
+ $this->compare(User::has('userPhones'));
+ $this->compare(User::has('filesAB')->has('filesC'));
+
+ // whereHas, 1 level
+ $this->compare(
+ User::whereHas('userPhones', function ($query) {
+ $query->where('created_at', '>=', '2010-01-01');
+ })
+ );
+
+ $this->compare(
+ User::whereHas('filesAB', function ($query) {
+ $query->whereIn('type', ['f', 'g']);
+ })
+ );
+
+ // whereHas, X levels
+ $this->compare(
+ User::where(function ($query) {
+ $query->whereHas('userPhones', function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('created_at', '>=', '2010-01-01')
+ ->orWhere('id', '=', '1');
+ });
+ });
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testWithHas()
+ {
+ // withWhereHas, 1 level
+ $this->compare(
+ User::withWhereHas('userPhones', function ($query) {
+ $query->where('created_at', '>=', '2010-01-01');
+ })
+ );
+
+ $this->compare(
+ User::withWhereHas('userPhones:id,is_primary')
+ );
+
+ $this->compare(
+ User::withWhereHas('filesAB', function ($query) {
+ $query->whereIn('type', ['f', 'g']);
+ })
+ );
+
+ // withWhereHas, X levels
+ $this->compare(
+ User::where(function ($query) {
+ $query->withWhereHas('userPhones', function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('created_at', '>=', '2010-01-01')
+ ->orWhere('id', '=', '1');
+ });
+ });
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testNestedHas()
+ {
+ // has
+ $this->compare(User::has('userPhones.userPhoneNote'));
+
+ // whereHas, 1 level
+ $this->compare(
+ User::whereHas('userPhones.userPhoneNote', function ($query) {
+ $query->where('created_at', '>=', '2010-01-01');
+ })
+ );
+
+ // whereHas, X levels
+ $this->compare(
+ User::where(function ($query) {
+ $query->whereHas('userPhones.userPhoneNote', function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('created_at', '>=', '2010-01-01')
+ ->orWhere('id', '=', '1');
+ });
+ });
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testNestedWithHas()
+ {
+ // withWhereHas, 1 level
+ $this->compare(
+ User::withWhereHas('userPhones.userPhoneNote', function ($query) {
+ $query->where('created_at', '>=', '2010-01-01');
+ })
+ );
+
+ // withWhereHas, X levels
+ $this->compare(
+ User::where(function ($query) {
+ $query->withWhereHas('userPhones.userPhoneNote', function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('created_at', '>=', '2010-01-01')
+ ->orWhere('id', '=', '1');
+ });
+ });
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testDoesnthave()
+ {
+ // doesnthave
+ $this->compare(User::doesnthave('userPhones'));
+ $this->compare(User::doesnthave('filesAB')->doesnthave('filesC'));
+
+ // whereDoesnthave
+ $this->compare(
+ User::whereDoesnthave('userPhones', function ($query) {
+ $query->where('created_at', '>=', '2010-01-01');
+ })
+ );
+
+ // whereDoesnthave, X levels
+ $this->compare(
+ User::where(function ($query) {
+ $query->whereDoesnthave('userPhones', function ($query) {
+ $query->where(function ($query) {
+ $query
+ ->where('created_at', '>=', '2010-01-01')
+ ->orWhere('id', '=', '1');
+ });
+ });
+ })
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testJson()
+ {
+ $this->compare(User::where('meta->foo', 'a'));
+
+ $this->compare(User::whereJsonContains('meta->foo', ['a']), false);
+
+ $this->compare(User::whereJsonDoesntContain('meta->foo', ['a']), false);
+
+ $this->compare(User::whereJsonLength('meta->foo', 0));
+ $this->compare(User::whereJsonLength('meta->foo', '>', 1));
+
+ $this->compare(User::whereJsonContainsKey('meta->foo'));
+ $this->compare(User::whereJsonContainsKey('meta->foo[0]'));
+ $this->compare(User::whereJsonContainsKey('meta->foo->bar'));
+ $this->compare(User::whereJsonContainsKey('meta->foo->bar[0]'));
+
+ $this->compare(User::whereJsonDoesntContainKey('meta->foo'));
+ $this->compare(User::whereJsonDoesntContainKey('meta->foo[0]'));
+ $this->compare(User::whereJsonDoesntContainKey('meta->foo->bar'));
+ $this->compare(User::whereJsonDoesntContainKey('meta->foo->bar[0]'));
+ }
+
+ /**
+ * @return void
+ */
+ public function testFullText()
+ {
+ // Simple
+ $this->compare(Post::whereFullText('body', 'said'), false);
+
+ // With options
+ $this->compare(Post::whereFullText('body', 'said', ['language' => 'russian']), false);
+
+ // Inside closure
+ $this->compare(
+ User::whereHas('userPhoneNote', function ($query) {
+ $query->whereFullText('note', 'another', ['language' => 'russian']);
+ }),
+ false
+ );
+ }
+
+ /**
+ * @return void
+ */
+ public function testBelongsTo()
+ {
+ $this->compare(
+ UserPhone::whereBelongsTo(UserPhone::has('user')->first()->user)
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/WithCastsTest.php b/vendor/anourvalar/eloquent-serialize/tests/WithCastsTest.php
new file mode 100644
index 0000000..664c617
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/WithCastsTest.php
@@ -0,0 +1,36 @@
+compare(User::withCasts(['user_id' => 'integer']));
+
+ // Custom
+ $this->compare(User::withCasts(['user_id' => \AnourValar\EloquentSerialize\Tests\Casts\TestCast::class]));
+ }
+
+ /**
+ * @return void
+ */
+ public function testSelectRaw()
+ {
+ $this->compare(
+ User::select([
+ 'users.*',
+ 'last_phone_created_at' => UserPhone::selectRaw('MAX(created_at)')->whereColumn('user_id', 'users.id'),
+ ])->withCasts([
+ 'last_phone_created_at' => 'datetime',
+ ])
+ );
+ }
+}
diff --git a/vendor/anourvalar/eloquent-serialize/tests/factories/Factory.php b/vendor/anourvalar/eloquent-serialize/tests/factories/Factory.php
new file mode 100644
index 0000000..cbb0fc9
--- /dev/null
+++ b/vendor/anourvalar/eloquent-serialize/tests/factories/Factory.php
@@ -0,0 +1,103 @@
+define(User::class, function (Faker $faker, array $attributes) {
+ return [
+ 'title' => 'admin',
+ 'sort' => $faker->numberBetween(1, 10),
+ 'meta' => $faker->randomElement([json_encode(['foo' => 'a']), json_encode(['foo' => ['bar' => ['hello']]])]),
+ 'deleted_at' => mt_rand(0, 5) ? null : $faker->date('Y-m-d H:i:s'),
+ ];
+});
+
+$factory->define(UserPhone::class, function (Faker $faker, array $attributes) {
+ static $counter;
+ $counter++;
+
+ return [
+ 'user_id' => function () use ($counter) {
+ if (! ($counter % 2)) {
+ $id = User::max('id');
+ if ($id) {
+ return $id;
+ }
+ }
+
+ return factory(User::class)->create();
+ },
+ 'phone' => $faker->phoneNumber,
+ 'is_primary' => $faker->boolean,
+ ];
+});
+
+$factory->define(UserPhoneNote::class, function (Faker $faker, array $attributes) {
+ static $counter;
+ $counter++;
+
+ return [
+ 'user_phone_id' => function () use ($counter) {
+ if (! ($counter % 2)) {
+ $id = UserPhone::max('id');
+ if ($id) {
+ return $id;
+ }
+ }
+
+ return factory(UserPhone::class)->create();
+ },
+ 'note' => $faker->realText(100),
+ ];
+});
+
+$factory->define(File::class, function (Faker $faker, array $attributes) {
+ static $users;
+ if (! $users) {
+ $users = User::get(['id']);
+ }
+
+ return [
+ 'user_id' => function () use ($users) {
+ return $users->shuffle()->first();
+ },
+ 'type' => $faker->randomElement(['a', 'b', 'c', 'd', 'e', 'f']),
+ ];
+});
+
+$factory->define(Post::class, function (Faker $faker, array $attributes) {
+ static $users;
+ if (! $users) {
+ $users = User::get(['id']);
+ }
+
+ return [
+ 'user_id' => function () use ($users) {
+ return $users->shuffle()->first();
+ },
+ 'title' => $faker->sentence(),
+ 'body' => $faker->sentence(),
+ ];
+});
+
+$factory->define(Tag::class, function (Faker $faker, array $attributes) {
+ static $posts;
+ if (! $posts) {
+ $posts = Post::get(['id']);
+ }
+
+ return [
+ 'title' => $faker->sentence(),
+ 'taggable_id' => function () use ($posts) {
+ return $posts->shuffle()->first();
+ },
+ 'taggable_type' => Post::class,
+ ];
+});
diff --git a/vendor/autoload.php b/vendor/autoload.php
new file mode 100644
index 0000000..a83e48f
--- /dev/null
+++ b/vendor/autoload.php
@@ -0,0 +1,25 @@
+realpath = realpath($opened_path) ?: $opened_path;
+ $opened_path = $this->realpath;
+ $this->handle = fopen($this->realpath, $mode);
+ $this->position = 0;
+
+ return (bool) $this->handle;
+ }
+
+ public function stream_read($count)
+ {
+ $data = fread($this->handle, $count);
+
+ if ($this->position === 0) {
+ $data = preg_replace('{^#!.*\r?\n}', '', $data);
+ }
+
+ $this->position += strlen($data);
+
+ return $data;
+ }
+
+ public function stream_cast($castAs)
+ {
+ return $this->handle;
+ }
+
+ public function stream_close()
+ {
+ fclose($this->handle);
+ }
+
+ public function stream_lock($operation)
+ {
+ return $operation ? flock($this->handle, $operation) : true;
+ }
+
+ public function stream_seek($offset, $whence)
+ {
+ if (0 === fseek($this->handle, $offset, $whence)) {
+ $this->position = ftell($this->handle);
+ return true;
+ }
+
+ return false;
+ }
+
+ public function stream_tell()
+ {
+ return $this->position;
+ }
+
+ public function stream_eof()
+ {
+ return feof($this->handle);
+ }
+
+ public function stream_stat()
+ {
+ return array();
+ }
+
+ public function stream_set_option($option, $arg1, $arg2)
+ {
+ return true;
+ }
+
+ public function url_stat($path, $flags)
+ {
+ $path = substr($path, 17);
+ if (file_exists($path)) {
+ return stat($path);
+ }
+
+ return false;
+ }
+ }
+ }
+
+ if (
+ (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+ || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+ ) {
+ return include("phpvfscomposer://" . __DIR__ . '/..'.'/blade-ui-kit/blade-icons/bin/blade-icons-generate');
+ }
+}
+
+return include __DIR__ . '/..'.'/blade-ui-kit/blade-icons/bin/blade-icons-generate';
diff --git a/vendor/bin/blade-icons-generate.bat b/vendor/bin/blade-icons-generate.bat
new file mode 100644
index 0000000..167c55a
--- /dev/null
+++ b/vendor/bin/blade-icons-generate.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/blade-icons-generate
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/vendor/bin/carbon b/vendor/bin/carbon
new file mode 100644
index 0000000..86fbfdf
--- /dev/null
+++ b/vendor/bin/carbon
@@ -0,0 +1,119 @@
+#!/usr/bin/env php
+realpath = realpath($opened_path) ?: $opened_path;
+ $opened_path = $this->realpath;
+ $this->handle = fopen($this->realpath, $mode);
+ $this->position = 0;
+
+ return (bool) $this->handle;
+ }
+
+ public function stream_read($count)
+ {
+ $data = fread($this->handle, $count);
+
+ if ($this->position === 0) {
+ $data = preg_replace('{^#!.*\r?\n}', '', $data);
+ }
+
+ $this->position += strlen($data);
+
+ return $data;
+ }
+
+ public function stream_cast($castAs)
+ {
+ return $this->handle;
+ }
+
+ public function stream_close()
+ {
+ fclose($this->handle);
+ }
+
+ public function stream_lock($operation)
+ {
+ return $operation ? flock($this->handle, $operation) : true;
+ }
+
+ public function stream_seek($offset, $whence)
+ {
+ if (0 === fseek($this->handle, $offset, $whence)) {
+ $this->position = ftell($this->handle);
+ return true;
+ }
+
+ return false;
+ }
+
+ public function stream_tell()
+ {
+ return $this->position;
+ }
+
+ public function stream_eof()
+ {
+ return feof($this->handle);
+ }
+
+ public function stream_stat()
+ {
+ return array();
+ }
+
+ public function stream_set_option($option, $arg1, $arg2)
+ {
+ return true;
+ }
+
+ public function url_stat($path, $flags)
+ {
+ $path = substr($path, 17);
+ if (file_exists($path)) {
+ return stat($path);
+ }
+
+ return false;
+ }
+ }
+ }
+
+ if (
+ (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+ || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+ ) {
+ return include("phpvfscomposer://" . __DIR__ . '/..'.'/nesbot/carbon/bin/carbon');
+ }
+}
+
+return include __DIR__ . '/..'.'/nesbot/carbon/bin/carbon';
diff --git a/vendor/bin/carbon.bat b/vendor/bin/carbon.bat
new file mode 100644
index 0000000..806cf15
--- /dev/null
+++ b/vendor/bin/carbon.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/carbon
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/vendor/bin/doctrine-dbal b/vendor/bin/doctrine-dbal
new file mode 100644
index 0000000..4ed6f70
--- /dev/null
+++ b/vendor/bin/doctrine-dbal
@@ -0,0 +1,119 @@
+#!/usr/bin/env php
+realpath = realpath($opened_path) ?: $opened_path;
+ $opened_path = $this->realpath;
+ $this->handle = fopen($this->realpath, $mode);
+ $this->position = 0;
+
+ return (bool) $this->handle;
+ }
+
+ public function stream_read($count)
+ {
+ $data = fread($this->handle, $count);
+
+ if ($this->position === 0) {
+ $data = preg_replace('{^#!.*\r?\n}', '', $data);
+ }
+
+ $this->position += strlen($data);
+
+ return $data;
+ }
+
+ public function stream_cast($castAs)
+ {
+ return $this->handle;
+ }
+
+ public function stream_close()
+ {
+ fclose($this->handle);
+ }
+
+ public function stream_lock($operation)
+ {
+ return $operation ? flock($this->handle, $operation) : true;
+ }
+
+ public function stream_seek($offset, $whence)
+ {
+ if (0 === fseek($this->handle, $offset, $whence)) {
+ $this->position = ftell($this->handle);
+ return true;
+ }
+
+ return false;
+ }
+
+ public function stream_tell()
+ {
+ return $this->position;
+ }
+
+ public function stream_eof()
+ {
+ return feof($this->handle);
+ }
+
+ public function stream_stat()
+ {
+ return array();
+ }
+
+ public function stream_set_option($option, $arg1, $arg2)
+ {
+ return true;
+ }
+
+ public function url_stat($path, $flags)
+ {
+ $path = substr($path, 17);
+ if (file_exists($path)) {
+ return stat($path);
+ }
+
+ return false;
+ }
+ }
+ }
+
+ if (
+ (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+ || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+ ) {
+ return include("phpvfscomposer://" . __DIR__ . '/..'.'/doctrine/dbal/bin/doctrine-dbal');
+ }
+}
+
+return include __DIR__ . '/..'.'/doctrine/dbal/bin/doctrine-dbal';
diff --git a/vendor/bin/doctrine-dbal.bat b/vendor/bin/doctrine-dbal.bat
new file mode 100644
index 0000000..56c0b3f
--- /dev/null
+++ b/vendor/bin/doctrine-dbal.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/doctrine-dbal
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/vendor/bin/patch-type-declarations b/vendor/bin/patch-type-declarations
new file mode 100644
index 0000000..4e63fef
--- /dev/null
+++ b/vendor/bin/patch-type-declarations
@@ -0,0 +1,119 @@
+#!/usr/bin/env php
+realpath = realpath($opened_path) ?: $opened_path;
+ $opened_path = $this->realpath;
+ $this->handle = fopen($this->realpath, $mode);
+ $this->position = 0;
+
+ return (bool) $this->handle;
+ }
+
+ public function stream_read($count)
+ {
+ $data = fread($this->handle, $count);
+
+ if ($this->position === 0) {
+ $data = preg_replace('{^#!.*\r?\n}', '', $data);
+ }
+
+ $this->position += strlen($data);
+
+ return $data;
+ }
+
+ public function stream_cast($castAs)
+ {
+ return $this->handle;
+ }
+
+ public function stream_close()
+ {
+ fclose($this->handle);
+ }
+
+ public function stream_lock($operation)
+ {
+ return $operation ? flock($this->handle, $operation) : true;
+ }
+
+ public function stream_seek($offset, $whence)
+ {
+ if (0 === fseek($this->handle, $offset, $whence)) {
+ $this->position = ftell($this->handle);
+ return true;
+ }
+
+ return false;
+ }
+
+ public function stream_tell()
+ {
+ return $this->position;
+ }
+
+ public function stream_eof()
+ {
+ return feof($this->handle);
+ }
+
+ public function stream_stat()
+ {
+ return array();
+ }
+
+ public function stream_set_option($option, $arg1, $arg2)
+ {
+ return true;
+ }
+
+ public function url_stat($path, $flags)
+ {
+ $path = substr($path, 17);
+ if (file_exists($path)) {
+ return stat($path);
+ }
+
+ return false;
+ }
+ }
+ }
+
+ if (
+ (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+ || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+ ) {
+ return include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/error-handler/Resources/bin/patch-type-declarations');
+ }
+}
+
+return include __DIR__ . '/..'.'/symfony/error-handler/Resources/bin/patch-type-declarations';
diff --git a/vendor/bin/patch-type-declarations.bat b/vendor/bin/patch-type-declarations.bat
new file mode 100644
index 0000000..2b07079
--- /dev/null
+++ b/vendor/bin/patch-type-declarations.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/patch-type-declarations
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/vendor/bin/var-dump-server b/vendor/bin/var-dump-server
new file mode 100644
index 0000000..18db1c1
--- /dev/null
+++ b/vendor/bin/var-dump-server
@@ -0,0 +1,119 @@
+#!/usr/bin/env php
+realpath = realpath($opened_path) ?: $opened_path;
+ $opened_path = $this->realpath;
+ $this->handle = fopen($this->realpath, $mode);
+ $this->position = 0;
+
+ return (bool) $this->handle;
+ }
+
+ public function stream_read($count)
+ {
+ $data = fread($this->handle, $count);
+
+ if ($this->position === 0) {
+ $data = preg_replace('{^#!.*\r?\n}', '', $data);
+ }
+
+ $this->position += strlen($data);
+
+ return $data;
+ }
+
+ public function stream_cast($castAs)
+ {
+ return $this->handle;
+ }
+
+ public function stream_close()
+ {
+ fclose($this->handle);
+ }
+
+ public function stream_lock($operation)
+ {
+ return $operation ? flock($this->handle, $operation) : true;
+ }
+
+ public function stream_seek($offset, $whence)
+ {
+ if (0 === fseek($this->handle, $offset, $whence)) {
+ $this->position = ftell($this->handle);
+ return true;
+ }
+
+ return false;
+ }
+
+ public function stream_tell()
+ {
+ return $this->position;
+ }
+
+ public function stream_eof()
+ {
+ return feof($this->handle);
+ }
+
+ public function stream_stat()
+ {
+ return array();
+ }
+
+ public function stream_set_option($option, $arg1, $arg2)
+ {
+ return true;
+ }
+
+ public function url_stat($path, $flags)
+ {
+ $path = substr($path, 17);
+ if (file_exists($path)) {
+ return stat($path);
+ }
+
+ return false;
+ }
+ }
+ }
+
+ if (
+ (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+ || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+ ) {
+ return include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server');
+ }
+}
+
+return include __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server';
diff --git a/vendor/bin/var-dump-server.bat b/vendor/bin/var-dump-server.bat
new file mode 100644
index 0000000..94333da
--- /dev/null
+++ b/vendor/bin/var-dump-server.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/var-dump-server
+SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
+php "%BIN_TARGET%" %*
diff --git a/vendor/blade-ui-kit/blade-heroicons/LICENSE.md b/vendor/blade-ui-kit/blade-heroicons/LICENSE.md
new file mode 100644
index 0000000..669220b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Dries Vints
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/blade-ui-kit/blade-heroicons/composer.json b/vendor/blade-ui-kit/blade-heroicons/composer.json
new file mode 100644
index 0000000..a8ef805
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/composer.json
@@ -0,0 +1,54 @@
+{
+ "name": "blade-ui-kit/blade-heroicons",
+ "description": "A package to easily make use of Heroicons in your Laravel Blade views.",
+ "keywords": ["Blade", "Heroicons", "Laravel"],
+ "homepage": "https://github.com/blade-ui-kit/blade-heroicons",
+ "license": "MIT",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/driesvints"
+ },
+ {
+ "type": "paypal",
+ "url": "https://www.paypal.com/paypalme/driesvints"
+ }
+ ],
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "require": {
+ "php": "^8.0",
+ "blade-ui-kit/blade-icons": "^1.6",
+ "illuminate/support": "^9.0|^10.0|^11.0"
+ },
+ "require-dev": {
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "BladeUI\\Heroicons\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Tests\\": "tests"
+ }
+ },
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider"
+ ]
+ }
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/vendor/blade-ui-kit/blade-heroicons/config/blade-heroicons.php b/vendor/blade-ui-kit/blade-heroicons/config/blade-heroicons.php
new file mode 100644
index 0000000..e517a97
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/config/blade-heroicons.php
@@ -0,0 +1,57 @@
+ 'heroicon',
+
+ /*
+ |-----------------------------------------------------------------
+ | Fallback Icon
+ |-----------------------------------------------------------------
+ |
+ | This config option allows you to define a fallback
+ | icon when an icon in this set cannot be found.
+ |
+ */
+
+ 'fallback' => '',
+
+ /*
+ |-----------------------------------------------------------------
+ | Default Set Classes
+ |-----------------------------------------------------------------
+ |
+ | This config option allows you to define some classes which
+ | will be applied by default to all icons within this set.
+ |
+ */
+
+ 'class' => '',
+
+ /*
+ |-----------------------------------------------------------------
+ | Default Set Attributes
+ |-----------------------------------------------------------------
+ |
+ | This config option allows you to define some attributes which
+ | will be applied by default to all icons within this set.
+ |
+ */
+
+ 'attributes' => [
+ // 'width' => 50,
+ // 'height' => 50,
+ ],
+
+];
diff --git a/vendor/blade-ui-kit/blade-heroicons/package.json b/vendor/blade-ui-kit/blade-heroicons/package.json
new file mode 100644
index 0000000..d203a44
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "heroicons": "^2.1"
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-academic-cap.svg
new file mode 100644
index 0000000..c66143a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-academic-cap.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-horizontal.svg
new file mode 100644
index 0000000..19f1fcc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-vertical.svg
new file mode 100644
index 0000000..70f1f83
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-arrow-down.svg
new file mode 100644
index 0000000..bf0ff06
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-x-mark.svg
new file mode 100644
index 0000000..869641d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-x-mark.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box.svg
new file mode 100644
index 0000000..b6f42cb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-circle.svg
new file mode 100644
index 0000000..8836f9b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-left.svg
new file mode 100644
index 0000000..f6ab16f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square-stack.svg
new file mode 100644
index 0000000..2284806
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square.svg
new file mode 100644
index 0000000..801c244
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-right.svg
new file mode 100644
index 0000000..8a1d80a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-tray.svg
new file mode 100644
index 0000000..1ff676b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-tray.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down.svg
new file mode 100644
index 0000000..b90f11a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-circle.svg
new file mode 100644
index 0000000..5dd2ded
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-end-on-rectangle.svg
new file mode 100644
index 0000000..2fd5cce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-end-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-start-on-rectangle.svg
new file mode 100644
index 0000000..89e7d5a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-start-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left.svg
new file mode 100644
index 0000000..748b385
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-down.svg
new file mode 100644
index 0000000..364503c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-left.svg
new file mode 100644
index 0000000..185924f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-right.svg
new file mode 100644
index 0000000..40b5533
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-up.svg
new file mode 100644
index 0000000..535b7b7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path-rounded-square.svg
new file mode 100644
index 0000000..b698c36
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path-rounded-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path.svg
new file mode 100644
index 0000000..2d5cbe2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-circle.svg
new file mode 100644
index 0000000..e9d64e2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-end-on-rectangle.svg
new file mode 100644
index 0000000..233ca17
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-end-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-start-on-rectangle.svg
new file mode 100644
index 0000000..14a3273
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-start-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right.svg
new file mode 100644
index 0000000..bc4ee02
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-top-right-on-square.svg
new file mode 100644
index 0000000..ef67401
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-top-right-on-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-down.svg
new file mode 100644
index 0000000..98dc7f9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-up.svg
new file mode 100644
index 0000000..77395a2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-down-left.svg
new file mode 100644
index 0000000..ca5f6f0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-down-right.svg
new file mode 100644
index 0000000..3051a7f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-left-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-left-down.svg
new file mode 100644
index 0000000..6e8cc84
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-left-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-left-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-left-up.svg
new file mode 100644
index 0000000..e0d9b70
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-left-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-right-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-right-down.svg
new file mode 100644
index 0000000..ba73dc7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-right-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-right-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-right-up.svg
new file mode 100644
index 0000000..517ef31
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-right-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-up-left.svg
new file mode 100644
index 0000000..227b8e7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-up-right.svg
new file mode 100644
index 0000000..a9d9cf1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-turn-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-circle.svg
new file mode 100644
index 0000000..0385993
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-left.svg
new file mode 100644
index 0000000..88cf7cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square-stack.svg
new file mode 100644
index 0000000..9e43afc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square.svg
new file mode 100644
index 0000000..13bf43d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-right.svg
new file mode 100644
index 0000000..dd7a8ef
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-tray.svg
new file mode 100644
index 0000000..aecaa26
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-tray.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up.svg
new file mode 100644
index 0000000..58f91a3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-down.svg
new file mode 100644
index 0000000..2afee9f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-left.svg
new file mode 100644
index 0000000..55f63dd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-right.svg
new file mode 100644
index 0000000..8028a57
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-up.svg
new file mode 100644
index 0000000..7df0285
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-in.svg
new file mode 100644
index 0000000..29ea56b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-in.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-out.svg
new file mode 100644
index 0000000..a9d9385
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-right-left.svg
new file mode 100644
index 0000000..9ba45af
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-right-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-up-down.svg
new file mode 100644
index 0000000..2cf5523
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-at-symbol.svg
new file mode 100644
index 0000000..11e99d8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-at-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backspace.svg
new file mode 100644
index 0000000..1c5f355
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backspace.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backward.svg
new file mode 100644
index 0000000..0e7a49c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-banknotes.svg
new file mode 100644
index 0000000..27ceef7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-banknotes.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-2.svg
new file mode 100644
index 0000000..7a209e2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-left.svg
new file mode 100644
index 0000000..08ca32a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-right.svg
new file mode 100644
index 0000000..edee4c9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-center-left.svg
new file mode 100644
index 0000000..d2228f2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-center-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3.svg
new file mode 100644
index 0000000..9a1136a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-4.svg
new file mode 100644
index 0000000..e1c529e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-4.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-down.svg
new file mode 100644
index 0000000..4d48bba
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-up.svg
new file mode 100644
index 0000000..6d44246
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-0.svg
new file mode 100644
index 0000000..8df1066
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-0.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-100.svg
new file mode 100644
index 0000000..561cc78
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-100.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-50.svg
new file mode 100644
index 0000000..ad4ef42
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-50.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-beaker.svg
new file mode 100644
index 0000000..f8c9c3a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-beaker.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-alert.svg
new file mode 100644
index 0000000..189b8bc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-alert.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-slash.svg
new file mode 100644
index 0000000..7fcf3c1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-snooze.svg
new file mode 100644
index 0000000..0af5048
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-snooze.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell.svg
new file mode 100644
index 0000000..1b4f00f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bold.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bold.svg
new file mode 100644
index 0000000..25c3dbc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bold.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt-slash.svg
new file mode 100644
index 0000000..3f96c8e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt.svg
new file mode 100644
index 0000000..e406e2f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-book-open.svg
new file mode 100644
index 0000000..442db26
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-book-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-slash.svg
new file mode 100644
index 0000000..b0b62d1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-square.svg
new file mode 100644
index 0000000..8c4a3c8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark.svg
new file mode 100644
index 0000000..9a8282a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-briefcase.svg
new file mode 100644
index 0000000..96e74f1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-briefcase.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bug-ant.svg
new file mode 100644
index 0000000..bc7e73f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bug-ant.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-library.svg
new file mode 100644
index 0000000..496facf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-library.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office-2.svg
new file mode 100644
index 0000000..acd4621
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office.svg
new file mode 100644
index 0000000..691dce8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-storefront.svg
new file mode 100644
index 0000000..fc9c14b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-storefront.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cake.svg
new file mode 100644
index 0000000..012026a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cake.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calculator.svg
new file mode 100644
index 0000000..a3c3420
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calculator.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-date-range.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-date-range.svg
new file mode 100644
index 0000000..3a086f8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-date-range.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-days.svg
new file mode 100644
index 0000000..16c9890
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-days.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar.svg
new file mode 100644
index 0000000..d8468cb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-camera.svg
new file mode 100644
index 0000000..0429f04
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-camera.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar-square.svg
new file mode 100644
index 0000000..7e56212
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar.svg
new file mode 100644
index 0000000..da7e5d0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-pie.svg
new file mode 100644
index 0000000..8d17490
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-pie.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center-text.svg
new file mode 100644
index 0000000..549eb6e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center.svg
new file mode 100644
index 0000000..0f5f609
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-ellipsis.svg
new file mode 100644
index 0000000..b7f2b84
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-right.svg
new file mode 100644
index 0000000..d99e13b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left.svg
new file mode 100644
index 0000000..5c9b47f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left-ellipsis.svg
new file mode 100644
index 0000000..a61f6bd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left.svg
new file mode 100644
index 0000000..2cc7ce5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-badge.svg
new file mode 100644
index 0000000..cb96b01
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-circle.svg
new file mode 100644
index 0000000..5beeb13
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check.svg
new file mode 100644
index 0000000..0b7e9b3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-down.svg
new file mode 100644
index 0000000..9d659c3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-left.svg
new file mode 100644
index 0000000..3194c3f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-right.svg
new file mode 100644
index 0000000..86a963a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-up.svg
new file mode 100644
index 0000000..bcf7619
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-down.svg
new file mode 100644
index 0000000..f734a0c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-left.svg
new file mode 100644
index 0000000..f293041
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-right.svg
new file mode 100644
index 0000000..3a08c80
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up-down.svg
new file mode 100644
index 0000000..db44522
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up.svg
new file mode 100644
index 0000000..58573a7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-circle-stack.svg
new file mode 100644
index 0000000..3da8275
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-circle-stack.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-check.svg
new file mode 100644
index 0000000..b8909e7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-check.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-list.svg
new file mode 100644
index 0000000..355dec2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-list.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document.svg
new file mode 100644
index 0000000..6e09983
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard.svg
new file mode 100644
index 0000000..2447452
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clock.svg
new file mode 100644
index 0000000..b808f55
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-down.svg
new file mode 100644
index 0000000..478173d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-up.svg
new file mode 100644
index 0000000..fcd0c96
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud.svg
new file mode 100644
index 0000000..98a40cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket-square.svg
new file mode 100644
index 0000000..9d59c9a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket.svg
new file mode 100644
index 0000000..48b64b1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-6-tooth.svg
new file mode 100644
index 0000000..67d34e6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-6-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-8-tooth.svg
new file mode 100644
index 0000000..6d92cde
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-8-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog.svg
new file mode 100644
index 0000000..4a7ef24
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-command-line.svg
new file mode 100644
index 0000000..aa4c164
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-command-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-computer-desktop.svg
new file mode 100644
index 0000000..56f18f7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-computer-desktop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cpu-chip.svg
new file mode 100644
index 0000000..ee84795
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cpu-chip.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-credit-card.svg
new file mode 100644
index 0000000..d55fcd3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-credit-card.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube-transparent.svg
new file mode 100644
index 0000000..b3af3d6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube-transparent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube.svg
new file mode 100644
index 0000000..a3c841d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-bangladeshi.svg
new file mode 100644
index 0000000..c9b4056
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-dollar.svg
new file mode 100644
index 0000000..1d4c4ac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-dollar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-euro.svg
new file mode 100644
index 0000000..88b62da
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-pound.svg
new file mode 100644
index 0000000..232af6e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-rupee.svg
new file mode 100644
index 0000000..f79b4e7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-yen.svg
new file mode 100644
index 0000000..e234e5f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-rays.svg
new file mode 100644
index 0000000..ff9f3d5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-rays.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-ripple.svg
new file mode 100644
index 0000000..8ce389b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-ripple.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-phone-mobile.svg
new file mode 100644
index 0000000..99440e4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-phone-mobile.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-tablet.svg
new file mode 100644
index 0000000..79cf2bf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-tablet.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-divide.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-divide.svg
new file mode 100644
index 0000000..09ae988
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-divide.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-down.svg
new file mode 100644
index 0000000..3f24c1f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-up.svg
new file mode 100644
index 0000000..b92118e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-chart-bar.svg
new file mode 100644
index 0000000..0a0dc7c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-check.svg
new file mode 100644
index 0000000..9867eab
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-bangladeshi.svg
new file mode 100644
index 0000000..d14b959
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-dollar.svg
new file mode 100644
index 0000000..27936ba
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-dollar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-euro.svg
new file mode 100644
index 0000000..622ab9b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-pound.svg
new file mode 100644
index 0000000..7b4b079
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-rupee.svg
new file mode 100644
index 0000000..b4c50e7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-yen.svg
new file mode 100644
index 0000000..55e94ff
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-duplicate.svg
new file mode 100644
index 0000000..faa81c5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-duplicate.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-magnifying-glass.svg
new file mode 100644
index 0000000..e2c3f4b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-magnifying-glass.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-minus.svg
new file mode 100644
index 0000000..0c0c5e0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-plus.svg
new file mode 100644
index 0000000..2b9da44
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-text.svg
new file mode 100644
index 0000000..14210f6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document.svg
new file mode 100644
index 0000000..9f81766
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal-circle.svg
new file mode 100644
index 0000000..3002b9c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal.svg
new file mode 100644
index 0000000..6359416
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-vertical.svg
new file mode 100644
index 0000000..937c4c6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope-open.svg
new file mode 100644
index 0000000..648144c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope.svg
new file mode 100644
index 0000000..5f3d4fe
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-equals.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-equals.svg
new file mode 100644
index 0000000..7dd31a9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-equals.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-circle.svg
new file mode 100644
index 0000000..094c29f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-triangle.svg
new file mode 100644
index 0000000..b841436
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-triangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-dropper.svg
new file mode 100644
index 0000000..2807f23
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-dropper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-slash.svg
new file mode 100644
index 0000000..61957b3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye.svg
new file mode 100644
index 0000000..0e0f914
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-frown.svg
new file mode 100644
index 0000000..e3ee54e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-frown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-smile.svg
new file mode 100644
index 0000000..e36ddb7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-smile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-film.svg
new file mode 100644
index 0000000..d1bc36d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-film.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-finger-print.svg
new file mode 100644
index 0000000..f4f3340
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-finger-print.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-fire.svg
new file mode 100644
index 0000000..7556d5d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-fire.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-flag.svg
new file mode 100644
index 0000000..ef6658e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-flag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-arrow-down.svg
new file mode 100644
index 0000000..6c25eea
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-minus.svg
new file mode 100644
index 0000000..e9c9a04
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-open.svg
new file mode 100644
index 0000000..3a36b57
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-plus.svg
new file mode 100644
index 0000000..e76be0e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder.svg
new file mode 100644
index 0000000..5b595b6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-forward.svg
new file mode 100644
index 0000000..1cf6daf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-forward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-funnel.svg
new file mode 100644
index 0000000..be9bae4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-funnel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gif.svg
new file mode 100644
index 0000000..96f6176
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gif.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift-top.svg
new file mode 100644
index 0000000..4ac9ece
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift-top.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift.svg
new file mode 100644
index 0000000..cffe93d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-alt.svg
new file mode 100644
index 0000000..43d1dcc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-alt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-americas.svg
new file mode 100644
index 0000000..a630940
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-americas.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-asia-australia.svg
new file mode 100644
index 0000000..4c073cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-asia-australia.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-europe-africa.svg
new file mode 100644
index 0000000..fc4644a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-europe-africa.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h1.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h1.svg
new file mode 100644
index 0000000..76f06cd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h1.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h2.svg
new file mode 100644
index 0000000..0d8ba3e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h3.svg
new file mode 100644
index 0000000..2ba4d4a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-h3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-raised.svg
new file mode 100644
index 0000000..de3a1a1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-raised.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-down.svg
new file mode 100644
index 0000000..2cca438
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-up.svg
new file mode 100644
index 0000000..32c6f96
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hashtag.svg
new file mode 100644
index 0000000..dc28035
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hashtag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-heart.svg
new file mode 100644
index 0000000..b23191f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home-modern.svg
new file mode 100644
index 0000000..66948b1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home-modern.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home.svg
new file mode 100644
index 0000000..60b4496
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-identification.svg
new file mode 100644
index 0000000..8e831db
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-arrow-down.svg
new file mode 100644
index 0000000..c6bca81
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-stack.svg
new file mode 100644
index 0000000..8bc16a5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox.svg
new file mode 100644
index 0000000..4ae995f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-information-circle.svg
new file mode 100644
index 0000000..a18abab
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-italic.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-italic.svg
new file mode 100644
index 0000000..23698b5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-italic.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-key.svg
new file mode 100644
index 0000000..dd7e56f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-key.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-language.svg
new file mode 100644
index 0000000..e7e0cfc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-language.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lifebuoy.svg
new file mode 100644
index 0000000..e0c7a1f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lifebuoy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-light-bulb.svg
new file mode 100644
index 0000000..1006288
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-light-bulb.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link-slash.svg
new file mode 100644
index 0000000..5da53cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link.svg
new file mode 100644
index 0000000..35884ce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-list-bullet.svg
new file mode 100644
index 0000000..da9f504
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-list-bullet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-closed.svg
new file mode 100644
index 0000000..31bd407
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-closed.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-open.svg
new file mode 100644
index 0000000..99b63e7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-circle.svg
new file mode 100644
index 0000000..54c1fd3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-minus.svg
new file mode 100644
index 0000000..1cf27b5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-minus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-plus.svg
new file mode 100644
index 0000000..ab075d6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-plus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass.svg
new file mode 100644
index 0000000..2e4c54d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map-pin.svg
new file mode 100644
index 0000000..c4f17e0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map-pin.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map.svg
new file mode 100644
index 0000000..ce2931c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-megaphone.svg
new file mode 100644
index 0000000..109b396
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-megaphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-microphone.svg
new file mode 100644
index 0000000..8d6e8f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-microphone.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus-circle.svg
new file mode 100644
index 0000000..f3572df
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus.svg
new file mode 100644
index 0000000..f91443c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-moon.svg
new file mode 100644
index 0000000..799b15b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-moon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-musical-note.svg
new file mode 100644
index 0000000..0a08598
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-newspaper.svg
new file mode 100644
index 0000000..4d66d46
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-newspaper.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-no-symbol.svg
new file mode 100644
index 0000000..dd92576
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-no-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-numbered-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-numbered-list.svg
new file mode 100644
index 0000000..f00bbd6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-numbered-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paint-brush.svg
new file mode 100644
index 0000000..0aebe49
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paint-brush.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-airplane.svg
new file mode 100644
index 0000000..5cb9fe3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-airplane.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-clip.svg
new file mode 100644
index 0000000..1a019c3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-clip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause-circle.svg
new file mode 100644
index 0000000..ec93c1d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause.svg
new file mode 100644
index 0000000..55ea47d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil-square.svg
new file mode 100644
index 0000000..25c6e94
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil.svg
new file mode 100644
index 0000000..2bc22ee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-percent-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-percent-badge.svg
new file mode 100644
index 0000000..1cd08c8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-percent-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-down-left.svg
new file mode 100644
index 0000000..592ed3d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-down-left.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-up-right.svg
new file mode 100644
index 0000000..9f6896e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-up-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-x-mark.svg
new file mode 100644
index 0000000..e8f1197
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-x-mark.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone.svg
new file mode 100644
index 0000000..b6808fb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-photo.svg
new file mode 100644
index 0000000..fb02a1c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-photo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-circle.svg
new file mode 100644
index 0000000..0944fc6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-pause.svg
new file mode 100644
index 0000000..5cc07e0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play.svg
new file mode 100644
index 0000000..a348d36
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus-circle.svg
new file mode 100644
index 0000000..a877442
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus.svg
new file mode 100644
index 0000000..c650b5c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-power.svg
new file mode 100644
index 0000000..77dfe41
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-power.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-bar.svg
new file mode 100644
index 0000000..120aaaf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-line.svg
new file mode 100644
index 0000000..72f5720
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-printer.svg
new file mode 100644
index 0000000..bf28802
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-printer.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-puzzle-piece.svg
new file mode 100644
index 0000000..0f01af8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-puzzle-piece.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-qr-code.svg
new file mode 100644
index 0000000..4825d13
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-qr-code.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-question-mark-circle.svg
new file mode 100644
index 0000000..34d8027
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-question-mark-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-queue-list.svg
new file mode 100644
index 0000000..c30fec3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-queue-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-radio.svg
new file mode 100644
index 0000000..273ae11
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-radio.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-percent.svg
new file mode 100644
index 0000000..3212a6f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-percent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-refund.svg
new file mode 100644
index 0000000..94d0f22
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-refund.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-group.svg
new file mode 100644
index 0000000..4898a0c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-stack.svg
new file mode 100644
index 0000000..991c633
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rocket-launch.svg
new file mode 100644
index 0000000..f950c24
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rocket-launch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rss.svg
new file mode 100644
index 0000000..a148475
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rss.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scale.svg
new file mode 100644
index 0000000..928d3b8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scale.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scissors.svg
new file mode 100644
index 0000000..fcf6e9b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scissors.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server-stack.svg
new file mode 100644
index 0000000..420066c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server.svg
new file mode 100644
index 0000000..13f2ae4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-share.svg
new file mode 100644
index 0000000..59671fb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-check.svg
new file mode 100644
index 0000000..6e93ee4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-exclamation.svg
new file mode 100644
index 0000000..c1e135f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-exclamation.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-bag.svg
new file mode 100644
index 0000000..5cf1a26
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-bag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-cart.svg
new file mode 100644
index 0000000..7afdf47
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal-slash.svg
new file mode 100644
index 0000000..b34500c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal.svg
new file mode 100644
index 0000000..9fa80dc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-slash.svg
new file mode 100644
index 0000000..a2e3c14
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sparkles.svg
new file mode 100644
index 0000000..fa542ae
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sparkles.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-wave.svg
new file mode 100644
index 0000000..cf8780e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-wave.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-x-mark.svg
new file mode 100644
index 0000000..be22558
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-2-stack.svg
new file mode 100644
index 0000000..328a997
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-2-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-3-stack-3d.svg
new file mode 100644
index 0000000..6520941
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-3-stack-3d.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-2x2.svg
new file mode 100644
index 0000000..375f706
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-2x2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-plus.svg
new file mode 100644
index 0000000..8b6e1c2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-star.svg
new file mode 100644
index 0000000..c585d24
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop-circle.svg
new file mode 100644
index 0000000..767eb26
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop.svg
new file mode 100644
index 0000000..e90d578
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-strikethrough.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-strikethrough.svg
new file mode 100644
index 0000000..69c3e5e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-strikethrough.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sun.svg
new file mode 100644
index 0000000..f08a75c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sun.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-swatch.svg
new file mode 100644
index 0000000..91d53c8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-swatch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-table-cells.svg
new file mode 100644
index 0000000..fa33c82
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-table-cells.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tag.svg
new file mode 100644
index 0000000..e8fa33f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ticket.svg
new file mode 100644
index 0000000..1636997
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ticket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trash.svg
new file mode 100644
index 0000000..242d02e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trophy.svg
new file mode 100644
index 0000000..4ce0044
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-truck.svg
new file mode 100644
index 0000000..cf8b2ae
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-truck.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tv.svg
new file mode 100644
index 0000000..71a03f1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tv.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-underline.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-underline.svg
new file mode 100644
index 0000000..8ce4f8a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-underline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-circle.svg
new file mode 100644
index 0000000..a4828ea
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-group.svg
new file mode 100644
index 0000000..b3eac77
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-minus.svg
new file mode 100644
index 0000000..a9222c1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-plus.svg
new file mode 100644
index 0000000..dbfb380
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user.svg
new file mode 100644
index 0000000..3b924bd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-users.svg
new file mode 100644
index 0000000..51b4585
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-users.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-variable.svg
new file mode 100644
index 0000000..025ef98
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-variable.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera-slash.svg
new file mode 100644
index 0000000..7206f3c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera.svg
new file mode 100644
index 0000000..91ffb60
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-view-columns.svg
new file mode 100644
index 0000000..a953a60
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-view-columns.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-viewfinder-circle.svg
new file mode 100644
index 0000000..da6fbe4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-viewfinder-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wallet.svg
new file mode 100644
index 0000000..5198eee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wallet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wifi.svg
new file mode 100644
index 0000000..bcd9226
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wifi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-window.svg
new file mode 100644
index 0000000..ecb5a8e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench-screwdriver.svg
new file mode 100644
index 0000000..89a99de
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench-screwdriver.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench.svg
new file mode 100644
index 0000000..552ef3d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-circle.svg
new file mode 100644
index 0000000..8050905
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-mark.svg
new file mode 100644
index 0000000..dd7ae72
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-academic-cap.svg
new file mode 100644
index 0000000..28d31d1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-academic-cap.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-horizontal.svg
new file mode 100644
index 0000000..3e5e2c9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-vertical.svg
new file mode 100644
index 0000000..afefea9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-arrow-down.svg
new file mode 100644
index 0000000..86f45bd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-x-mark.svg
new file mode 100644
index 0000000..3a48526
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-x-mark.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box.svg
new file mode 100644
index 0000000..7b80ec2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-circle.svg
new file mode 100644
index 0000000..2676c66
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-left.svg
new file mode 100644
index 0000000..710c80a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square-stack.svg
new file mode 100644
index 0000000..3f4bf61
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square.svg
new file mode 100644
index 0000000..9c0621f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-right.svg
new file mode 100644
index 0000000..3ed2487
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-tray.svg
new file mode 100644
index 0000000..312dc38
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-tray.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down.svg
new file mode 100644
index 0000000..8442536
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-circle.svg
new file mode 100644
index 0000000..7f1e796
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-circle.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-end-on-rectangle.svg
new file mode 100644
index 0000000..81912ac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-end-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-on-rectangle.svg
new file mode 100644
index 0000000..81912ac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-start-on-rectangle.svg
new file mode 100644
index 0000000..0bdc78f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-start-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left.svg
new file mode 100644
index 0000000..f087dba
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-down.svg
new file mode 100644
index 0000000..387286b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-left.svg
new file mode 100644
index 0000000..6377071
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-right.svg
new file mode 100644
index 0000000..82fe6cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-up.svg
new file mode 100644
index 0000000..61f2ba1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path-rounded-square.svg
new file mode 100644
index 0000000..47cf252
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path-rounded-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path.svg
new file mode 100644
index 0000000..8090942
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-circle.svg
new file mode 100644
index 0000000..fa2082b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-end-on-rectangle.svg
new file mode 100644
index 0000000..99c4be5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-end-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-on-rectangle.svg
new file mode 100644
index 0000000..7e69255
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-start-on-rectangle.svg
new file mode 100644
index 0000000..7e69255
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-start-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right.svg
new file mode 100644
index 0000000..3415f36
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-down.svg
new file mode 100644
index 0000000..f8a8957
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-left.svg
new file mode 100644
index 0000000..55aae95
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-right.svg
new file mode 100644
index 0000000..32ed766
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-up.svg
new file mode 100644
index 0000000..f60e86b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-top-right-on-square.svg
new file mode 100644
index 0000000..4216598
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-top-right-on-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-down.svg
new file mode 100644
index 0000000..ae6d9cd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-up.svg
new file mode 100644
index 0000000..f5aa7b9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-down-left.svg
new file mode 100644
index 0000000..c4518df
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-down-right.svg
new file mode 100644
index 0000000..eab8272
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-left-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-left-down.svg
new file mode 100644
index 0000000..b97738d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-left-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-left-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-left-up.svg
new file mode 100644
index 0000000..6b69325
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-left-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-right-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-right-down.svg
new file mode 100644
index 0000000..1f455a7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-right-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-right-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-right-up.svg
new file mode 100644
index 0000000..d8658ef
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-right-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-up-left.svg
new file mode 100644
index 0000000..7c7775e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-up-right.svg
new file mode 100644
index 0000000..6719f9f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-turn-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-circle.svg
new file mode 100644
index 0000000..a07eca3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-left.svg
new file mode 100644
index 0000000..84d4ab9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square-stack.svg
new file mode 100644
index 0000000..c85ce24
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square.svg
new file mode 100644
index 0000000..3a54f70
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-right.svg
new file mode 100644
index 0000000..5f58b69
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-tray.svg
new file mode 100644
index 0000000..a57986a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-tray.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up.svg
new file mode 100644
index 0000000..1a1ca8f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-down.svg
new file mode 100644
index 0000000..6c88620
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-left.svg
new file mode 100644
index 0000000..c3f666d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-right.svg
new file mode 100644
index 0000000..0a8b31a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-up.svg
new file mode 100644
index 0000000..f79c4bc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-in.svg
new file mode 100644
index 0000000..e300a28
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-in.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-out.svg
new file mode 100644
index 0000000..7f58167
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-right-left.svg
new file mode 100644
index 0000000..cef196e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-right-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-up-down.svg
new file mode 100644
index 0000000..43927b7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-at-symbol.svg
new file mode 100644
index 0000000..5a7511a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-at-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backspace.svg
new file mode 100644
index 0000000..b95a6b7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backspace.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backward.svg
new file mode 100644
index 0000000..a8879ec
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-banknotes.svg
new file mode 100644
index 0000000..e0b86f9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-banknotes.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-2.svg
new file mode 100644
index 0000000..bdf38a3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-left.svg
new file mode 100644
index 0000000..943bdac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-right.svg
new file mode 100644
index 0000000..4385318
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-center-left.svg
new file mode 100644
index 0000000..f33da66
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-center-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3.svg
new file mode 100644
index 0000000..7ebe49c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-4.svg
new file mode 100644
index 0000000..fa63380
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-4.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-down.svg
new file mode 100644
index 0000000..7d1bcd7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-up.svg
new file mode 100644
index 0000000..dbba841
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-0.svg
new file mode 100644
index 0000000..86323f9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-0.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-100.svg
new file mode 100644
index 0000000..7d15706
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-100.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-50.svg
new file mode 100644
index 0000000..b88ade1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-50.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-beaker.svg
new file mode 100644
index 0000000..6347163
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-beaker.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-alert.svg
new file mode 100644
index 0000000..ea50a7b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-alert.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-slash.svg
new file mode 100644
index 0000000..f7107f3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-snooze.svg
new file mode 100644
index 0000000..06daf77
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-snooze.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell.svg
new file mode 100644
index 0000000..4b55d26
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bold.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bold.svg
new file mode 100644
index 0000000..b3f6425
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bold.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt-slash.svg
new file mode 100644
index 0000000..ba8d113
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt.svg
new file mode 100644
index 0000000..c2af3c1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-book-open.svg
new file mode 100644
index 0000000..5dc4839
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-book-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-slash.svg
new file mode 100644
index 0000000..2518392
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-square.svg
new file mode 100644
index 0000000..8aa84fb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark.svg
new file mode 100644
index 0000000..237b0dc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-briefcase.svg
new file mode 100644
index 0000000..8487636
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-briefcase.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bug-ant.svg
new file mode 100644
index 0000000..81190d2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bug-ant.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-library.svg
new file mode 100644
index 0000000..a0439c6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-library.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office-2.svg
new file mode 100644
index 0000000..c4b4a9b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office.svg
new file mode 100644
index 0000000..2907c7b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-storefront.svg
new file mode 100644
index 0000000..6a5be94
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-storefront.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cake.svg
new file mode 100644
index 0000000..bd0ac56
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cake.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calculator.svg
new file mode 100644
index 0000000..374cfdf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calculator.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-date-range.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-date-range.svg
new file mode 100644
index 0000000..8ec6d93
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-date-range.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-days.svg
new file mode 100644
index 0000000..a0ed5eb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-days.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar.svg
new file mode 100644
index 0000000..52e5752
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-camera.svg
new file mode 100644
index 0000000..418456d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar-square.svg
new file mode 100644
index 0000000..d34b223
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar.svg
new file mode 100644
index 0000000..45a9866
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-pie.svg
new file mode 100644
index 0000000..f00fdeb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-pie.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center-text.svg
new file mode 100644
index 0000000..98e8c48
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center.svg
new file mode 100644
index 0000000..8b1f45d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-ellipsis.svg
new file mode 100644
index 0000000..f447448
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-right.svg
new file mode 100644
index 0000000..089463b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left.svg
new file mode 100644
index 0000000..fc1c62e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left-ellipsis.svg
new file mode 100644
index 0000000..59f7d8e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left.svg
new file mode 100644
index 0000000..97beedf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-badge.svg
new file mode 100644
index 0000000..6a79b88
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-circle.svg
new file mode 100644
index 0000000..763716e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check.svg
new file mode 100644
index 0000000..c29bd3f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-down.svg
new file mode 100644
index 0000000..bd4f869
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-left.svg
new file mode 100644
index 0000000..60babe1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-right.svg
new file mode 100644
index 0000000..7fe528c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-up.svg
new file mode 100644
index 0000000..8ce111d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-down.svg
new file mode 100644
index 0000000..18cbc1d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-left.svg
new file mode 100644
index 0000000..b6e87d1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-right.svg
new file mode 100644
index 0000000..e9eb2c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up-down.svg
new file mode 100644
index 0000000..64964bf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up.svg
new file mode 100644
index 0000000..b6cd4db
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-circle-stack.svg
new file mode 100644
index 0000000..2133753
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-circle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-check.svg
new file mode 100644
index 0000000..38fb967
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-check.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-list.svg
new file mode 100644
index 0000000..184daa0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-list.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document.svg
new file mode 100644
index 0000000..de69a12
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard.svg
new file mode 100644
index 0000000..e08430a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clock.svg
new file mode 100644
index 0000000..e8349dc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-down.svg
new file mode 100644
index 0000000..e5088ca
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-up.svg
new file mode 100644
index 0000000..e63c3c2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud.svg
new file mode 100644
index 0000000..c47c4f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket-square.svg
new file mode 100644
index 0000000..5e6a0c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket.svg
new file mode 100644
index 0000000..5b42af4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-6-tooth.svg
new file mode 100644
index 0000000..8eae336
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-6-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-8-tooth.svg
new file mode 100644
index 0000000..81c94a5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-8-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog.svg
new file mode 100644
index 0000000..55b19d4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-command-line.svg
new file mode 100644
index 0000000..93e35fc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-command-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-computer-desktop.svg
new file mode 100644
index 0000000..3c0fe1c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-computer-desktop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cpu-chip.svg
new file mode 100644
index 0000000..95adf0e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cpu-chip.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-credit-card.svg
new file mode 100644
index 0000000..dbfafef
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-credit-card.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube-transparent.svg
new file mode 100644
index 0000000..600d2e3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube-transparent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube.svg
new file mode 100644
index 0000000..75f3644
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-bangladeshi.svg
new file mode 100644
index 0000000..187d75c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-dollar.svg
new file mode 100644
index 0000000..e329589
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-dollar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-euro.svg
new file mode 100644
index 0000000..64e2a32
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-pound.svg
new file mode 100644
index 0000000..480e7b6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-rupee.svg
new file mode 100644
index 0000000..43a9b8c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-yen.svg
new file mode 100644
index 0000000..311006d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-rays.svg
new file mode 100644
index 0000000..18f5dc8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-rays.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-ripple.svg
new file mode 100644
index 0000000..afbd741
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-ripple.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-phone-mobile.svg
new file mode 100644
index 0000000..7261026
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-phone-mobile.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-tablet.svg
new file mode 100644
index 0000000..c2b14bd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-tablet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-divide.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-divide.svg
new file mode 100644
index 0000000..1567b7c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-divide.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-down.svg
new file mode 100644
index 0000000..04820b7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-up.svg
new file mode 100644
index 0000000..b70468d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-chart-bar.svg
new file mode 100644
index 0000000..48c91e9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-check.svg
new file mode 100644
index 0000000..922f600
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-bangladeshi.svg
new file mode 100644
index 0000000..5dfa06e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-dollar.svg
new file mode 100644
index 0000000..3cc4509
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-dollar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-euro.svg
new file mode 100644
index 0000000..455d22c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-pound.svg
new file mode 100644
index 0000000..4925373
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-rupee.svg
new file mode 100644
index 0000000..533bccc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-yen.svg
new file mode 100644
index 0000000..a0c9ee4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-duplicate.svg
new file mode 100644
index 0000000..5b52546
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-duplicate.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-magnifying-glass.svg
new file mode 100644
index 0000000..0cfcadb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-magnifying-glass.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-minus.svg
new file mode 100644
index 0000000..207fe75
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-plus.svg
new file mode 100644
index 0000000..a59bca9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-text.svg
new file mode 100644
index 0000000..11c383c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document.svg
new file mode 100644
index 0000000..7631542
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal-circle.svg
new file mode 100644
index 0000000..4ed81ac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal.svg
new file mode 100644
index 0000000..e0b281b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-vertical.svg
new file mode 100644
index 0000000..1f7b5a9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope-open.svg
new file mode 100644
index 0000000..871fc80
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope.svg
new file mode 100644
index 0000000..e0ef01b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-equals.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-equals.svg
new file mode 100644
index 0000000..8db5d85
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-equals.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-circle.svg
new file mode 100644
index 0000000..3f12a44
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-triangle.svg
new file mode 100644
index 0000000..c331b5b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-triangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-dropper.svg
new file mode 100644
index 0000000..bf1b0f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-dropper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-slash.svg
new file mode 100644
index 0000000..8ee3cb9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye.svg
new file mode 100644
index 0000000..5ce8bcc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-frown.svg
new file mode 100644
index 0000000..dd9cd52
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-frown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-smile.svg
new file mode 100644
index 0000000..0e8030c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-smile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-film.svg
new file mode 100644
index 0000000..2131ddd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-film.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-finger-print.svg
new file mode 100644
index 0000000..c6cdebc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-finger-print.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-fire.svg
new file mode 100644
index 0000000..e22ab93
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-fire.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-flag.svg
new file mode 100644
index 0000000..b2a332a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-flag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-arrow-down.svg
new file mode 100644
index 0000000..67f62c9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-minus.svg
new file mode 100644
index 0000000..abab6e9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-open.svg
new file mode 100644
index 0000000..5f236ce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-plus.svg
new file mode 100644
index 0000000..db22ab9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder.svg
new file mode 100644
index 0000000..a0fd97b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-forward.svg
new file mode 100644
index 0000000..e7755db
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-forward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-funnel.svg
new file mode 100644
index 0000000..86aaba0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-funnel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gif.svg
new file mode 100644
index 0000000..7df5ca5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gif.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift-top.svg
new file mode 100644
index 0000000..e0564c3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift-top.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift.svg
new file mode 100644
index 0000000..f3e40f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-alt.svg
new file mode 100644
index 0000000..bb9f5cc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-alt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-americas.svg
new file mode 100644
index 0000000..2ae1103
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-americas.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-asia-australia.svg
new file mode 100644
index 0000000..bb70e98
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-asia-australia.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-europe-africa.svg
new file mode 100644
index 0000000..4584e07
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-europe-africa.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h1.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h1.svg
new file mode 100644
index 0000000..c57bb96
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h1.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h2.svg
new file mode 100644
index 0000000..3b1bf3a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h3.svg
new file mode 100644
index 0000000..93945c7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-h3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-raised.svg
new file mode 100644
index 0000000..9657afe
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-raised.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-down.svg
new file mode 100644
index 0000000..3476072
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-up.svg
new file mode 100644
index 0000000..6ddf587
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hashtag.svg
new file mode 100644
index 0000000..befe101
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hashtag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-heart.svg
new file mode 100644
index 0000000..4277e6f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home-modern.svg
new file mode 100644
index 0000000..ede9c1e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home-modern.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home.svg
new file mode 100644
index 0000000..9f7580a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-identification.svg
new file mode 100644
index 0000000..9117f87
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-arrow-down.svg
new file mode 100644
index 0000000..e44a2a5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-stack.svg
new file mode 100644
index 0000000..067b085
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox.svg
new file mode 100644
index 0000000..9340579
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-information-circle.svg
new file mode 100644
index 0000000..d834a25
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-italic.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-italic.svg
new file mode 100644
index 0000000..f68b929
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-italic.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-key.svg
new file mode 100644
index 0000000..ed927ea
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-key.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-language.svg
new file mode 100644
index 0000000..53ad839
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-language.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lifebuoy.svg
new file mode 100644
index 0000000..e3799ad
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lifebuoy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-light-bulb.svg
new file mode 100644
index 0000000..728c000
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-light-bulb.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link-slash.svg
new file mode 100644
index 0000000..e974918
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link.svg
new file mode 100644
index 0000000..a40b5a5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-list-bullet.svg
new file mode 100644
index 0000000..0700722
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-list-bullet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-closed.svg
new file mode 100644
index 0000000..28f1387
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-closed.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-open.svg
new file mode 100644
index 0000000..3370496
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-circle.svg
new file mode 100644
index 0000000..7c427ea
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-minus.svg
new file mode 100644
index 0000000..353b848
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-minus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-plus.svg
new file mode 100644
index 0000000..1dc4f5d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-plus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass.svg
new file mode 100644
index 0000000..8fede6f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map-pin.svg
new file mode 100644
index 0000000..43719f1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map-pin.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map.svg
new file mode 100644
index 0000000..ac7d6d3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-megaphone.svg
new file mode 100644
index 0000000..0155e4b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-megaphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-microphone.svg
new file mode 100644
index 0000000..7f17f47
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-microphone.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-circle.svg
new file mode 100644
index 0000000..ad202c9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-small.svg
new file mode 100644
index 0000000..a27d7cd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus.svg
new file mode 100644
index 0000000..8dee1f9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-moon.svg
new file mode 100644
index 0000000..e5e23ac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-moon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-musical-note.svg
new file mode 100644
index 0000000..cfc5cd0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-newspaper.svg
new file mode 100644
index 0000000..a45e27c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-newspaper.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-no-symbol.svg
new file mode 100644
index 0000000..238e1c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-no-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-numbered-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-numbered-list.svg
new file mode 100644
index 0000000..935dade
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-numbered-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paint-brush.svg
new file mode 100644
index 0000000..bcb054b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paint-brush.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-airplane.svg
new file mode 100644
index 0000000..4a019d5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-airplane.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-clip.svg
new file mode 100644
index 0000000..3b48652
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-clip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause-circle.svg
new file mode 100644
index 0000000..c2fc5be
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause.svg
new file mode 100644
index 0000000..ffa1bf7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil-square.svg
new file mode 100644
index 0000000..358fc12
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil.svg
new file mode 100644
index 0000000..a6ac73f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-percent-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-percent-badge.svg
new file mode 100644
index 0000000..32b3275
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-percent-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-down-left.svg
new file mode 100644
index 0000000..d79024f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-up-right.svg
new file mode 100644
index 0000000..015c1fb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-x-mark.svg
new file mode 100644
index 0000000..3326c34
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone.svg
new file mode 100644
index 0000000..e58c217
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-photo.svg
new file mode 100644
index 0000000..a6d92e3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-photo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-circle.svg
new file mode 100644
index 0000000..0b3dac9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-pause.svg
new file mode 100644
index 0000000..0727d8c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play.svg
new file mode 100644
index 0000000..9d635f6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-circle.svg
new file mode 100644
index 0000000..9468c6e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-small.svg
new file mode 100644
index 0000000..9718082
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus.svg
new file mode 100644
index 0000000..6faf9aa
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-power.svg
new file mode 100644
index 0000000..14ba4ac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-power.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-bar.svg
new file mode 100644
index 0000000..7362861
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-line.svg
new file mode 100644
index 0000000..282087f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-printer.svg
new file mode 100644
index 0000000..a511616
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-printer.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-puzzle-piece.svg
new file mode 100644
index 0000000..fcb7d8a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-puzzle-piece.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-qr-code.svg
new file mode 100644
index 0000000..008823c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-qr-code.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-question-mark-circle.svg
new file mode 100644
index 0000000..e4b1de1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-question-mark-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-queue-list.svg
new file mode 100644
index 0000000..3afe65b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-queue-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-radio.svg
new file mode 100644
index 0000000..6261d4e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-radio.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-percent.svg
new file mode 100644
index 0000000..100e23d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-percent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-refund.svg
new file mode 100644
index 0000000..cc0ce43
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-refund.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-group.svg
new file mode 100644
index 0000000..c4ce4f6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-stack.svg
new file mode 100644
index 0000000..f49e339
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rocket-launch.svg
new file mode 100644
index 0000000..e30ac8b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rocket-launch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rss.svg
new file mode 100644
index 0000000..a99b8bc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rss.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scale.svg
new file mode 100644
index 0000000..ba1a849
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scale.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scissors.svg
new file mode 100644
index 0000000..eec0302
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scissors.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server-stack.svg
new file mode 100644
index 0000000..d4aea4a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server.svg
new file mode 100644
index 0000000..7bc532a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-share.svg
new file mode 100644
index 0000000..291a7b0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-check.svg
new file mode 100644
index 0000000..d55fc7e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-exclamation.svg
new file mode 100644
index 0000000..dfcc0f3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-exclamation.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-bag.svg
new file mode 100644
index 0000000..3c706ab
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-bag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-cart.svg
new file mode 100644
index 0000000..7fc14d4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal-slash.svg
new file mode 100644
index 0000000..0096e64
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal.svg
new file mode 100644
index 0000000..63aec83
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-slash.svg
new file mode 100644
index 0000000..08416ce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sparkles.svg
new file mode 100644
index 0000000..1f280a0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sparkles.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-wave.svg
new file mode 100644
index 0000000..53bce85
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-wave.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-x-mark.svg
new file mode 100644
index 0000000..f6948af
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-2-stack.svg
new file mode 100644
index 0000000..35a3aa8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-2-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-3-stack-3d.svg
new file mode 100644
index 0000000..8302bd9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-3-stack-3d.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-2x2.svg
new file mode 100644
index 0000000..d778a4d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-2x2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-plus.svg
new file mode 100644
index 0000000..725df1d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-star.svg
new file mode 100644
index 0000000..c6882d0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop-circle.svg
new file mode 100644
index 0000000..aac6789
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop.svg
new file mode 100644
index 0000000..c4559c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-strikethrough.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-strikethrough.svg
new file mode 100644
index 0000000..13b3a49
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-strikethrough.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sun.svg
new file mode 100644
index 0000000..8d0e58f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sun.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-swatch.svg
new file mode 100644
index 0000000..7ac8dfd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-swatch.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-table-cells.svg
new file mode 100644
index 0000000..c041d12
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-table-cells.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tag.svg
new file mode 100644
index 0000000..02f502e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ticket.svg
new file mode 100644
index 0000000..cea3ce7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ticket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trash.svg
new file mode 100644
index 0000000..529224d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trophy.svg
new file mode 100644
index 0000000..c02f0d5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-truck.svg
new file mode 100644
index 0000000..bf12ef7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-truck.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tv.svg
new file mode 100644
index 0000000..b945a0c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tv.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-underline.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-underline.svg
new file mode 100644
index 0000000..416a009
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-underline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-circle.svg
new file mode 100644
index 0000000..59785eb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-group.svg
new file mode 100644
index 0000000..17e755e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-minus.svg
new file mode 100644
index 0000000..240bff5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-plus.svg
new file mode 100644
index 0000000..3392941
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user.svg
new file mode 100644
index 0000000..25b7abc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-users.svg
new file mode 100644
index 0000000..5a48a77
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-users.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-variable.svg
new file mode 100644
index 0000000..c3e1ccf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-variable.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera-slash.svg
new file mode 100644
index 0000000..a5ff5f7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera.svg
new file mode 100644
index 0000000..2485f0c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-view-columns.svg
new file mode 100644
index 0000000..4289dcc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-view-columns.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-viewfinder-circle.svg
new file mode 100644
index 0000000..e5f4c37
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-viewfinder-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wallet.svg
new file mode 100644
index 0000000..9d7835d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wallet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wifi.svg
new file mode 100644
index 0000000..95f17df
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wifi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-window.svg
new file mode 100644
index 0000000..40ae1cc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench-screwdriver.svg
new file mode 100644
index 0000000..32c38ed
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench-screwdriver.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench.svg
new file mode 100644
index 0000000..46f68f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-circle.svg
new file mode 100644
index 0000000..c8b56c7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-mark.svg
new file mode 100644
index 0000000..b20f867
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-academic-cap.svg
new file mode 100644
index 0000000..cd05c0e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-academic-cap.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-horizontal.svg
new file mode 100644
index 0000000..24a8bc7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-vertical.svg
new file mode 100644
index 0000000..8ec937c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-arrow-down.svg
new file mode 100644
index 0000000..a325df4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-x-mark.svg
new file mode 100644
index 0000000..cca86e1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box.svg
new file mode 100644
index 0000000..921a582
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-circle.svg
new file mode 100644
index 0000000..954042d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-left.svg
new file mode 100644
index 0000000..be398da
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square-stack.svg
new file mode 100644
index 0000000..6032f2c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square.svg
new file mode 100644
index 0000000..d725386
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-right.svg
new file mode 100644
index 0000000..d31282e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-tray.svg
new file mode 100644
index 0000000..2b8890c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down.svg
new file mode 100644
index 0000000..5e1a5de
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-circle.svg
new file mode 100644
index 0000000..8240282
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-end-on-rectangle.svg
new file mode 100644
index 0000000..4bca1c9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-end-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-on-rectangle.svg
new file mode 100644
index 0000000..4bca1c9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-start-on-rectangle.svg
new file mode 100644
index 0000000..29997d2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-start-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left.svg
new file mode 100644
index 0000000..1071988
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-down.svg
new file mode 100644
index 0000000..768a299
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-left.svg
new file mode 100644
index 0000000..0c01923
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-right.svg
new file mode 100644
index 0000000..746e1e4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-up.svg
new file mode 100644
index 0000000..bebf680
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path-rounded-square.svg
new file mode 100644
index 0000000..4392295
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path-rounded-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path.svg
new file mode 100644
index 0000000..fba7241
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-circle.svg
new file mode 100644
index 0000000..6f065a0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-end-on-rectangle.svg
new file mode 100644
index 0000000..48ffe90
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-end-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-on-rectangle.svg
new file mode 100644
index 0000000..abea6bf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-start-on-rectangle.svg
new file mode 100644
index 0000000..abea6bf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-start-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right.svg
new file mode 100644
index 0000000..f700b1f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-down.svg
new file mode 100644
index 0000000..9977f0e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-left.svg
new file mode 100644
index 0000000..8d54067
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-right.svg
new file mode 100644
index 0000000..af2ef62
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-up.svg
new file mode 100644
index 0000000..78e282d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-top-right-on-square.svg
new file mode 100644
index 0000000..f3fb15f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-top-right-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-down.svg
new file mode 100644
index 0000000..75f083a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-up.svg
new file mode 100644
index 0000000..b79bfbe
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-down-left.svg
new file mode 100644
index 0000000..4425ea1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-down-right.svg
new file mode 100644
index 0000000..1efaec1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-left-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-left-down.svg
new file mode 100644
index 0000000..8ca63d9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-left-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-left-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-left-up.svg
new file mode 100644
index 0000000..37cc0b9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-left-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-right-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-right-down.svg
new file mode 100644
index 0000000..e10ebd3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-right-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-right-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-right-up.svg
new file mode 100644
index 0000000..ddf4cd8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-right-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-up-left.svg
new file mode 100644
index 0000000..3b2a330
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-up-right.svg
new file mode 100644
index 0000000..7a9e437
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-turn-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-circle.svg
new file mode 100644
index 0000000..c2e0359
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-left.svg
new file mode 100644
index 0000000..6553168
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square-stack.svg
new file mode 100644
index 0000000..f1b3d5e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square.svg
new file mode 100644
index 0000000..3625717
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-right.svg
new file mode 100644
index 0000000..9ec7dee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-tray.svg
new file mode 100644
index 0000000..3779677
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up.svg
new file mode 100644
index 0000000..cb05fb2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-down.svg
new file mode 100644
index 0000000..f362008
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-left.svg
new file mode 100644
index 0000000..5a9819c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-right.svg
new file mode 100644
index 0000000..244e674
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-up.svg
new file mode 100644
index 0000000..a19ff96
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-in.svg
new file mode 100644
index 0000000..2621d38
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-in.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-out.svg
new file mode 100644
index 0000000..73de08c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-right-left.svg
new file mode 100644
index 0000000..22dca0a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-right-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-up-down.svg
new file mode 100644
index 0000000..f8cc08f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-at-symbol.svg
new file mode 100644
index 0000000..2b9e446
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-at-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backspace.svg
new file mode 100644
index 0000000..1563d7d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backspace.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backward.svg
new file mode 100644
index 0000000..ff788f8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-banknotes.svg
new file mode 100644
index 0000000..945f60e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-banknotes.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-2.svg
new file mode 100644
index 0000000..d64a9bb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-left.svg
new file mode 100644
index 0000000..9960567
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-right.svg
new file mode 100644
index 0000000..4e90c18
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-center-left.svg
new file mode 100644
index 0000000..cca274c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-center-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3.svg
new file mode 100644
index 0000000..6d2221f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-4.svg
new file mode 100644
index 0000000..b9e9c46
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-4.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-down.svg
new file mode 100644
index 0000000..91af7e4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-up.svg
new file mode 100644
index 0000000..5c515e5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-0.svg
new file mode 100644
index 0000000..b9811f7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-0.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-100.svg
new file mode 100644
index 0000000..f880879
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-100.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-50.svg
new file mode 100644
index 0000000..0018f8d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-50.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-beaker.svg
new file mode 100644
index 0000000..9457e9a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-beaker.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-alert.svg
new file mode 100644
index 0000000..68d2f64
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-alert.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-slash.svg
new file mode 100644
index 0000000..fc31652
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-snooze.svg
new file mode 100644
index 0000000..10fa5bd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-snooze.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell.svg
new file mode 100644
index 0000000..8145b9d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bold.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bold.svg
new file mode 100644
index 0000000..d815857
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bold.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt-slash.svg
new file mode 100644
index 0000000..91f81b4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt.svg
new file mode 100644
index 0000000..506283d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-book-open.svg
new file mode 100644
index 0000000..de02b14
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-book-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-slash.svg
new file mode 100644
index 0000000..d55d5ae
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-square.svg
new file mode 100644
index 0000000..538d9e6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark.svg
new file mode 100644
index 0000000..4e88a5c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-briefcase.svg
new file mode 100644
index 0000000..d0c1fc3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-briefcase.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bug-ant.svg
new file mode 100644
index 0000000..056d5a5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bug-ant.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-library.svg
new file mode 100644
index 0000000..2ea181c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-library.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office-2.svg
new file mode 100644
index 0000000..d1f922a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office.svg
new file mode 100644
index 0000000..695729f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-storefront.svg
new file mode 100644
index 0000000..8e287f8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-storefront.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cake.svg
new file mode 100644
index 0000000..aa770ce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cake.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calculator.svg
new file mode 100644
index 0000000..ef441d6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calculator.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-date-range.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-date-range.svg
new file mode 100644
index 0000000..e1e9119
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-date-range.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-days.svg
new file mode 100644
index 0000000..94731d7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-days.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar.svg
new file mode 100644
index 0000000..81b3dfc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-camera.svg
new file mode 100644
index 0000000..aabc3c6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-camera.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar-square.svg
new file mode 100644
index 0000000..e03b7df
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar.svg
new file mode 100644
index 0000000..31ff30c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-pie.svg
new file mode 100644
index 0000000..eebd21f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-pie.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center-text.svg
new file mode 100644
index 0000000..549b4b2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center.svg
new file mode 100644
index 0000000..3bd9cf4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-ellipsis.svg
new file mode 100644
index 0000000..5865363
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-right.svg
new file mode 100644
index 0000000..fb00eb1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left.svg
new file mode 100644
index 0000000..1c0d986
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left-ellipsis.svg
new file mode 100644
index 0000000..3cc9ce5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left.svg
new file mode 100644
index 0000000..c4bab3a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-badge.svg
new file mode 100644
index 0000000..d39704d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-circle.svg
new file mode 100644
index 0000000..912ffc6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check.svg
new file mode 100644
index 0000000..37ad683
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-down.svg
new file mode 100644
index 0000000..308710e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-left.svg
new file mode 100644
index 0000000..7af0232
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-right.svg
new file mode 100644
index 0000000..e29b66f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-up.svg
new file mode 100644
index 0000000..ab19f2e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-up.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-down.svg
new file mode 100644
index 0000000..b6ac1cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-left.svg
new file mode 100644
index 0000000..5e9f57b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-right.svg
new file mode 100644
index 0000000..cd8a457
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up-down.svg
new file mode 100644
index 0000000..ba6820a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up.svg
new file mode 100644
index 0000000..eafbff4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-circle-stack.svg
new file mode 100644
index 0000000..2f75456
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-circle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-check.svg
new file mode 100644
index 0000000..b4be34b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-list.svg
new file mode 100644
index 0000000..11e818a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document.svg
new file mode 100644
index 0000000..31eb487
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard.svg
new file mode 100644
index 0000000..2e7501e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clock.svg
new file mode 100644
index 0000000..a7fce7b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-down.svg
new file mode 100644
index 0000000..9bbee4f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-up.svg
new file mode 100644
index 0000000..0994437
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud.svg
new file mode 100644
index 0000000..9662d6c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket-square.svg
new file mode 100644
index 0000000..de71371
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket.svg
new file mode 100644
index 0000000..8754e63
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-6-tooth.svg
new file mode 100644
index 0000000..91ba7db
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-6-tooth.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-8-tooth.svg
new file mode 100644
index 0000000..515cc16
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-8-tooth.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog.svg
new file mode 100644
index 0000000..5aadb3e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-command-line.svg
new file mode 100644
index 0000000..6f9f8f9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-command-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-computer-desktop.svg
new file mode 100644
index 0000000..1744ea2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-computer-desktop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cpu-chip.svg
new file mode 100644
index 0000000..7ab9e09
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cpu-chip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-credit-card.svg
new file mode 100644
index 0000000..fbe46d8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-credit-card.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube-transparent.svg
new file mode 100644
index 0000000..10f4c2c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube-transparent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube.svg
new file mode 100644
index 0000000..87d16c0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-bangladeshi.svg
new file mode 100644
index 0000000..4aaae03
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-dollar.svg
new file mode 100644
index 0000000..a69380e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-dollar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-euro.svg
new file mode 100644
index 0000000..b6504f3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-pound.svg
new file mode 100644
index 0000000..fb32377
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-rupee.svg
new file mode 100644
index 0000000..2040a22
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-yen.svg
new file mode 100644
index 0000000..80d3c99
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-rays.svg
new file mode 100644
index 0000000..813793c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-rays.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-ripple.svg
new file mode 100644
index 0000000..24dbb3e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-ripple.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-phone-mobile.svg
new file mode 100644
index 0000000..7ff5ae2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-phone-mobile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-tablet.svg
new file mode 100644
index 0000000..58b94a4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-tablet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-divide.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-divide.svg
new file mode 100644
index 0000000..d657f36
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-divide.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-down.svg
new file mode 100644
index 0000000..39cb4d3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-up.svg
new file mode 100644
index 0000000..f4ad844
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-chart-bar.svg
new file mode 100644
index 0000000..0bf7dc1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-check.svg
new file mode 100644
index 0000000..6ef1c98
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-bangladeshi.svg
new file mode 100644
index 0000000..16bc3bf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-dollar.svg
new file mode 100644
index 0000000..e07ce04
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-dollar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-euro.svg
new file mode 100644
index 0000000..0a9846a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-pound.svg
new file mode 100644
index 0000000..9944c17
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-rupee.svg
new file mode 100644
index 0000000..5767bec
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-yen.svg
new file mode 100644
index 0000000..8e2b983
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-duplicate.svg
new file mode 100644
index 0000000..9c6bc80
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-duplicate.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-magnifying-glass.svg
new file mode 100644
index 0000000..ebf1b13
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-minus.svg
new file mode 100644
index 0000000..a13b6fe
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-plus.svg
new file mode 100644
index 0000000..e06def8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-text.svg
new file mode 100644
index 0000000..8c03e9e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document.svg
new file mode 100644
index 0000000..5a4881a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal-circle.svg
new file mode 100644
index 0000000..d6f11dd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal.svg
new file mode 100644
index 0000000..4efa28a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-vertical.svg
new file mode 100644
index 0000000..2caf3e0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope-open.svg
new file mode 100644
index 0000000..01f34be
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope.svg
new file mode 100644
index 0000000..b8029e8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-equals.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-equals.svg
new file mode 100644
index 0000000..3c9702b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-equals.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-circle.svg
new file mode 100644
index 0000000..0833d8e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-triangle.svg
new file mode 100644
index 0000000..dc2e6cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-triangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-dropper.svg
new file mode 100644
index 0000000..c1b7b8a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-dropper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-slash.svg
new file mode 100644
index 0000000..fb79424
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye.svg
new file mode 100644
index 0000000..f4ae935
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-frown.svg
new file mode 100644
index 0000000..86af7b0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-frown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-smile.svg
new file mode 100644
index 0000000..e987282
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-smile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-film.svg
new file mode 100644
index 0000000..f02856d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-film.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-finger-print.svg
new file mode 100644
index 0000000..2de9f82
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-finger-print.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-fire.svg
new file mode 100644
index 0000000..0e944f5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-fire.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-flag.svg
new file mode 100644
index 0000000..f5d17df
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-flag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-arrow-down.svg
new file mode 100644
index 0000000..74f0b6c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-minus.svg
new file mode 100644
index 0000000..fc4212b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-open.svg
new file mode 100644
index 0000000..df90e71
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-plus.svg
new file mode 100644
index 0000000..8acf5f7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder.svg
new file mode 100644
index 0000000..4c301ad
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-forward.svg
new file mode 100644
index 0000000..317f5ce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-forward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-funnel.svg
new file mode 100644
index 0000000..5937bdc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-funnel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gif.svg
new file mode 100644
index 0000000..6d22aca
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gif.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift-top.svg
new file mode 100644
index 0000000..3eb1793
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift-top.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift.svg
new file mode 100644
index 0000000..a856b6f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-alt.svg
new file mode 100644
index 0000000..b63d268
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-alt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-americas.svg
new file mode 100644
index 0000000..f0a6beb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-americas.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-asia-australia.svg
new file mode 100644
index 0000000..396cd3c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-asia-australia.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-europe-africa.svg
new file mode 100644
index 0000000..427637d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-europe-africa.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h1.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h1.svg
new file mode 100644
index 0000000..e70d229
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h1.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h2.svg
new file mode 100644
index 0000000..5fd0ee0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h3.svg
new file mode 100644
index 0000000..386c70f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-h3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-raised.svg
new file mode 100644
index 0000000..c9008af
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-raised.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-down.svg
new file mode 100644
index 0000000..3d2cc16
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-up.svg
new file mode 100644
index 0000000..01b9877
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hashtag.svg
new file mode 100644
index 0000000..9956ce0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hashtag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-heart.svg
new file mode 100644
index 0000000..2c371f3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home-modern.svg
new file mode 100644
index 0000000..b081fe8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home-modern.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home.svg
new file mode 100644
index 0000000..e1900b8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-identification.svg
new file mode 100644
index 0000000..9a99a61
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-arrow-down.svg
new file mode 100644
index 0000000..686060b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-stack.svg
new file mode 100644
index 0000000..c8a6ebb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox.svg
new file mode 100644
index 0000000..2a26cee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-information-circle.svg
new file mode 100644
index 0000000..d4ac360
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-italic.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-italic.svg
new file mode 100644
index 0000000..b424324
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-italic.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-key.svg
new file mode 100644
index 0000000..30c5bde
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-key.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-language.svg
new file mode 100644
index 0000000..1094eb1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-language.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lifebuoy.svg
new file mode 100644
index 0000000..446562b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lifebuoy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-light-bulb.svg
new file mode 100644
index 0000000..37c0317
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-light-bulb.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link-slash.svg
new file mode 100644
index 0000000..9d6f0e8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link.svg
new file mode 100644
index 0000000..38febfc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-list-bullet.svg
new file mode 100644
index 0000000..0dcb940
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-list-bullet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-closed.svg
new file mode 100644
index 0000000..4917dbb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-closed.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-open.svg
new file mode 100644
index 0000000..7f9a5a3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-circle.svg
new file mode 100644
index 0000000..4c0da1f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-minus.svg
new file mode 100644
index 0000000..d4dfada
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-plus.svg
new file mode 100644
index 0000000..a1d4363
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass.svg
new file mode 100644
index 0000000..947336c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map-pin.svg
new file mode 100644
index 0000000..74cc786
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map-pin.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map.svg
new file mode 100644
index 0000000..2d9e239
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-megaphone.svg
new file mode 100644
index 0000000..2b3c60b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-megaphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-microphone.svg
new file mode 100644
index 0000000..e349845
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-microphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-circle.svg
new file mode 100644
index 0000000..7cc1de3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-small.svg
new file mode 100644
index 0000000..25144c8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus.svg
new file mode 100644
index 0000000..fa1fb8b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-moon.svg
new file mode 100644
index 0000000..6a13b2f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-moon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-musical-note.svg
new file mode 100644
index 0000000..d903ff2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-newspaper.svg
new file mode 100644
index 0000000..666274f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-newspaper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-no-symbol.svg
new file mode 100644
index 0000000..a7dd365
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-no-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-numbered-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-numbered-list.svg
new file mode 100644
index 0000000..10ba072
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-numbered-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paint-brush.svg
new file mode 100644
index 0000000..21a208e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paint-brush.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-airplane.svg
new file mode 100644
index 0000000..80db4d0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-airplane.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-clip.svg
new file mode 100644
index 0000000..c27a60a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-clip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause-circle.svg
new file mode 100644
index 0000000..723e5f2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause.svg
new file mode 100644
index 0000000..7a61104
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil-square.svg
new file mode 100644
index 0000000..01de21e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil.svg
new file mode 100644
index 0000000..7af74ab
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-percent-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-percent-badge.svg
new file mode 100644
index 0000000..2f84596
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-percent-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-down-left.svg
new file mode 100644
index 0000000..31185c8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-up-right.svg
new file mode 100644
index 0000000..ab875b0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-x-mark.svg
new file mode 100644
index 0000000..50568f0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone.svg
new file mode 100644
index 0000000..a8789d1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-photo.svg
new file mode 100644
index 0000000..0e65af2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-photo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-circle.svg
new file mode 100644
index 0000000..d83a73f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-pause.svg
new file mode 100644
index 0000000..943efcb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play.svg
new file mode 100644
index 0000000..3c0fad3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-circle.svg
new file mode 100644
index 0000000..1beab85
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-small.svg
new file mode 100644
index 0000000..7fb7dcb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus.svg
new file mode 100644
index 0000000..06b312f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-power.svg
new file mode 100644
index 0000000..e471a03
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-power.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-bar.svg
new file mode 100644
index 0000000..d056439
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-line.svg
new file mode 100644
index 0000000..ed212e5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-printer.svg
new file mode 100644
index 0000000..f3c1c54
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-printer.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-puzzle-piece.svg
new file mode 100644
index 0000000..004855b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-puzzle-piece.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-qr-code.svg
new file mode 100644
index 0000000..1cbd5d4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-qr-code.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-question-mark-circle.svg
new file mode 100644
index 0000000..e3dd599
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-question-mark-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-queue-list.svg
new file mode 100644
index 0000000..09f0066
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-queue-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-radio.svg
new file mode 100644
index 0000000..81c891b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-radio.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-percent.svg
new file mode 100644
index 0000000..4dd5996
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-percent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-refund.svg
new file mode 100644
index 0000000..345a897
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-refund.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-group.svg
new file mode 100644
index 0000000..8184b19
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-stack.svg
new file mode 100644
index 0000000..8eb419a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rocket-launch.svg
new file mode 100644
index 0000000..a6a6cb9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rocket-launch.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rss.svg
new file mode 100644
index 0000000..ff1e1a8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rss.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scale.svg
new file mode 100644
index 0000000..559bcda
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scale.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scissors.svg
new file mode 100644
index 0000000..4df73af
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scissors.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server-stack.svg
new file mode 100644
index 0000000..060c820
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server.svg
new file mode 100644
index 0000000..eef8b9e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-share.svg
new file mode 100644
index 0000000..e931243
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-check.svg
new file mode 100644
index 0000000..82b9125
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-exclamation.svg
new file mode 100644
index 0000000..5a8df17
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-exclamation.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-bag.svg
new file mode 100644
index 0000000..7c5f29b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-bag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-cart.svg
new file mode 100644
index 0000000..b86c2ab
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal-slash.svg
new file mode 100644
index 0000000..b858fdf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal.svg
new file mode 100644
index 0000000..9daa002
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-slash.svg
new file mode 100644
index 0000000..782434d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sparkles.svg
new file mode 100644
index 0000000..c8df7f1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sparkles.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-wave.svg
new file mode 100644
index 0000000..7bb46f2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-wave.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-x-mark.svg
new file mode 100644
index 0000000..e89da3e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-2-stack.svg
new file mode 100644
index 0000000..d6d6ca9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-2-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-3-stack-3d.svg
new file mode 100644
index 0000000..d11f07b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-3-stack-3d.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-2x2.svg
new file mode 100644
index 0000000..1fe6594
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-2x2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-plus.svg
new file mode 100644
index 0000000..b87a5f1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-star.svg
new file mode 100644
index 0000000..1f27ec8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop-circle.svg
new file mode 100644
index 0000000..26c2aba
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop.svg
new file mode 100644
index 0000000..2058714
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-strikethrough.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-strikethrough.svg
new file mode 100644
index 0000000..9ec9b9d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-strikethrough.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sun.svg
new file mode 100644
index 0000000..0e49045
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sun.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-swatch.svg
new file mode 100644
index 0000000..e1e1b27
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-swatch.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-table-cells.svg
new file mode 100644
index 0000000..3d0f114
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-table-cells.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tag.svg
new file mode 100644
index 0000000..01eb0a3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tag.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ticket.svg
new file mode 100644
index 0000000..f06ce3b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ticket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trash.svg
new file mode 100644
index 0000000..71669b0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trophy.svg
new file mode 100644
index 0000000..9556227
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-truck.svg
new file mode 100644
index 0000000..7f475c8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-truck.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tv.svg
new file mode 100644
index 0000000..b6fae6a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tv.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-underline.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-underline.svg
new file mode 100644
index 0000000..56a2051
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-underline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-circle.svg
new file mode 100644
index 0000000..74a941e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-group.svg
new file mode 100644
index 0000000..2a3159e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-minus.svg
new file mode 100644
index 0000000..878cc7a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-plus.svg
new file mode 100644
index 0000000..a3c9bfc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user.svg
new file mode 100644
index 0000000..9a343c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-users.svg
new file mode 100644
index 0000000..1de4a72
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-users.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-variable.svg
new file mode 100644
index 0000000..4656e2f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-variable.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera-slash.svg
new file mode 100644
index 0000000..c08bd00
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera.svg
new file mode 100644
index 0000000..1af46bd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-view-columns.svg
new file mode 100644
index 0000000..bc9a440
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-view-columns.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-viewfinder-circle.svg
new file mode 100644
index 0000000..947dcd8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-viewfinder-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wallet.svg
new file mode 100644
index 0000000..58989cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wallet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wifi.svg
new file mode 100644
index 0000000..c838da4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wifi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-window.svg
new file mode 100644
index 0000000..fcccbe2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench-screwdriver.svg
new file mode 100644
index 0000000..8d05c28
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench-screwdriver.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench.svg
new file mode 100644
index 0000000..56c6f8d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-circle.svg
new file mode 100644
index 0000000..e8d86ef
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-mark.svg
new file mode 100644
index 0000000..19b4ac7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-academic-cap.svg
new file mode 100644
index 0000000..caf08cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-academic-cap.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-horizontal.svg
new file mode 100644
index 0000000..5941a18
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-vertical.svg
new file mode 100644
index 0000000..67922e6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-arrow-down.svg
new file mode 100644
index 0000000..a55eaac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-x-mark.svg
new file mode 100644
index 0000000..d317024
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-x-mark.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box.svg
new file mode 100644
index 0000000..045a553
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-circle.svg
new file mode 100644
index 0000000..63783da
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-left.svg
new file mode 100644
index 0000000..2a04263
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square-stack.svg
new file mode 100644
index 0000000..3ebf0cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square.svg
new file mode 100644
index 0000000..dcc413d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-right.svg
new file mode 100644
index 0000000..dc6984c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-tray.svg
new file mode 100644
index 0000000..a574281
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down.svg
new file mode 100644
index 0000000..e8334d5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-circle.svg
new file mode 100644
index 0000000..d958af3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-end-on-rectangle.svg
new file mode 100644
index 0000000..cf507b8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-end-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-on-rectangle.svg
new file mode 100644
index 0000000..cf507b8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-start-on-rectangle.svg
new file mode 100644
index 0000000..9fbe1ee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-start-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left.svg
new file mode 100644
index 0000000..3f84fb7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-down.svg
new file mode 100644
index 0000000..9176936
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-left.svg
new file mode 100644
index 0000000..b374f26
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-right.svg
new file mode 100644
index 0000000..654992f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-up.svg
new file mode 100644
index 0000000..71b5c3c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path-rounded-square.svg
new file mode 100644
index 0000000..e7e2019
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path-rounded-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path.svg
new file mode 100644
index 0000000..11083b2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-circle.svg
new file mode 100644
index 0000000..96ed0f5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-end-on-rectangle.svg
new file mode 100644
index 0000000..930a4ac
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-end-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-on-rectangle.svg
new file mode 100644
index 0000000..17ad554
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-start-on-rectangle.svg
new file mode 100644
index 0000000..17ad554
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-start-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right.svg
new file mode 100644
index 0000000..c985254
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-down.svg
new file mode 100644
index 0000000..dca2325
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-left.svg
new file mode 100644
index 0000000..a3ce231
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-right.svg
new file mode 100644
index 0000000..a2abcef
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-up.svg
new file mode 100644
index 0000000..8c25bba
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-top-right-on-square.svg
new file mode 100644
index 0000000..80e5aff
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-top-right-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-down.svg
new file mode 100644
index 0000000..b65a016
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-up.svg
new file mode 100644
index 0000000..cf1ba1c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-down-left.svg
new file mode 100644
index 0000000..e40ed6b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-down-right.svg
new file mode 100644
index 0000000..92db7a0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-left-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-left-down.svg
new file mode 100644
index 0000000..a630e02
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-left-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-left-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-left-up.svg
new file mode 100644
index 0000000..7af6dbd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-left-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-right-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-right-down.svg
new file mode 100644
index 0000000..2ad2bfc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-right-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-right-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-right-up.svg
new file mode 100644
index 0000000..fd0c49a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-right-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-up-left.svg
new file mode 100644
index 0000000..69e8b13
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-up-right.svg
new file mode 100644
index 0000000..f83300e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-turn-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-circle.svg
new file mode 100644
index 0000000..83747dc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-left.svg
new file mode 100644
index 0000000..c6256c7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square-stack.svg
new file mode 100644
index 0000000..d38d02d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square.svg
new file mode 100644
index 0000000..70bf772
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-right.svg
new file mode 100644
index 0000000..af327a9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-tray.svg
new file mode 100644
index 0000000..97cea1e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up.svg
new file mode 100644
index 0000000..31d032b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-down.svg
new file mode 100644
index 0000000..04c20f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-left.svg
new file mode 100644
index 0000000..bfb8063
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-right.svg
new file mode 100644
index 0000000..4151694
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-up.svg
new file mode 100644
index 0000000..1ea28a7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-in.svg
new file mode 100644
index 0000000..1e398e8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-in.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-out.svg
new file mode 100644
index 0000000..a150459
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-right-left.svg
new file mode 100644
index 0000000..e0c2cd1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-right-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-up-down.svg
new file mode 100644
index 0000000..65ecb1d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-at-symbol.svg
new file mode 100644
index 0000000..12b3a4b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-at-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backspace.svg
new file mode 100644
index 0000000..67ead14
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backspace.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backward.svg
new file mode 100644
index 0000000..77bb887
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-banknotes.svg
new file mode 100644
index 0000000..3537885
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-banknotes.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-2.svg
new file mode 100644
index 0000000..f202853
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-left.svg
new file mode 100644
index 0000000..b6d722a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-right.svg
new file mode 100644
index 0000000..fe4ca2d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-center-left.svg
new file mode 100644
index 0000000..f1837b7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-center-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3.svg
new file mode 100644
index 0000000..b346ec7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-4.svg
new file mode 100644
index 0000000..a55c244
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-4.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-down.svg
new file mode 100644
index 0000000..a8988f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-up.svg
new file mode 100644
index 0000000..50e5d62
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-0.svg
new file mode 100644
index 0000000..e3cf12b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-0.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-100.svg
new file mode 100644
index 0000000..8c0b12a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-100.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-50.svg
new file mode 100644
index 0000000..9da699c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-50.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-beaker.svg
new file mode 100644
index 0000000..09f8405
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-beaker.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-alert.svg
new file mode 100644
index 0000000..ab36d83
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-alert.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-slash.svg
new file mode 100644
index 0000000..6c27b45
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-snooze.svg
new file mode 100644
index 0000000..fa81242
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-snooze.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell.svg
new file mode 100644
index 0000000..15c304d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bold.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bold.svg
new file mode 100644
index 0000000..4acbb17
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bold.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt-slash.svg
new file mode 100644
index 0000000..db5bb00
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt.svg
new file mode 100644
index 0000000..ddafddc
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-book-open.svg
new file mode 100644
index 0000000..be9503f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-book-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-slash.svg
new file mode 100644
index 0000000..8029db0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-square.svg
new file mode 100644
index 0000000..5589364
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark.svg
new file mode 100644
index 0000000..4f4f509
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-briefcase.svg
new file mode 100644
index 0000000..519aacd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-briefcase.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bug-ant.svg
new file mode 100644
index 0000000..1278695
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bug-ant.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-library.svg
new file mode 100644
index 0000000..bcecbd9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-library.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office-2.svg
new file mode 100644
index 0000000..506b3cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office.svg
new file mode 100644
index 0000000..a36c69a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-storefront.svg
new file mode 100644
index 0000000..8a5f317
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-storefront.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cake.svg
new file mode 100644
index 0000000..9626351
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cake.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calculator.svg
new file mode 100644
index 0000000..a512ef7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calculator.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-date-range.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-date-range.svg
new file mode 100644
index 0000000..2336c66
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-date-range.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-days.svg
new file mode 100644
index 0000000..80d447c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-days.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar.svg
new file mode 100644
index 0000000..cc157d6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-camera.svg
new file mode 100644
index 0000000..8f26ad5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-camera.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar-square.svg
new file mode 100644
index 0000000..13a71f5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar.svg
new file mode 100644
index 0000000..0bb35a1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-pie.svg
new file mode 100644
index 0000000..2068099
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-pie.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center-text.svg
new file mode 100644
index 0000000..e4b8f13
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center.svg
new file mode 100644
index 0000000..8b19aee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-ellipsis.svg
new file mode 100644
index 0000000..bc6cc35
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-right.svg
new file mode 100644
index 0000000..c2b25fd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left.svg
new file mode 100644
index 0000000..d65d62a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left-ellipsis.svg
new file mode 100644
index 0000000..30603d0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left.svg
new file mode 100644
index 0000000..583d502
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-badge.svg
new file mode 100644
index 0000000..bcf807a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-circle.svg
new file mode 100644
index 0000000..4c53408
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check.svg
new file mode 100644
index 0000000..99d96ee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-down.svg
new file mode 100644
index 0000000..a2220ef
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-left.svg
new file mode 100644
index 0000000..06446a7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-left.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-right.svg
new file mode 100644
index 0000000..f25d457
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-up.svg
new file mode 100644
index 0000000..a169797
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-up.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-down.svg
new file mode 100644
index 0000000..9cd2647
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-left.svg
new file mode 100644
index 0000000..5fcaa4e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-right.svg
new file mode 100644
index 0000000..6e37a51
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up-down.svg
new file mode 100644
index 0000000..4c19e13
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up.svg
new file mode 100644
index 0000000..d9695d3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-circle-stack.svg
new file mode 100644
index 0000000..51b626e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-circle-stack.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-check.svg
new file mode 100644
index 0000000..e5de2b6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-check.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-list.svg
new file mode 100644
index 0000000..91ac9b7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-list.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document.svg
new file mode 100644
index 0000000..51c90de
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard.svg
new file mode 100644
index 0000000..2c98bb3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clock.svg
new file mode 100644
index 0000000..fb8943a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-down.svg
new file mode 100644
index 0000000..6bc1ece
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-up.svg
new file mode 100644
index 0000000..59814e6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud.svg
new file mode 100644
index 0000000..88edfce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket-square.svg
new file mode 100644
index 0000000..b2e0ec1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket.svg
new file mode 100644
index 0000000..9420564
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-6-tooth.svg
new file mode 100644
index 0000000..4eebfb6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-6-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-8-tooth.svg
new file mode 100644
index 0000000..17fcb97
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-8-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog.svg
new file mode 100644
index 0000000..762d109
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-command-line.svg
new file mode 100644
index 0000000..d7a1426
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-command-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-computer-desktop.svg
new file mode 100644
index 0000000..a7ad833
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-computer-desktop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cpu-chip.svg
new file mode 100644
index 0000000..b9da5a1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cpu-chip.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-credit-card.svg
new file mode 100644
index 0000000..bd92d58
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-credit-card.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube-transparent.svg
new file mode 100644
index 0000000..56b08b8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube-transparent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube.svg
new file mode 100644
index 0000000..875c5f8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-bangladeshi.svg
new file mode 100644
index 0000000..8d8833c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-dollar.svg
new file mode 100644
index 0000000..e8aaeea
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-dollar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-euro.svg
new file mode 100644
index 0000000..0d3f66d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-pound.svg
new file mode 100644
index 0000000..832100e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-rupee.svg
new file mode 100644
index 0000000..6a70776
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-yen.svg
new file mode 100644
index 0000000..1c55b60
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-rays.svg
new file mode 100644
index 0000000..cfe7553
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-rays.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-ripple.svg
new file mode 100644
index 0000000..7386ee2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-ripple.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-phone-mobile.svg
new file mode 100644
index 0000000..a81f966
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-phone-mobile.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-tablet.svg
new file mode 100644
index 0000000..e576b7f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-tablet.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-divide.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-divide.svg
new file mode 100644
index 0000000..bc10e9d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-divide.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-down.svg
new file mode 100644
index 0000000..fab4cd1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-up.svg
new file mode 100644
index 0000000..62bf419
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-up.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-chart-bar.svg
new file mode 100644
index 0000000..3ef54d8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-chart-bar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-check.svg
new file mode 100644
index 0000000..357c565
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-check.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-bangladeshi.svg
new file mode 100644
index 0000000..0e84d61
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-dollar.svg
new file mode 100644
index 0000000..dcf6abe
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-dollar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-euro.svg
new file mode 100644
index 0000000..5d217ce
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-euro.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-pound.svg
new file mode 100644
index 0000000..5a36501
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-rupee.svg
new file mode 100644
index 0000000..bc2e664
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-yen.svg
new file mode 100644
index 0000000..4236e49
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-duplicate.svg
new file mode 100644
index 0000000..55d74d5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-duplicate.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-magnifying-glass.svg
new file mode 100644
index 0000000..63cd019
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-magnifying-glass.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-minus.svg
new file mode 100644
index 0000000..13b0924
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-minus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-plus.svg
new file mode 100644
index 0000000..1ce84c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-plus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-text.svg
new file mode 100644
index 0000000..4f747fb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-text.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document.svg
new file mode 100644
index 0000000..de025c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal-circle.svg
new file mode 100644
index 0000000..4db4853
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal.svg
new file mode 100644
index 0000000..5f7a532
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-vertical.svg
new file mode 100644
index 0000000..5ada537
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope-open.svg
new file mode 100644
index 0000000..6393663
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope-open.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope.svg
new file mode 100644
index 0000000..94fc56c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-equals.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-equals.svg
new file mode 100644
index 0000000..18133df
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-equals.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-circle.svg
new file mode 100644
index 0000000..3fb372d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-triangle.svg
new file mode 100644
index 0000000..2024fae
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-triangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-dropper.svg
new file mode 100644
index 0000000..a6cd394
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-dropper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-slash.svg
new file mode 100644
index 0000000..f067f2a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-slash.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye.svg
new file mode 100644
index 0000000..675bb24
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-frown.svg
new file mode 100644
index 0000000..06fa63c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-frown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-smile.svg
new file mode 100644
index 0000000..0231474
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-smile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-film.svg
new file mode 100644
index 0000000..f94903c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-film.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-finger-print.svg
new file mode 100644
index 0000000..5e4955a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-finger-print.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-fire.svg
new file mode 100644
index 0000000..f61bdc1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-fire.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-flag.svg
new file mode 100644
index 0000000..97e5377
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-flag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-arrow-down.svg
new file mode 100644
index 0000000..f6b5e27
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-minus.svg
new file mode 100644
index 0000000..6bf869b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-open.svg
new file mode 100644
index 0000000..e81ebee
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-plus.svg
new file mode 100644
index 0000000..97ce688
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder.svg
new file mode 100644
index 0000000..fa0733d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-forward.svg
new file mode 100644
index 0000000..4895530
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-forward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-funnel.svg
new file mode 100644
index 0000000..8fd3b26
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-funnel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gif.svg
new file mode 100644
index 0000000..5047d63
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gif.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift-top.svg
new file mode 100644
index 0000000..96ec097
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift-top.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift.svg
new file mode 100644
index 0000000..461b34b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-alt.svg
new file mode 100644
index 0000000..bf5ac60
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-alt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-americas.svg
new file mode 100644
index 0000000..faee6a1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-americas.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-asia-australia.svg
new file mode 100644
index 0000000..2883841
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-asia-australia.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-europe-africa.svg
new file mode 100644
index 0000000..9b1ad10
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-europe-africa.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h1.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h1.svg
new file mode 100644
index 0000000..56c22b1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h1.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h2.svg
new file mode 100644
index 0000000..5acc000
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h3.svg
new file mode 100644
index 0000000..904df6e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-h3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-raised.svg
new file mode 100644
index 0000000..ad64f49
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-raised.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-down.svg
new file mode 100644
index 0000000..4a4996d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-up.svg
new file mode 100644
index 0000000..cb2396b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hashtag.svg
new file mode 100644
index 0000000..7bf54c2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hashtag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-heart.svg
new file mode 100644
index 0000000..27c7d20
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home-modern.svg
new file mode 100644
index 0000000..755bf33
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home-modern.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home.svg
new file mode 100644
index 0000000..4ee93c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-identification.svg
new file mode 100644
index 0000000..03adf30
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-arrow-down.svg
new file mode 100644
index 0000000..f593e2f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-stack.svg
new file mode 100644
index 0000000..646629e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox.svg
new file mode 100644
index 0000000..0de433b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-information-circle.svg
new file mode 100644
index 0000000..46cbb61
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-italic.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-italic.svg
new file mode 100644
index 0000000..15ffd3d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-italic.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-key.svg
new file mode 100644
index 0000000..b4d50f5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-key.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-language.svg
new file mode 100644
index 0000000..41570fe
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-language.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lifebuoy.svg
new file mode 100644
index 0000000..2876a9c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lifebuoy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-light-bulb.svg
new file mode 100644
index 0000000..414cbf0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-light-bulb.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link-slash.svg
new file mode 100644
index 0000000..4e28b41
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link.svg
new file mode 100644
index 0000000..0c0509b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-list-bullet.svg
new file mode 100644
index 0000000..15b29ca
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-list-bullet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-closed.svg
new file mode 100644
index 0000000..08ff114
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-closed.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-open.svg
new file mode 100644
index 0000000..1fde51e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-circle.svg
new file mode 100644
index 0000000..eb482b3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-minus.svg
new file mode 100644
index 0000000..b63c1a6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-plus.svg
new file mode 100644
index 0000000..3a896f4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass.svg
new file mode 100644
index 0000000..49657ff
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map-pin.svg
new file mode 100644
index 0000000..15e9fff
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map-pin.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map.svg
new file mode 100644
index 0000000..c8b9dbd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-megaphone.svg
new file mode 100644
index 0000000..8d250a4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-megaphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-microphone.svg
new file mode 100644
index 0000000..db719be
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-microphone.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-circle.svg
new file mode 100644
index 0000000..4848ae5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-small.svg
new file mode 100644
index 0000000..0c98430
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus.svg
new file mode 100644
index 0000000..f0853c4
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-moon.svg
new file mode 100644
index 0000000..21421e1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-moon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-musical-note.svg
new file mode 100644
index 0000000..2647ae2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-newspaper.svg
new file mode 100644
index 0000000..dd093eb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-newspaper.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-no-symbol.svg
new file mode 100644
index 0000000..214f8d0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-no-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-numbered-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-numbered-list.svg
new file mode 100644
index 0000000..e612e5d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-numbered-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paint-brush.svg
new file mode 100644
index 0000000..fd66d60
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paint-brush.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-airplane.svg
new file mode 100644
index 0000000..fe0dba2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-airplane.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-clip.svg
new file mode 100644
index 0000000..7b84732
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-clip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause-circle.svg
new file mode 100644
index 0000000..39d5c9b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause.svg
new file mode 100644
index 0000000..58b58c5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil-square.svg
new file mode 100644
index 0000000..05f70cf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil.svg
new file mode 100644
index 0000000..4b9897a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-percent-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-percent-badge.svg
new file mode 100644
index 0000000..eeb025e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-percent-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-down-left.svg
new file mode 100644
index 0000000..ccba05f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-down-left.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-up-right.svg
new file mode 100644
index 0000000..8aff3e8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-up-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-x-mark.svg
new file mode 100644
index 0000000..2858b73
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone.svg
new file mode 100644
index 0000000..2e9b05a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-photo.svg
new file mode 100644
index 0000000..bb42a4d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-photo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-circle.svg
new file mode 100644
index 0000000..d6a90c5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-pause.svg
new file mode 100644
index 0000000..088f26a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play.svg
new file mode 100644
index 0000000..d177bab
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-circle.svg
new file mode 100644
index 0000000..8e2d74d
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-small.svg
new file mode 100644
index 0000000..18096b9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus.svg
new file mode 100644
index 0000000..3d22cdd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-power.svg
new file mode 100644
index 0000000..ec3eb81
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-power.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-bar.svg
new file mode 100644
index 0000000..637b71e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-line.svg
new file mode 100644
index 0000000..6ebdcef
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-printer.svg
new file mode 100644
index 0000000..eb04c85
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-printer.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-puzzle-piece.svg
new file mode 100644
index 0000000..e519678
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-puzzle-piece.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-qr-code.svg
new file mode 100644
index 0000000..6be372e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-qr-code.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-question-mark-circle.svg
new file mode 100644
index 0000000..94150f1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-question-mark-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-queue-list.svg
new file mode 100644
index 0000000..7f45d2f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-queue-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-radio.svg
new file mode 100644
index 0000000..aab76e8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-radio.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-percent.svg
new file mode 100644
index 0000000..319028f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-percent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-refund.svg
new file mode 100644
index 0000000..c48dd03
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-refund.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-group.svg
new file mode 100644
index 0000000..fb09df7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-stack.svg
new file mode 100644
index 0000000..c505e47
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rocket-launch.svg
new file mode 100644
index 0000000..0571660
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rocket-launch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rss.svg
new file mode 100644
index 0000000..d44d001
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rss.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scale.svg
new file mode 100644
index 0000000..2287ace
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scale.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scissors.svg
new file mode 100644
index 0000000..33d2770
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scissors.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server-stack.svg
new file mode 100644
index 0000000..9d9ee19
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server.svg
new file mode 100644
index 0000000..ea22cde
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-share.svg
new file mode 100644
index 0000000..aecf6a3
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-check.svg
new file mode 100644
index 0000000..7a74601
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-exclamation.svg
new file mode 100644
index 0000000..94dd996
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-exclamation.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-bag.svg
new file mode 100644
index 0000000..87a0e41
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-bag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-cart.svg
new file mode 100644
index 0000000..43f8602
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal-slash.svg
new file mode 100644
index 0000000..ee7bc2c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal.svg
new file mode 100644
index 0000000..6034aec
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-slash.svg
new file mode 100644
index 0000000..29b1378
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sparkles.svg
new file mode 100644
index 0000000..9c38ace
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sparkles.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-wave.svg
new file mode 100644
index 0000000..2366120
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-wave.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-x-mark.svg
new file mode 100644
index 0000000..47637aa
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-2-stack.svg
new file mode 100644
index 0000000..4bbdc7e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-2-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-3-stack-3d.svg
new file mode 100644
index 0000000..50c33a9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-3-stack-3d.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-2x2.svg
new file mode 100644
index 0000000..84651b9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-2x2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-plus.svg
new file mode 100644
index 0000000..f5b9779
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-star.svg
new file mode 100644
index 0000000..875d16f
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop-circle.svg
new file mode 100644
index 0000000..a2d87ea
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop.svg
new file mode 100644
index 0000000..56cdb3e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-strikethrough.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-strikethrough.svg
new file mode 100644
index 0000000..56fcfb0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-strikethrough.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sun.svg
new file mode 100644
index 0000000..afca1bd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sun.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-swatch.svg
new file mode 100644
index 0000000..404c0bb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-swatch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-table-cells.svg
new file mode 100644
index 0000000..da3bcaf
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-table-cells.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tag.svg
new file mode 100644
index 0000000..2969e32
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ticket.svg
new file mode 100644
index 0000000..1bb654c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ticket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trash.svg
new file mode 100644
index 0000000..8791a17
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trophy.svg
new file mode 100644
index 0000000..f8a5c8c
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-truck.svg
new file mode 100644
index 0000000..c919e58
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-truck.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tv.svg
new file mode 100644
index 0000000..2b33fba
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tv.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-underline.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-underline.svg
new file mode 100644
index 0000000..c6fef0e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-underline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-circle.svg
new file mode 100644
index 0000000..26bc7ff
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-group.svg
new file mode 100644
index 0000000..36c5e38
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-group.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-minus.svg
new file mode 100644
index 0000000..4fedc83
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-plus.svg
new file mode 100644
index 0000000..eabe7c7
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user.svg
new file mode 100644
index 0000000..194979b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-users.svg
new file mode 100644
index 0000000..d098e72
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-users.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-variable.svg
new file mode 100644
index 0000000..922baf0
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-variable.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera-slash.svg
new file mode 100644
index 0000000..96ef401
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera.svg
new file mode 100644
index 0000000..7749fcd
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-view-columns.svg
new file mode 100644
index 0000000..352e81a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-view-columns.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-viewfinder-circle.svg
new file mode 100644
index 0000000..fc68de6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-viewfinder-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wallet.svg
new file mode 100644
index 0000000..57b676a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wallet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wifi.svg
new file mode 100644
index 0000000..b05d487
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wifi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-window.svg
new file mode 100644
index 0000000..0f683fb
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench-screwdriver.svg
new file mode 100644
index 0000000..bb691b9
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench-screwdriver.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench.svg
new file mode 100644
index 0000000..7ad17c8
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-circle.svg
new file mode 100644
index 0000000..d510ee1
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-mark.svg
new file mode 100644
index 0000000..5561f00
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/vendor/blade-ui-kit/blade-heroicons/src/BladeHeroiconsServiceProvider.php b/vendor/blade-ui-kit/blade-heroicons/src/BladeHeroiconsServiceProvider.php
new file mode 100644
index 0000000..4209496
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-heroicons/src/BladeHeroiconsServiceProvider.php
@@ -0,0 +1,41 @@
+registerConfig();
+
+ $this->callAfterResolving(Factory::class, function (Factory $factory, Container $container) {
+ $config = $container->make('config')->get('blade-heroicons', []);
+
+ $factory->add('heroicons', array_merge(['path' => __DIR__.'/../resources/svg'], $config));
+ });
+ }
+
+ private function registerConfig(): void
+ {
+ $this->mergeConfigFrom(__DIR__.'/../config/blade-heroicons.php', 'blade-heroicons');
+ }
+
+ public function boot(): void
+ {
+ if ($this->app->runningInConsole()) {
+ $this->publishes([
+ __DIR__.'/../resources/svg' => public_path('vendor/blade-heroicons'),
+ ], 'blade-heroicons');
+
+ $this->publishes([
+ __DIR__.'/../config/blade-heroicons.php' => $this->app->configPath('blade-heroicons.php'),
+ ], 'blade-heroicons-config');
+ }
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/LICENSE.md b/vendor/blade-ui-kit/blade-icons/LICENSE.md
new file mode 100644
index 0000000..669220b
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Dries Vints
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/blade-ui-kit/blade-icons/bin/blade-icons-generate b/vendor/blade-ui-kit/blade-icons/bin/blade-icons-generate
new file mode 100644
index 0000000..0777467
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/bin/blade-icons-generate
@@ -0,0 +1,25 @@
+#!/usr/bin/env php
+setCode(function (InputInterface $input, OutputInterface $output) {
+ $output->writeln("Starting to generate icons...");
+
+ IconGenerator::create(
+ require getcwd().'/config/generation.php'
+ )->generate();
+
+ $output->writeln("Finished generating icons!");
+
+ return Command::SUCCESS;
+})->run();
diff --git a/vendor/blade-ui-kit/blade-icons/composer.json b/vendor/blade-ui-kit/blade-icons/composer.json
new file mode 100644
index 0000000..5620dd2
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/composer.json
@@ -0,0 +1,69 @@
+{
+ "name": "blade-ui-kit/blade-icons",
+ "description": "A package to easily make use of icons in your Laravel Blade views.",
+ "keywords": ["Blade", "Icons", "Laravel", "SVG"],
+ "homepage": "https://github.com/blade-ui-kit/blade-icons",
+ "license": "MIT",
+ "support": {
+ "issues": "https://github.com/blade-ui-kit/blade-icons/issues",
+ "source": "https://github.com/blade-ui-kit/blade-icons"
+ },
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/driesvints"
+ },
+ {
+ "type": "paypal",
+ "url": "https://www.paypal.com/paypalme/driesvints"
+ }
+ ],
+ "require": {
+ "php": "^7.4|^8.0",
+ "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/view": "^8.0|^9.0|^10.0|^11.0",
+ "symfony/console": "^5.3|^6.0|^7.0",
+ "symfony/finder": "^5.3|^6.0|^7.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5.1",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "bin": [
+ "bin/blade-icons-generate"
+ ],
+ "autoload": {
+ "psr-4": {
+ "BladeUI\\Icons\\": "src"
+ },
+ "files": [
+ "src/helpers.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Tests\\": "tests"
+ }
+ },
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Icons\\BladeIconsServiceProvider"
+ ]
+ }
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/vendor/blade-ui-kit/blade-icons/config/blade-icons.php b/vendor/blade-ui-kit/blade-icons/config/blade-icons.php
new file mode 100644
index 0000000..5aade2a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/config/blade-icons.php
@@ -0,0 +1,183 @@
+ [
+
+ // 'default' => [
+ //
+ // /*
+ // |-----------------------------------------------------------------
+ // | Icons Path
+ // |-----------------------------------------------------------------
+ // |
+ // | Provide the relative path from your app root to your SVG icons
+ // | directory. Icons are loaded recursively so there's no need to
+ // | list every sub-directory.
+ // |
+ // | Relative to the disk root when the disk option is set.
+ // |
+ // */
+ //
+ // 'path' => 'resources/svg',
+ //
+ // /*
+ // |-----------------------------------------------------------------
+ // | Filesystem Disk
+ // |-----------------------------------------------------------------
+ // |
+ // | Optionally, provide a specific filesystem disk to read
+ // | icons from. When defining a disk, the "path" option
+ // | starts relatively from the disk root.
+ // |
+ // */
+ //
+ // 'disk' => '',
+ //
+ // /*
+ // |-----------------------------------------------------------------
+ // | Default Prefix
+ // |-----------------------------------------------------------------
+ // |
+ // | This config option allows you to define a default prefix for
+ // | your icons. The dash separator will be applied automatically
+ // | to every icon name. It's required and needs to be unique.
+ // |
+ // */
+ //
+ // 'prefix' => 'icon',
+ //
+ // /*
+ // |-----------------------------------------------------------------
+ // | Fallback Icon
+ // |-----------------------------------------------------------------
+ // |
+ // | This config option allows you to define a fallback
+ // | icon when an icon in this set cannot be found.
+ // |
+ // */
+ //
+ // 'fallback' => '',
+ //
+ // /*
+ // |-----------------------------------------------------------------
+ // | Default Set Classes
+ // |-----------------------------------------------------------------
+ // |
+ // | This config option allows you to define some classes which
+ // | will be applied by default to all icons within this set.
+ // |
+ // */
+ //
+ // 'class' => '',
+ //
+ // /*
+ // |-----------------------------------------------------------------
+ // | Default Set Attributes
+ // |-----------------------------------------------------------------
+ // |
+ // | This config option allows you to define some attributes which
+ // | will be applied by default to all icons within this set.
+ // |
+ // */
+ //
+ // 'attributes' => [
+ // // 'width' => 50,
+ // // 'height' => 50,
+ // ],
+ //
+ // ],
+
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Global Default Classes
+ |--------------------------------------------------------------------------
+ |
+ | This config option allows you to define some classes which
+ | will be applied by default to all icons.
+ |
+ */
+
+ 'class' => '',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Global Default Attributes
+ |--------------------------------------------------------------------------
+ |
+ | This config option allows you to define some attributes which
+ | will be applied by default to all icons.
+ |
+ */
+
+ 'attributes' => [
+ // 'width' => 50,
+ // 'height' => 50,
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Global Fallback Icon
+ |--------------------------------------------------------------------------
+ |
+ | This config option allows you to define a global fallback
+ | icon when an icon in any set cannot be found. It can
+ | reference any icon from any configured set.
+ |
+ */
+
+ 'fallback' => '',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Components
+ |--------------------------------------------------------------------------
+ |
+ | These config options allow you to define some
+ | settings related to Blade Components.
+ |
+ */
+
+ 'components' => [
+
+ /*
+ |----------------------------------------------------------------------
+ | Disable Components
+ |----------------------------------------------------------------------
+ |
+ | This config option allows you to disable Blade components
+ | completely. It's useful to avoid performance problems
+ | when working with large icon libraries.
+ |
+ */
+
+ 'disabled' => false,
+
+ /*
+ |----------------------------------------------------------------------
+ | Default Icon Component Name
+ |----------------------------------------------------------------------
+ |
+ | This config option allows you to define the name
+ | for the default Icon class component.
+ |
+ */
+
+ 'default' => 'icon',
+
+ ],
+
+];
diff --git a/vendor/blade-ui-kit/blade-icons/pint.json b/vendor/blade-ui-kit/blade-icons/pint.json
new file mode 100644
index 0000000..94b6307
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/pint.json
@@ -0,0 +1,6 @@
+{
+ "notPath": [
+ "tests/fixtures/blade-icons.php",
+ "tests/fixtures/generated-manifest.php"
+ ]
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/BladeIconsServiceProvider.php b/vendor/blade-ui-kit/blade-icons/src/BladeIconsServiceProvider.php
new file mode 100644
index 0000000..fb7e905
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/BladeIconsServiceProvider.php
@@ -0,0 +1,116 @@
+registerConfig();
+ $this->registerFactory();
+ $this->registerManifest();
+ }
+
+ public function boot(): void
+ {
+ $this->bootCommands();
+ $this->bootDirectives();
+ $this->bootIconComponent();
+ $this->bootPublishing();
+ }
+
+ private function registerConfig(): void
+ {
+ $this->mergeConfigFrom(__DIR__.'/../config/blade-icons.php', 'blade-icons');
+ }
+
+ private function registerFactory(): void
+ {
+ $this->app->singleton(Factory::class, function (Application $app) {
+ $config = $app->make('config')->get('blade-icons', []);
+
+ $factory = new Factory(
+ new Filesystem,
+ $app->make(IconsManifest::class),
+ $app->make(FilesystemFactory::class),
+ $config,
+ );
+
+ foreach ($config['sets'] ?? [] as $set => $options) {
+ if (! isset($options['disk']) || ! $options['disk']) {
+ $paths = $options['paths'] ?? $options['path'] ?? [];
+
+ $options['paths'] = array_map(
+ fn ($path) => $app->basePath($path),
+ (array) $paths,
+ );
+ }
+
+ $factory->add($set, $options);
+ }
+
+ return $factory;
+ });
+
+ $this->callAfterResolving(ViewFactory::class, function ($view, Application $app) {
+ $app->make(Factory::class)->registerComponents();
+ });
+ }
+
+ private function registerManifest(): void
+ {
+ $this->app->singleton(IconsManifest::class, function (Application $app) {
+ return new IconsManifest(
+ new Filesystem,
+ $this->manifestPath(),
+ $app->make(FilesystemFactory::class),
+ );
+ });
+ }
+
+ private function manifestPath(): string
+ {
+ return $this->app->bootstrapPath('cache/blade-icons.php');
+ }
+
+ private function bootCommands(): void
+ {
+ if ($this->app->runningInConsole()) {
+ $this->commands([
+ Console\CacheCommand::class,
+ Console\ClearCommand::class,
+ ]);
+ }
+ }
+
+ private function bootDirectives(): void
+ {
+ Blade::directive('svg', fn ($expression) => "");
+ }
+
+ private function bootIconComponent(): void
+ {
+ if ($name = config('blade-icons.components.default')) {
+ Blade::component($name, Icon::class);
+ }
+ }
+
+ private function bootPublishing(): void
+ {
+ if ($this->app->runningInConsole()) {
+ $this->publishes([
+ __DIR__.'/../config/blade-icons.php' => $this->app->configPath('blade-icons.php'),
+ ], 'blade-icons');
+ }
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Components/Icon.php b/vendor/blade-ui-kit/blade-icons/src/Components/Icon.php
new file mode 100644
index 0000000..c09da9a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Components/Icon.php
@@ -0,0 +1,31 @@
+name = $name;
+ }
+
+ public function render(): Closure
+ {
+ return function (array $data) {
+ $attributes = $data['attributes']->getIterator()->getArrayCopy();
+
+ $class = $attributes['class'] ?? '';
+
+ unset($attributes['class']);
+
+ return svg($this->name, $class, $attributes)->toHtml();
+ };
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Components/Svg.php b/vendor/blade-ui-kit/blade-icons/src/Components/Svg.php
new file mode 100644
index 0000000..c9c34f6
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Components/Svg.php
@@ -0,0 +1,24 @@
+getIterator()->getArrayCopy();
+
+ $class = $attributes['class'] ?? '';
+
+ unset($attributes['class']);
+
+ return svg($this->componentName, $class, $attributes)->toHtml();
+ };
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Concerns/RendersAttributes.php b/vendor/blade-ui-kit/blade-icons/src/Concerns/RendersAttributes.php
new file mode 100644
index 0000000..19abb0e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Concerns/RendersAttributes.php
@@ -0,0 +1,43 @@
+attributes;
+ }
+
+ private function renderAttributes(): string
+ {
+ if (count($this->attributes) == 0) {
+ return '';
+ }
+
+ return ' '.collect($this->attributes)->map(function (string $value, $attribute) {
+ if (is_int($attribute)) {
+ return $value;
+ }
+
+ return sprintf('%s="%s"', $attribute, $value);
+ })->implode(' ');
+ }
+
+ public function __call(string $method, array $arguments): self
+ {
+ if (count($arguments) === 0) {
+ $this->attributes[] = Str::snake($method, '-');
+ } else {
+ $this->attributes[Str::snake($method, '-')] = $arguments[0];
+ }
+
+ return $this;
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Console/CacheCommand.php b/vendor/blade-ui-kit/blade-icons/src/Console/CacheCommand.php
new file mode 100644
index 0000000..608b185
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Console/CacheCommand.php
@@ -0,0 +1,35 @@
+write($factory->all());
+
+ $this->info('Blade icons manifest file generated successfully!');
+
+ return 0;
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Console/ClearCommand.php b/vendor/blade-ui-kit/blade-icons/src/Console/ClearCommand.php
new file mode 100644
index 0000000..6cc0707
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Console/ClearCommand.php
@@ -0,0 +1,34 @@
+delete();
+
+ $this->info('Blade icons manifest file cleared!');
+
+ return 0;
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Exceptions/CannotRegisterIconSet.php b/vendor/blade-ui-kit/blade-icons/src/Exceptions/CannotRegisterIconSet.php
new file mode 100644
index 0000000..3158a8a
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Exceptions/CannotRegisterIconSet.php
@@ -0,0 +1,30 @@
+filesystem = $filesystem;
+ $this->manifest = $manifest;
+ $this->disks = $disks;
+ $this->config = $config;
+
+ $this->config['class'] = $config['class'] ?? '';
+ $this->config['attributes'] = (array) ($config['attributes'] ?? []);
+ $this->config['fallback'] = $config['fallback'] ?? '';
+ $this->config['components'] = [
+ 'disabled' => $config['components']['disabled'] ?? false,
+ 'default' => $config['components']['default'] ?? 'icon',
+ ];
+ }
+
+ /**
+ * @internal This method is only meant for internal purposes and does not fall under the package's BC promise.
+ */
+ public function all(): array
+ {
+ return $this->sets;
+ }
+
+ /**
+ * @throws CannotRegisterIconSet
+ */
+ public function add(string $set, array $options): self
+ {
+ if (! isset($options['prefix'])) {
+ throw CannotRegisterIconSet::prefixNotDefined($set);
+ }
+
+ if ($collidingSet = $this->getSetByPrefix($options['prefix'])) {
+ throw CannotRegisterIconSet::prefixNotUnique($set, $collidingSet);
+ }
+
+ $paths = (array) ($options['paths'] ?? $options['path'] ?? []);
+
+ $options['paths'] = array_filter(array_map(
+ fn ($path) => $path !== '/' ? rtrim($path, '/') : $path,
+ $paths,
+ ));
+
+ if (empty($options['paths'])) {
+ throw CannotRegisterIconSet::pathsNotDefined($set);
+ }
+
+ unset($options['path']);
+
+ $filesystem = $this->filesystem($options['disk'] ?? null);
+
+ foreach ($options['paths'] as $path) {
+ if ($path !== '/' && $filesystem->missing($path)) {
+ throw CannotRegisterIconSet::nonExistingPath($set, $path);
+ }
+ }
+
+ $this->sets[$set] = $options;
+
+ $this->cache = [];
+
+ return $this;
+ }
+
+ public function registerComponents(): void
+ {
+ if ($this->config['components']['disabled']) {
+ return;
+ }
+
+ foreach ($this->manifest->getManifest($this->sets) as $set => $paths) {
+ foreach ($paths as $icons) {
+ foreach ($icons as $icon) {
+ Blade::component(
+ SvgComponent::class,
+ $icon,
+ $this->sets[$set]['prefix'] ?? '',
+ );
+ }
+ }
+ }
+ }
+
+ /**
+ * @throws SvgNotFound
+ */
+ public function svg(string $name, $class = '', array $attributes = []): Svg
+ {
+ [$set, $name] = $this->splitSetAndName($name);
+
+ try {
+ return new Svg(
+ $name,
+ $this->contents($set, $name),
+ $this->formatAttributes($set, $class, $attributes),
+ );
+ } catch (SvgNotFound $exception) {
+ if (isset($this->sets[$set]['fallback']) && $this->sets[$set]['fallback'] !== '') {
+ $name = $this->sets[$set]['fallback'];
+
+ try {
+ return new Svg(
+ $name,
+ $this->contents($set, $name),
+ $this->formatAttributes($set, $class, $attributes),
+ );
+ } catch (SvgNotFound $exception) {
+ //
+ }
+ }
+
+ if ($this->config['fallback']) {
+ return $this->svg($this->config['fallback'], $class, $attributes);
+ }
+
+ throw $exception;
+ }
+ }
+
+ /**
+ * @throws SvgNotFound
+ */
+ private function contents(string $set, string $name): string
+ {
+ if (isset($this->cache[$set][$name])) {
+ return $this->cache[$set][$name];
+ }
+
+ if (isset($this->sets[$set])) {
+ foreach ($this->sets[$set]['paths'] as $path) {
+ try {
+ return $this->cache[$set][$name] = $this->getSvgFromPath(
+ $name,
+ $path,
+ $this->sets[$set]['disk'] ?? null,
+ );
+ } catch (FileNotFoundException $exception) {
+ //
+ }
+ }
+ }
+
+ throw SvgNotFound::missing($set, $name);
+ }
+
+ private function getSvgFromPath(string $name, string $path, ?string $disk = null): string
+ {
+ $contents = trim($this->filesystem($disk)->get(sprintf(
+ '%s/%s.svg',
+ rtrim($path),
+ str_replace('.', '/', $name),
+ )));
+
+ return $this->cleanSvgContents($contents);
+ }
+
+ private function cleanSvgContents(string $contents): string
+ {
+ return trim(preg_replace('/^(<\?xml.+?\?>)/', '', $contents));
+ }
+
+ private function splitSetAndName(string $name): array
+ {
+ $prefix = Str::before($name, '-');
+
+ $set = $this->getSetByPrefix($prefix);
+
+ $name = $set ? Str::after($name, '-') : $name;
+
+ return [$set ?? 'default', $name];
+ }
+
+ private function getSetByPrefix(string $prefix): ?string
+ {
+ return collect($this->sets)->where('prefix', $prefix)->keys()->first();
+ }
+
+ private function formatAttributes(string $set, $class = '', array $attributes = []): array
+ {
+ if (is_string($class)) {
+ if ($class = $this->buildClass($set, $class)) {
+ $attributes['class'] = $attributes['class'] ?? $class;
+ }
+ } elseif (is_array($class)) {
+ $attributes = $class;
+
+ if (! isset($attributes['class']) && $class = $this->buildClass($set, '')) {
+ $attributes['class'] = $class;
+ }
+ }
+
+ $attributes = array_merge(
+ $this->config['attributes'],
+ (array) ($this->sets[$set]['attributes'] ?? []),
+ $attributes,
+ );
+
+ foreach ($attributes as $key => $value) {
+ if (is_string($value)) {
+ $attributes[$key] = str_replace('"', '"', $value);
+ }
+ }
+
+ return $attributes;
+ }
+
+ private function buildClass(string $set, string $class): string
+ {
+ return trim(sprintf(
+ '%s %s',
+ trim(sprintf('%s %s', $this->config['class'], $this->sets[$set]['class'] ?? '')),
+ $class,
+ ));
+ }
+
+ /**
+ * @return \Illuminate\Contracts\Filesystem\Filesystem|Filesystem
+ */
+ private function filesystem(?string $disk = null)
+ {
+ return $this->disks && $disk ? $this->disks->disk($disk) : $this->filesystem;
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Generation/IconGenerator.php b/vendor/blade-ui-kit/blade-icons/src/Generation/IconGenerator.php
new file mode 100644
index 0000000..e0948e5
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Generation/IconGenerator.php
@@ -0,0 +1,92 @@
+filesystem = new Filesystem;
+ $this->sets = $sets;
+ }
+
+ public static function create(array $config): self
+ {
+ return new self($config);
+ }
+
+ public function generate(): void
+ {
+ foreach ($this->sets as $set) {
+ $destination = $this->getDestinationDirectory($set);
+ $files = array_filter(
+ $this->filesystem->files($set['source']),
+ fn (SplFileInfo $value) => str_ends_with($value->getFilename(), '.svg')
+ );
+
+ foreach ($files as $file) {
+ $filename = Str::of($file->getFilename());
+ $filename = $this->applyPrefixes($set, $filename);
+ $filename = $this->applySuffixes($set, $filename);
+ $pathname = $destination.$filename;
+
+ $this->filesystem->copy($file->getRealPath(), $pathname);
+
+ if (is_callable($set['after'] ?? null)) {
+ $set['after']($pathname, $set, $file);
+ }
+ }
+ }
+ }
+
+ private function getDestinationDirectory(array $set): string
+ {
+ $destination = Str::finish($set['destination'], DIRECTORY_SEPARATOR);
+
+ if (! Arr::get($set, 'safe', false)) {
+ $this->filesystem->deleteDirectory($destination);
+ }
+
+ $this->filesystem->ensureDirectoryExists($destination);
+
+ return $destination;
+ }
+
+ private function applyPrefixes($set, Stringable $filename): Stringable
+ {
+ if ($set['input-prefix'] ?? false) {
+ $filename = $filename->after($set['input-prefix']);
+ }
+
+ if ($set['output-prefix'] ?? false) {
+ $filename = $filename->prepend($set['output-prefix']);
+ }
+
+ return $filename;
+ }
+
+ private function applySuffixes($set, Stringable $filename): Stringable
+ {
+ if ($set['input-suffix'] ?? false) {
+ $filename = $filename->replace($set['input-suffix'].'.svg', '.svg');
+ }
+
+ if ($set['output-suffix'] ?? false) {
+ $filename = $filename->replace('.svg', $set['output-suffix'].'.svg');
+ }
+
+ return $filename;
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/IconsManifest.php b/vendor/blade-ui-kit/blade-icons/src/IconsManifest.php
new file mode 100644
index 0000000..f75d331
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/IconsManifest.php
@@ -0,0 +1,113 @@
+filesystem = $filesystem;
+ $this->manifestPath = $manifestPath;
+ $this->disks = $disks;
+ }
+
+ private function build(array $sets): array
+ {
+ $compiled = [];
+
+ foreach ($sets as $name => $set) {
+ $icons = [];
+
+ foreach ($set['paths'] as $path) {
+ $icons[$path] = [];
+
+ foreach ($this->filesystem($set['disk'] ?? null)->allFiles($path) as $file) {
+ if ($file instanceof SplFileInfo) {
+ if ($file->getExtension() !== 'svg') {
+ continue;
+ }
+
+ $icons[$path][] = $this->format($file->getPathName(), $path);
+ } else {
+ if (! Str::endsWith($file, '.svg')) {
+ continue;
+ }
+
+ $icons[$path][] = $this->format($file, $path);
+ }
+ }
+
+ $icons[$path] = array_unique($icons[$path]);
+ }
+
+ $compiled[$name] = array_filter($icons);
+ }
+
+ return $compiled;
+ }
+
+ /**
+ * @return \Illuminate\Contracts\Filesystem\Filesystem|Filesystem
+ */
+ private function filesystem(?string $disk = null)
+ {
+ return $this->disks && $disk ? $this->disks->disk($disk) : $this->filesystem;
+ }
+
+ public function delete(): bool
+ {
+ return $this->filesystem->delete($this->manifestPath);
+ }
+
+ private function format(string $pathname, string $path): string
+ {
+ return (string) Str::of($pathname)
+ ->after($path.DIRECTORY_SEPARATOR)
+ ->replace(DIRECTORY_SEPARATOR, '.')
+ ->basename('.svg');
+ }
+
+ public function getManifest(array $sets): array
+ {
+ if (! is_null($this->manifest)) {
+ return $this->manifest;
+ }
+
+ if (! $this->filesystem->exists($this->manifestPath)) {
+ return $this->manifest = $this->build($sets);
+ }
+
+ return $this->manifest = $this->filesystem->getRequire($this->manifestPath);
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function write(array $sets): void
+ {
+ if (! is_writable($dirname = dirname($this->manifestPath))) {
+ throw new Exception("The {$dirname} directory must be present and writable.");
+ }
+
+ $this->filesystem->replace(
+ $this->manifestPath,
+ 'build($sets), true).';',
+ );
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/Svg.php b/vendor/blade-ui-kit/blade-icons/src/Svg.php
new file mode 100644
index 0000000..86b6557
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/Svg.php
@@ -0,0 +1,105 @@
+name = $name;
+ $this->contents = $this->deferContent($contents, $attributes['defer'] ?? false);
+
+ unset($attributes['defer']);
+
+ $this->attributes = $attributes;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function contents(): string
+ {
+ return $this->contents;
+ }
+
+ /**
+ * This method adds a title element and an aria-labelledby attribute to the SVG.
+ * To comply with accessibility standards, SVGs should have a title element.
+ * Check accessibility patterns for icons: https://www.deque.com/blog/creating-accessible-svgs/
+ */
+ public function addTitle(string $title): string
+ {
+ // generate a random id for the title element
+ $titleId = 'svg-inline--title-'.Str::random(10);
+
+ // create title element
+ $titleElement = '
'.$title.' ';
+
+ // add aria-labelledby attribute to svg element
+ $this->attributes['aria-labelledby'] = $titleId;
+
+ // add role attribute to svg element
+ $this->attributes['role'] = 'img';
+
+ // add title element to svg
+ return preg_replace('/]*>/', "$0$titleElement", $this->contents);
+ }
+
+ public function toHtml(): string
+ {
+ // Check if the title attribute is set and add a title element to the SVG
+ if (array_key_exists('title', $this->attributes)) {
+ $this->contents = $this->addTitle($this->attributes['title']);
+ }
+
+ return str_replace(
+ 'renderAttributes()),
+ $this->contents,
+ );
+ }
+
+ protected function deferContent(string $contents, $defer = false): string
+ {
+ if ($defer === false) {
+ return $contents;
+ }
+
+ $svgContent = Str::of($contents)
+ ->replaceMatches('/]*>/', '')
+ ->replaceMatches('/<\/svg>/', '')
+ ->__toString();
+
+ // Force Unix line endings for hash.
+ $hashContent = str_replace(PHP_EOL, "\n", $svgContent);
+ $hash = 'icon-'.(is_string($defer) ? $defer : md5($hashContent));
+
+ $contents = str_replace($svgContent, strtr(' ', [':href' => '#'.$hash]), $contents).PHP_EOL;
+ $svgContent = ltrim($svgContent, PHP_EOL);
+ $contents .= <<
+ {$svgContent}
+
+ @endpush
+ @endonce
+ BLADE;
+
+ return $contents;
+ }
+}
diff --git a/vendor/blade-ui-kit/blade-icons/src/helpers.php b/vendor/blade-ui-kit/blade-icons/src/helpers.php
new file mode 100644
index 0000000..08c405e
--- /dev/null
+++ b/vendor/blade-ui-kit/blade-icons/src/helpers.php
@@ -0,0 +1,13 @@
+svg($name, $class, $attributes);
+ }
+}
diff --git a/vendor/brick/math/CHANGELOG.md b/vendor/brick/math/CHANGELOG.md
new file mode 100644
index 0000000..17cea8d
--- /dev/null
+++ b/vendor/brick/math/CHANGELOG.md
@@ -0,0 +1,445 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+## [0.11.0](https://github.com/brick/math/releases/tag/0.11.0) - 2023-01-16
+
+💥 **Breaking changes**
+
+- Minimum PHP version is now 8.0
+- Methods accepting a union of types are now strongly typed*
+- `MathException` now extends `Exception` instead of `RuntimeException`
+
+* You may now run into type errors if you were passing `Stringable` objects to `of()` or any of the methods
+internally calling `of()`, with `strict_types` enabled. You can fix this by casting `Stringable` objects to `string`
+first.
+
+## [0.10.2](https://github.com/brick/math/releases/tag/0.10.2) - 2022-08-11
+
+👌 **Improvements**
+
+- `BigRational::toFloat()` now simplifies the fraction before performing division (#73) thanks to @olsavmic
+
+## [0.10.1](https://github.com/brick/math/releases/tag/0.10.1) - 2022-08-02
+
+✨ **New features**
+
+- `BigInteger::gcdMultiple()` returns the GCD of multiple `BigInteger` numbers
+
+## [0.10.0](https://github.com/brick/math/releases/tag/0.10.0) - 2022-06-18
+
+💥 **Breaking changes**
+
+- Minimum PHP version is now 7.4
+
+## [0.9.3](https://github.com/brick/math/releases/tag/0.9.3) - 2021-08-15
+
+🚀 **Compatibility with PHP 8.1**
+
+- Support for custom object serialization; this removes a warning on PHP 8.1 due to the `Serializable` interface being deprecated (#60) thanks @TRowbotham
+
+## [0.9.2](https://github.com/brick/math/releases/tag/0.9.2) - 2021-01-20
+
+🐛 **Bug fix**
+
+- Incorrect results could be returned when using the BCMath calculator, with a default scale set with `bcscale()`, on PHP >= 7.2 (#55).
+
+## [0.9.1](https://github.com/brick/math/releases/tag/0.9.1) - 2020-08-19
+
+✨ **New features**
+
+- `BigInteger::not()` returns the bitwise `NOT` value
+
+🐛 **Bug fixes**
+
+- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers
+- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available
+
+## [0.9.0](https://github.com/brick/math/releases/tag/0.9.0) - 2020-08-18
+
+👌 **Improvements**
+
+- `BigNumber::of()` now accepts `.123` and `123.` formats, both of which return a `BigDecimal`
+
+💥 **Breaking changes**
+
+- Deprecated method `BigInteger::powerMod()` has been removed - use `modPow()` instead
+- Deprecated method `BigInteger::parse()` has been removed - use `fromBase()` instead
+
+## [0.8.17](https://github.com/brick/math/releases/tag/0.8.17) - 2020-08-19
+
+🐛 **Bug fix**
+
+- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers
+- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available
+
+## [0.8.16](https://github.com/brick/math/releases/tag/0.8.16) - 2020-08-18
+
+🚑 **Critical fix**
+
+- This version reintroduces the deprecated `BigInteger::parse()` method, that has been removed by mistake in version `0.8.9` and should have lasted for the whole `0.8` release cycle.
+
+✨ **New features**
+
+- `BigInteger::modInverse()` calculates a modular multiplicative inverse
+- `BigInteger::fromBytes()` creates a `BigInteger` from a byte string
+- `BigInteger::toBytes()` converts a `BigInteger` to a byte string
+- `BigInteger::randomBits()` creates a pseudo-random `BigInteger` of a given bit length
+- `BigInteger::randomRange()` creates a pseudo-random `BigInteger` between two bounds
+
+💩 **Deprecations**
+
+- `BigInteger::powerMod()` is now deprecated in favour of `modPow()`
+
+## [0.8.15](https://github.com/brick/math/releases/tag/0.8.15) - 2020-04-15
+
+🐛 **Fixes**
+
+- added missing `ext-json` requirement, due to `BigNumber` implementing `JsonSerializable`
+
+⚡️ **Optimizations**
+
+- additional optimization in `BigInteger::remainder()`
+
+## [0.8.14](https://github.com/brick/math/releases/tag/0.8.14) - 2020-02-18
+
+✨ **New features**
+
+- `BigInteger::getLowestSetBit()` returns the index of the rightmost one bit
+
+## [0.8.13](https://github.com/brick/math/releases/tag/0.8.13) - 2020-02-16
+
+✨ **New features**
+
+- `BigInteger::isEven()` tests whether the number is even
+- `BigInteger::isOdd()` tests whether the number is odd
+- `BigInteger::testBit()` tests if a bit is set
+- `BigInteger::getBitLength()` returns the number of bits in the minimal representation of the number
+
+## [0.8.12](https://github.com/brick/math/releases/tag/0.8.12) - 2020-02-03
+
+🛠️ **Maintenance release**
+
+Classes are now annotated for better static analysis with [psalm](https://psalm.dev/).
+
+This is a maintenance release: no bug fixes, no new features, no breaking changes.
+
+## [0.8.11](https://github.com/brick/math/releases/tag/0.8.11) - 2020-01-23
+
+✨ **New feature**
+
+`BigInteger::powerMod()` performs a power-with-modulo operation. Useful for crypto.
+
+## [0.8.10](https://github.com/brick/math/releases/tag/0.8.10) - 2020-01-21
+
+✨ **New feature**
+
+`BigInteger::mod()` returns the **modulo** of two numbers. The *modulo* differs from the *remainder* when the signs of the operands are different.
+
+## [0.8.9](https://github.com/brick/math/releases/tag/0.8.9) - 2020-01-08
+
+⚡️ **Performance improvements**
+
+A few additional optimizations in `BigInteger` and `BigDecimal` when one of the operands can be returned as is. Thanks to @tomtomsen in #24.
+
+## [0.8.8](https://github.com/brick/math/releases/tag/0.8.8) - 2019-04-25
+
+🐛 **Bug fixes**
+
+- `BigInteger::toBase()` could return an empty string for zero values (BCMath & Native calculators only, GMP calculator unaffected)
+
+✨ **New features**
+
+- `BigInteger::toArbitraryBase()` converts a number to an arbitrary base, using a custom alphabet
+- `BigInteger::fromArbitraryBase()` converts a string in an arbitrary base, using a custom alphabet, back to a number
+
+These methods can be used as the foundation to convert strings between different bases/alphabets, using BigInteger as an intermediate representation.
+
+💩 **Deprecations**
+
+- `BigInteger::parse()` is now deprecated in favour of `fromBase()`
+
+`BigInteger::fromBase()` works the same way as `parse()`, with 2 minor differences:
+
+- the `$base` parameter is required, it does not default to `10`
+- it throws a `NumberFormatException` instead of an `InvalidArgumentException` when the number is malformed
+
+## [0.8.7](https://github.com/brick/math/releases/tag/0.8.7) - 2019-04-20
+
+**Improvements**
+
+- Safer conversion from `float` when using custom locales
+- **Much faster** `NativeCalculator` implementation 🚀
+
+You can expect **at least a 3x performance improvement** for common arithmetic operations when using the library on systems without GMP or BCMath; it gets exponentially faster on multiplications with a high number of digits. This is due to calculations now being performed on whole blocks of digits (the block size depending on the platform, 32-bit or 64-bit) instead of digit-by-digit as before.
+
+## [0.8.6](https://github.com/brick/math/releases/tag/0.8.6) - 2019-04-11
+
+**New method**
+
+`BigNumber::sum()` returns the sum of one or more numbers.
+
+## [0.8.5](https://github.com/brick/math/releases/tag/0.8.5) - 2019-02-12
+
+**Bug fix**: `of()` factory methods could fail when passing a `float` in environments using a `LC_NUMERIC` locale with a decimal separator other than `'.'` (#20).
+
+Thanks @manowark 👍
+
+## [0.8.4](https://github.com/brick/math/releases/tag/0.8.4) - 2018-12-07
+
+**New method**
+
+`BigDecimal::sqrt()` calculates the square root of a decimal number, to a given scale.
+
+## [0.8.3](https://github.com/brick/math/releases/tag/0.8.3) - 2018-12-06
+
+**New method**
+
+`BigInteger::sqrt()` calculates the square root of a number (thanks @peter279k).
+
+**New exception**
+
+`NegativeNumberException` is thrown when calling `sqrt()` on a negative number.
+
+## [0.8.2](https://github.com/brick/math/releases/tag/0.8.2) - 2018-11-08
+
+**Performance update**
+
+- Further improvement of `toInt()` performance
+- `NativeCalculator` can now perform some multiplications more efficiently
+
+## [0.8.1](https://github.com/brick/math/releases/tag/0.8.1) - 2018-11-07
+
+Performance optimization of `toInt()` methods.
+
+## [0.8.0](https://github.com/brick/math/releases/tag/0.8.0) - 2018-10-13
+
+**Breaking changes**
+
+The following deprecated methods have been removed. Use the new method name instead:
+
+| Method removed | Replacement method |
+| --- | --- |
+| `BigDecimal::getIntegral()` | `BigDecimal::getIntegralPart()` |
+| `BigDecimal::getFraction()` | `BigDecimal::getFractionalPart()` |
+
+---
+
+**New features**
+
+`BigInteger` has been augmented with 5 new methods for bitwise operations:
+
+| New method | Description |
+| --- | --- |
+| `and()` | performs a bitwise `AND` operation on two numbers |
+| `or()` | performs a bitwise `OR` operation on two numbers |
+| `xor()` | performs a bitwise `XOR` operation on two numbers |
+| `shiftedLeft()` | returns the number shifted left by a number of bits |
+| `shiftedRight()` | returns the number shifted right by a number of bits |
+
+Thanks to @DASPRiD 👍
+
+## [0.7.3](https://github.com/brick/math/releases/tag/0.7.3) - 2018-08-20
+
+**New method:** `BigDecimal::hasNonZeroFractionalPart()`
+
+**Renamed/deprecated methods:**
+
+- `BigDecimal::getIntegral()` has been renamed to `getIntegralPart()` and is now deprecated
+- `BigDecimal::getFraction()` has been renamed to `getFractionalPart()` and is now deprecated
+
+## [0.7.2](https://github.com/brick/math/releases/tag/0.7.2) - 2018-07-21
+
+**Performance update**
+
+`BigInteger::parse()` and `toBase()` now use GMP's built-in base conversion features when available.
+
+## [0.7.1](https://github.com/brick/math/releases/tag/0.7.1) - 2018-03-01
+
+This is a maintenance release, no code has been changed.
+
+- When installed with `--no-dev`, the autoloader does not autoload tests anymore
+- Tests and other files unnecessary for production are excluded from the dist package
+
+This will help make installations more compact.
+
+## [0.7.0](https://github.com/brick/math/releases/tag/0.7.0) - 2017-10-02
+
+Methods renamed:
+
+- `BigNumber:sign()` has been renamed to `getSign()`
+- `BigDecimal::unscaledValue()` has been renamed to `getUnscaledValue()`
+- `BigDecimal::scale()` has been renamed to `getScale()`
+- `BigDecimal::integral()` has been renamed to `getIntegral()`
+- `BigDecimal::fraction()` has been renamed to `getFraction()`
+- `BigRational::numerator()` has been renamed to `getNumerator()`
+- `BigRational::denominator()` has been renamed to `getDenominator()`
+
+Classes renamed:
+
+- `ArithmeticException` has been renamed to `MathException`
+
+## [0.6.2](https://github.com/brick/math/releases/tag/0.6.2) - 2017-10-02
+
+The base class for all exceptions is now `MathException`.
+`ArithmeticException` has been deprecated, and will be removed in 0.7.0.
+
+## [0.6.1](https://github.com/brick/math/releases/tag/0.6.1) - 2017-10-02
+
+A number of methods have been renamed:
+
+- `BigNumber:sign()` is deprecated; use `getSign()` instead
+- `BigDecimal::unscaledValue()` is deprecated; use `getUnscaledValue()` instead
+- `BigDecimal::scale()` is deprecated; use `getScale()` instead
+- `BigDecimal::integral()` is deprecated; use `getIntegral()` instead
+- `BigDecimal::fraction()` is deprecated; use `getFraction()` instead
+- `BigRational::numerator()` is deprecated; use `getNumerator()` instead
+- `BigRational::denominator()` is deprecated; use `getDenominator()` instead
+
+The old methods will be removed in version 0.7.0.
+
+## [0.6.0](https://github.com/brick/math/releases/tag/0.6.0) - 2017-08-25
+
+- Minimum PHP version is now [7.1](https://gophp71.org/); for PHP 5.6 and PHP 7.0 support, use version `0.5`
+- Deprecated method `BigDecimal::withScale()` has been removed; use `toScale()` instead
+- Method `BigNumber::toInteger()` has been renamed to `toInt()`
+
+## [0.5.4](https://github.com/brick/math/releases/tag/0.5.4) - 2016-10-17
+
+`BigNumber` classes now implement [JsonSerializable](http://php.net/manual/en/class.jsonserializable.php).
+The JSON output is always a string.
+
+## [0.5.3](https://github.com/brick/math/releases/tag/0.5.3) - 2016-03-31
+
+This is a bugfix release. Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
+
+## [0.5.2](https://github.com/brick/math/releases/tag/0.5.2) - 2015-08-06
+
+The `$scale` parameter of `BigDecimal::dividedBy()` is now optional again.
+
+## [0.5.1](https://github.com/brick/math/releases/tag/0.5.1) - 2015-07-05
+
+**New method: `BigNumber::toScale()`**
+
+This allows to convert any `BigNumber` to a `BigDecimal` with a given scale, using rounding if necessary.
+
+## [0.5.0](https://github.com/brick/math/releases/tag/0.5.0) - 2015-07-04
+
+**New features**
+- Common `BigNumber` interface for all classes, with the following methods:
+ - `sign()` and derived methods (`isZero()`, `isPositive()`, ...)
+ - `compareTo()` and derived methods (`isEqualTo()`, `isGreaterThan()`, ...) that work across different `BigNumber` types
+ - `toBigInteger()`, `toBigDecimal()`, `toBigRational`() conversion methods
+ - `toInteger()` and `toFloat()` conversion methods to native types
+- Unified `of()` behaviour: every class now accepts any type of number, provided that it can be safely converted to the current type
+- New method: `BigDecimal::exactlyDividedBy()`; this method automatically computes the scale of the result, provided that the division yields a finite number of digits
+- New methods: `BigRational::quotient()` and `remainder()`
+- Fine-grained exceptions: `DivisionByZeroException`, `RoundingNecessaryException`, `NumberFormatException`
+- Factory methods `zero()`, `one()` and `ten()` available in all classes
+- Rounding mode reintroduced in `BigInteger::dividedBy()`
+
+This release also comes with many performance improvements.
+
+---
+
+**Breaking changes**
+- `BigInteger`:
+ - `getSign()` is renamed to `sign()`
+ - `toString()` is renamed to `toBase()`
+ - `BigInteger::dividedBy()` now throws an exception by default if the remainder is not zero; use `quotient()` to get the previous behaviour
+- `BigDecimal`:
+ - `getSign()` is renamed to `sign()`
+ - `getUnscaledValue()` is renamed to `unscaledValue()`
+ - `getScale()` is renamed to `scale()`
+ - `getIntegral()` is renamed to `integral()`
+ - `getFraction()` is renamed to `fraction()`
+ - `divideAndRemainder()` is renamed to `quotientAndRemainder()`
+ - `dividedBy()` now takes a **mandatory** `$scale` parameter **before** the rounding mode
+ - `toBigInteger()` does not accept a `$roundingMode` parameter anymore
+ - `toBigRational()` does not simplify the fraction anymore; explicitly add `->simplified()` to get the previous behaviour
+- `BigRational`:
+ - `getSign()` is renamed to `sign()`
+ - `getNumerator()` is renamed to `numerator()`
+ - `getDenominator()` is renamed to `denominator()`
+ - `of()` is renamed to `nd()`, while `parse()` is renamed to `of()`
+- Miscellaneous:
+ - `ArithmeticException` is moved to an `Exception\` sub-namespace
+ - `of()` factory methods now throw `NumberFormatException` instead of `InvalidArgumentException`
+
+## [0.4.3](https://github.com/brick/math/releases/tag/0.4.3) - 2016-03-31
+
+Backport of two bug fixes from the 0.5 branch:
+- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected
+- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
+
+## [0.4.2](https://github.com/brick/math/releases/tag/0.4.2) - 2015-06-16
+
+New method: `BigDecimal::stripTrailingZeros()`
+
+## [0.4.1](https://github.com/brick/math/releases/tag/0.4.1) - 2015-06-12
+
+Introducing a `BigRational` class, to perform calculations on fractions of any size.
+
+## [0.4.0](https://github.com/brick/math/releases/tag/0.4.0) - 2015-06-12
+
+Rounding modes have been removed from `BigInteger`, and are now a concept specific to `BigDecimal`.
+
+`BigInteger::dividedBy()` now always returns the quotient of the division.
+
+## [0.3.5](https://github.com/brick/math/releases/tag/0.3.5) - 2016-03-31
+
+Backport of two bug fixes from the 0.5 branch:
+
+- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected
+- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6.
+
+## [0.3.4](https://github.com/brick/math/releases/tag/0.3.4) - 2015-06-11
+
+New methods:
+- `BigInteger::remainder()` returns the remainder of a division only
+- `BigInteger::gcd()` returns the greatest common divisor of two numbers
+
+## [0.3.3](https://github.com/brick/math/releases/tag/0.3.3) - 2015-06-07
+
+Fix `toString()` not handling negative numbers.
+
+## [0.3.2](https://github.com/brick/math/releases/tag/0.3.2) - 2015-06-07
+
+`BigInteger` and `BigDecimal` now have a `getSign()` method that returns:
+- `-1` if the number is negative
+- `0` if the number is zero
+- `1` if the number is positive
+
+## [0.3.1](https://github.com/brick/math/releases/tag/0.3.1) - 2015-06-05
+
+Minor performance improvements
+
+## [0.3.0](https://github.com/brick/math/releases/tag/0.3.0) - 2015-06-04
+
+The `$roundingMode` and `$scale` parameters have been swapped in `BigDecimal::dividedBy()`.
+
+## [0.2.2](https://github.com/brick/math/releases/tag/0.2.2) - 2015-06-04
+
+Stronger immutability guarantee for `BigInteger` and `BigDecimal`.
+
+So far, it would have been possible to break immutability of these classes by calling the `unserialize()` internal function. This release fixes that.
+
+## [0.2.1](https://github.com/brick/math/releases/tag/0.2.1) - 2015-06-02
+
+Added `BigDecimal::divideAndRemainder()`
+
+## [0.2.0](https://github.com/brick/math/releases/tag/0.2.0) - 2015-05-22
+
+- `min()` and `max()` do not accept an `array` anymore, but a variable number of parameters
+- **minimum PHP version is now 5.6**
+- continuous integration with PHP 7
+
+## [0.1.1](https://github.com/brick/math/releases/tag/0.1.1) - 2014-09-01
+
+- Added `BigInteger::power()`
+- Added HHVM support
+
+## [0.1.0](https://github.com/brick/math/releases/tag/0.1.0) - 2014-08-31
+
+First beta release.
+
diff --git a/vendor/brick/math/LICENSE b/vendor/brick/math/LICENSE
new file mode 100644
index 0000000..f9b724f
--- /dev/null
+++ b/vendor/brick/math/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-present Benjamin Morel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/brick/math/composer.json b/vendor/brick/math/composer.json
new file mode 100644
index 0000000..ed817bd
--- /dev/null
+++ b/vendor/brick/math/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "brick/math",
+ "description": "Arbitrary-precision arithmetic library",
+ "type": "library",
+ "keywords": [
+ "Brick",
+ "Math",
+ "Arbitrary-precision",
+ "Arithmetic",
+ "BigInteger",
+ "BigDecimal",
+ "BigRational",
+ "Bignum"
+ ],
+ "license": "MIT",
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0",
+ "php-coveralls/php-coveralls": "^2.2",
+ "vimeo/psalm": "5.0.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Brick\\Math\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Brick\\Math\\Tests\\": "tests/"
+ }
+ }
+}
diff --git a/vendor/brick/math/src/BigDecimal.php b/vendor/brick/math/src/BigDecimal.php
new file mode 100644
index 0000000..02fc656
--- /dev/null
+++ b/vendor/brick/math/src/BigDecimal.php
@@ -0,0 +1,786 @@
+value = $value;
+ $this->scale = $scale;
+ }
+
+ /**
+ * Creates a BigDecimal of the given value.
+ *
+ * @throws MathException If the value cannot be converted to a BigDecimal.
+ *
+ * @psalm-pure
+ */
+ public static function of(BigNumber|int|float|string $value) : BigDecimal
+ {
+ return parent::of($value)->toBigDecimal();
+ }
+
+ /**
+ * Creates a BigDecimal from an unscaled value and a scale.
+ *
+ * Example: `(12345, 3)` will result in the BigDecimal `12.345`.
+ *
+ * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger.
+ * @param int $scale The scale of the number, positive or zero.
+ *
+ * @throws \InvalidArgumentException If the scale is negative.
+ *
+ * @psalm-pure
+ */
+ public static function ofUnscaledValue(BigNumber|int|float|string $value, int $scale = 0) : BigDecimal
+ {
+ if ($scale < 0) {
+ throw new \InvalidArgumentException('The scale cannot be negative.');
+ }
+
+ return new BigDecimal((string) BigInteger::of($value), $scale);
+ }
+
+ /**
+ * Returns a BigDecimal representing zero, with a scale of zero.
+ *
+ * @psalm-pure
+ */
+ public static function zero() : BigDecimal
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigDecimal|null $zero
+ */
+ static $zero;
+
+ if ($zero === null) {
+ $zero = new BigDecimal('0');
+ }
+
+ return $zero;
+ }
+
+ /**
+ * Returns a BigDecimal representing one, with a scale of zero.
+ *
+ * @psalm-pure
+ */
+ public static function one() : BigDecimal
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigDecimal|null $one
+ */
+ static $one;
+
+ if ($one === null) {
+ $one = new BigDecimal('1');
+ }
+
+ return $one;
+ }
+
+ /**
+ * Returns a BigDecimal representing ten, with a scale of zero.
+ *
+ * @psalm-pure
+ */
+ public static function ten() : BigDecimal
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigDecimal|null $ten
+ */
+ static $ten;
+
+ if ($ten === null) {
+ $ten = new BigDecimal('10');
+ }
+
+ return $ten;
+ }
+
+ /**
+ * Returns the sum of this number and the given one.
+ *
+ * The result has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigDecimal.
+ */
+ public function plus(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '0' && $that->scale <= $this->scale) {
+ return $this;
+ }
+
+ if ($this->value === '0' && $this->scale <= $that->scale) {
+ return $that;
+ }
+
+ [$a, $b] = $this->scaleValues($this, $that);
+
+ $value = Calculator::get()->add($a, $b);
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the difference of this number and the given one.
+ *
+ * The result has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigDecimal.
+ */
+ public function minus(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '0' && $that->scale <= $this->scale) {
+ return $this;
+ }
+
+ [$a, $b] = $this->scaleValues($this, $that);
+
+ $value = Calculator::get()->sub($a, $b);
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the product of this number and the given one.
+ *
+ * The result has a scale of `$this->scale + $that->scale`.
+ *
+ * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigDecimal.
+ */
+ public function multipliedBy(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '1' && $that->scale === 0) {
+ return $this;
+ }
+
+ if ($this->value === '1' && $this->scale === 0) {
+ return $that;
+ }
+
+ $value = Calculator::get()->mul($this->value, $that->value);
+ $scale = $this->scale + $that->scale;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the result of the division of this number by the given one, at the given scale.
+ *
+ * @param BigNumber|int|float|string $that The divisor.
+ * @param int|null $scale The desired scale, or null to use the scale of this number.
+ * @param int $roundingMode An optional rounding mode.
+ *
+ * @throws \InvalidArgumentException If the scale or rounding mode is invalid.
+ * @throws MathException If the number is invalid, is zero, or rounding was necessary.
+ */
+ public function dividedBy(BigNumber|int|float|string $that, ?int $scale = null, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ if ($scale === null) {
+ $scale = $this->scale;
+ } elseif ($scale < 0) {
+ throw new \InvalidArgumentException('Scale cannot be negative.');
+ }
+
+ if ($that->value === '1' && $that->scale === 0 && $scale === $this->scale) {
+ return $this;
+ }
+
+ $p = $this->valueWithMinScale($that->scale + $scale);
+ $q = $that->valueWithMinScale($this->scale - $scale);
+
+ $result = Calculator::get()->divRound($p, $q, $roundingMode);
+
+ return new BigDecimal($result, $scale);
+ }
+
+ /**
+ * Returns the exact result of the division of this number by the given one.
+ *
+ * The scale of the result is automatically calculated to fit all the fraction digits.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the divisor is not a valid number, is not convertible to a BigDecimal, is zero,
+ * or the result yields an infinite number of digits.
+ */
+ public function exactlyDividedBy(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ [, $b] = $this->scaleValues($this, $that);
+
+ $d = \rtrim($b, '0');
+ $scale = \strlen($b) - \strlen($d);
+
+ $calculator = Calculator::get();
+
+ foreach ([5, 2] as $prime) {
+ for (;;) {
+ $lastDigit = (int) $d[-1];
+
+ if ($lastDigit % $prime !== 0) {
+ break;
+ }
+
+ $d = $calculator->divQ($d, (string) $prime);
+ $scale++;
+ }
+ }
+
+ return $this->dividedBy($that, $scale)->stripTrailingZeros();
+ }
+
+ /**
+ * Returns this number exponentiated to the given value.
+ *
+ * The result has a scale of `$this->scale * $exponent`.
+ *
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
+ */
+ public function power(int $exponent) : BigDecimal
+ {
+ if ($exponent === 0) {
+ return BigDecimal::one();
+ }
+
+ if ($exponent === 1) {
+ return $this;
+ }
+
+ if ($exponent < 0 || $exponent > Calculator::MAX_POWER) {
+ throw new \InvalidArgumentException(\sprintf(
+ 'The exponent %d is not in the range 0 to %d.',
+ $exponent,
+ Calculator::MAX_POWER
+ ));
+ }
+
+ return new BigDecimal(Calculator::get()->pow($this->value, $exponent), $this->scale * $exponent);
+ }
+
+ /**
+ * Returns the quotient of the division of this number by this given one.
+ *
+ * The quotient has a scale of `0`.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
+ */
+ public function quotient(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $p = $this->valueWithMinScale($that->scale);
+ $q = $that->valueWithMinScale($this->scale);
+
+ $quotient = Calculator::get()->divQ($p, $q);
+
+ return new BigDecimal($quotient, 0);
+ }
+
+ /**
+ * Returns the remainder of the division of this number by this given one.
+ *
+ * The remainder has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
+ */
+ public function remainder(BigNumber|int|float|string $that) : BigDecimal
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $p = $this->valueWithMinScale($that->scale);
+ $q = $that->valueWithMinScale($this->scale);
+
+ $remainder = Calculator::get()->divR($p, $q);
+
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ return new BigDecimal($remainder, $scale);
+ }
+
+ /**
+ * Returns the quotient and remainder of the division of this number by the given one.
+ *
+ * The quotient has a scale of `0`, and the remainder has a scale of `max($this->scale, $that->scale)`.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
+ *
+ * @return BigDecimal[] An array containing the quotient and the remainder.
+ *
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
+ */
+ public function quotientAndRemainder(BigNumber|int|float|string $that) : array
+ {
+ $that = BigDecimal::of($that);
+
+ if ($that->isZero()) {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $p = $this->valueWithMinScale($that->scale);
+ $q = $that->valueWithMinScale($this->scale);
+
+ [$quotient, $remainder] = Calculator::get()->divQR($p, $q);
+
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
+
+ $quotient = new BigDecimal($quotient, 0);
+ $remainder = new BigDecimal($remainder, $scale);
+
+ return [$quotient, $remainder];
+ }
+
+ /**
+ * Returns the square root of this number, rounded down to the given number of decimals.
+ *
+ * @throws \InvalidArgumentException If the scale is negative.
+ * @throws NegativeNumberException If this number is negative.
+ */
+ public function sqrt(int $scale) : BigDecimal
+ {
+ if ($scale < 0) {
+ throw new \InvalidArgumentException('Scale cannot be negative.');
+ }
+
+ if ($this->value === '0') {
+ return new BigDecimal('0', $scale);
+ }
+
+ if ($this->value[0] === '-') {
+ throw new NegativeNumberException('Cannot calculate the square root of a negative number.');
+ }
+
+ $value = $this->value;
+ $addDigits = 2 * $scale - $this->scale;
+
+ if ($addDigits > 0) {
+ // add zeros
+ $value .= \str_repeat('0', $addDigits);
+ } elseif ($addDigits < 0) {
+ // trim digits
+ if (-$addDigits >= \strlen($this->value)) {
+ // requesting a scale too low, will always yield a zero result
+ return new BigDecimal('0', $scale);
+ }
+
+ $value = \substr($value, 0, $addDigits);
+ }
+
+ $value = Calculator::get()->sqrt($value);
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns a copy of this BigDecimal with the decimal point moved $n places to the left.
+ */
+ public function withPointMovedLeft(int $n) : BigDecimal
+ {
+ if ($n === 0) {
+ return $this;
+ }
+
+ if ($n < 0) {
+ return $this->withPointMovedRight(-$n);
+ }
+
+ return new BigDecimal($this->value, $this->scale + $n);
+ }
+
+ /**
+ * Returns a copy of this BigDecimal with the decimal point moved $n places to the right.
+ */
+ public function withPointMovedRight(int $n) : BigDecimal
+ {
+ if ($n === 0) {
+ return $this;
+ }
+
+ if ($n < 0) {
+ return $this->withPointMovedLeft(-$n);
+ }
+
+ $value = $this->value;
+ $scale = $this->scale - $n;
+
+ if ($scale < 0) {
+ if ($value !== '0') {
+ $value .= \str_repeat('0', -$scale);
+ }
+ $scale = 0;
+ }
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns a copy of this BigDecimal with any trailing zeros removed from the fractional part.
+ */
+ public function stripTrailingZeros() : BigDecimal
+ {
+ if ($this->scale === 0) {
+ return $this;
+ }
+
+ $trimmedValue = \rtrim($this->value, '0');
+
+ if ($trimmedValue === '') {
+ return BigDecimal::zero();
+ }
+
+ $trimmableZeros = \strlen($this->value) - \strlen($trimmedValue);
+
+ if ($trimmableZeros === 0) {
+ return $this;
+ }
+
+ if ($trimmableZeros > $this->scale) {
+ $trimmableZeros = $this->scale;
+ }
+
+ $value = \substr($this->value, 0, -$trimmableZeros);
+ $scale = $this->scale - $trimmableZeros;
+
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Returns the absolute value of this number.
+ */
+ public function abs() : BigDecimal
+ {
+ return $this->isNegative() ? $this->negated() : $this;
+ }
+
+ /**
+ * Returns the negated value of this number.
+ */
+ public function negated() : BigDecimal
+ {
+ return new BigDecimal(Calculator::get()->neg($this->value), $this->scale);
+ }
+
+ public function compareTo(BigNumber|int|float|string $that) : int
+ {
+ $that = BigNumber::of($that);
+
+ if ($that instanceof BigInteger) {
+ $that = $that->toBigDecimal();
+ }
+
+ if ($that instanceof BigDecimal) {
+ [$a, $b] = $this->scaleValues($this, $that);
+
+ return Calculator::get()->cmp($a, $b);
+ }
+
+ return - $that->compareTo($this);
+ }
+
+ public function getSign() : int
+ {
+ return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1);
+ }
+
+ public function getUnscaledValue() : BigInteger
+ {
+ return self::newBigInteger($this->value);
+ }
+
+ public function getScale() : int
+ {
+ return $this->scale;
+ }
+
+ /**
+ * Returns a string representing the integral part of this decimal number.
+ *
+ * Example: `-123.456` => `-123`.
+ */
+ public function getIntegralPart() : string
+ {
+ if ($this->scale === 0) {
+ return $this->value;
+ }
+
+ $value = $this->getUnscaledValueWithLeadingZeros();
+
+ return \substr($value, 0, -$this->scale);
+ }
+
+ /**
+ * Returns a string representing the fractional part of this decimal number.
+ *
+ * If the scale is zero, an empty string is returned.
+ *
+ * Examples: `-123.456` => '456', `123` => ''.
+ */
+ public function getFractionalPart() : string
+ {
+ if ($this->scale === 0) {
+ return '';
+ }
+
+ $value = $this->getUnscaledValueWithLeadingZeros();
+
+ return \substr($value, -$this->scale);
+ }
+
+ /**
+ * Returns whether this decimal number has a non-zero fractional part.
+ */
+ public function hasNonZeroFractionalPart() : bool
+ {
+ return $this->getFractionalPart() !== \str_repeat('0', $this->scale);
+ }
+
+ public function toBigInteger() : BigInteger
+ {
+ $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0);
+
+ return self::newBigInteger($zeroScaleDecimal->value);
+ }
+
+ public function toBigDecimal() : BigDecimal
+ {
+ return $this;
+ }
+
+ public function toBigRational() : BigRational
+ {
+ $numerator = self::newBigInteger($this->value);
+ $denominator = self::newBigInteger('1' . \str_repeat('0', $this->scale));
+
+ return self::newBigRational($numerator, $denominator, false);
+ }
+
+ public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ if ($scale === $this->scale) {
+ return $this;
+ }
+
+ return $this->dividedBy(BigDecimal::one(), $scale, $roundingMode);
+ }
+
+ public function toInt() : int
+ {
+ return $this->toBigInteger()->toInt();
+ }
+
+ public function toFloat() : float
+ {
+ return (float) (string) $this;
+ }
+
+ public function __toString() : string
+ {
+ if ($this->scale === 0) {
+ return $this->value;
+ }
+
+ $value = $this->getUnscaledValueWithLeadingZeros();
+
+ return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale);
+ }
+
+ /**
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ *
+ * @return array{value: string, scale: int}
+ */
+ public function __serialize(): array
+ {
+ return ['value' => $this->value, 'scale' => $this->scale];
+ }
+
+ /**
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @param array{value: string, scale: int} $data
+ *
+ * @throws \LogicException
+ */
+ public function __unserialize(array $data): void
+ {
+ if (isset($this->value)) {
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
+ }
+
+ $this->value = $data['value'];
+ $this->scale = $data['scale'];
+ }
+
+ /**
+ * This method is required by interface Serializable and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ */
+ public function serialize() : string
+ {
+ return $this->value . ':' . $this->scale;
+ }
+
+ /**
+ * This method is only here to implement interface Serializable and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @throws \LogicException
+ */
+ public function unserialize($value) : void
+ {
+ if (isset($this->value)) {
+ throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
+ }
+
+ [$value, $scale] = \explode(':', $value);
+
+ $this->value = $value;
+ $this->scale = (int) $scale;
+ }
+
+ /**
+ * Puts the internal values of the given decimal numbers on the same scale.
+ *
+ * @return array{string, string} The scaled integer values of $x and $y.
+ */
+ private function scaleValues(BigDecimal $x, BigDecimal $y) : array
+ {
+ $a = $x->value;
+ $b = $y->value;
+
+ if ($b !== '0' && $x->scale > $y->scale) {
+ $b .= \str_repeat('0', $x->scale - $y->scale);
+ } elseif ($a !== '0' && $x->scale < $y->scale) {
+ $a .= \str_repeat('0', $y->scale - $x->scale);
+ }
+
+ return [$a, $b];
+ }
+
+ private function valueWithMinScale(int $scale) : string
+ {
+ $value = $this->value;
+
+ if ($this->value !== '0' && $scale > $this->scale) {
+ $value .= \str_repeat('0', $scale - $this->scale);
+ }
+
+ return $value;
+ }
+
+ /**
+ * Adds leading zeros if necessary to the unscaled value to represent the full decimal number.
+ */
+ private function getUnscaledValueWithLeadingZeros() : string
+ {
+ $value = $this->value;
+ $targetLength = $this->scale + 1;
+ $negative = ($value[0] === '-');
+ $length = \strlen($value);
+
+ if ($negative) {
+ $length--;
+ }
+
+ if ($length >= $targetLength) {
+ return $this->value;
+ }
+
+ if ($negative) {
+ $value = \substr($value, 1);
+ }
+
+ $value = \str_pad($value, $targetLength, '0', STR_PAD_LEFT);
+
+ if ($negative) {
+ $value = '-' . $value;
+ }
+
+ return $value;
+ }
+}
diff --git a/vendor/brick/math/src/BigInteger.php b/vendor/brick/math/src/BigInteger.php
new file mode 100644
index 0000000..4356793
--- /dev/null
+++ b/vendor/brick/math/src/BigInteger.php
@@ -0,0 +1,1079 @@
+value = $value;
+ }
+
+ /**
+ * Creates a BigInteger of the given value.
+ *
+ * @throws MathException If the value cannot be converted to a BigInteger.
+ *
+ * @psalm-pure
+ */
+ public static function of(BigNumber|int|float|string $value) : BigInteger
+ {
+ return parent::of($value)->toBigInteger();
+ }
+
+ /**
+ * Creates a number from a string in a given base.
+ *
+ * The string can optionally be prefixed with the `+` or `-` sign.
+ *
+ * Bases greater than 36 are not supported by this method, as there is no clear consensus on which of the lowercase
+ * or uppercase characters should come first. Instead, this method accepts any base up to 36, and does not
+ * differentiate lowercase and uppercase characters, which are considered equal.
+ *
+ * For bases greater than 36, and/or custom alphabets, use the fromArbitraryBase() method.
+ *
+ * @param string $number The number to convert, in the given base.
+ * @param int $base The base of the number, between 2 and 36.
+ *
+ * @throws NumberFormatException If the number is empty, or contains invalid chars for the given base.
+ * @throws \InvalidArgumentException If the base is out of range.
+ *
+ * @psalm-pure
+ */
+ public static function fromBase(string $number, int $base) : BigInteger
+ {
+ if ($number === '') {
+ throw new NumberFormatException('The number cannot be empty.');
+ }
+
+ if ($base < 2 || $base > 36) {
+ throw new \InvalidArgumentException(\sprintf('Base %d is not in range 2 to 36.', $base));
+ }
+
+ if ($number[0] === '-') {
+ $sign = '-';
+ $number = \substr($number, 1);
+ } elseif ($number[0] === '+') {
+ $sign = '';
+ $number = \substr($number, 1);
+ } else {
+ $sign = '';
+ }
+
+ if ($number === '') {
+ throw new NumberFormatException('The number cannot be empty.');
+ }
+
+ $number = \ltrim($number, '0');
+
+ if ($number === '') {
+ // The result will be the same in any base, avoid further calculation.
+ return BigInteger::zero();
+ }
+
+ if ($number === '1') {
+ // The result will be the same in any base, avoid further calculation.
+ return new BigInteger($sign . '1');
+ }
+
+ $pattern = '/[^' . \substr(Calculator::ALPHABET, 0, $base) . ']/';
+
+ if (\preg_match($pattern, \strtolower($number), $matches) === 1) {
+ throw new NumberFormatException(\sprintf('"%s" is not a valid character in base %d.', $matches[0], $base));
+ }
+
+ if ($base === 10) {
+ // The number is usable as is, avoid further calculation.
+ return new BigInteger($sign . $number);
+ }
+
+ $result = Calculator::get()->fromBase($number, $base);
+
+ return new BigInteger($sign . $result);
+ }
+
+ /**
+ * Parses a string containing an integer in an arbitrary base, using a custom alphabet.
+ *
+ * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers.
+ *
+ * @param string $number The number to parse.
+ * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8.
+ *
+ * @throws NumberFormatException If the given number is empty or contains invalid chars for the given alphabet.
+ * @throws \InvalidArgumentException If the alphabet does not contain at least 2 chars.
+ *
+ * @psalm-pure
+ */
+ public static function fromArbitraryBase(string $number, string $alphabet) : BigInteger
+ {
+ if ($number === '') {
+ throw new NumberFormatException('The number cannot be empty.');
+ }
+
+ $base = \strlen($alphabet);
+
+ if ($base < 2) {
+ throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.');
+ }
+
+ $pattern = '/[^' . \preg_quote($alphabet, '/') . ']/';
+
+ if (\preg_match($pattern, $number, $matches) === 1) {
+ throw NumberFormatException::charNotInAlphabet($matches[0]);
+ }
+
+ $number = Calculator::get()->fromArbitraryBase($number, $alphabet, $base);
+
+ return new BigInteger($number);
+ }
+
+ /**
+ * Translates a string of bytes containing the binary representation of a BigInteger into a BigInteger.
+ *
+ * The input string is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element.
+ *
+ * If `$signed` is true, the input is assumed to be in two's-complement representation, and the leading bit is
+ * interpreted as a sign bit. If `$signed` is false, the input is interpreted as an unsigned number, and the
+ * resulting BigInteger will always be positive or zero.
+ *
+ * This method can be used to retrieve a number exported by `toBytes()`, as long as the `$signed` flags match.
+ *
+ * @param string $value The byte string.
+ * @param bool $signed Whether to interpret as a signed number in two's-complement representation with a leading
+ * sign bit.
+ *
+ * @throws NumberFormatException If the string is empty.
+ */
+ public static function fromBytes(string $value, bool $signed = true) : BigInteger
+ {
+ if ($value === '') {
+ throw new NumberFormatException('The byte string must not be empty.');
+ }
+
+ $twosComplement = false;
+
+ if ($signed) {
+ $x = \ord($value[0]);
+
+ if (($twosComplement = ($x >= 0x80))) {
+ $value = ~$value;
+ }
+ }
+
+ $number = self::fromBase(\bin2hex($value), 16);
+
+ if ($twosComplement) {
+ return $number->plus(1)->negated();
+ }
+
+ return $number;
+ }
+
+ /**
+ * Generates a pseudo-random number in the range 0 to 2^numBits - 1.
+ *
+ * Using the default random bytes generator, this method is suitable for cryptographic use.
+ *
+ * @psalm-param (callable(int): string)|null $randomBytesGenerator
+ *
+ * @param int $numBits The number of bits.
+ * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a
+ * string of random bytes of the given length. Defaults to the
+ * `random_bytes()` function.
+ *
+ * @throws \InvalidArgumentException If $numBits is negative.
+ */
+ public static function randomBits(int $numBits, ?callable $randomBytesGenerator = null) : BigInteger
+ {
+ if ($numBits < 0) {
+ throw new \InvalidArgumentException('The number of bits cannot be negative.');
+ }
+
+ if ($numBits === 0) {
+ return BigInteger::zero();
+ }
+
+ if ($randomBytesGenerator === null) {
+ $randomBytesGenerator = 'random_bytes';
+ }
+
+ $byteLength = \intdiv($numBits - 1, 8) + 1;
+
+ $extraBits = ($byteLength * 8 - $numBits);
+ $bitmask = \chr(0xFF >> $extraBits);
+
+ $randomBytes = $randomBytesGenerator($byteLength);
+ $randomBytes[0] = $randomBytes[0] & $bitmask;
+
+ return self::fromBytes($randomBytes, false);
+ }
+
+ /**
+ * Generates a pseudo-random number between `$min` and `$max`.
+ *
+ * Using the default random bytes generator, this method is suitable for cryptographic use.
+ *
+ * @psalm-param (callable(int): string)|null $randomBytesGenerator
+ *
+ * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger.
+ * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger.
+ * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer,
+ * and returns a string of random bytes of the given length.
+ * Defaults to the `random_bytes()` function.
+ *
+ * @throws MathException If one of the parameters cannot be converted to a BigInteger,
+ * or `$min` is greater than `$max`.
+ */
+ public static function randomRange(
+ BigNumber|int|float|string $min,
+ BigNumber|int|float|string $max,
+ ?callable $randomBytesGenerator = null
+ ) : BigInteger {
+ $min = BigInteger::of($min);
+ $max = BigInteger::of($max);
+
+ if ($min->isGreaterThan($max)) {
+ throw new MathException('$min cannot be greater than $max.');
+ }
+
+ if ($min->isEqualTo($max)) {
+ return $min;
+ }
+
+ $diff = $max->minus($min);
+ $bitLength = $diff->getBitLength();
+
+ // try until the number is in range (50% to 100% chance of success)
+ do {
+ $randomNumber = self::randomBits($bitLength, $randomBytesGenerator);
+ } while ($randomNumber->isGreaterThan($diff));
+
+ return $randomNumber->plus($min);
+ }
+
+ /**
+ * Returns a BigInteger representing zero.
+ *
+ * @psalm-pure
+ */
+ public static function zero() : BigInteger
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigInteger|null $zero
+ */
+ static $zero;
+
+ if ($zero === null) {
+ $zero = new BigInteger('0');
+ }
+
+ return $zero;
+ }
+
+ /**
+ * Returns a BigInteger representing one.
+ *
+ * @psalm-pure
+ */
+ public static function one() : BigInteger
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigInteger|null $one
+ */
+ static $one;
+
+ if ($one === null) {
+ $one = new BigInteger('1');
+ }
+
+ return $one;
+ }
+
+ /**
+ * Returns a BigInteger representing ten.
+ *
+ * @psalm-pure
+ */
+ public static function ten() : BigInteger
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigInteger|null $ten
+ */
+ static $ten;
+
+ if ($ten === null) {
+ $ten = new BigInteger('10');
+ }
+
+ return $ten;
+ }
+
+ public static function gcdMultiple(BigInteger $a, BigInteger ...$n): BigInteger
+ {
+ $result = $a;
+
+ foreach ($n as $next) {
+ $result = $result->gcd($next);
+
+ if ($result->isEqualTo(1)) {
+ return $result;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the sum of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigInteger.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigInteger.
+ */
+ public function plus(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ return $this;
+ }
+
+ if ($this->value === '0') {
+ return $that;
+ }
+
+ $value = Calculator::get()->add($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the difference of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigInteger.
+ *
+ * @throws MathException If the number is not valid, or is not convertible to a BigInteger.
+ */
+ public function minus(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ return $this;
+ }
+
+ $value = Calculator::get()->sub($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the product of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigInteger.
+ *
+ * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigInteger.
+ */
+ public function multipliedBy(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return $this;
+ }
+
+ if ($this->value === '1') {
+ return $that;
+ }
+
+ $value = Calculator::get()->mul($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the result of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ * @param int $roundingMode An optional rounding mode.
+ *
+ * @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero,
+ * or RoundingMode::UNNECESSARY is used and the remainder is not zero.
+ */
+ public function dividedBy(BigNumber|int|float|string $that, int $roundingMode = RoundingMode::UNNECESSARY) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return $this;
+ }
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $result = Calculator::get()->divRound($this->value, $that->value, $roundingMode);
+
+ return new BigInteger($result);
+ }
+
+ /**
+ * Returns this number exponentiated to the given value.
+ *
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
+ */
+ public function power(int $exponent) : BigInteger
+ {
+ if ($exponent === 0) {
+ return BigInteger::one();
+ }
+
+ if ($exponent === 1) {
+ return $this;
+ }
+
+ if ($exponent < 0 || $exponent > Calculator::MAX_POWER) {
+ throw new \InvalidArgumentException(\sprintf(
+ 'The exponent %d is not in the range 0 to %d.',
+ $exponent,
+ Calculator::MAX_POWER
+ ));
+ }
+
+ return new BigInteger(Calculator::get()->pow($this->value, $exponent));
+ }
+
+ /**
+ * Returns the quotient of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function quotient(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return $this;
+ }
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $quotient = Calculator::get()->divQ($this->value, $that->value);
+
+ return new BigInteger($quotient);
+ }
+
+ /**
+ * Returns the remainder of the division of this number by the given one.
+ *
+ * The remainder, when non-zero, has the same sign as the dividend.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function remainder(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '1') {
+ return BigInteger::zero();
+ }
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ $remainder = Calculator::get()->divR($this->value, $that->value);
+
+ return new BigInteger($remainder);
+ }
+
+ /**
+ * Returns the quotient and remainder of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @return BigInteger[] An array containing the quotient and the remainder.
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function quotientAndRemainder(BigNumber|int|float|string $that) : array
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::divisionByZero();
+ }
+
+ [$quotient, $remainder] = Calculator::get()->divQR($this->value, $that->value);
+
+ return [
+ new BigInteger($quotient),
+ new BigInteger($remainder)
+ ];
+ }
+
+ /**
+ * Returns the modulo of this number and the given one.
+ *
+ * The modulo operation yields the same result as the remainder operation when both operands are of the same sign,
+ * and may differ when signs are different.
+ *
+ * The result of the modulo operation, when non-zero, has the same sign as the divisor.
+ *
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
+ *
+ * @throws DivisionByZeroException If the divisor is zero.
+ */
+ public function mod(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0') {
+ throw DivisionByZeroException::modulusMustNotBeZero();
+ }
+
+ $value = Calculator::get()->mod($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the modular multiplicative inverse of this BigInteger modulo $m.
+ *
+ * @throws DivisionByZeroException If $m is zero.
+ * @throws NegativeNumberException If $m is negative.
+ * @throws MathException If this BigInteger has no multiplicative inverse mod m (that is, this BigInteger
+ * is not relatively prime to m).
+ */
+ public function modInverse(BigInteger $m) : BigInteger
+ {
+ if ($m->value === '0') {
+ throw DivisionByZeroException::modulusMustNotBeZero();
+ }
+
+ if ($m->isNegative()) {
+ throw new NegativeNumberException('Modulus must not be negative.');
+ }
+
+ if ($m->value === '1') {
+ return BigInteger::zero();
+ }
+
+ $value = Calculator::get()->modInverse($this->value, $m->value);
+
+ if ($value === null) {
+ throw new MathException('Unable to compute the modInverse for the given modulus.');
+ }
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns this number raised into power with modulo.
+ *
+ * This operation only works on positive numbers.
+ *
+ * @param BigNumber|int|float|string $exp The exponent. Must be positive or zero.
+ * @param BigNumber|int|float|string $mod The modulus. Must be strictly positive.
+ *
+ * @throws NegativeNumberException If any of the operands is negative.
+ * @throws DivisionByZeroException If the modulus is zero.
+ */
+ public function modPow(BigNumber|int|float|string $exp, BigNumber|int|float|string $mod) : BigInteger
+ {
+ $exp = BigInteger::of($exp);
+ $mod = BigInteger::of($mod);
+
+ if ($this->isNegative() || $exp->isNegative() || $mod->isNegative()) {
+ throw new NegativeNumberException('The operands cannot be negative.');
+ }
+
+ if ($mod->isZero()) {
+ throw DivisionByZeroException::modulusMustNotBeZero();
+ }
+
+ $result = Calculator::get()->modPow($this->value, $exp->value, $mod->value);
+
+ return new BigInteger($result);
+ }
+
+ /**
+ * Returns the greatest common divisor of this number and the given one.
+ *
+ * The GCD is always positive, unless both operands are zero, in which case it is zero.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function gcd(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ if ($that->value === '0' && $this->value[0] !== '-') {
+ return $this;
+ }
+
+ if ($this->value === '0' && $that->value[0] !== '-') {
+ return $that;
+ }
+
+ $value = Calculator::get()->gcd($this->value, $that->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the integer square root number of this number, rounded down.
+ *
+ * The result is the largest x such that x² ≤ n.
+ *
+ * @throws NegativeNumberException If this number is negative.
+ */
+ public function sqrt() : BigInteger
+ {
+ if ($this->value[0] === '-') {
+ throw new NegativeNumberException('Cannot calculate the square root of a negative number.');
+ }
+
+ $value = Calculator::get()->sqrt($this->value);
+
+ return new BigInteger($value);
+ }
+
+ /**
+ * Returns the absolute value of this number.
+ */
+ public function abs() : BigInteger
+ {
+ return $this->isNegative() ? $this->negated() : $this;
+ }
+
+ /**
+ * Returns the inverse of this number.
+ */
+ public function negated() : BigInteger
+ {
+ return new BigInteger(Calculator::get()->neg($this->value));
+ }
+
+ /**
+ * Returns the integer bitwise-and combined with another integer.
+ *
+ * This method returns a negative BigInteger if and only if both operands are negative.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function and(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ return new BigInteger(Calculator::get()->and($this->value, $that->value));
+ }
+
+ /**
+ * Returns the integer bitwise-or combined with another integer.
+ *
+ * This method returns a negative BigInteger if and only if either of the operands is negative.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function or(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ return new BigInteger(Calculator::get()->or($this->value, $that->value));
+ }
+
+ /**
+ * Returns the integer bitwise-xor combined with another integer.
+ *
+ * This method returns a negative BigInteger if and only if exactly one of the operands is negative.
+ *
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
+ */
+ public function xor(BigNumber|int|float|string $that) : BigInteger
+ {
+ $that = BigInteger::of($that);
+
+ return new BigInteger(Calculator::get()->xor($this->value, $that->value));
+ }
+
+ /**
+ * Returns the bitwise-not of this BigInteger.
+ */
+ public function not() : BigInteger
+ {
+ return $this->negated()->minus(1);
+ }
+
+ /**
+ * Returns the integer left shifted by a given number of bits.
+ */
+ public function shiftedLeft(int $distance) : BigInteger
+ {
+ if ($distance === 0) {
+ return $this;
+ }
+
+ if ($distance < 0) {
+ return $this->shiftedRight(- $distance);
+ }
+
+ return $this->multipliedBy(BigInteger::of(2)->power($distance));
+ }
+
+ /**
+ * Returns the integer right shifted by a given number of bits.
+ */
+ public function shiftedRight(int $distance) : BigInteger
+ {
+ if ($distance === 0) {
+ return $this;
+ }
+
+ if ($distance < 0) {
+ return $this->shiftedLeft(- $distance);
+ }
+
+ $operand = BigInteger::of(2)->power($distance);
+
+ if ($this->isPositiveOrZero()) {
+ return $this->quotient($operand);
+ }
+
+ return $this->dividedBy($operand, RoundingMode::UP);
+ }
+
+ /**
+ * Returns the number of bits in the minimal two's-complement representation of this BigInteger, excluding a sign bit.
+ *
+ * For positive BigIntegers, this is equivalent to the number of bits in the ordinary binary representation.
+ * Computes (ceil(log2(this < 0 ? -this : this+1))).
+ */
+ public function getBitLength() : int
+ {
+ if ($this->value === '0') {
+ return 0;
+ }
+
+ if ($this->isNegative()) {
+ return $this->abs()->minus(1)->getBitLength();
+ }
+
+ return \strlen($this->toBase(2));
+ }
+
+ /**
+ * Returns the index of the rightmost (lowest-order) one bit in this BigInteger.
+ *
+ * Returns -1 if this BigInteger contains no one bits.
+ */
+ public function getLowestSetBit() : int
+ {
+ $n = $this;
+ $bitLength = $this->getBitLength();
+
+ for ($i = 0; $i <= $bitLength; $i++) {
+ if ($n->isOdd()) {
+ return $i;
+ }
+
+ $n = $n->shiftedRight(1);
+ }
+
+ return -1;
+ }
+
+ /**
+ * Returns whether this number is even.
+ */
+ public function isEven() : bool
+ {
+ return \in_array($this->value[-1], ['0', '2', '4', '6', '8'], true);
+ }
+
+ /**
+ * Returns whether this number is odd.
+ */
+ public function isOdd() : bool
+ {
+ return \in_array($this->value[-1], ['1', '3', '5', '7', '9'], true);
+ }
+
+ /**
+ * Returns true if and only if the designated bit is set.
+ *
+ * Computes ((this & (1<shiftedRight($n)->isOdd();
+ }
+
+ public function compareTo(BigNumber|int|float|string $that) : int
+ {
+ $that = BigNumber::of($that);
+
+ if ($that instanceof BigInteger) {
+ return Calculator::get()->cmp($this->value, $that->value);
+ }
+
+ return - $that->compareTo($this);
+ }
+
+ public function getSign() : int
+ {
+ return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1);
+ }
+
+ public function toBigInteger() : BigInteger
+ {
+ return $this;
+ }
+
+ public function toBigDecimal() : BigDecimal
+ {
+ return self::newBigDecimal($this->value);
+ }
+
+ public function toBigRational() : BigRational
+ {
+ return self::newBigRational($this, BigInteger::one(), false);
+ }
+
+ public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ return $this->toBigDecimal()->toScale($scale, $roundingMode);
+ }
+
+ public function toInt() : int
+ {
+ $intValue = (int) $this->value;
+
+ if ($this->value !== (string) $intValue) {
+ throw IntegerOverflowException::toIntOverflow($this);
+ }
+
+ return $intValue;
+ }
+
+ public function toFloat() : float
+ {
+ return (float) $this->value;
+ }
+
+ /**
+ * Returns a string representation of this number in the given base.
+ *
+ * The output will always be lowercase for bases greater than 10.
+ *
+ * @throws \InvalidArgumentException If the base is out of range.
+ */
+ public function toBase(int $base) : string
+ {
+ if ($base === 10) {
+ return $this->value;
+ }
+
+ if ($base < 2 || $base > 36) {
+ throw new \InvalidArgumentException(\sprintf('Base %d is out of range [2, 36]', $base));
+ }
+
+ return Calculator::get()->toBase($this->value, $base);
+ }
+
+ /**
+ * Returns a string representation of this number in an arbitrary base with a custom alphabet.
+ *
+ * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers;
+ * a NegativeNumberException will be thrown when attempting to call this method on a negative number.
+ *
+ * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8.
+ *
+ * @throws NegativeNumberException If this number is negative.
+ * @throws \InvalidArgumentException If the given alphabet does not contain at least 2 chars.
+ */
+ public function toArbitraryBase(string $alphabet) : string
+ {
+ $base = \strlen($alphabet);
+
+ if ($base < 2) {
+ throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.');
+ }
+
+ if ($this->value[0] === '-') {
+ throw new NegativeNumberException(__FUNCTION__ . '() does not support negative numbers.');
+ }
+
+ return Calculator::get()->toArbitraryBase($this->value, $alphabet, $base);
+ }
+
+ /**
+ * Returns a string of bytes containing the binary representation of this BigInteger.
+ *
+ * The string is in big-endian byte-order: the most significant byte is in the zeroth element.
+ *
+ * If `$signed` is true, the output will be in two's-complement representation, and a sign bit will be prepended to
+ * the output. If `$signed` is false, no sign bit will be prepended, and this method will throw an exception if the
+ * number is negative.
+ *
+ * The string will contain the minimum number of bytes required to represent this BigInteger, including a sign bit
+ * if `$signed` is true.
+ *
+ * This representation is compatible with the `fromBytes()` factory method, as long as the `$signed` flags match.
+ *
+ * @param bool $signed Whether to output a signed number in two's-complement representation with a leading sign bit.
+ *
+ * @throws NegativeNumberException If $signed is false, and the number is negative.
+ */
+ public function toBytes(bool $signed = true) : string
+ {
+ if (! $signed && $this->isNegative()) {
+ throw new NegativeNumberException('Cannot convert a negative number to a byte string when $signed is false.');
+ }
+
+ $hex = $this->abs()->toBase(16);
+
+ if (\strlen($hex) % 2 !== 0) {
+ $hex = '0' . $hex;
+ }
+
+ $baseHexLength = \strlen($hex);
+
+ if ($signed) {
+ if ($this->isNegative()) {
+ $bin = \hex2bin($hex);
+ assert($bin !== false);
+
+ $hex = \bin2hex(~$bin);
+ $hex = self::fromBase($hex, 16)->plus(1)->toBase(16);
+
+ $hexLength = \strlen($hex);
+
+ if ($hexLength < $baseHexLength) {
+ $hex = \str_repeat('0', $baseHexLength - $hexLength) . $hex;
+ }
+
+ if ($hex[0] < '8') {
+ $hex = 'FF' . $hex;
+ }
+ } else {
+ if ($hex[0] >= '8') {
+ $hex = '00' . $hex;
+ }
+ }
+ }
+
+ return \hex2bin($hex);
+ }
+
+ public function __toString() : string
+ {
+ return $this->value;
+ }
+
+ /**
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ *
+ * @return array{value: string}
+ */
+ public function __serialize(): array
+ {
+ return ['value' => $this->value];
+ }
+
+ /**
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @param array{value: string} $data
+ *
+ * @throws \LogicException
+ */
+ public function __unserialize(array $data): void
+ {
+ if (isset($this->value)) {
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
+ }
+
+ $this->value = $data['value'];
+ }
+
+ /**
+ * This method is required by interface Serializable and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ */
+ public function serialize() : string
+ {
+ return $this->value;
+ }
+
+ /**
+ * This method is only here to implement interface Serializable and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @throws \LogicException
+ */
+ public function unserialize($value) : void
+ {
+ if (isset($this->value)) {
+ throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
+ }
+
+ $this->value = $value;
+ }
+}
diff --git a/vendor/brick/math/src/BigNumber.php b/vendor/brick/math/src/BigNumber.php
new file mode 100644
index 0000000..80146d2
--- /dev/null
+++ b/vendor/brick/math/src/BigNumber.php
@@ -0,0 +1,512 @@
+[\-\+])?' .
+ '(?:' .
+ '(?:' .
+ '(?[0-9]+)?' .
+ '(?\.)?' .
+ '(?[0-9]+)?' .
+ '(?:[eE](?[\-\+]?[0-9]+))?' .
+ ')|(?:' .
+ '(?[0-9]+)' .
+ '\/?' .
+ '(?[0-9]+)' .
+ ')' .
+ ')' .
+ '$/';
+
+ /**
+ * Creates a BigNumber of the given value.
+ *
+ * The concrete return type is dependent on the given value, with the following rules:
+ *
+ * - BigNumber instances are returned as is
+ * - integer numbers are returned as BigInteger
+ * - floating point numbers are converted to a string then parsed as such
+ * - strings containing a `/` character are returned as BigRational
+ * - strings containing a `.` character or using an exponential notation are returned as BigDecimal
+ * - strings containing only digits with an optional leading `+` or `-` sign are returned as BigInteger
+ *
+ * @throws NumberFormatException If the format of the number is not valid.
+ * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero.
+ *
+ * @psalm-pure
+ */
+ public static function of(BigNumber|int|float|string $value) : BigNumber
+ {
+ if ($value instanceof BigNumber) {
+ return $value;
+ }
+
+ if (\is_int($value)) {
+ return new BigInteger((string) $value);
+ }
+
+ $value = \is_float($value) ? self::floatToString($value) : $value;
+
+ $throw = static function() use ($value) : void {
+ throw new NumberFormatException(\sprintf(
+ 'The given value "%s" does not represent a valid number.',
+ $value
+ ));
+ };
+
+ if (\preg_match(self::PARSE_REGEXP, $value, $matches) !== 1) {
+ $throw();
+ }
+
+ $getMatch = static fn(string $value): ?string => (($matches[$value] ?? '') !== '') ? $matches[$value] : null;
+
+ $sign = $getMatch('sign');
+ $numerator = $getMatch('numerator');
+ $denominator = $getMatch('denominator');
+
+ if ($numerator !== null) {
+ assert($denominator !== null);
+
+ if ($sign !== null) {
+ $numerator = $sign . $numerator;
+ }
+
+ $numerator = self::cleanUp($numerator);
+ $denominator = self::cleanUp($denominator);
+
+ if ($denominator === '0') {
+ throw DivisionByZeroException::denominatorMustNotBeZero();
+ }
+
+ return new BigRational(
+ new BigInteger($numerator),
+ new BigInteger($denominator),
+ false
+ );
+ }
+
+ $point = $getMatch('point');
+ $integral = $getMatch('integral');
+ $fractional = $getMatch('fractional');
+ $exponent = $getMatch('exponent');
+
+ if ($integral === null && $fractional === null) {
+ $throw();
+ }
+
+ if ($integral === null) {
+ $integral = '0';
+ }
+
+ if ($point !== null || $exponent !== null) {
+ $fractional = ($fractional ?? '');
+ $exponent = ($exponent !== null) ? (int) $exponent : 0;
+
+ if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) {
+ throw new NumberFormatException('Exponent too large.');
+ }
+
+ $unscaledValue = self::cleanUp(($sign ?? ''). $integral . $fractional);
+
+ $scale = \strlen($fractional) - $exponent;
+
+ if ($scale < 0) {
+ if ($unscaledValue !== '0') {
+ $unscaledValue .= \str_repeat('0', - $scale);
+ }
+ $scale = 0;
+ }
+
+ return new BigDecimal($unscaledValue, $scale);
+ }
+
+ $integral = self::cleanUp(($sign ?? '') . $integral);
+
+ return new BigInteger($integral);
+ }
+
+ /**
+ * Safely converts float to string, avoiding locale-dependent issues.
+ *
+ * @see https://github.com/brick/math/pull/20
+ *
+ * @psalm-pure
+ * @psalm-suppress ImpureFunctionCall
+ */
+ private static function floatToString(float $float) : string
+ {
+ $currentLocale = \setlocale(LC_NUMERIC, '0');
+ \setlocale(LC_NUMERIC, 'C');
+
+ $result = (string) $float;
+
+ \setlocale(LC_NUMERIC, $currentLocale);
+
+ return $result;
+ }
+
+ /**
+ * Proxy method to access BigInteger's protected constructor from sibling classes.
+ *
+ * @internal
+ * @psalm-pure
+ */
+ protected function newBigInteger(string $value) : BigInteger
+ {
+ return new BigInteger($value);
+ }
+
+ /**
+ * Proxy method to access BigDecimal's protected constructor from sibling classes.
+ *
+ * @internal
+ * @psalm-pure
+ */
+ protected function newBigDecimal(string $value, int $scale = 0) : BigDecimal
+ {
+ return new BigDecimal($value, $scale);
+ }
+
+ /**
+ * Proxy method to access BigRational's protected constructor from sibling classes.
+ *
+ * @internal
+ * @psalm-pure
+ */
+ protected function newBigRational(BigInteger $numerator, BigInteger $denominator, bool $checkDenominator) : BigRational
+ {
+ return new BigRational($numerator, $denominator, $checkDenominator);
+ }
+
+ /**
+ * Returns the minimum of the given values.
+ *
+ * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible
+ * to an instance of the class this method is called on.
+ *
+ * @throws \InvalidArgumentException If no values are given.
+ * @throws MathException If an argument is not valid.
+ *
+ * @psalm-suppress LessSpecificReturnStatement
+ * @psalm-suppress MoreSpecificReturnType
+ * @psalm-pure
+ */
+ public static function min(BigNumber|int|float|string ...$values) : static
+ {
+ $min = null;
+
+ foreach ($values as $value) {
+ $value = static::of($value);
+
+ if ($min === null || $value->isLessThan($min)) {
+ $min = $value;
+ }
+ }
+
+ if ($min === null) {
+ throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.');
+ }
+
+ return $min;
+ }
+
+ /**
+ * Returns the maximum of the given values.
+ *
+ * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible
+ * to an instance of the class this method is called on.
+ *
+ * @throws \InvalidArgumentException If no values are given.
+ * @throws MathException If an argument is not valid.
+ *
+ * @psalm-suppress LessSpecificReturnStatement
+ * @psalm-suppress MoreSpecificReturnType
+ * @psalm-pure
+ */
+ public static function max(BigNumber|int|float|string ...$values) : static
+ {
+ $max = null;
+
+ foreach ($values as $value) {
+ $value = static::of($value);
+
+ if ($max === null || $value->isGreaterThan($max)) {
+ $max = $value;
+ }
+ }
+
+ if ($max === null) {
+ throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.');
+ }
+
+ return $max;
+ }
+
+ /**
+ * Returns the sum of the given values.
+ *
+ * @param BigNumber|int|float|string ...$values The numbers to add. All the numbers need to be convertible
+ * to an instance of the class this method is called on.
+ *
+ * @throws \InvalidArgumentException If no values are given.
+ * @throws MathException If an argument is not valid.
+ *
+ * @psalm-pure
+ */
+ public static function sum(BigNumber|int|float|string ...$values) : static
+ {
+ /** @var static|null $sum */
+ $sum = null;
+
+ foreach ($values as $value) {
+ $value = static::of($value);
+
+ $sum = $sum === null ? $value : self::add($sum, $value);
+ }
+
+ if ($sum === null) {
+ throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.');
+ }
+
+ return $sum;
+ }
+
+ /**
+ * Adds two BigNumber instances in the correct order to avoid a RoundingNecessaryException.
+ *
+ * @todo This could be better resolved by creating an abstract protected method in BigNumber, and leaving to
+ * concrete classes the responsibility to perform the addition themselves or delegate it to the given number,
+ * depending on their ability to perform the operation. This will also require a version bump because we're
+ * potentially breaking custom BigNumber implementations (if any...)
+ *
+ * @psalm-pure
+ */
+ private static function add(BigNumber $a, BigNumber $b) : BigNumber
+ {
+ if ($a instanceof BigRational) {
+ return $a->plus($b);
+ }
+
+ if ($b instanceof BigRational) {
+ return $b->plus($a);
+ }
+
+ if ($a instanceof BigDecimal) {
+ return $a->plus($b);
+ }
+
+ if ($b instanceof BigDecimal) {
+ return $b->plus($a);
+ }
+
+ /** @var BigInteger $a */
+
+ return $a->plus($b);
+ }
+
+ /**
+ * Removes optional leading zeros and + sign from the given number.
+ *
+ * @param string $number The number, validated as a non-empty string of digits with optional leading sign.
+ *
+ * @psalm-pure
+ */
+ private static function cleanUp(string $number) : string
+ {
+ $firstChar = $number[0];
+
+ if ($firstChar === '+' || $firstChar === '-') {
+ $number = \substr($number, 1);
+ }
+
+ $number = \ltrim($number, '0');
+
+ if ($number === '') {
+ return '0';
+ }
+
+ if ($firstChar === '-') {
+ return '-' . $number;
+ }
+
+ return $number;
+ }
+
+ /**
+ * Checks if this number is equal to the given one.
+ */
+ public function isEqualTo(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) === 0;
+ }
+
+ /**
+ * Checks if this number is strictly lower than the given one.
+ */
+ public function isLessThan(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) < 0;
+ }
+
+ /**
+ * Checks if this number is lower than or equal to the given one.
+ */
+ public function isLessThanOrEqualTo(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) <= 0;
+ }
+
+ /**
+ * Checks if this number is strictly greater than the given one.
+ */
+ public function isGreaterThan(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) > 0;
+ }
+
+ /**
+ * Checks if this number is greater than or equal to the given one.
+ */
+ public function isGreaterThanOrEqualTo(BigNumber|int|float|string $that) : bool
+ {
+ return $this->compareTo($that) >= 0;
+ }
+
+ /**
+ * Checks if this number equals zero.
+ */
+ public function isZero() : bool
+ {
+ return $this->getSign() === 0;
+ }
+
+ /**
+ * Checks if this number is strictly negative.
+ */
+ public function isNegative() : bool
+ {
+ return $this->getSign() < 0;
+ }
+
+ /**
+ * Checks if this number is negative or zero.
+ */
+ public function isNegativeOrZero() : bool
+ {
+ return $this->getSign() <= 0;
+ }
+
+ /**
+ * Checks if this number is strictly positive.
+ */
+ public function isPositive() : bool
+ {
+ return $this->getSign() > 0;
+ }
+
+ /**
+ * Checks if this number is positive or zero.
+ */
+ public function isPositiveOrZero() : bool
+ {
+ return $this->getSign() >= 0;
+ }
+
+ /**
+ * Returns the sign of this number.
+ *
+ * @return int -1 if the number is negative, 0 if zero, 1 if positive.
+ */
+ abstract public function getSign() : int;
+
+ /**
+ * Compares this number to the given one.
+ *
+ * @return int [-1,0,1] If `$this` is lower than, equal to, or greater than `$that`.
+ *
+ * @throws MathException If the number is not valid.
+ */
+ abstract public function compareTo(BigNumber|int|float|string $that) : int;
+
+ /**
+ * Converts this number to a BigInteger.
+ *
+ * @throws RoundingNecessaryException If this number cannot be converted to a BigInteger without rounding.
+ */
+ abstract public function toBigInteger() : BigInteger;
+
+ /**
+ * Converts this number to a BigDecimal.
+ *
+ * @throws RoundingNecessaryException If this number cannot be converted to a BigDecimal without rounding.
+ */
+ abstract public function toBigDecimal() : BigDecimal;
+
+ /**
+ * Converts this number to a BigRational.
+ */
+ abstract public function toBigRational() : BigRational;
+
+ /**
+ * Converts this number to a BigDecimal with the given scale, using rounding if necessary.
+ *
+ * @param int $scale The scale of the resulting `BigDecimal`.
+ * @param int $roundingMode A `RoundingMode` constant.
+ *
+ * @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding.
+ * This only applies when RoundingMode::UNNECESSARY is used.
+ */
+ abstract public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal;
+
+ /**
+ * Returns the exact value of this number as a native integer.
+ *
+ * If this number cannot be converted to a native integer without losing precision, an exception is thrown.
+ * Note that the acceptable range for an integer depends on the platform and differs for 32-bit and 64-bit.
+ *
+ * @throws MathException If this number cannot be exactly converted to a native integer.
+ */
+ abstract public function toInt() : int;
+
+ /**
+ * Returns an approximation of this number as a floating-point value.
+ *
+ * Note that this method can discard information as the precision of a floating-point value
+ * is inherently limited.
+ *
+ * If the number is greater than the largest representable floating point number, positive infinity is returned.
+ * If the number is less than the smallest representable floating point number, negative infinity is returned.
+ */
+ abstract public function toFloat() : float;
+
+ /**
+ * Returns a string representation of this number.
+ *
+ * The output of this method can be parsed by the `of()` factory method;
+ * this will yield an object equal to this one, without any information loss.
+ */
+ abstract public function __toString() : string;
+
+ public function jsonSerialize() : string
+ {
+ return $this->__toString();
+ }
+}
diff --git a/vendor/brick/math/src/BigRational.php b/vendor/brick/math/src/BigRational.php
new file mode 100644
index 0000000..31f2904
--- /dev/null
+++ b/vendor/brick/math/src/BigRational.php
@@ -0,0 +1,445 @@
+isZero()) {
+ throw DivisionByZeroException::denominatorMustNotBeZero();
+ }
+
+ if ($denominator->isNegative()) {
+ $numerator = $numerator->negated();
+ $denominator = $denominator->negated();
+ }
+ }
+
+ $this->numerator = $numerator;
+ $this->denominator = $denominator;
+ }
+
+ /**
+ * Creates a BigRational of the given value.
+ *
+ * @throws MathException If the value cannot be converted to a BigRational.
+ *
+ * @psalm-pure
+ */
+ public static function of(BigNumber|int|float|string $value) : BigRational
+ {
+ return parent::of($value)->toBigRational();
+ }
+
+ /**
+ * Creates a BigRational out of a numerator and a denominator.
+ *
+ * If the denominator is negative, the signs of both the numerator and the denominator
+ * will be inverted to ensure that the denominator is always positive.
+ *
+ * @param BigNumber|int|float|string $numerator The numerator. Must be convertible to a BigInteger.
+ * @param BigNumber|int|float|string $denominator The denominator. Must be convertible to a BigInteger.
+ *
+ * @throws NumberFormatException If an argument does not represent a valid number.
+ * @throws RoundingNecessaryException If an argument represents a non-integer number.
+ * @throws DivisionByZeroException If the denominator is zero.
+ *
+ * @psalm-pure
+ */
+ public static function nd(
+ BigNumber|int|float|string $numerator,
+ BigNumber|int|float|string $denominator,
+ ) : BigRational {
+ $numerator = BigInteger::of($numerator);
+ $denominator = BigInteger::of($denominator);
+
+ return new BigRational($numerator, $denominator, true);
+ }
+
+ /**
+ * Returns a BigRational representing zero.
+ *
+ * @psalm-pure
+ */
+ public static function zero() : BigRational
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigRational|null $zero
+ */
+ static $zero;
+
+ if ($zero === null) {
+ $zero = new BigRational(BigInteger::zero(), BigInteger::one(), false);
+ }
+
+ return $zero;
+ }
+
+ /**
+ * Returns a BigRational representing one.
+ *
+ * @psalm-pure
+ */
+ public static function one() : BigRational
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigRational|null $one
+ */
+ static $one;
+
+ if ($one === null) {
+ $one = new BigRational(BigInteger::one(), BigInteger::one(), false);
+ }
+
+ return $one;
+ }
+
+ /**
+ * Returns a BigRational representing ten.
+ *
+ * @psalm-pure
+ */
+ public static function ten() : BigRational
+ {
+ /**
+ * @psalm-suppress ImpureStaticVariable
+ * @var BigRational|null $ten
+ */
+ static $ten;
+
+ if ($ten === null) {
+ $ten = new BigRational(BigInteger::ten(), BigInteger::one(), false);
+ }
+
+ return $ten;
+ }
+
+ public function getNumerator() : BigInteger
+ {
+ return $this->numerator;
+ }
+
+ public function getDenominator() : BigInteger
+ {
+ return $this->denominator;
+ }
+
+ /**
+ * Returns the quotient of the division of the numerator by the denominator.
+ */
+ public function quotient() : BigInteger
+ {
+ return $this->numerator->quotient($this->denominator);
+ }
+
+ /**
+ * Returns the remainder of the division of the numerator by the denominator.
+ */
+ public function remainder() : BigInteger
+ {
+ return $this->numerator->remainder($this->denominator);
+ }
+
+ /**
+ * Returns the quotient and remainder of the division of the numerator by the denominator.
+ *
+ * @return BigInteger[]
+ */
+ public function quotientAndRemainder() : array
+ {
+ return $this->numerator->quotientAndRemainder($this->denominator);
+ }
+
+ /**
+ * Returns the sum of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to add.
+ *
+ * @throws MathException If the number is not valid.
+ */
+ public function plus(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->denominator);
+ $numerator = $numerator->plus($that->numerator->multipliedBy($this->denominator));
+ $denominator = $this->denominator->multipliedBy($that->denominator);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ /**
+ * Returns the difference of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The number to subtract.
+ *
+ * @throws MathException If the number is not valid.
+ */
+ public function minus(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->denominator);
+ $numerator = $numerator->minus($that->numerator->multipliedBy($this->denominator));
+ $denominator = $this->denominator->multipliedBy($that->denominator);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ /**
+ * Returns the product of this number and the given one.
+ *
+ * @param BigNumber|int|float|string $that The multiplier.
+ *
+ * @throws MathException If the multiplier is not a valid number.
+ */
+ public function multipliedBy(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->numerator);
+ $denominator = $this->denominator->multipliedBy($that->denominator);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ /**
+ * Returns the result of the division of this number by the given one.
+ *
+ * @param BigNumber|int|float|string $that The divisor.
+ *
+ * @throws MathException If the divisor is not a valid number, or is zero.
+ */
+ public function dividedBy(BigNumber|int|float|string $that) : BigRational
+ {
+ $that = BigRational::of($that);
+
+ $numerator = $this->numerator->multipliedBy($that->denominator);
+ $denominator = $this->denominator->multipliedBy($that->numerator);
+
+ return new BigRational($numerator, $denominator, true);
+ }
+
+ /**
+ * Returns this number exponentiated to the given value.
+ *
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
+ */
+ public function power(int $exponent) : BigRational
+ {
+ if ($exponent === 0) {
+ $one = BigInteger::one();
+
+ return new BigRational($one, $one, false);
+ }
+
+ if ($exponent === 1) {
+ return $this;
+ }
+
+ return new BigRational(
+ $this->numerator->power($exponent),
+ $this->denominator->power($exponent),
+ false
+ );
+ }
+
+ /**
+ * Returns the reciprocal of this BigRational.
+ *
+ * The reciprocal has the numerator and denominator swapped.
+ *
+ * @throws DivisionByZeroException If the numerator is zero.
+ */
+ public function reciprocal() : BigRational
+ {
+ return new BigRational($this->denominator, $this->numerator, true);
+ }
+
+ /**
+ * Returns the absolute value of this BigRational.
+ */
+ public function abs() : BigRational
+ {
+ return new BigRational($this->numerator->abs(), $this->denominator, false);
+ }
+
+ /**
+ * Returns the negated value of this BigRational.
+ */
+ public function negated() : BigRational
+ {
+ return new BigRational($this->numerator->negated(), $this->denominator, false);
+ }
+
+ /**
+ * Returns the simplified value of this BigRational.
+ */
+ public function simplified() : BigRational
+ {
+ $gcd = $this->numerator->gcd($this->denominator);
+
+ $numerator = $this->numerator->quotient($gcd);
+ $denominator = $this->denominator->quotient($gcd);
+
+ return new BigRational($numerator, $denominator, false);
+ }
+
+ public function compareTo(BigNumber|int|float|string $that) : int
+ {
+ return $this->minus($that)->getSign();
+ }
+
+ public function getSign() : int
+ {
+ return $this->numerator->getSign();
+ }
+
+ public function toBigInteger() : BigInteger
+ {
+ $simplified = $this->simplified();
+
+ if (! $simplified->denominator->isEqualTo(1)) {
+ throw new RoundingNecessaryException('This rational number cannot be represented as an integer value without rounding.');
+ }
+
+ return $simplified->numerator;
+ }
+
+ public function toBigDecimal() : BigDecimal
+ {
+ return $this->numerator->toBigDecimal()->exactlyDividedBy($this->denominator);
+ }
+
+ public function toBigRational() : BigRational
+ {
+ return $this;
+ }
+
+ public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
+ {
+ return $this->numerator->toBigDecimal()->dividedBy($this->denominator, $scale, $roundingMode);
+ }
+
+ public function toInt() : int
+ {
+ return $this->toBigInteger()->toInt();
+ }
+
+ public function toFloat() : float
+ {
+ $simplified = $this->simplified();
+ return $simplified->numerator->toFloat() / $simplified->denominator->toFloat();
+ }
+
+ public function __toString() : string
+ {
+ $numerator = (string) $this->numerator;
+ $denominator = (string) $this->denominator;
+
+ if ($denominator === '1') {
+ return $numerator;
+ }
+
+ return $this->numerator . '/' . $this->denominator;
+ }
+
+ /**
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ *
+ * @return array{numerator: BigInteger, denominator: BigInteger}
+ */
+ public function __serialize(): array
+ {
+ return ['numerator' => $this->numerator, 'denominator' => $this->denominator];
+ }
+
+ /**
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @param array{numerator: BigInteger, denominator: BigInteger} $data
+ *
+ * @throws \LogicException
+ */
+ public function __unserialize(array $data): void
+ {
+ if (isset($this->numerator)) {
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
+ }
+
+ $this->numerator = $data['numerator'];
+ $this->denominator = $data['denominator'];
+ }
+
+ /**
+ * This method is required by interface Serializable and SHOULD NOT be accessed directly.
+ *
+ * @internal
+ */
+ public function serialize() : string
+ {
+ return $this->numerator . '/' . $this->denominator;
+ }
+
+ /**
+ * This method is only here to implement interface Serializable and cannot be accessed directly.
+ *
+ * @internal
+ * @psalm-suppress RedundantPropertyInitializationCheck
+ *
+ * @throws \LogicException
+ */
+ public function unserialize($value) : void
+ {
+ if (isset($this->numerator)) {
+ throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
+ }
+
+ [$numerator, $denominator] = \explode('/', $value);
+
+ $this->numerator = BigInteger::of($numerator);
+ $this->denominator = BigInteger::of($denominator);
+ }
+}
diff --git a/vendor/brick/math/src/Exception/DivisionByZeroException.php b/vendor/brick/math/src/Exception/DivisionByZeroException.php
new file mode 100644
index 0000000..ce7769a
--- /dev/null
+++ b/vendor/brick/math/src/Exception/DivisionByZeroException.php
@@ -0,0 +1,35 @@
+ 126) {
+ $char = \strtoupper(\dechex($ord));
+
+ if ($ord < 10) {
+ $char = '0' . $char;
+ }
+ } else {
+ $char = '"' . $char . '"';
+ }
+
+ return new self(sprintf('Char %s is not a valid character in the given alphabet.', $char));
+ }
+}
diff --git a/vendor/brick/math/src/Exception/RoundingNecessaryException.php b/vendor/brick/math/src/Exception/RoundingNecessaryException.php
new file mode 100644
index 0000000..57bfcd8
--- /dev/null
+++ b/vendor/brick/math/src/Exception/RoundingNecessaryException.php
@@ -0,0 +1,19 @@
+init($a, $b);
+
+ if ($aNeg && ! $bNeg) {
+ return -1;
+ }
+
+ if ($bNeg && ! $aNeg) {
+ return 1;
+ }
+
+ $aLen = \strlen($aDig);
+ $bLen = \strlen($bDig);
+
+ if ($aLen < $bLen) {
+ $result = -1;
+ } elseif ($aLen > $bLen) {
+ $result = 1;
+ } else {
+ $result = $aDig <=> $bDig;
+ }
+
+ return $aNeg ? -$result : $result;
+ }
+
+ /**
+ * Adds two numbers.
+ */
+ abstract public function add(string $a, string $b) : string;
+
+ /**
+ * Subtracts two numbers.
+ */
+ abstract public function sub(string $a, string $b) : string;
+
+ /**
+ * Multiplies two numbers.
+ */
+ abstract public function mul(string $a, string $b) : string;
+
+ /**
+ * Returns the quotient of the division of two numbers.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ *
+ * @return string The quotient.
+ */
+ abstract public function divQ(string $a, string $b) : string;
+
+ /**
+ * Returns the remainder of the division of two numbers.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ *
+ * @return string The remainder.
+ */
+ abstract public function divR(string $a, string $b) : string;
+
+ /**
+ * Returns the quotient and remainder of the division of two numbers.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ *
+ * @return array{string, string} An array containing the quotient and remainder.
+ */
+ abstract public function divQR(string $a, string $b) : array;
+
+ /**
+ * Exponentiates a number.
+ *
+ * @param string $a The base number.
+ * @param int $e The exponent, validated as an integer between 0 and MAX_POWER.
+ *
+ * @return string The power.
+ */
+ abstract public function pow(string $a, int $e) : string;
+
+ /**
+ * @param string $b The modulus; must not be zero.
+ */
+ public function mod(string $a, string $b) : string
+ {
+ return $this->divR($this->add($this->divR($a, $b), $b), $b);
+ }
+
+ /**
+ * Returns the modular multiplicative inverse of $x modulo $m.
+ *
+ * If $x has no multiplicative inverse mod m, this method must return null.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library has built-in support.
+ *
+ * @param string $m The modulus; must not be negative or zero.
+ */
+ public function modInverse(string $x, string $m) : ?string
+ {
+ if ($m === '1') {
+ return '0';
+ }
+
+ $modVal = $x;
+
+ if ($x[0] === '-' || ($this->cmp($this->abs($x), $m) >= 0)) {
+ $modVal = $this->mod($x, $m);
+ }
+
+ [$g, $x] = $this->gcdExtended($modVal, $m);
+
+ if ($g !== '1') {
+ return null;
+ }
+
+ return $this->mod($this->add($this->mod($x, $m), $m), $m);
+ }
+
+ /**
+ * Raises a number into power with modulo.
+ *
+ * @param string $base The base number; must be positive or zero.
+ * @param string $exp The exponent; must be positive or zero.
+ * @param string $mod The modulus; must be strictly positive.
+ */
+ abstract public function modPow(string $base, string $exp, string $mod) : string;
+
+ /**
+ * Returns the greatest common divisor of the two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for GCD calculations.
+ *
+ * @return string The GCD, always positive, or zero if both arguments are zero.
+ */
+ public function gcd(string $a, string $b) : string
+ {
+ if ($a === '0') {
+ return $this->abs($b);
+ }
+
+ if ($b === '0') {
+ return $this->abs($a);
+ }
+
+ return $this->gcd($b, $this->divR($a, $b));
+ }
+
+ /**
+ * @return array{string, string, string} GCD, X, Y
+ */
+ private function gcdExtended(string $a, string $b) : array
+ {
+ if ($a === '0') {
+ return [$b, '0', '1'];
+ }
+
+ [$gcd, $x1, $y1] = $this->gcdExtended($this->mod($b, $a), $a);
+
+ $x = $this->sub($y1, $this->mul($this->divQ($b, $a), $x1));
+ $y = $x1;
+
+ return [$gcd, $x, $y];
+ }
+
+ /**
+ * Returns the square root of the given number, rounded down.
+ *
+ * The result is the largest x such that x² ≤ n.
+ * The input MUST NOT be negative.
+ */
+ abstract public function sqrt(string $n) : string;
+
+ /**
+ * Converts a number from an arbitrary base.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for base conversion.
+ *
+ * @param string $number The number, positive or zero, non-empty, case-insensitively validated for the given base.
+ * @param int $base The base of the number, validated from 2 to 36.
+ *
+ * @return string The converted number, following the Calculator conventions.
+ */
+ public function fromBase(string $number, int $base) : string
+ {
+ return $this->fromArbitraryBase(\strtolower($number), self::ALPHABET, $base);
+ }
+
+ /**
+ * Converts a number to an arbitrary base.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for base conversion.
+ *
+ * @param string $number The number to convert, following the Calculator conventions.
+ * @param int $base The base to convert to, validated from 2 to 36.
+ *
+ * @return string The converted number, lowercase.
+ */
+ public function toBase(string $number, int $base) : string
+ {
+ $negative = ($number[0] === '-');
+
+ if ($negative) {
+ $number = \substr($number, 1);
+ }
+
+ $number = $this->toArbitraryBase($number, self::ALPHABET, $base);
+
+ if ($negative) {
+ return '-' . $number;
+ }
+
+ return $number;
+ }
+
+ /**
+ * Converts a non-negative number in an arbitrary base using a custom alphabet, to base 10.
+ *
+ * @param string $number The number to convert, validated as a non-empty string,
+ * containing only chars in the given alphabet/base.
+ * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum.
+ * @param int $base The base of the number, validated from 2 to alphabet length.
+ *
+ * @return string The number in base 10, following the Calculator conventions.
+ */
+ final public function fromArbitraryBase(string $number, string $alphabet, int $base) : string
+ {
+ // remove leading "zeros"
+ $number = \ltrim($number, $alphabet[0]);
+
+ if ($number === '') {
+ return '0';
+ }
+
+ // optimize for "one"
+ if ($number === $alphabet[1]) {
+ return '1';
+ }
+
+ $result = '0';
+ $power = '1';
+
+ $base = (string) $base;
+
+ for ($i = \strlen($number) - 1; $i >= 0; $i--) {
+ $index = \strpos($alphabet, $number[$i]);
+
+ if ($index !== 0) {
+ $result = $this->add($result, ($index === 1)
+ ? $power
+ : $this->mul($power, (string) $index)
+ );
+ }
+
+ if ($i !== 0) {
+ $power = $this->mul($power, $base);
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Converts a non-negative number to an arbitrary base using a custom alphabet.
+ *
+ * @param string $number The number to convert, positive or zero, following the Calculator conventions.
+ * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum.
+ * @param int $base The base to convert to, validated from 2 to alphabet length.
+ *
+ * @return string The converted number in the given alphabet.
+ */
+ final public function toArbitraryBase(string $number, string $alphabet, int $base) : string
+ {
+ if ($number === '0') {
+ return $alphabet[0];
+ }
+
+ $base = (string) $base;
+ $result = '';
+
+ while ($number !== '0') {
+ [$number, $remainder] = $this->divQR($number, $base);
+ $remainder = (int) $remainder;
+
+ $result .= $alphabet[$remainder];
+ }
+
+ return \strrev($result);
+ }
+
+ /**
+ * Performs a rounded division.
+ *
+ * Rounding is performed when the remainder of the division is not zero.
+ *
+ * @param string $a The dividend.
+ * @param string $b The divisor, must not be zero.
+ * @param int $roundingMode The rounding mode.
+ *
+ * @throws \InvalidArgumentException If the rounding mode is invalid.
+ * @throws RoundingNecessaryException If RoundingMode::UNNECESSARY is provided but rounding is necessary.
+ *
+ * @psalm-suppress ImpureFunctionCall
+ */
+ final public function divRound(string $a, string $b, int $roundingMode) : string
+ {
+ [$quotient, $remainder] = $this->divQR($a, $b);
+
+ $hasDiscardedFraction = ($remainder !== '0');
+ $isPositiveOrZero = ($a[0] === '-') === ($b[0] === '-');
+
+ $discardedFractionSign = function() use ($remainder, $b) : int {
+ $r = $this->abs($this->mul($remainder, '2'));
+ $b = $this->abs($b);
+
+ return $this->cmp($r, $b);
+ };
+
+ $increment = false;
+
+ switch ($roundingMode) {
+ case RoundingMode::UNNECESSARY:
+ if ($hasDiscardedFraction) {
+ throw RoundingNecessaryException::roundingNecessary();
+ }
+ break;
+
+ case RoundingMode::UP:
+ $increment = $hasDiscardedFraction;
+ break;
+
+ case RoundingMode::DOWN:
+ break;
+
+ case RoundingMode::CEILING:
+ $increment = $hasDiscardedFraction && $isPositiveOrZero;
+ break;
+
+ case RoundingMode::FLOOR:
+ $increment = $hasDiscardedFraction && ! $isPositiveOrZero;
+ break;
+
+ case RoundingMode::HALF_UP:
+ $increment = $discardedFractionSign() >= 0;
+ break;
+
+ case RoundingMode::HALF_DOWN:
+ $increment = $discardedFractionSign() > 0;
+ break;
+
+ case RoundingMode::HALF_CEILING:
+ $increment = $isPositiveOrZero ? $discardedFractionSign() >= 0 : $discardedFractionSign() > 0;
+ break;
+
+ case RoundingMode::HALF_FLOOR:
+ $increment = $isPositiveOrZero ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0;
+ break;
+
+ case RoundingMode::HALF_EVEN:
+ $lastDigit = (int) $quotient[-1];
+ $lastDigitIsEven = ($lastDigit % 2 === 0);
+ $increment = $lastDigitIsEven ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0;
+ break;
+
+ default:
+ throw new \InvalidArgumentException('Invalid rounding mode.');
+ }
+
+ if ($increment) {
+ return $this->add($quotient, $isPositiveOrZero ? '1' : '-1');
+ }
+
+ return $quotient;
+ }
+
+ /**
+ * Calculates bitwise AND of two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for bitwise operations.
+ */
+ public function and(string $a, string $b) : string
+ {
+ return $this->bitwise('and', $a, $b);
+ }
+
+ /**
+ * Calculates bitwise OR of two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for bitwise operations.
+ */
+ public function or(string $a, string $b) : string
+ {
+ return $this->bitwise('or', $a, $b);
+ }
+
+ /**
+ * Calculates bitwise XOR of two numbers.
+ *
+ * This method can be overridden by the concrete implementation if the underlying library
+ * has built-in support for bitwise operations.
+ */
+ public function xor(string $a, string $b) : string
+ {
+ return $this->bitwise('xor', $a, $b);
+ }
+
+ /**
+ * Performs a bitwise operation on a decimal number.
+ *
+ * @param 'and'|'or'|'xor' $operator The operator to use.
+ * @param string $a The left operand.
+ * @param string $b The right operand.
+ */
+ private function bitwise(string $operator, string $a, string $b) : string
+ {
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ $aBin = $this->toBinary($aDig);
+ $bBin = $this->toBinary($bDig);
+
+ $aLen = \strlen($aBin);
+ $bLen = \strlen($bBin);
+
+ if ($aLen > $bLen) {
+ $bBin = \str_repeat("\x00", $aLen - $bLen) . $bBin;
+ } elseif ($bLen > $aLen) {
+ $aBin = \str_repeat("\x00", $bLen - $aLen) . $aBin;
+ }
+
+ if ($aNeg) {
+ $aBin = $this->twosComplement($aBin);
+ }
+ if ($bNeg) {
+ $bBin = $this->twosComplement($bBin);
+ }
+
+ switch ($operator) {
+ case 'and':
+ $value = $aBin & $bBin;
+ $negative = ($aNeg and $bNeg);
+ break;
+
+ case 'or':
+ $value = $aBin | $bBin;
+ $negative = ($aNeg or $bNeg);
+ break;
+
+ case 'xor':
+ $value = $aBin ^ $bBin;
+ $negative = ($aNeg xor $bNeg);
+ break;
+
+ // @codeCoverageIgnoreStart
+ default:
+ throw new \InvalidArgumentException('Invalid bitwise operator.');
+ // @codeCoverageIgnoreEnd
+ }
+
+ if ($negative) {
+ $value = $this->twosComplement($value);
+ }
+
+ $result = $this->toDecimal($value);
+
+ return $negative ? $this->neg($result) : $result;
+ }
+
+ /**
+ * @param string $number A positive, binary number.
+ */
+ private function twosComplement(string $number) : string
+ {
+ $xor = \str_repeat("\xff", \strlen($number));
+
+ $number ^= $xor;
+
+ for ($i = \strlen($number) - 1; $i >= 0; $i--) {
+ $byte = \ord($number[$i]);
+
+ if (++$byte !== 256) {
+ $number[$i] = \chr($byte);
+ break;
+ }
+
+ $number[$i] = "\x00";
+
+ if ($i === 0) {
+ $number = "\x01" . $number;
+ }
+ }
+
+ return $number;
+ }
+
+ /**
+ * Converts a decimal number to a binary string.
+ *
+ * @param string $number The number to convert, positive or zero, only digits.
+ */
+ private function toBinary(string $number) : string
+ {
+ $result = '';
+
+ while ($number !== '0') {
+ [$number, $remainder] = $this->divQR($number, '256');
+ $result .= \chr((int) $remainder);
+ }
+
+ return \strrev($result);
+ }
+
+ /**
+ * Returns the positive decimal representation of a binary number.
+ *
+ * @param string $bytes The bytes representing the number.
+ */
+ private function toDecimal(string $bytes) : string
+ {
+ $result = '0';
+ $power = '1';
+
+ for ($i = \strlen($bytes) - 1; $i >= 0; $i--) {
+ $index = \ord($bytes[$i]);
+
+ if ($index !== 0) {
+ $result = $this->add($result, ($index === 1)
+ ? $power
+ : $this->mul($power, (string) $index)
+ );
+ }
+
+ if ($i !== 0) {
+ $power = $this->mul($power, '256');
+ }
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
new file mode 100644
index 0000000..5457a3c
--- /dev/null
+++ b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php
@@ -0,0 +1,75 @@
+maxDigits = 9;
+ break;
+
+ case 8:
+ $this->maxDigits = 18;
+ break;
+
+ default:
+ throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.');
+ }
+ }
+
+ public function add(string $a, string $b) : string
+ {
+ /**
+ * @psalm-var numeric-string $a
+ * @psalm-var numeric-string $b
+ */
+ $result = $a + $b;
+
+ if (is_int($result)) {
+ return (string) $result;
+ }
+
+ if ($a === '0') {
+ return $b;
+ }
+
+ if ($b === '0') {
+ return $a;
+ }
+
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig);
+
+ if ($aNeg) {
+ $result = $this->neg($result);
+ }
+
+ return $result;
+ }
+
+ public function sub(string $a, string $b) : string
+ {
+ return $this->add($a, $this->neg($b));
+ }
+
+ public function mul(string $a, string $b) : string
+ {
+ /**
+ * @psalm-var numeric-string $a
+ * @psalm-var numeric-string $b
+ */
+ $result = $a * $b;
+
+ if (is_int($result)) {
+ return (string) $result;
+ }
+
+ if ($a === '0' || $b === '0') {
+ return '0';
+ }
+
+ if ($a === '1') {
+ return $b;
+ }
+
+ if ($b === '1') {
+ return $a;
+ }
+
+ if ($a === '-1') {
+ return $this->neg($b);
+ }
+
+ if ($b === '-1') {
+ return $this->neg($a);
+ }
+
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ $result = $this->doMul($aDig, $bDig);
+
+ if ($aNeg !== $bNeg) {
+ $result = $this->neg($result);
+ }
+
+ return $result;
+ }
+
+ public function divQ(string $a, string $b) : string
+ {
+ return $this->divQR($a, $b)[0];
+ }
+
+ public function divR(string $a, string $b): string
+ {
+ return $this->divQR($a, $b)[1];
+ }
+
+ public function divQR(string $a, string $b) : array
+ {
+ if ($a === '0') {
+ return ['0', '0'];
+ }
+
+ if ($a === $b) {
+ return ['1', '0'];
+ }
+
+ if ($b === '1') {
+ return [$a, '0'];
+ }
+
+ if ($b === '-1') {
+ return [$this->neg($a), '0'];
+ }
+
+ /** @psalm-var numeric-string $a */
+ $na = $a * 1; // cast to number
+
+ if (is_int($na)) {
+ /** @psalm-var numeric-string $b */
+ $nb = $b * 1;
+
+ if (is_int($nb)) {
+ // the only division that may overflow is PHP_INT_MIN / -1,
+ // which cannot happen here as we've already handled a divisor of -1 above.
+ $r = $na % $nb;
+ $q = ($na - $r) / $nb;
+
+ assert(is_int($q));
+
+ return [
+ (string) $q,
+ (string) $r
+ ];
+ }
+ }
+
+ [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
+
+ [$q, $r] = $this->doDiv($aDig, $bDig);
+
+ if ($aNeg !== $bNeg) {
+ $q = $this->neg($q);
+ }
+
+ if ($aNeg) {
+ $r = $this->neg($r);
+ }
+
+ return [$q, $r];
+ }
+
+ public function pow(string $a, int $e) : string
+ {
+ if ($e === 0) {
+ return '1';
+ }
+
+ if ($e === 1) {
+ return $a;
+ }
+
+ $odd = $e % 2;
+ $e -= $odd;
+
+ $aa = $this->mul($a, $a);
+
+ /** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */
+ $result = $this->pow($aa, $e / 2);
+
+ if ($odd === 1) {
+ $result = $this->mul($result, $a);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Algorithm from: https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/
+ */
+ public function modPow(string $base, string $exp, string $mod) : string
+ {
+ // special case: the algorithm below fails with 0 power 0 mod 1 (returns 1 instead of 0)
+ if ($base === '0' && $exp === '0' && $mod === '1') {
+ return '0';
+ }
+
+ // special case: the algorithm below fails with power 0 mod 1 (returns 1 instead of 0)
+ if ($exp === '0' && $mod === '1') {
+ return '0';
+ }
+
+ $x = $base;
+
+ $res = '1';
+
+ // numbers are positive, so we can use remainder instead of modulo
+ $x = $this->divR($x, $mod);
+
+ while ($exp !== '0') {
+ if (in_array($exp[-1], ['1', '3', '5', '7', '9'])) { // odd
+ $res = $this->divR($this->mul($res, $x), $mod);
+ }
+
+ $exp = $this->divQ($exp, '2');
+ $x = $this->divR($this->mul($x, $x), $mod);
+ }
+
+ return $res;
+ }
+
+ /**
+ * Adapted from https://cp-algorithms.com/num_methods/roots_newton.html
+ */
+ public function sqrt(string $n) : string
+ {
+ if ($n === '0') {
+ return '0';
+ }
+
+ // initial approximation
+ $x = \str_repeat('9', \intdiv(\strlen($n), 2) ?: 1);
+
+ $decreased = false;
+
+ for (;;) {
+ $nx = $this->divQ($this->add($x, $this->divQ($n, $x)), '2');
+
+ if ($x === $nx || $this->cmp($nx, $x) > 0 && $decreased) {
+ break;
+ }
+
+ $decreased = $this->cmp($nx, $x) < 0;
+ $x = $nx;
+ }
+
+ return $x;
+ }
+
+ /**
+ * Performs the addition of two non-signed large integers.
+ */
+ private function doAdd(string $a, string $b) : string
+ {
+ [$a, $b, $length] = $this->pad($a, $b);
+
+ $carry = 0;
+ $result = '';
+
+ for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) {
+ $blockLength = $this->maxDigits;
+
+ if ($i < 0) {
+ $blockLength += $i;
+ /** @psalm-suppress LoopInvalidation */
+ $i = 0;
+ }
+
+ /** @psalm-var numeric-string $blockA */
+ $blockA = \substr($a, $i, $blockLength);
+
+ /** @psalm-var numeric-string $blockB */
+ $blockB = \substr($b, $i, $blockLength);
+
+ $sum = (string) ($blockA + $blockB + $carry);
+ $sumLength = \strlen($sum);
+
+ if ($sumLength > $blockLength) {
+ $sum = \substr($sum, 1);
+ $carry = 1;
+ } else {
+ if ($sumLength < $blockLength) {
+ $sum = \str_repeat('0', $blockLength - $sumLength) . $sum;
+ }
+ $carry = 0;
+ }
+
+ $result = $sum . $result;
+
+ if ($i === 0) {
+ break;
+ }
+ }
+
+ if ($carry === 1) {
+ $result = '1' . $result;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Performs the subtraction of two non-signed large integers.
+ */
+ private function doSub(string $a, string $b) : string
+ {
+ if ($a === $b) {
+ return '0';
+ }
+
+ // Ensure that we always subtract to a positive result: biggest minus smallest.
+ $cmp = $this->doCmp($a, $b);
+
+ $invert = ($cmp === -1);
+
+ if ($invert) {
+ $c = $a;
+ $a = $b;
+ $b = $c;
+ }
+
+ [$a, $b, $length] = $this->pad($a, $b);
+
+ $carry = 0;
+ $result = '';
+
+ $complement = 10 ** $this->maxDigits;
+
+ for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) {
+ $blockLength = $this->maxDigits;
+
+ if ($i < 0) {
+ $blockLength += $i;
+ /** @psalm-suppress LoopInvalidation */
+ $i = 0;
+ }
+
+ /** @psalm-var numeric-string $blockA */
+ $blockA = \substr($a, $i, $blockLength);
+
+ /** @psalm-var numeric-string $blockB */
+ $blockB = \substr($b, $i, $blockLength);
+
+ $sum = $blockA - $blockB - $carry;
+
+ if ($sum < 0) {
+ $sum += $complement;
+ $carry = 1;
+ } else {
+ $carry = 0;
+ }
+
+ $sum = (string) $sum;
+ $sumLength = \strlen($sum);
+
+ if ($sumLength < $blockLength) {
+ $sum = \str_repeat('0', $blockLength - $sumLength) . $sum;
+ }
+
+ $result = $sum . $result;
+
+ if ($i === 0) {
+ break;
+ }
+ }
+
+ // Carry cannot be 1 when the loop ends, as a > b
+ assert($carry === 0);
+
+ $result = \ltrim($result, '0');
+
+ if ($invert) {
+ $result = $this->neg($result);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Performs the multiplication of two non-signed large integers.
+ */
+ private function doMul(string $a, string $b) : string
+ {
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ $maxDigits = \intdiv($this->maxDigits, 2);
+ $complement = 10 ** $maxDigits;
+
+ $result = '0';
+
+ for ($i = $x - $maxDigits;; $i -= $maxDigits) {
+ $blockALength = $maxDigits;
+
+ if ($i < 0) {
+ $blockALength += $i;
+ /** @psalm-suppress LoopInvalidation */
+ $i = 0;
+ }
+
+ $blockA = (int) \substr($a, $i, $blockALength);
+
+ $line = '';
+ $carry = 0;
+
+ for ($j = $y - $maxDigits;; $j -= $maxDigits) {
+ $blockBLength = $maxDigits;
+
+ if ($j < 0) {
+ $blockBLength += $j;
+ /** @psalm-suppress LoopInvalidation */
+ $j = 0;
+ }
+
+ $blockB = (int) \substr($b, $j, $blockBLength);
+
+ $mul = $blockA * $blockB + $carry;
+ $value = $mul % $complement;
+ $carry = ($mul - $value) / $complement;
+
+ $value = (string) $value;
+ $value = \str_pad($value, $maxDigits, '0', STR_PAD_LEFT);
+
+ $line = $value . $line;
+
+ if ($j === 0) {
+ break;
+ }
+ }
+
+ if ($carry !== 0) {
+ $line = $carry . $line;
+ }
+
+ $line = \ltrim($line, '0');
+
+ if ($line !== '') {
+ $line .= \str_repeat('0', $x - $blockALength - $i);
+ $result = $this->add($result, $line);
+ }
+
+ if ($i === 0) {
+ break;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Performs the division of two non-signed large integers.
+ *
+ * @return string[] The quotient and remainder.
+ */
+ private function doDiv(string $a, string $b) : array
+ {
+ $cmp = $this->doCmp($a, $b);
+
+ if ($cmp === -1) {
+ return ['0', $a];
+ }
+
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ // we now know that a >= b && x >= y
+
+ $q = '0'; // quotient
+ $r = $a; // remainder
+ $z = $y; // focus length, always $y or $y+1
+
+ for (;;) {
+ $focus = \substr($a, 0, $z);
+
+ $cmp = $this->doCmp($focus, $b);
+
+ if ($cmp === -1) {
+ if ($z === $x) { // remainder < dividend
+ break;
+ }
+
+ $z++;
+ }
+
+ $zeros = \str_repeat('0', $x - $z);
+
+ $q = $this->add($q, '1' . $zeros);
+ $a = $this->sub($a, $b . $zeros);
+
+ $r = $a;
+
+ if ($r === '0') { // remainder == 0
+ break;
+ }
+
+ $x = \strlen($a);
+
+ if ($x < $y) { // remainder < dividend
+ break;
+ }
+
+ $z = $y;
+ }
+
+ return [$q, $r];
+ }
+
+ /**
+ * Compares two non-signed large numbers.
+ *
+ * @return int [-1, 0, 1]
+ */
+ private function doCmp(string $a, string $b) : int
+ {
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ $cmp = $x <=> $y;
+
+ if ($cmp !== 0) {
+ return $cmp;
+ }
+
+ return \strcmp($a, $b) <=> 0; // enforce [-1, 0, 1]
+ }
+
+ /**
+ * Pads the left of one of the given numbers with zeros if necessary to make both numbers the same length.
+ *
+ * The numbers must only consist of digits, without leading minus sign.
+ *
+ * @return array{string, string, int}
+ */
+ private function pad(string $a, string $b) : array
+ {
+ $x = \strlen($a);
+ $y = \strlen($b);
+
+ if ($x > $y) {
+ $b = \str_repeat('0', $x - $y) . $b;
+
+ return [$a, $b, $x];
+ }
+
+ if ($x < $y) {
+ $a = \str_repeat('0', $y - $x) . $a;
+
+ return [$a, $b, $y];
+ }
+
+ return [$a, $b, $x];
+ }
+}
diff --git a/vendor/brick/math/src/RoundingMode.php b/vendor/brick/math/src/RoundingMode.php
new file mode 100644
index 0000000..06936d8
--- /dev/null
+++ b/vendor/brick/math/src/RoundingMode.php
@@ -0,0 +1,107 @@
+= 0.5; otherwise, behaves as for DOWN.
+ * Note that this is the rounding mode commonly taught at school.
+ */
+ public const HALF_UP = 5;
+
+ /**
+ * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
+ *
+ * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves as for DOWN.
+ */
+ public const HALF_DOWN = 6;
+
+ /**
+ * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards positive infinity.
+ *
+ * If the result is positive, behaves as for HALF_UP; if negative, behaves as for HALF_DOWN.
+ */
+ public const HALF_CEILING = 7;
+
+ /**
+ * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards negative infinity.
+ *
+ * If the result is positive, behaves as for HALF_DOWN; if negative, behaves as for HALF_UP.
+ */
+ public const HALF_FLOOR = 8;
+
+ /**
+ * Rounds towards the "nearest neighbor" unless both neighbors are equidistant, in which case rounds towards the even neighbor.
+ *
+ * Behaves as for HALF_UP if the digit to the left of the discarded fraction is odd;
+ * behaves as for HALF_DOWN if it's even.
+ *
+ * Note that this is the rounding mode that statistically minimizes
+ * cumulative error when applied repeatedly over a sequence of calculations.
+ * It is sometimes known as "Banker's rounding", and is chiefly used in the USA.
+ */
+ public const HALF_EVEN = 9;
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/LICENSE b/vendor/carbonphp/carbon-doctrine-types/LICENSE
new file mode 100644
index 0000000..2ee1671
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Carbon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/carbonphp/carbon-doctrine-types/README.md b/vendor/carbonphp/carbon-doctrine-types/README.md
new file mode 100644
index 0000000..5a18121
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/README.md
@@ -0,0 +1,14 @@
+# carbonphp/carbon-doctrine-types
+
+Types to use Carbon in Doctrine
+
+## Documentation
+
+[Check how to use in the official Carbon documentation](https://carbon.nesbot.com/symfony/)
+
+This package is an externalization of [src/Carbon/Doctrine](https://github.com/briannesbitt/Carbon/tree/2.71.0/src/Carbon/Doctrine)
+from `nestbot/carbon` package.
+
+Externalization allows to better deal with different versions of dbal. With
+version 4.0 of dbal, it no longer sustainable to be compatible with all version
+using a single code.
diff --git a/vendor/carbonphp/carbon-doctrine-types/composer.json b/vendor/carbonphp/carbon-doctrine-types/composer.json
new file mode 100644
index 0000000..b5fd8a5
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "carbonphp/carbon-doctrine-types",
+ "description": "Types to use Carbon in Doctrine",
+ "type": "library",
+ "keywords": [
+ "date",
+ "time",
+ "DateTime",
+ "Carbon",
+ "Doctrine"
+ ],
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.7.0",
+ "nesbot/carbon": "^2.71.0 || ^3.0.0",
+ "phpunit/phpunit": "^10.3"
+ },
+ "conflict": {
+ "doctrine/dbal": "<3.7.0 || >=4.0.0"
+ },
+ "license": "MIT",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
+ }
+ },
+ "authors": [
+ {
+ "name": "KyleKatarn",
+ "email": "kylekatarnls@gmail.com"
+ }
+ ],
+ "minimum-stability": "dev"
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php
new file mode 100644
index 0000000..8c42dc0
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php
@@ -0,0 +1,14 @@
+
+ */
+ protected function getCarbonClassName(): string
+ {
+ return Carbon::class;
+ }
+
+ public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
+ {
+ $precision = min(
+ $fieldDeclaration['precision'] ?? DateTimeDefaultPrecision::get(),
+ $this->getMaximumPrecision($platform),
+ );
+
+ $type = parent::getSQLDeclaration($fieldDeclaration, $platform);
+
+ if (!$precision) {
+ return $type;
+ }
+
+ if (str_contains($type, '(')) {
+ return preg_replace('/\(\d+\)/', "($precision)", $type);
+ }
+
+ [$before, $after] = explode(' ', "$type ");
+
+ return trim("$before($precision) $after");
+ }
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ *
+ * @return T|null
+ */
+ public function convertToPHPValue($value, AbstractPlatform $platform)
+ {
+ $class = $this->getCarbonClassName();
+
+ if ($value === null || is_a($value, $class)) {
+ return $value;
+ }
+
+ if ($value instanceof DateTimeInterface) {
+ return $class::instance($value);
+ }
+
+ $date = null;
+ $error = null;
+
+ try {
+ $date = $class::parse($value);
+ } catch (Exception $exception) {
+ $error = $exception;
+ }
+
+ if (!$date) {
+ throw ConversionException::conversionFailedFormat(
+ $value,
+ $this->getTypeName(),
+ 'Y-m-d H:i:s.u or any format supported by '.$class.'::parse()',
+ $error
+ );
+ }
+
+ return $date;
+ }
+
+ /**
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string
+ {
+ if ($value === null) {
+ return $value;
+ }
+
+ if ($value instanceof DateTimeInterface) {
+ return $value->format('Y-m-d H:i:s.u');
+ }
+
+ throw ConversionException::conversionFailedInvalidType(
+ $value,
+ $this->getTypeName(),
+ ['null', 'DateTime', 'Carbon']
+ );
+ }
+
+ private function getTypeName(): string
+ {
+ $chunks = explode('\\', static::class);
+ $type = preg_replace('/Type$/', '', end($chunks));
+
+ return strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $type));
+ }
+
+ private function getMaximumPrecision(AbstractPlatform $platform): int
+ {
+ if ($platform instanceof DB2Platform) {
+ return 12;
+ }
+
+ if ($platform instanceof OraclePlatform) {
+ return 9;
+ }
+
+ if ($platform instanceof SQLServerPlatform || $platform instanceof SqlitePlatform) {
+ return 3;
+ }
+
+ return 6;
+ }
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
new file mode 100644
index 0000000..3a9ff11
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
@@ -0,0 +1,28 @@
+ */
+ use CarbonTypeConverter;
+
+ /**
+ * @return class-string
+ */
+ protected function getCarbonClassName(): string
+ {
+ return CarbonImmutable::class;
+ }
+}
diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php
new file mode 100644
index 0000000..3bf07e9
--- /dev/null
+++ b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php
@@ -0,0 +1,12 @@
+ */
+ use CarbonTypeConverter;
+}
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
new file mode 100644
index 0000000..7824d8f
--- /dev/null
+++ b/vendor/composer/ClassLoader.php
@@ -0,0 +1,579 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier
+ * @author Jordi Boggiano
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ /** @var \Closure(string):void */
+ private static $includeFile;
+
+ /** @var string|null */
+ private $vendorDir;
+
+ // PSR-4
+ /**
+ * @var array>
+ */
+ private $prefixLengthsPsr4 = array();
+ /**
+ * @var array>
+ */
+ private $prefixDirsPsr4 = array();
+ /**
+ * @var list
+ */
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ /**
+ * List of PSR-0 prefixes
+ *
+ * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+ *
+ * @var array>>
+ */
+ private $prefixesPsr0 = array();
+ /**
+ * @var list
+ */
+ private $fallbackDirsPsr0 = array();
+
+ /** @var bool */
+ private $useIncludePath = false;
+
+ /**
+ * @var array
+ */
+ private $classMap = array();
+
+ /** @var bool */
+ private $classMapAuthoritative = false;
+
+ /**
+ * @var array
+ */
+ private $missingClasses = array();
+
+ /** @var string|null */
+ private $apcuPrefix;
+
+ /**
+ * @var array
+ */
+ private static $registeredLoaders = array();
+
+ /**
+ * @param string|null $vendorDir
+ */
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ self::initializeIncludeClosure();
+ }
+
+ /**
+ * @return array>
+ */
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+ }
+
+ return array();
+ }
+
+ /**
+ * @return array>
+ */
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ /**
+ * @return list
+ */
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ /**
+ * @return list
+ */
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ /**
+ * @return array Array of classname => path
+ */
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ *
+ * @return void
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 base directories
+ *
+ * @return void
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ *
+ * @return void
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ *
+ * @return void
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ *
+ * @return void
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ *
+ * @return void
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return true|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ $includeFile = self::$includeFile;
+ $includeFile($file);
+
+ return true;
+ }
+
+ return null;
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ /**
+ * Returns the currently registered loaders keyed by their corresponding vendor directories.
+ *
+ * @return array
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath . '\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ if (file_exists($file = $dir . $pathEnd)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+
+ /**
+ * @return void
+ */
+ private static function initializeIncludeClosure()
+ {
+ if (self::$includeFile !== null) {
+ return;
+ }
+
+ /**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ */
+ self::$includeFile = \Closure::bind(static function($file) {
+ include $file;
+ }, null, null);
+ }
+}
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
new file mode 100644
index 0000000..51e734a
--- /dev/null
+++ b/vendor/composer/InstalledVersions.php
@@ -0,0 +1,359 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints((string) $constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require $vendorDir.'/composer/installed.php';
+ $installed[] = self::$installedByVendor[$vendorDir] = $required;
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require __DIR__ . '/installed.php';
+ self::$installed = $required;
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ if (self::$installed !== array()) {
+ $installed[] = self::$installed;
+ }
+
+ return $installed;
+ }
+}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
new file mode 100644
index 0000000..f27399a
--- /dev/null
+++ b/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
new file mode 100644
index 0000000..190175d
--- /dev/null
+++ b/vendor/composer/autoload_classmap.php
@@ -0,0 +1,88 @@
+ $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
+ 'DateError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
+ 'DateException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
+ 'DateInvalidOperationException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
+ 'DateInvalidTimeZoneException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php',
+ 'DateMalformedIntervalStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php',
+ 'DateMalformedPeriodStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php',
+ 'DateMalformedStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
+ 'DateObjectError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
+ 'DateRangeError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
+ 'Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\HtmlStringable' => $vendorDir . '/nette/utils/src/HtmlStringable.php',
+ 'Nette\\IOException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php',
+ 'Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php',
+ 'Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/compatibility.php',
+ 'Nette\\Localization\\Translator' => $vendorDir . '/nette/utils/src/Translator.php',
+ 'Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\Schema\\Context' => $vendorDir . '/nette/schema/src/Schema/Context.php',
+ 'Nette\\Schema\\DynamicParameter' => $vendorDir . '/nette/schema/src/Schema/DynamicParameter.php',
+ 'Nette\\Schema\\Elements\\AnyOf' => $vendorDir . '/nette/schema/src/Schema/Elements/AnyOf.php',
+ 'Nette\\Schema\\Elements\\Base' => $vendorDir . '/nette/schema/src/Schema/Elements/Base.php',
+ 'Nette\\Schema\\Elements\\Structure' => $vendorDir . '/nette/schema/src/Schema/Elements/Structure.php',
+ 'Nette\\Schema\\Elements\\Type' => $vendorDir . '/nette/schema/src/Schema/Elements/Type.php',
+ 'Nette\\Schema\\Expect' => $vendorDir . '/nette/schema/src/Schema/Expect.php',
+ 'Nette\\Schema\\Helpers' => $vendorDir . '/nette/schema/src/Schema/Helpers.php',
+ 'Nette\\Schema\\Message' => $vendorDir . '/nette/schema/src/Schema/Message.php',
+ 'Nette\\Schema\\Processor' => $vendorDir . '/nette/schema/src/Schema/Processor.php',
+ 'Nette\\Schema\\Schema' => $vendorDir . '/nette/schema/src/Schema/Schema.php',
+ 'Nette\\Schema\\ValidationException' => $vendorDir . '/nette/schema/src/Schema/ValidationException.php',
+ 'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php',
+ 'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php',
+ 'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php',
+ 'Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php',
+ 'Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php',
+ 'Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php',
+ 'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php',
+ 'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php',
+ 'Nette\\Utils\\FileInfo' => $vendorDir . '/nette/utils/src/Utils/FileInfo.php',
+ 'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php',
+ 'Nette\\Utils\\Finder' => $vendorDir . '/nette/utils/src/Utils/Finder.php',
+ 'Nette\\Utils\\Floats' => $vendorDir . '/nette/utils/src/Utils/Floats.php',
+ 'Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php',
+ 'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php',
+ 'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php',
+ 'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php',
+ 'Nette\\Utils\\ImageColor' => $vendorDir . '/nette/utils/src/Utils/ImageColor.php',
+ 'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\ImageType' => $vendorDir . '/nette/utils/src/Utils/ImageType.php',
+ 'Nette\\Utils\\Iterables' => $vendorDir . '/nette/utils/src/Utils/Iterables.php',
+ 'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php',
+ 'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php',
+ 'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php',
+ 'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php',
+ 'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php',
+ 'Nette\\Utils\\ReflectionMethod' => $vendorDir . '/nette/utils/src/Utils/ReflectionMethod.php',
+ 'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php',
+ 'Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php',
+ 'Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php',
+ 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
+ 'Override' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/Override.php',
+ 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
+ 'SQLite3Exception' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php',
+ 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+ 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+ 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
new file mode 100644
index 0000000..ad7eb93
--- /dev/null
+++ b/vendor/composer/autoload_files.php
@@ -0,0 +1,41 @@
+ $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
+ 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
+ '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
+ '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php',
+ 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php',
+ '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php',
+ '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
+ '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
+ 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
+ '29ffe97919493792170d47eb03a68da9' => $vendorDir . '/blade-ui-kit/blade-icons/src/helpers.php',
+ '40275907c8566c390185147049ef6e5d' => $vendorDir . '/livewire/livewire/src/helpers.php',
+ '2c620c99f96a2b964346b45a4d1d1e64' => $vendorDir . '/spatie/invade/src/functions.php',
+ 'e125f489d647ae664b0af7b573079de7' => $vendorDir . '/filament/support/src/helpers.php',
+ '09f6b20656683369174dd6fa83b7e5fb' => $vendorDir . '/symfony/polyfill-uuid/bootstrap.php',
+ 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
+ '47e1160838b5e5a10346ac4084b58c23' => $vendorDir . '/laravel/prompts/src/helpers.php',
+ '35a6ad97d21e794e7e22a17d806652e4' => $vendorDir . '/nunomaduro/termwind/src/Functions.php',
+ 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
+ '265b4faa2b3a9766332744949e83bf97' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/helpers.php',
+ 'c7a3c339e7e14b60e06a2d7fcce9476b' => $vendorDir . '/laravel/framework/src/Illuminate/Events/functions.php',
+ 'f57d353b41eb2e234b26064d63d8c5dd' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/functions.php',
+ 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php',
+ '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php',
+ '9e4824c5afbdc1482b6025ce3d4dfde8' => $vendorDir . '/league/csv/src/functions_include.php',
+ '9261e07cd92c53dcc971c7c88c176c04' => $vendorDir . '/danharrin/date-format-converter/src/helpers.php',
+ '9720327d09ed9a4ba00c9b5071b71c7d' => $vendorDir . '/danharrin/date-format-converter/src/standards.php',
+ '2ad94ea6f6f6013119e9abcf4e302a08' => $vendorDir . '/filament/forms/src/helpers.php',
+ 'b69d5f1f95cd1ed438c038b6cbcc45b5' => $vendorDir . '/filament/notifications/src/Testing/Autoload.php',
+ '89e9938b64b06cc502d7ceca69a380fe' => $vendorDir . '/filament/filament/src/global_helpers.php',
+ 'ebb446bb6d02e998480945fbbb73dc64' => $vendorDir . '/filament/filament/src/helpers.php',
+);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
new file mode 100644
index 0000000..15a2ff3
--- /dev/null
+++ b/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+ array($vendorDir . '/voku/portable-ascii/src/voku'),
+ 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
+ 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
+ 'TijsVerkoyen\\CssToInlineStyles\\' => array($vendorDir . '/tijsverkoyen/css-to-inline-styles/src'),
+ 'Termwind\\' => array($vendorDir . '/nunomaduro/termwind/src'),
+ 'Symfony\\Polyfill\\Uuid\\' => array($vendorDir . '/symfony/polyfill-uuid'),
+ 'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'),
+ 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
+ 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
+ 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
+ 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'),
+ 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
+ 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'),
+ 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
+ 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'),
+ 'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
+ 'Symfony\\Component\\Uid\\' => array($vendorDir . '/symfony/uid'),
+ 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
+ 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'),
+ 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
+ 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
+ 'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'),
+ 'Symfony\\Component\\Mailer\\' => array($vendorDir . '/symfony/mailer'),
+ 'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'),
+ 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
+ 'Symfony\\Component\\HtmlSanitizer\\' => array($vendorDir . '/symfony/html-sanitizer'),
+ 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
+ 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
+ 'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'),
+ 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'),
+ 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
+ 'Spatie\\TemporaryDirectory\\' => array($vendorDir . '/spatie/temporary-directory/src'),
+ 'Spatie\\LaravelSettings\\' => array($vendorDir . '/spatie/laravel-settings/src'),
+ 'Spatie\\LaravelPackageTools\\' => array($vendorDir . '/spatie/laravel-package-tools/src'),
+ 'Spatie\\Invade\\' => array($vendorDir . '/spatie/invade/src'),
+ 'Spatie\\Color\\' => array($vendorDir . '/spatie/color/src'),
+ 'RyanChandler\\BladeCaptureDirective\\Database\\Factories\\' => array($vendorDir . '/ryangjchandler/blade-capture-directive/database/factories'),
+ 'RyanChandler\\BladeCaptureDirective\\' => array($vendorDir . '/ryangjchandler/blade-capture-directive/src'),
+ 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'),
+ 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'),
+ 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
+ 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', $vendorDir . '/psr/http-factory/src'),
+ 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
+ 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
+ 'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
+ 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
+ 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
+ 'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'),
+ 'OpenSpout\\' => array($vendorDir . '/openspout/openspout/src'),
+ 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
+ 'Masterminds\\' => array($vendorDir . '/masterminds/html5/src'),
+ 'Livewire\\' => array($vendorDir . '/livewire/livewire/src'),
+ 'League\\Uri\\' => array($vendorDir . '/league/uri', $vendorDir . '/league/uri-interfaces'),
+ 'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
+ 'League\\Flysystem\\Local\\' => array($vendorDir . '/league/flysystem-local'),
+ 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
+ 'League\\Csv\\' => array($vendorDir . '/league/csv/src'),
+ 'League\\Config\\' => array($vendorDir . '/league/config/src'),
+ 'League\\CommonMark\\' => array($vendorDir . '/league/commonmark/src'),
+ 'Laravel\\SerializableClosure\\' => array($vendorDir . '/laravel/serializable-closure/src'),
+ 'Laravel\\Prompts\\' => array($vendorDir . '/laravel/prompts/src'),
+ 'Kirschbaum\\PowerJoins\\' => array($vendorDir . '/kirschbaum-development/eloquent-power-joins/src'),
+ 'Illuminate\\Support\\' => array($vendorDir . '/laravel/framework/src/Illuminate/Macroable', $vendorDir . '/laravel/framework/src/Illuminate/Collections', $vendorDir . '/laravel/framework/src/Illuminate/Conditionable'),
+ 'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'),
+ 'GuzzleHttp\\UriTemplate\\' => array($vendorDir . '/guzzlehttp/uri-template/src'),
+ 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'),
+ 'Fruitcake\\Cors\\' => array($vendorDir . '/fruitcake/php-cors/src'),
+ 'Filament\\Widgets\\' => array($vendorDir . '/filament/widgets/src'),
+ 'Filament\\Tables\\' => array($vendorDir . '/filament/tables/src'),
+ 'Filament\\Support\\' => array($vendorDir . '/filament/support/src'),
+ 'Filament\\Notifications\\' => array($vendorDir . '/filament/notifications/src'),
+ 'Filament\\Infolists\\' => array($vendorDir . '/filament/infolists/src'),
+ 'Filament\\Forms\\' => array($vendorDir . '/filament/forms/src'),
+ 'Filament\\Actions\\' => array($vendorDir . '/filament/actions/src'),
+ 'Filament\\' => array($vendorDir . '/filament/spatie-laravel-settings-plugin/src', $vendorDir . '/filament/filament/src'),
+ 'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/src'),
+ 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'),
+ 'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'),
+ 'Doctrine\\Deprecations\\' => array($vendorDir . '/doctrine/deprecations/lib/Doctrine/Deprecations'),
+ 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/src'),
+ 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/src'),
+ 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'),
+ 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/event-manager/src'),
+ 'Dflydev\\DotAccessData\\' => array($vendorDir . '/dflydev/dot-access-data/src'),
+ 'DanHarrin\\LivewireRateLimiting\\' => array($vendorDir . '/danharrin/livewire-rate-limiting/src'),
+ 'DanHarrin\\DateFormatConverter\\' => array($vendorDir . '/danharrin/date-format-converter/src'),
+ 'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'),
+ 'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'),
+ 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
+ 'Brick\\Math\\' => array($vendorDir . '/brick/math/src'),
+ 'BladeUI\\Icons\\' => array($vendorDir . '/blade-ui-kit/blade-icons/src'),
+ 'BladeUI\\Heroicons\\' => array($vendorDir . '/blade-ui-kit/blade-heroicons/src'),
+ 'AnourValar\\EloquentSerialize\\' => array($vendorDir . '/anourvalar/eloquent-serialize/src'),
+);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
new file mode 100644
index 0000000..4d314a4
--- /dev/null
+++ b/vendor/composer/autoload_real.php
@@ -0,0 +1,50 @@
+register(true);
+
+ $filesToLoad = \Composer\Autoload\ComposerStaticInita5d82b72eee1504d2f808d7e5e2a499c::$files;
+ $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+ require $file;
+ }
+ }, null, null);
+ foreach ($filesToLoad as $fileIdentifier => $file) {
+ $requireFile($fileIdentifier, $file);
+ }
+
+ return $loader;
+ }
+}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
new file mode 100644
index 0000000..b59a8f0
--- /dev/null
+++ b/vendor/composer/autoload_static.php
@@ -0,0 +1,684 @@
+ __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
+ 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
+ '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
+ '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php',
+ 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php',
+ '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php',
+ '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
+ '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
+ 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
+ '29ffe97919493792170d47eb03a68da9' => __DIR__ . '/..' . '/blade-ui-kit/blade-icons/src/helpers.php',
+ '40275907c8566c390185147049ef6e5d' => __DIR__ . '/..' . '/livewire/livewire/src/helpers.php',
+ '2c620c99f96a2b964346b45a4d1d1e64' => __DIR__ . '/..' . '/spatie/invade/src/functions.php',
+ 'e125f489d647ae664b0af7b573079de7' => __DIR__ . '/..' . '/filament/support/src/helpers.php',
+ '09f6b20656683369174dd6fa83b7e5fb' => __DIR__ . '/..' . '/symfony/polyfill-uuid/bootstrap.php',
+ 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php',
+ '47e1160838b5e5a10346ac4084b58c23' => __DIR__ . '/..' . '/laravel/prompts/src/helpers.php',
+ '35a6ad97d21e794e7e22a17d806652e4' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Functions.php',
+ 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
+ '265b4faa2b3a9766332744949e83bf97' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/helpers.php',
+ 'c7a3c339e7e14b60e06a2d7fcce9476b' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/functions.php',
+ 'f57d353b41eb2e234b26064d63d8c5dd' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/functions.php',
+ 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php',
+ '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php',
+ '9e4824c5afbdc1482b6025ce3d4dfde8' => __DIR__ . '/..' . '/league/csv/src/functions_include.php',
+ '9261e07cd92c53dcc971c7c88c176c04' => __DIR__ . '/..' . '/danharrin/date-format-converter/src/helpers.php',
+ '9720327d09ed9a4ba00c9b5071b71c7d' => __DIR__ . '/..' . '/danharrin/date-format-converter/src/standards.php',
+ '2ad94ea6f6f6013119e9abcf4e302a08' => __DIR__ . '/..' . '/filament/forms/src/helpers.php',
+ 'b69d5f1f95cd1ed438c038b6cbcc45b5' => __DIR__ . '/..' . '/filament/notifications/src/Testing/Autoload.php',
+ '89e9938b64b06cc502d7ceca69a380fe' => __DIR__ . '/..' . '/filament/filament/src/global_helpers.php',
+ 'ebb446bb6d02e998480945fbbb73dc64' => __DIR__ . '/..' . '/filament/filament/src/helpers.php',
+ );
+
+ public static $prefixLengthsPsr4 = array (
+ 'v' =>
+ array (
+ 'voku\\' => 5,
+ ),
+ 'p' =>
+ array (
+ 'phpDocumentor\\Reflection\\' => 25,
+ ),
+ 'W' =>
+ array (
+ 'Webmozart\\Assert\\' => 17,
+ ),
+ 'T' =>
+ array (
+ 'TijsVerkoyen\\CssToInlineStyles\\' => 31,
+ 'Termwind\\' => 9,
+ ),
+ 'S' =>
+ array (
+ 'Symfony\\Polyfill\\Uuid\\' => 22,
+ 'Symfony\\Polyfill\\Php83\\' => 23,
+ 'Symfony\\Polyfill\\Php80\\' => 23,
+ 'Symfony\\Polyfill\\Php72\\' => 23,
+ 'Symfony\\Polyfill\\Mbstring\\' => 26,
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
+ 'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31,
+ 'Symfony\\Polyfill\\Ctype\\' => 23,
+ 'Symfony\\Contracts\\Translation\\' => 30,
+ 'Symfony\\Contracts\\Service\\' => 26,
+ 'Symfony\\Contracts\\EventDispatcher\\' => 34,
+ 'Symfony\\Component\\VarDumper\\' => 28,
+ 'Symfony\\Component\\Uid\\' => 22,
+ 'Symfony\\Component\\Translation\\' => 30,
+ 'Symfony\\Component\\String\\' => 25,
+ 'Symfony\\Component\\Routing\\' => 26,
+ 'Symfony\\Component\\Process\\' => 26,
+ 'Symfony\\Component\\Mime\\' => 23,
+ 'Symfony\\Component\\Mailer\\' => 25,
+ 'Symfony\\Component\\HttpKernel\\' => 29,
+ 'Symfony\\Component\\HttpFoundation\\' => 33,
+ 'Symfony\\Component\\HtmlSanitizer\\' => 32,
+ 'Symfony\\Component\\Finder\\' => 25,
+ 'Symfony\\Component\\EventDispatcher\\' => 34,
+ 'Symfony\\Component\\ErrorHandler\\' => 31,
+ 'Symfony\\Component\\CssSelector\\' => 30,
+ 'Symfony\\Component\\Console\\' => 26,
+ 'Spatie\\TemporaryDirectory\\' => 26,
+ 'Spatie\\LaravelSettings\\' => 23,
+ 'Spatie\\LaravelPackageTools\\' => 27,
+ 'Spatie\\Invade\\' => 14,
+ 'Spatie\\Color\\' => 13,
+ ),
+ 'R' =>
+ array (
+ 'RyanChandler\\BladeCaptureDirective\\Database\\Factories\\' => 54,
+ 'RyanChandler\\BladeCaptureDirective\\' => 35,
+ 'Ramsey\\Uuid\\' => 12,
+ 'Ramsey\\Collection\\' => 18,
+ ),
+ 'P' =>
+ array (
+ 'Psr\\SimpleCache\\' => 16,
+ 'Psr\\Log\\' => 8,
+ 'Psr\\Http\\Message\\' => 17,
+ 'Psr\\EventDispatcher\\' => 20,
+ 'Psr\\Container\\' => 14,
+ 'Psr\\Clock\\' => 10,
+ 'Psr\\Cache\\' => 10,
+ 'PhpOption\\' => 10,
+ 'PHPStan\\PhpDocParser\\' => 21,
+ ),
+ 'O' =>
+ array (
+ 'OpenSpout\\' => 10,
+ ),
+ 'M' =>
+ array (
+ 'Monolog\\' => 8,
+ 'Masterminds\\' => 12,
+ ),
+ 'L' =>
+ array (
+ 'Livewire\\' => 9,
+ 'League\\Uri\\' => 11,
+ 'League\\MimeTypeDetection\\' => 25,
+ 'League\\Flysystem\\Local\\' => 23,
+ 'League\\Flysystem\\' => 17,
+ 'League\\Csv\\' => 11,
+ 'League\\Config\\' => 14,
+ 'League\\CommonMark\\' => 18,
+ 'Laravel\\SerializableClosure\\' => 28,
+ 'Laravel\\Prompts\\' => 16,
+ ),
+ 'K' =>
+ array (
+ 'Kirschbaum\\PowerJoins\\' => 22,
+ ),
+ 'I' =>
+ array (
+ 'Illuminate\\Support\\' => 19,
+ 'Illuminate\\' => 11,
+ ),
+ 'G' =>
+ array (
+ 'GuzzleHttp\\UriTemplate\\' => 23,
+ 'GrahamCampbell\\ResultType\\' => 26,
+ ),
+ 'F' =>
+ array (
+ 'Fruitcake\\Cors\\' => 15,
+ 'Filament\\Widgets\\' => 17,
+ 'Filament\\Tables\\' => 16,
+ 'Filament\\Support\\' => 17,
+ 'Filament\\Notifications\\' => 23,
+ 'Filament\\Infolists\\' => 19,
+ 'Filament\\Forms\\' => 15,
+ 'Filament\\Actions\\' => 17,
+ 'Filament\\' => 9,
+ ),
+ 'E' =>
+ array (
+ 'Egulias\\EmailValidator\\' => 23,
+ ),
+ 'D' =>
+ array (
+ 'Dotenv\\' => 7,
+ 'Doctrine\\Inflector\\' => 19,
+ 'Doctrine\\Deprecations\\' => 22,
+ 'Doctrine\\DBAL\\' => 14,
+ 'Doctrine\\Common\\Lexer\\' => 22,
+ 'Doctrine\\Common\\Cache\\' => 22,
+ 'Doctrine\\Common\\' => 16,
+ 'Dflydev\\DotAccessData\\' => 22,
+ 'DanHarrin\\LivewireRateLimiting\\' => 31,
+ 'DanHarrin\\DateFormatConverter\\' => 30,
+ ),
+ 'C' =>
+ array (
+ 'Cron\\' => 5,
+ 'Carbon\\Doctrine\\' => 16,
+ 'Carbon\\' => 7,
+ ),
+ 'B' =>
+ array (
+ 'Brick\\Math\\' => 11,
+ 'BladeUI\\Icons\\' => 14,
+ 'BladeUI\\Heroicons\\' => 18,
+ ),
+ 'A' =>
+ array (
+ 'AnourValar\\EloquentSerialize\\' => 29,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'voku\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
+ ),
+ 'phpDocumentor\\Reflection\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
+ 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
+ ),
+ 'Webmozart\\Assert\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webmozart/assert/src',
+ ),
+ 'TijsVerkoyen\\CssToInlineStyles\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src',
+ ),
+ 'Termwind\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/nunomaduro/termwind/src',
+ ),
+ 'Symfony\\Polyfill\\Uuid\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-uuid',
+ ),
+ 'Symfony\\Polyfill\\Php83\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php83',
+ ),
+ 'Symfony\\Polyfill\\Php80\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
+ ),
+ 'Symfony\\Polyfill\\Php72\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
+ ),
+ 'Symfony\\Polyfill\\Mbstring\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
+ ),
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
+ ),
+ 'Symfony\\Polyfill\\Intl\\Idn\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
+ ),
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme',
+ ),
+ 'Symfony\\Polyfill\\Ctype\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
+ ),
+ 'Symfony\\Contracts\\Translation\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/translation-contracts',
+ ),
+ 'Symfony\\Contracts\\Service\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/service-contracts',
+ ),
+ 'Symfony\\Contracts\\EventDispatcher\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts',
+ ),
+ 'Symfony\\Component\\VarDumper\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/var-dumper',
+ ),
+ 'Symfony\\Component\\Uid\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/uid',
+ ),
+ 'Symfony\\Component\\Translation\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/translation',
+ ),
+ 'Symfony\\Component\\String\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/string',
+ ),
+ 'Symfony\\Component\\Routing\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/routing',
+ ),
+ 'Symfony\\Component\\Process\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/process',
+ ),
+ 'Symfony\\Component\\Mime\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/mime',
+ ),
+ 'Symfony\\Component\\Mailer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/mailer',
+ ),
+ 'Symfony\\Component\\HttpKernel\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/http-kernel',
+ ),
+ 'Symfony\\Component\\HttpFoundation\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/http-foundation',
+ ),
+ 'Symfony\\Component\\HtmlSanitizer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/html-sanitizer',
+ ),
+ 'Symfony\\Component\\Finder\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/finder',
+ ),
+ 'Symfony\\Component\\EventDispatcher\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
+ ),
+ 'Symfony\\Component\\ErrorHandler\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/error-handler',
+ ),
+ 'Symfony\\Component\\CssSelector\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/css-selector',
+ ),
+ 'Symfony\\Component\\Console\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/console',
+ ),
+ 'Spatie\\TemporaryDirectory\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/spatie/temporary-directory/src',
+ ),
+ 'Spatie\\LaravelSettings\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/spatie/laravel-settings/src',
+ ),
+ 'Spatie\\LaravelPackageTools\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/spatie/laravel-package-tools/src',
+ ),
+ 'Spatie\\Invade\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/spatie/invade/src',
+ ),
+ 'Spatie\\Color\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/spatie/color/src',
+ ),
+ 'RyanChandler\\BladeCaptureDirective\\Database\\Factories\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/ryangjchandler/blade-capture-directive/database/factories',
+ ),
+ 'RyanChandler\\BladeCaptureDirective\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/ryangjchandler/blade-capture-directive/src',
+ ),
+ 'Ramsey\\Uuid\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/ramsey/uuid/src',
+ ),
+ 'Ramsey\\Collection\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/ramsey/collection/src',
+ ),
+ 'Psr\\SimpleCache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/simple-cache/src',
+ ),
+ 'Psr\\Log\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/log/src',
+ ),
+ 'Psr\\Http\\Message\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/http-message/src',
+ 1 => __DIR__ . '/..' . '/psr/http-factory/src',
+ ),
+ 'Psr\\EventDispatcher\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src',
+ ),
+ 'Psr\\Container\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/container/src',
+ ),
+ 'Psr\\Clock\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/clock/src',
+ ),
+ 'Psr\\Cache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/cache/src',
+ ),
+ 'PhpOption\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption',
+ ),
+ 'PHPStan\\PhpDocParser\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src',
+ ),
+ 'OpenSpout\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/openspout/openspout/src',
+ ),
+ 'Monolog\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
+ ),
+ 'Masterminds\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/masterminds/html5/src',
+ ),
+ 'Livewire\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/livewire/livewire/src',
+ ),
+ 'League\\Uri\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/league/uri',
+ 1 => __DIR__ . '/..' . '/league/uri-interfaces',
+ ),
+ 'League\\MimeTypeDetection\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/league/mime-type-detection/src',
+ ),
+ 'League\\Flysystem\\Local\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/league/flysystem-local',
+ ),
+ 'League\\Flysystem\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/league/flysystem/src',
+ ),
+ 'League\\Csv\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/league/csv/src',
+ ),
+ 'League\\Config\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/league/config/src',
+ ),
+ 'League\\CommonMark\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/league/commonmark/src',
+ ),
+ 'Laravel\\SerializableClosure\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/laravel/serializable-closure/src',
+ ),
+ 'Laravel\\Prompts\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/laravel/prompts/src',
+ ),
+ 'Kirschbaum\\PowerJoins\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/kirschbaum-development/eloquent-power-joins/src',
+ ),
+ 'Illuminate\\Support\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Macroable',
+ 1 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections',
+ 2 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Conditionable',
+ ),
+ 'Illuminate\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate',
+ ),
+ 'GuzzleHttp\\UriTemplate\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/guzzlehttp/uri-template/src',
+ ),
+ 'GrahamCampbell\\ResultType\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src',
+ ),
+ 'Fruitcake\\Cors\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/fruitcake/php-cors/src',
+ ),
+ 'Filament\\Widgets\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/widgets/src',
+ ),
+ 'Filament\\Tables\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/tables/src',
+ ),
+ 'Filament\\Support\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/support/src',
+ ),
+ 'Filament\\Notifications\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/notifications/src',
+ ),
+ 'Filament\\Infolists\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/infolists/src',
+ ),
+ 'Filament\\Forms\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/forms/src',
+ ),
+ 'Filament\\Actions\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/actions/src',
+ ),
+ 'Filament\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/filament/spatie-laravel-settings-plugin/src',
+ 1 => __DIR__ . '/..' . '/filament/filament/src',
+ ),
+ 'Egulias\\EmailValidator\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/egulias/email-validator/src',
+ ),
+ 'Dotenv\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src',
+ ),
+ 'Doctrine\\Inflector\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector',
+ ),
+ 'Doctrine\\Deprecations\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/deprecations/lib/Doctrine/Deprecations',
+ ),
+ 'Doctrine\\DBAL\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/dbal/src',
+ ),
+ 'Doctrine\\Common\\Lexer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/lexer/src',
+ ),
+ 'Doctrine\\Common\\Cache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache',
+ ),
+ 'Doctrine\\Common\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/event-manager/src',
+ ),
+ 'Dflydev\\DotAccessData\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/dflydev/dot-access-data/src',
+ ),
+ 'DanHarrin\\LivewireRateLimiting\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/danharrin/livewire-rate-limiting/src',
+ ),
+ 'DanHarrin\\DateFormatConverter\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/danharrin/date-format-converter/src',
+ ),
+ 'Cron\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron',
+ ),
+ 'Carbon\\Doctrine\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine',
+ ),
+ 'Carbon\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon',
+ ),
+ 'Brick\\Math\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/brick/math/src',
+ ),
+ 'BladeUI\\Icons\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/blade-ui-kit/blade-icons/src',
+ ),
+ 'BladeUI\\Heroicons\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/blade-ui-kit/blade-heroicons/src',
+ ),
+ 'AnourValar\\EloquentSerialize\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/anourvalar/eloquent-serialize/src',
+ ),
+ );
+
+ public static $classMap = array (
+ 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ 'DateError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
+ 'DateException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
+ 'DateInvalidOperationException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
+ 'DateInvalidTimeZoneException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php',
+ 'DateMalformedIntervalStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php',
+ 'DateMalformedPeriodStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php',
+ 'DateMalformedStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
+ 'DateObjectError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
+ 'DateRangeError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
+ 'Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\HtmlStringable' => __DIR__ . '/..' . '/nette/utils/src/HtmlStringable.php',
+ 'Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php',
+ 'Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php',
+ 'Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
+ 'Nette\\Localization\\Translator' => __DIR__ . '/..' . '/nette/utils/src/Translator.php',
+ 'Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\Schema\\Context' => __DIR__ . '/..' . '/nette/schema/src/Schema/Context.php',
+ 'Nette\\Schema\\DynamicParameter' => __DIR__ . '/..' . '/nette/schema/src/Schema/DynamicParameter.php',
+ 'Nette\\Schema\\Elements\\AnyOf' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/AnyOf.php',
+ 'Nette\\Schema\\Elements\\Base' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Base.php',
+ 'Nette\\Schema\\Elements\\Structure' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Structure.php',
+ 'Nette\\Schema\\Elements\\Type' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Type.php',
+ 'Nette\\Schema\\Expect' => __DIR__ . '/..' . '/nette/schema/src/Schema/Expect.php',
+ 'Nette\\Schema\\Helpers' => __DIR__ . '/..' . '/nette/schema/src/Schema/Helpers.php',
+ 'Nette\\Schema\\Message' => __DIR__ . '/..' . '/nette/schema/src/Schema/Message.php',
+ 'Nette\\Schema\\Processor' => __DIR__ . '/..' . '/nette/schema/src/Schema/Processor.php',
+ 'Nette\\Schema\\Schema' => __DIR__ . '/..' . '/nette/schema/src/Schema/Schema.php',
+ 'Nette\\Schema\\ValidationException' => __DIR__ . '/..' . '/nette/schema/src/Schema/ValidationException.php',
+ 'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php',
+ 'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php',
+ 'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
+ 'Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php',
+ 'Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php',
+ 'Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php',
+ 'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php',
+ 'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php',
+ 'Nette\\Utils\\FileInfo' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileInfo.php',
+ 'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php',
+ 'Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/utils/src/Utils/Finder.php',
+ 'Nette\\Utils\\Floats' => __DIR__ . '/..' . '/nette/utils/src/Utils/Floats.php',
+ 'Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php',
+ 'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php',
+ 'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
+ 'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php',
+ 'Nette\\Utils\\ImageColor' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageColor.php',
+ 'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\ImageType' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageType.php',
+ 'Nette\\Utils\\Iterables' => __DIR__ . '/..' . '/nette/utils/src/Utils/Iterables.php',
+ 'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php',
+ 'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php',
+ 'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php',
+ 'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php',
+ 'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php',
+ 'Nette\\Utils\\ReflectionMethod' => __DIR__ . '/..' . '/nette/utils/src/Utils/ReflectionMethod.php',
+ 'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php',
+ 'Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php',
+ 'Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
+ 'Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php',
+ 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
+ 'Override' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/Override.php',
+ 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
+ 'SQLite3Exception' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php',
+ 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+ 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+ 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInita5d82b72eee1504d2f808d7e5e2a499c::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInita5d82b72eee1504d2f808d7e5e2a499c::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInita5d82b72eee1504d2f808d7e5e2a499c::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
new file mode 100644
index 0000000..e363008
--- /dev/null
+++ b/vendor/composer/installed.json
@@ -0,0 +1,8273 @@
+{
+ "packages": [
+ {
+ "name": "anourvalar/eloquent-serialize",
+ "version": "1.2.23",
+ "version_normalized": "1.2.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/AnourValar/eloquent-serialize.git",
+ "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f",
+ "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "laravel/framework": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.26",
+ "laravel/legacy-factories": "^1.1",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.5|^10.5",
+ "psalm/plugin-laravel": "^2.8",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "time": "2024-07-12T10:52:26+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade"
+ }
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "AnourValar\\EloquentSerialize\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Laravel Query Builder (Eloquent) serialization",
+ "homepage": "https://github.com/AnourValar/eloquent-serialize",
+ "keywords": [
+ "anourvalar",
+ "builder",
+ "copy",
+ "eloquent",
+ "job",
+ "laravel",
+ "query",
+ "querybuilder",
+ "queue",
+ "serializable",
+ "serialization",
+ "serialize"
+ ],
+ "support": {
+ "issues": "https://github.com/AnourValar/eloquent-serialize/issues",
+ "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.23"
+ },
+ "install-path": "../anourvalar/eloquent-serialize"
+ },
+ {
+ "name": "blade-ui-kit/blade-heroicons",
+ "version": "2.4.0",
+ "version_normalized": "2.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/blade-ui-kit/blade-heroicons.git",
+ "reference": "a7c377a4ef88cd54712e3e15cbed30446820da0b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/a7c377a4ef88cd54712e3e15cbed30446820da0b",
+ "reference": "a7c377a4ef88cd54712e3e15cbed30446820da0b",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "blade-ui-kit/blade-icons": "^1.6",
+ "illuminate/support": "^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "time": "2024-07-16T07:00:01+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "BladeUI\\Heroicons\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "description": "A package to easily make use of Heroicons in your Laravel Blade views.",
+ "homepage": "https://github.com/blade-ui-kit/blade-heroicons",
+ "keywords": [
+ "Heroicons",
+ "blade",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/blade-ui-kit/blade-heroicons/issues",
+ "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/driesvints",
+ "type": "github"
+ },
+ {
+ "url": "https://www.paypal.com/paypalme/driesvints",
+ "type": "paypal"
+ }
+ ],
+ "install-path": "../blade-ui-kit/blade-heroicons"
+ },
+ {
+ "name": "blade-ui-kit/blade-icons",
+ "version": "1.7.0",
+ "version_normalized": "1.7.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/blade-ui-kit/blade-icons.git",
+ "reference": "74275f44c71e815b85bf7cea66e3bf98c57fb7e4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/74275f44c71e815b85bf7cea66e3bf98c57fb7e4",
+ "reference": "74275f44c71e815b85bf7cea66e3bf98c57fb7e4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/view": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0",
+ "symfony/console": "^5.3|^6.0|^7.0",
+ "symfony/finder": "^5.3|^6.0|^7.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5.1",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "time": "2024-07-29T21:49:30+00:00",
+ "bin": [
+ "bin/blade-icons-generate"
+ ],
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Icons\\BladeIconsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "BladeUI\\Icons\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "description": "A package to easily make use of icons in your Laravel Blade views.",
+ "homepage": "https://github.com/blade-ui-kit/blade-icons",
+ "keywords": [
+ "blade",
+ "icons",
+ "laravel",
+ "svg"
+ ],
+ "support": {
+ "issues": "https://github.com/blade-ui-kit/blade-icons/issues",
+ "source": "https://github.com/blade-ui-kit/blade-icons"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/driesvints",
+ "type": "github"
+ },
+ {
+ "url": "https://www.paypal.com/paypalme/driesvints",
+ "type": "paypal"
+ }
+ ],
+ "install-path": "../blade-ui-kit/blade-icons"
+ },
+ {
+ "name": "brick/math",
+ "version": "0.11.0",
+ "version_normalized": "0.11.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/brick/math.git",
+ "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^9.0",
+ "vimeo/psalm": "5.0.0"
+ },
+ "time": "2023-01-15T23:15:59+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Brick\\Math\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Arbitrary-precision arithmetic library",
+ "keywords": [
+ "Arbitrary-precision",
+ "BigInteger",
+ "BigRational",
+ "arithmetic",
+ "bigdecimal",
+ "bignum",
+ "brick",
+ "math"
+ ],
+ "support": {
+ "issues": "https://github.com/brick/math/issues",
+ "source": "https://github.com/brick/math/tree/0.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/BenMorel",
+ "type": "github"
+ }
+ ],
+ "install-path": "../brick/math"
+ },
+ {
+ "name": "carbonphp/carbon-doctrine-types",
+ "version": "2.1.0",
+ "version_normalized": "2.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
+ "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb",
+ "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<3.7.0 || >=4.0.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.7.0",
+ "nesbot/carbon": "^2.71.0 || ^3.0.0",
+ "phpunit/phpunit": "^10.3"
+ },
+ "time": "2023-12-11T17:09:12+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "KyleKatarn",
+ "email": "kylekatarnls@gmail.com"
+ }
+ ],
+ "description": "Types to use Carbon in Doctrine",
+ "keywords": [
+ "carbon",
+ "date",
+ "datetime",
+ "doctrine",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
+ "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../carbonphp/carbon-doctrine-types"
+ },
+ {
+ "name": "danharrin/date-format-converter",
+ "version": "v0.3.1",
+ "version_normalized": "0.3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/danharrin/date-format-converter.git",
+ "reference": "7c31171bc981e48726729a5f3a05a2d2b63f0b1e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/danharrin/date-format-converter/zipball/7c31171bc981e48726729a5f3a05a2d2b63f0b1e",
+ "reference": "7c31171bc981e48726729a5f3a05a2d2b63f0b1e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2|^8.0"
+ },
+ "time": "2024-06-13T09:38:44+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/helpers.php",
+ "src/standards.php"
+ ],
+ "psr-4": {
+ "DanHarrin\\DateFormatConverter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dan Harrin",
+ "email": "dan@danharrin.com"
+ }
+ ],
+ "description": "Convert token-based date formats between standards.",
+ "homepage": "https://github.com/danharrin/date-format-converter",
+ "support": {
+ "issues": "https://github.com/danharrin/date-format-converter/issues",
+ "source": "https://github.com/danharrin/date-format-converter"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/danharrin",
+ "type": "github"
+ }
+ ],
+ "install-path": "../danharrin/date-format-converter"
+ },
+ {
+ "name": "danharrin/livewire-rate-limiting",
+ "version": "v1.3.0",
+ "version_normalized": "1.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/danharrin/livewire-rate-limiting.git",
+ "reference": "bf16003f0d977b5a41071526d697eec94ac41735"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/bf16003f0d977b5a41071526d697eec94ac41735",
+ "reference": "bf16003f0d977b5a41071526d697eec94ac41735",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/support": "^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "livewire/livewire": "^3.0",
+ "livewire/volt": "^1.3",
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.0"
+ },
+ "time": "2024-01-21T14:53:34+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "DanHarrin\\LivewireRateLimiting\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dan Harrin",
+ "email": "dan@danharrin.com"
+ }
+ ],
+ "description": "Apply rate limiters to Laravel Livewire actions.",
+ "homepage": "https://github.com/danharrin/livewire-rate-limiting",
+ "support": {
+ "issues": "https://github.com/danharrin/livewire-rate-limiting/issues",
+ "source": "https://github.com/danharrin/livewire-rate-limiting"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/danharrin",
+ "type": "github"
+ }
+ ],
+ "install-path": "../danharrin/livewire-rate-limiting"
+ },
+ {
+ "name": "dflydev/dot-access-data",
+ "version": "v3.0.3",
+ "version_normalized": "3.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+ "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f",
+ "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.42",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
+ "scrutinizer/ocular": "1.6.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.0.0"
+ },
+ "time": "2024-07-08T12:26:09+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Dflydev\\DotAccessData\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dragonfly Development Inc.",
+ "email": "info@dflydev.com",
+ "homepage": "http://dflydev.com"
+ },
+ {
+ "name": "Beau Simensen",
+ "email": "beau@dflydev.com",
+ "homepage": "http://beausimensen.com"
+ },
+ {
+ "name": "Carlos Frutos",
+ "email": "carlos@kiwing.it",
+ "homepage": "https://github.com/cfrutos"
+ },
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com"
+ }
+ ],
+ "description": "Given a deep data structure, access data by dot notation.",
+ "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+ "keywords": [
+ "access",
+ "data",
+ "dot",
+ "notation"
+ ],
+ "support": {
+ "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
+ "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3"
+ },
+ "install-path": "../dflydev/dot-access-data"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "2.2.0",
+ "version_normalized": "2.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "~7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/coding-standard": "^9",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "symfony/cache": "^4.4 || ^5.4 || ^6",
+ "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
+ },
+ "time": "2022-05-20T20:07:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
+ "homepage": "https://www.doctrine-project.org/projects/cache.html",
+ "keywords": [
+ "abstraction",
+ "apcu",
+ "cache",
+ "caching",
+ "couchdb",
+ "memcached",
+ "php",
+ "redis",
+ "xcache"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/cache/issues",
+ "source": "https://github.com/doctrine/cache/tree/2.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/cache"
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "3.8.6",
+ "version_normalized": "3.8.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/b7411825cf7efb7e51f9791dea19d86e43b399a1",
+ "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "composer-runtime-api": "^2",
+ "doctrine/cache": "^1.11|^2.0",
+ "doctrine/deprecations": "^0.5.3|^1",
+ "doctrine/event-manager": "^1|^2",
+ "php": "^7.4 || ^8.0",
+ "psr/cache": "^1|^2|^3",
+ "psr/log": "^1|^2|^3"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "12.0.0",
+ "fig/log-test": "^1",
+ "jetbrains/phpstorm-stubs": "2023.1",
+ "phpstan/phpstan": "1.11.5",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpunit/phpunit": "9.6.19",
+ "psalm/plugin-phpunit": "0.18.4",
+ "slevomat/coding-standard": "8.13.1",
+ "squizlabs/php_codesniffer": "3.10.1",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/console": "^4.4|^5.4|^6.0|^7.0",
+ "vimeo/psalm": "4.30.0"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "time": "2024-06-19T10:38:17+00:00",
+ "bin": [
+ "bin/doctrine-dbal"
+ ],
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\DBAL\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
+ "homepage": "https://www.doctrine-project.org/projects/dbal.html",
+ "keywords": [
+ "abstraction",
+ "database",
+ "db2",
+ "dbal",
+ "mariadb",
+ "mssql",
+ "mysql",
+ "oci8",
+ "oracle",
+ "pdo",
+ "pgsql",
+ "postgresql",
+ "queryobject",
+ "sasql",
+ "sql",
+ "sqlite",
+ "sqlserver",
+ "sqlsrv"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/dbal/issues",
+ "source": "https://github.com/doctrine/dbal/tree/3.8.6"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/dbal"
+ },
+ {
+ "name": "doctrine/deprecations",
+ "version": "1.1.3",
+ "version_normalized": "1.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "phpstan/phpstan": "1.4.10 || 1.10.15",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psalm/plugin-phpunit": "0.18.4",
+ "psr/log": "^1 || ^2 || ^3",
+ "vimeo/psalm": "4.30.0 || 5.12.0"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
+ },
+ "time": "2024-01-30T19:34:25+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+ "homepage": "https://www.doctrine-project.org/",
+ "support": {
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
+ },
+ "install-path": "../doctrine/deprecations"
+ },
+ {
+ "name": "doctrine/event-manager",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/event-manager.git",
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e",
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "conflict": {
+ "doctrine/common": "<2.9"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.8.8",
+ "phpunit/phpunit": "^10.5",
+ "vimeo/psalm": "^5.24"
+ },
+ "time": "2024-05-22T20:47:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
+ "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
+ "keywords": [
+ "event",
+ "event dispatcher",
+ "event manager",
+ "event system",
+ "events"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/event-manager/issues",
+ "source": "https://github.com/doctrine/event-manager/tree/2.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/event-manager"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "2.0.10",
+ "version_normalized": "2.0.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^11.0",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25 || ^5.4"
+ },
+ "time": "2024-02-18T20:23:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.10"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/inflector"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "3.0.1",
+ "version_normalized": "3.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.5",
+ "psalm/plugin-phpunit": "^0.18.3",
+ "vimeo/psalm": "^5.21"
+ },
+ "time": "2024-02-05T11:56:58+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/3.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/lexer"
+ },
+ {
+ "name": "dragonmantank/cron-expression",
+ "version": "v3.3.3",
+ "version_normalized": "3.3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dragonmantank/cron-expression.git",
+ "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a",
+ "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2|^8.0",
+ "webmozart/assert": "^1.0"
+ },
+ "replace": {
+ "mtdowling/cron-expression": "^1.0"
+ },
+ "require-dev": {
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-webmozart-assert": "^1.0",
+ "phpunit/phpunit": "^7.0|^8.0|^9.0"
+ },
+ "time": "2023-08-10T19:36:49+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Cron\\": "src/Cron/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Tankersley",
+ "email": "chris@ctankersley.com",
+ "homepage": "https://github.com/dragonmantank"
+ }
+ ],
+ "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
+ "keywords": [
+ "cron",
+ "schedule"
+ ],
+ "support": {
+ "issues": "https://github.com/dragonmantank/cron-expression/issues",
+ "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/dragonmantank",
+ "type": "github"
+ }
+ ],
+ "install-path": "../dragonmantank/cron-expression"
+ },
+ {
+ "name": "egulias/email-validator",
+ "version": "4.0.2",
+ "version_normalized": "4.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/egulias/EmailValidator.git",
+ "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e",
+ "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "doctrine/lexer": "^2.0 || ^3.0",
+ "php": ">=8.1",
+ "symfony/polyfill-intl-idn": "^1.26"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.2",
+ "vimeo/psalm": "^5.12"
+ },
+ "suggest": {
+ "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
+ },
+ "time": "2023-10-06T06:47:41+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Egulias\\EmailValidator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Eduardo Gulias Davis"
+ }
+ ],
+ "description": "A library for validating emails against several RFCs",
+ "homepage": "https://github.com/egulias/EmailValidator",
+ "keywords": [
+ "email",
+ "emailvalidation",
+ "emailvalidator",
+ "validation",
+ "validator"
+ ],
+ "support": {
+ "issues": "https://github.com/egulias/EmailValidator/issues",
+ "source": "https://github.com/egulias/EmailValidator/tree/4.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/egulias",
+ "type": "github"
+ }
+ ],
+ "install-path": "../egulias/email-validator"
+ },
+ {
+ "name": "filament/actions",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/actions.git",
+ "reference": "483557cc10c84c8536e12280da7855bf53c2a4e2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/actions/zipball/483557cc10c84c8536e12280da7855bf53c2a4e2",
+ "reference": "483557cc10c84c8536e12280da7855bf53c2a4e2",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "anourvalar/eloquent-serialize": "^1.2",
+ "filament/forms": "self.version",
+ "filament/infolists": "self.version",
+ "filament/notifications": "self.version",
+ "filament/support": "self.version",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "league/csv": "^9.14",
+ "openspout/openspout": "^4.23",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "time": "2024-06-10T12:07:37+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Actions\\ActionsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Filament\\Actions\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful action modals to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/actions"
+ },
+ {
+ "name": "filament/filament",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/panels.git",
+ "reference": "c89fcc0ef9f9d9222cc25bcd4f7c327a23c8352c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/panels/zipball/c89fcc0ef9f9d9222cc25bcd4f7c327a23c8352c",
+ "reference": "c89fcc0ef9f9d9222cc25bcd4f7c327a23c8352c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "danharrin/livewire-rate-limiting": "^0.3|^1.0",
+ "filament/actions": "self.version",
+ "filament/forms": "self.version",
+ "filament/infolists": "self.version",
+ "filament/notifications": "self.version",
+ "filament/support": "self.version",
+ "filament/tables": "self.version",
+ "filament/widgets": "self.version",
+ "illuminate/auth": "^10.45|^11.0",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/cookie": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/http": "^10.45|^11.0",
+ "illuminate/routing": "^10.45|^11.0",
+ "illuminate/session": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "time": "2024-06-10T12:07:43+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\FilamentServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/global_helpers.php",
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Filament\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A collection of full-stack components for accelerated Laravel app development.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/filament"
+ },
+ {
+ "name": "filament/forms",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/forms.git",
+ "reference": "f58cc7d23ef2df1594f13d01e8dd016ed9033803"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/forms/zipball/f58cc7d23ef2df1594f13d01e8dd016ed9033803",
+ "reference": "f58cc7d23ef2df1594f13d01e8dd016ed9033803",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "danharrin/date-format-converter": "^0.3",
+ "filament/actions": "self.version",
+ "filament/support": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/validation": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "time": "2024-06-10T12:07:33+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Forms\\FormsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Filament\\Forms\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful forms to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/forms"
+ },
+ {
+ "name": "filament/infolists",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/infolists.git",
+ "reference": "82f96586e082905a7c86362e83309829f0d23bd0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/infolists/zipball/82f96586e082905a7c86362e83309829f0d23bd0",
+ "reference": "82f96586e082905a7c86362e83309829f0d23bd0",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/actions": "self.version",
+ "filament/support": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "time": "2024-06-10T12:07:27+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Infolists\\InfolistsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Filament\\Infolists\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful read-only infolists to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/infolists"
+ },
+ {
+ "name": "filament/notifications",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/notifications.git",
+ "reference": "a78b0be5e5b2a598e65ba62ae5cfbb3d464f6bbb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/notifications/zipball/a78b0be5e5b2a598e65ba62ae5cfbb3d464f6bbb",
+ "reference": "a78b0be5e5b2a598e65ba62ae5cfbb3d464f6bbb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/actions": "self.version",
+ "filament/support": "self.version",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/notifications": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "time": "2024-05-30T12:37:03+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Notifications\\NotificationsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/Testing/Autoload.php"
+ ],
+ "psr-4": {
+ "Filament\\Notifications\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful notifications to any Livewire app.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/notifications"
+ },
+ {
+ "name": "filament/spatie-laravel-settings-plugin",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/spatie-laravel-settings-plugin.git",
+ "reference": "bdb75d72cb32545b29f7cf506f18b57730d6a2a7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/spatie-laravel-settings-plugin/zipball/bdb75d72cb32545b29f7cf506f18b57730d6a2a7",
+ "reference": "bdb75d72cb32545b29f7cf506f18b57730d6a2a7",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/filament": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-settings": "^2.2|^3.0"
+ },
+ "time": "2024-06-05T09:38:32+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\SpatieLaravelSettingsPluginServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Filament\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Filament support for `spatie/laravel-settings`.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/spatie-laravel-settings-plugin"
+ },
+ {
+ "name": "filament/support",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/support.git",
+ "reference": "a62d52739d661042123da30fa2b8e64e46bef901"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/support/zipball/a62d52739d661042123da30fa2b8e64e46bef901",
+ "reference": "a62d52739d661042123da30fa2b8e64e46bef901",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "blade-ui-kit/blade-heroicons": "^2.2.1",
+ "doctrine/dbal": "^3.2",
+ "ext-intl": "*",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "livewire/livewire": "^3.4.10",
+ "php": "^8.1",
+ "ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0",
+ "spatie/color": "^1.5",
+ "spatie/invade": "^1.0|^2.0",
+ "spatie/laravel-package-tools": "^1.9",
+ "symfony/console": "^6.0|^7.0",
+ "symfony/html-sanitizer": "^6.1|^7.0"
+ },
+ "time": "2024-06-10T12:07:53+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Support\\SupportServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Filament\\Support\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Core helper methods and foundation code for all Filament packages.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/support"
+ },
+ {
+ "name": "filament/tables",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/tables.git",
+ "reference": "4debcc2b5dca501e6061a39c30565692c156ecd1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/tables/zipball/4debcc2b5dca501e6061a39c30565692c156ecd1",
+ "reference": "4debcc2b5dca501e6061a39c30565692c156ecd1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/actions": "self.version",
+ "filament/forms": "self.version",
+ "filament/support": "self.version",
+ "illuminate/console": "^10.45|^11.0",
+ "illuminate/contracts": "^10.45|^11.0",
+ "illuminate/database": "^10.45|^11.0",
+ "illuminate/filesystem": "^10.45|^11.0",
+ "illuminate/support": "^10.45|^11.0",
+ "illuminate/view": "^10.45|^11.0",
+ "kirschbaum-development/eloquent-power-joins": "^3.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "time": "2024-06-10T12:07:59+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Tables\\TablesServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Filament\\Tables\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful tables to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/tables"
+ },
+ {
+ "name": "filament/widgets",
+ "version": "v3.2.87",
+ "version_normalized": "3.2.87.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filamentphp/widgets.git",
+ "reference": "0253f4312909a17e2d80b70021daae3f1659e7da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filamentphp/widgets/zipball/0253f4312909a17e2d80b70021daae3f1659e7da",
+ "reference": "0253f4312909a17e2d80b70021daae3f1659e7da",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "filament/support": "self.version",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9"
+ },
+ "time": "2024-06-05T09:38:52+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Filament\\Widgets\\WidgetsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Filament\\Widgets\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Easily add beautiful dashboard widgets to any Livewire component.",
+ "homepage": "https://github.com/filamentphp/filament",
+ "support": {
+ "issues": "https://github.com/filamentphp/filament/issues",
+ "source": "https://github.com/filamentphp/filament"
+ },
+ "install-path": "../filament/widgets"
+ },
+ {
+ "name": "fruitcake/php-cors",
+ "version": "v1.2.0",
+ "version_normalized": "1.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruitcake/php-cors.git",
+ "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e",
+ "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.4|^8.0",
+ "symfony/http-foundation": "^4.4|^5.4|^6"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "phpunit/phpunit": "^9",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "time": "2022-02-20T15:07:15+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Fruitcake\\Cors\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fruitcake",
+ "homepage": "https://fruitcake.nl"
+ },
+ {
+ "name": "Barryvdh",
+ "email": "barryvdh@gmail.com"
+ }
+ ],
+ "description": "Cross-origin resource sharing library for the Symfony HttpFoundation",
+ "homepage": "https://github.com/fruitcake/php-cors",
+ "keywords": [
+ "cors",
+ "laravel",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/fruitcake/php-cors/issues",
+ "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://fruitcake.nl",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/barryvdh",
+ "type": "github"
+ }
+ ],
+ "install-path": "../fruitcake/php-cors"
+ },
+ {
+ "name": "graham-campbell/result-type",
+ "version": "v1.1.2",
+ "version_normalized": "1.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/GrahamCampbell/Result-Type.git",
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862",
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+ },
+ "time": "2023-11-12T22:16:48+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "GrahamCampbell\\ResultType\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "An Implementation Of The Result Type",
+ "keywords": [
+ "Graham Campbell",
+ "GrahamCampbell",
+ "Result Type",
+ "Result-Type",
+ "result"
+ ],
+ "support": {
+ "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../graham-campbell/result-type"
+ },
+ {
+ "name": "guzzlehttp/uri-template",
+ "version": "v1.0.3",
+ "version_normalized": "1.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/uri-template.git",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "symfony/polyfill-php80": "^1.24"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15",
+ "uri-template/tests": "1.0.0"
+ },
+ "time": "2023-12-03T19:50:20+00:00",
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\UriTemplate\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ }
+ ],
+ "description": "A polyfill class for uri_template of PHP",
+ "keywords": [
+ "guzzlehttp",
+ "uri-template"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/uri-template/issues",
+ "source": "https://github.com/guzzle/uri-template/tree/v1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../guzzlehttp/uri-template"
+ },
+ {
+ "name": "kirschbaum-development/eloquent-power-joins",
+ "version": "3.5.4",
+ "version_normalized": "3.5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
+ "reference": "fc8bb379f062cd120ffab20a6913ad824c3366d8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/fc8bb379f062cd120ffab20a6913ad824c3366d8",
+ "reference": "fc8bb379f062cd120ffab20a6913ad824c3366d8",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/database": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "laravel/legacy-factories": "^1.0@dev",
+ "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^8.0|^9.0|^10.0"
+ },
+ "time": "2024-03-26T19:12:33+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Kirschbaum\\PowerJoins\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Luis Dalmolin",
+ "email": "luis.nh@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "The Laravel magic applied to joins.",
+ "homepage": "https://github.com/kirschbaum-development/eloquent-power-joins",
+ "keywords": [
+ "eloquent",
+ "join",
+ "laravel",
+ "mysql"
+ ],
+ "support": {
+ "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
+ "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.4"
+ },
+ "install-path": "../kirschbaum-development/eloquent-power-joins"
+ },
+ {
+ "name": "laravel/framework",
+ "version": "v10.48.12",
+ "version_normalized": "10.48.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/framework.git",
+ "reference": "590afea38e708022662629fbf5184351fa82cf08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/590afea38e708022662629fbf5184351fa82cf08",
+ "reference": "590afea38e708022662629fbf5184351fa82cf08",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
+ "composer-runtime-api": "^2.2",
+ "doctrine/inflector": "^2.0.5",
+ "dragonmantank/cron-expression": "^3.3.2",
+ "egulias/email-validator": "^3.2.1|^4.0",
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "ext-session": "*",
+ "ext-tokenizer": "*",
+ "fruitcake/php-cors": "^1.2",
+ "guzzlehttp/uri-template": "^1.0",
+ "laravel/prompts": "^0.1.9",
+ "laravel/serializable-closure": "^1.3",
+ "league/commonmark": "^2.2.1",
+ "league/flysystem": "^3.8.0",
+ "monolog/monolog": "^3.0",
+ "nesbot/carbon": "^2.67",
+ "nunomaduro/termwind": "^1.13",
+ "php": "^8.1",
+ "psr/container": "^1.1.1|^2.0.1",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "ramsey/uuid": "^4.7",
+ "symfony/console": "^6.2",
+ "symfony/error-handler": "^6.2",
+ "symfony/finder": "^6.2",
+ "symfony/http-foundation": "^6.4",
+ "symfony/http-kernel": "^6.2",
+ "symfony/mailer": "^6.2",
+ "symfony/mime": "^6.2",
+ "symfony/process": "^6.2",
+ "symfony/routing": "^6.2",
+ "symfony/uid": "^6.2",
+ "symfony/var-dumper": "^6.2",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.5",
+ "vlucas/phpdotenv": "^5.4.1",
+ "voku/portable-ascii": "^2.0"
+ },
+ "conflict": {
+ "carbonphp/carbon-doctrine-types": ">=3.0",
+ "doctrine/dbal": ">=4.0",
+ "mockery/mockery": "1.6.8",
+ "phpunit/phpunit": ">=11.0.0",
+ "tightenco/collect": "<5.5.33"
+ },
+ "provide": {
+ "psr/container-implementation": "1.1|2.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0"
+ },
+ "replace": {
+ "illuminate/auth": "self.version",
+ "illuminate/broadcasting": "self.version",
+ "illuminate/bus": "self.version",
+ "illuminate/cache": "self.version",
+ "illuminate/collections": "self.version",
+ "illuminate/conditionable": "self.version",
+ "illuminate/config": "self.version",
+ "illuminate/console": "self.version",
+ "illuminate/container": "self.version",
+ "illuminate/contracts": "self.version",
+ "illuminate/cookie": "self.version",
+ "illuminate/database": "self.version",
+ "illuminate/encryption": "self.version",
+ "illuminate/events": "self.version",
+ "illuminate/filesystem": "self.version",
+ "illuminate/hashing": "self.version",
+ "illuminate/http": "self.version",
+ "illuminate/log": "self.version",
+ "illuminate/macroable": "self.version",
+ "illuminate/mail": "self.version",
+ "illuminate/notifications": "self.version",
+ "illuminate/pagination": "self.version",
+ "illuminate/pipeline": "self.version",
+ "illuminate/process": "self.version",
+ "illuminate/queue": "self.version",
+ "illuminate/redis": "self.version",
+ "illuminate/routing": "self.version",
+ "illuminate/session": "self.version",
+ "illuminate/support": "self.version",
+ "illuminate/testing": "self.version",
+ "illuminate/translation": "self.version",
+ "illuminate/validation": "self.version",
+ "illuminate/view": "self.version"
+ },
+ "require-dev": {
+ "ably/ably-php": "^1.0",
+ "aws/aws-sdk-php": "^3.235.5",
+ "doctrine/dbal": "^3.5.1",
+ "ext-gmp": "*",
+ "fakerphp/faker": "^1.21",
+ "guzzlehttp/guzzle": "^7.5",
+ "league/flysystem-aws-s3-v3": "^3.0",
+ "league/flysystem-ftp": "^3.0",
+ "league/flysystem-path-prefixing": "^3.3",
+ "league/flysystem-read-only": "^3.3",
+ "league/flysystem-sftp-v3": "^3.0",
+ "mockery/mockery": "^1.5.1",
+ "nyholm/psr7": "^1.2",
+ "orchestra/testbench-core": "^8.23.4",
+ "pda/pheanstalk": "^4.0",
+ "phpstan/phpstan": "^1.4.7",
+ "phpunit/phpunit": "^10.0.7",
+ "predis/predis": "^2.0.2",
+ "symfony/cache": "^6.2",
+ "symfony/http-client": "^6.2.4",
+ "symfony/psr-http-message-bridge": "^2.0"
+ },
+ "suggest": {
+ "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
+ "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).",
+ "brianium/paratest": "Required to run tests in parallel (^6.0).",
+ "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).",
+ "ext-apcu": "Required to use the APC cache driver.",
+ "ext-fileinfo": "Required to use the Filesystem class.",
+ "ext-ftp": "Required to use the Flysystem FTP driver.",
+ "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
+ "ext-memcached": "Required to use the memcache cache driver.",
+ "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.",
+ "ext-pdo": "Required to use all database features.",
+ "ext-posix": "Required to use all features of the queue worker.",
+ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
+ "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
+ "filp/whoops": "Required for friendly error pages in development (^2.14.3).",
+ "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).",
+ "laravel/tinker": "Required to use the tinker console command (^2.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
+ "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
+ "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
+ "league/flysystem-read-only": "Required to use read-only disks (^3.3)",
+ "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
+ "mockery/mockery": "Required to use mocking (^1.5.1).",
+ "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
+ "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
+ "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).",
+ "predis/predis": "Required to use the predis connector (^2.0.2).",
+ "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^6.2).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).",
+ "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).",
+ "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).",
+ "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)."
+ },
+ "time": "2024-05-28T15:46:19+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "10.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/Illuminate/Collections/helpers.php",
+ "src/Illuminate/Events/functions.php",
+ "src/Illuminate/Filesystem/functions.php",
+ "src/Illuminate/Foundation/helpers.php",
+ "src/Illuminate/Support/helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\": "src/Illuminate/",
+ "Illuminate\\Support\\": [
+ "src/Illuminate/Macroable/",
+ "src/Illuminate/Collections/",
+ "src/Illuminate/Conditionable/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Laravel Framework.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "framework",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "install-path": "../laravel/framework"
+ },
+ {
+ "name": "laravel/prompts",
+ "version": "v0.1.23",
+ "version_normalized": "0.1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/prompts.git",
+ "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
+ "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "illuminate/collections": "^10.0|^11.0",
+ "php": "^8.1",
+ "symfony/console": "^6.2|^7.0"
+ },
+ "conflict": {
+ "illuminate/console": ">=10.17.0 <10.25.0",
+ "laravel/framework": ">=10.17.0 <10.25.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5",
+ "pestphp/pest": "^2.3",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-mockery": "^1.1"
+ },
+ "suggest": {
+ "ext-pcntl": "Required for the spinner to be animated."
+ },
+ "time": "2024-05-27T13:53:20+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Laravel\\Prompts\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Add beautiful and user-friendly forms to your command-line applications.",
+ "support": {
+ "issues": "https://github.com/laravel/prompts/issues",
+ "source": "https://github.com/laravel/prompts/tree/v0.1.23"
+ },
+ "install-path": "../laravel/prompts"
+ },
+ {
+ "name": "laravel/serializable-closure",
+ "version": "v1.3.3",
+ "version_normalized": "1.3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/serializable-closure.git",
+ "reference": "3dbf8a8e914634c48d389c1234552666b3d43754"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754",
+ "reference": "3dbf8a8e914634c48d389c1234552666b3d43754",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.3|^8.0"
+ },
+ "require-dev": {
+ "nesbot/carbon": "^2.61",
+ "pestphp/pest": "^1.21.3",
+ "phpstan/phpstan": "^1.8.2",
+ "symfony/var-dumper": "^5.4.11"
+ },
+ "time": "2023-11-08T14:08:06+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Laravel\\SerializableClosure\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ },
+ {
+ "name": "Nuno Maduro",
+ "email": "nuno@laravel.com"
+ }
+ ],
+ "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
+ "keywords": [
+ "closure",
+ "laravel",
+ "serializable"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/serializable-closure/issues",
+ "source": "https://github.com/laravel/serializable-closure"
+ },
+ "install-path": "../laravel/serializable-closure"
+ },
+ {
+ "name": "league/commonmark",
+ "version": "2.4.2",
+ "version_normalized": "2.4.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/commonmark.git",
+ "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf",
+ "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "league/config": "^1.1.1",
+ "php": "^7.4 || ^8.0",
+ "psr/event-dispatcher": "^1.0",
+ "symfony/deprecation-contracts": "^2.1 || ^3.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
+ "cebe/markdown": "^1.0",
+ "commonmark/cmark": "0.30.3",
+ "commonmark/commonmark.js": "0.30.0",
+ "composer/package-versions-deprecated": "^1.8",
+ "embed/embed": "^4.4",
+ "erusev/parsedown": "^1.0",
+ "ext-json": "*",
+ "github/gfm": "0.29.0",
+ "michelf/php-markdown": "^1.4 || ^2.0",
+ "nyholm/psr7": "^1.5",
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
+ "scrutinizer/ocular": "^1.8.1",
+ "symfony/finder": "^5.3 | ^6.0 || ^7.0",
+ "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0",
+ "unleashedtech/php-coding-standard": "^3.1.1",
+ "vimeo/psalm": "^4.24.0 || ^5.0.0"
+ },
+ "suggest": {
+ "symfony/yaml": "v2.3+ required if using the Front Matter extension"
+ },
+ "time": "2024-02-02T11:59:32+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "League\\CommonMark\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
+ "homepage": "https://commonmark.thephpleague.com",
+ "keywords": [
+ "commonmark",
+ "flavored",
+ "gfm",
+ "github",
+ "github-flavored",
+ "markdown",
+ "md",
+ "parser"
+ ],
+ "support": {
+ "docs": "https://commonmark.thephpleague.com/",
+ "forum": "https://github.com/thephpleague/commonmark/discussions",
+ "issues": "https://github.com/thephpleague/commonmark/issues",
+ "rss": "https://github.com/thephpleague/commonmark/releases.atom",
+ "source": "https://github.com/thephpleague/commonmark"
+ },
+ "funding": [
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../league/commonmark"
+ },
+ {
+ "name": "league/config",
+ "version": "v1.2.0",
+ "version_normalized": "1.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/config.git",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "dflydev/dot-access-data": "^3.0.1",
+ "nette/schema": "^1.2",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.5",
+ "scrutinizer/ocular": "^1.8.1",
+ "unleashedtech/php-coding-standard": "^3.1",
+ "vimeo/psalm": "^4.7.3"
+ },
+ "time": "2022-12-11T20:36:23+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.2-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "League\\Config\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Define configuration arrays with strict schemas and access values with dot notation",
+ "homepage": "https://config.thephpleague.com",
+ "keywords": [
+ "array",
+ "config",
+ "configuration",
+ "dot",
+ "dot-access",
+ "nested",
+ "schema"
+ ],
+ "support": {
+ "docs": "https://config.thephpleague.com/",
+ "issues": "https://github.com/thephpleague/config/issues",
+ "rss": "https://github.com/thephpleague/config/releases.atom",
+ "source": "https://github.com/thephpleague/config"
+ },
+ "funding": [
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ }
+ ],
+ "install-path": "../league/config"
+ },
+ {
+ "name": "league/csv",
+ "version": "9.16.0",
+ "version_normalized": "9.16.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/csv.git",
+ "reference": "998280c6c34bd67d8125fdc8b45bae28d761b440"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/csv/zipball/998280c6c34bd67d8125fdc8b45bae28d761b440",
+ "reference": "998280c6c34bd67d8125fdc8b45bae28d761b440",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^8.1.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^2.2.2",
+ "ext-dom": "*",
+ "ext-xdebug": "*",
+ "friendsofphp/php-cs-fixer": "^3.57.1",
+ "phpbench/phpbench": "^1.2.15",
+ "phpstan/phpstan": "^1.11.1",
+ "phpstan/phpstan-deprecation-rules": "^1.2.0",
+ "phpstan/phpstan-phpunit": "^1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.6.0",
+ "phpunit/phpunit": "^10.5.16 || ^11.1.3",
+ "symfony/var-dumper": "^6.4.6 || ^7.0.7"
+ },
+ "suggest": {
+ "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes",
+ "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters",
+ "ext-mbstring": "Needed to ease transcoding CSV using mb stream filters"
+ },
+ "time": "2024-05-24T11:04:54+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "League\\Csv\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://github.com/nyamsprod/",
+ "role": "Developer"
+ }
+ ],
+ "description": "CSV data manipulation made easy in PHP",
+ "homepage": "https://csv.thephpleague.com",
+ "keywords": [
+ "convert",
+ "csv",
+ "export",
+ "filter",
+ "import",
+ "read",
+ "transform",
+ "write"
+ ],
+ "support": {
+ "docs": "https://csv.thephpleague.com",
+ "issues": "https://github.com/thephpleague/csv/issues",
+ "rss": "https://github.com/thephpleague/csv/releases.atom",
+ "source": "https://github.com/thephpleague/csv"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "install-path": "../league/csv"
+ },
+ {
+ "name": "league/flysystem",
+ "version": "3.28.0",
+ "version_normalized": "3.28.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c",
+ "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "league/flysystem-local": "^3.0.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
+ },
+ "conflict": {
+ "async-aws/core": "<1.19.0",
+ "async-aws/s3": "<1.14.0",
+ "aws/aws-sdk-php": "3.209.31 || 3.210.0",
+ "guzzlehttp/guzzle": "<7.0",
+ "guzzlehttp/ringphp": "<1.1.1",
+ "phpseclib/phpseclib": "3.0.15",
+ "symfony/http-client": "<5.2"
+ },
+ "require-dev": {
+ "async-aws/s3": "^1.5 || ^2.0",
+ "async-aws/simple-s3": "^1.1 || ^2.0",
+ "aws/aws-sdk-php": "^3.295.10",
+ "composer/semver": "^3.0",
+ "ext-fileinfo": "*",
+ "ext-ftp": "*",
+ "ext-mongodb": "^1.3",
+ "ext-zip": "*",
+ "friendsofphp/php-cs-fixer": "^3.5",
+ "google/cloud-storage": "^1.23",
+ "guzzlehttp/psr7": "^2.6",
+ "microsoft/azure-storage-blob": "^1.1",
+ "mongodb/mongodb": "^1.2",
+ "phpseclib/phpseclib": "^3.0.36",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.5.11|^10.0",
+ "sabre/dav": "^4.6.0"
+ },
+ "time": "2024-05-22T10:09:12+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "File storage abstraction for PHP",
+ "keywords": [
+ "WebDAV",
+ "aws",
+ "cloud",
+ "file",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "s3",
+ "sftp",
+ "storage"
+ ],
+ "support": {
+ "issues": "https://github.com/thephpleague/flysystem/issues",
+ "source": "https://github.com/thephpleague/flysystem/tree/3.28.0"
+ },
+ "install-path": "../league/flysystem"
+ },
+ {
+ "name": "league/flysystem-local",
+ "version": "3.28.0",
+ "version_normalized": "3.28.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem-local.git",
+ "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/13f22ea8be526ea58c2ddff9e158ef7c296e4f40",
+ "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "league/flysystem": "^3.0.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
+ },
+ "time": "2024-05-06T20:05:52+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\Local\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Local filesystem adapter for Flysystem.",
+ "keywords": [
+ "Flysystem",
+ "file",
+ "files",
+ "filesystem",
+ "local"
+ ],
+ "support": {
+ "source": "https://github.com/thephpleague/flysystem-local/tree/3.28.0"
+ },
+ "install-path": "../league/flysystem-local"
+ },
+ {
+ "name": "league/mime-type-detection",
+ "version": "1.15.0",
+ "version_normalized": "1.15.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/mime-type-detection.git",
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "phpstan/phpstan": "^0.12.68",
+ "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
+ },
+ "time": "2024-01-28T23:22:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "League\\MimeTypeDetection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Mime-type detection for Flysystem",
+ "support": {
+ "issues": "https://github.com/thephpleague/mime-type-detection/issues",
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../league/mime-type-detection"
+ },
+ {
+ "name": "league/uri",
+ "version": "7.4.0",
+ "version_normalized": "7.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/uri.git",
+ "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5",
+ "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "league/uri-interfaces": "^7.3",
+ "php": "^8.1"
+ },
+ "conflict": {
+ "league/uri-schemes": "^1.0"
+ },
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-fileinfo": "to create Data URI from file contennts",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
+ "league/uri-components": "Needed to easily manipulate URI objects components",
+ "php-64bit": "to improve IPV4 host parsing",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
+ },
+ "time": "2023-12-01T06:24:25+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "URI manipulation library",
+ "homepage": "https://uri.thephpleague.com",
+ "keywords": [
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "middleware",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "uri-template",
+ "url",
+ "ws"
+ ],
+ "support": {
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri/tree/7.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "install-path": "../league/uri"
+ },
+ {
+ "name": "league/uri-interfaces",
+ "version": "7.4.0",
+ "version_normalized": "7.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/uri-interfaces.git",
+ "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3",
+ "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^8.1",
+ "psr/http-factory": "^1",
+ "psr/http-message": "^1.1 || ^2.0"
+ },
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "php-64bit": "to improve IPV4 host parsing",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
+ },
+ "time": "2023-11-24T15:40:42+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "Common interfaces and classes for URI representation and interaction",
+ "homepage": "https://uri.thephpleague.com",
+ "keywords": [
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "url",
+ "ws"
+ ],
+ "support": {
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "install-path": "../league/uri-interfaces"
+ },
+ {
+ "name": "livewire/livewire",
+ "version": "v3.5.0",
+ "version_normalized": "3.5.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/livewire/livewire.git",
+ "reference": "72e900825c560f0e4e620185b26c5441a8914435"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/livewire/livewire/zipball/72e900825c560f0e4e620185b26c5441a8914435",
+ "reference": "72e900825c560f0e4e620185b26c5441a8914435",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/database": "^10.0|^11.0",
+ "illuminate/routing": "^10.0|^11.0",
+ "illuminate/support": "^10.0|^11.0",
+ "illuminate/validation": "^10.0|^11.0",
+ "league/mime-type-detection": "^1.9",
+ "php": "^8.1",
+ "symfony/console": "^6.0|^7.0",
+ "symfony/http-kernel": "^6.2|^7.0"
+ },
+ "require-dev": {
+ "calebporzio/sushi": "^2.1",
+ "laravel/framework": "^10.15.0|^11.0",
+ "laravel/prompts": "^0.1.6",
+ "mockery/mockery": "^1.3.1",
+ "orchestra/testbench": "^8.21.0|^9.0",
+ "orchestra/testbench-dusk": "^8.24|^9.1",
+ "phpunit/phpunit": "^10.4",
+ "psy/psysh": "^0.11.22|^0.12"
+ },
+ "time": "2024-05-21T13:39:04+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Livewire\\LivewireServiceProvider"
+ ],
+ "aliases": {
+ "Livewire": "Livewire\\Livewire"
+ }
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Livewire\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Caleb Porzio",
+ "email": "calebporzio@gmail.com"
+ }
+ ],
+ "description": "A front-end framework for Laravel.",
+ "support": {
+ "issues": "https://github.com/livewire/livewire/issues",
+ "source": "https://github.com/livewire/livewire/tree/v3.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/livewire",
+ "type": "github"
+ }
+ ],
+ "install-path": "../livewire/livewire"
+ },
+ {
+ "name": "masterminds/html5",
+ "version": "2.8.1",
+ "version_normalized": "2.8.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Masterminds/html5-php.git",
+ "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf",
+ "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8"
+ },
+ "time": "2023-05-10T11:58:31+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Masterminds\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matt Butcher",
+ "email": "technosophos@gmail.com"
+ },
+ {
+ "name": "Matt Farina",
+ "email": "matt@mattfarina.com"
+ },
+ {
+ "name": "Asmir Mustafic",
+ "email": "goetas@gmail.com"
+ }
+ ],
+ "description": "An HTML5 parser and serializer.",
+ "homepage": "http://masterminds.github.io/html5-php",
+ "keywords": [
+ "HTML5",
+ "dom",
+ "html",
+ "parser",
+ "querypath",
+ "serializer",
+ "xml"
+ ],
+ "support": {
+ "issues": "https://github.com/Masterminds/html5-php/issues",
+ "source": "https://github.com/Masterminds/html5-php/tree/2.8.1"
+ },
+ "install-path": "../masterminds/html5"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "3.6.0",
+ "version_normalized": "3.6.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "^2.0 || ^3.0"
+ },
+ "provide": {
+ "psr/log-implementation": "3.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "elasticsearch/elasticsearch": "^7 || ^8",
+ "ext-json": "*",
+ "graylog2/gelf-php": "^1.4.2 || ^2.0",
+ "guzzlehttp/guzzle": "^7.4.5",
+ "guzzlehttp/psr7": "^2.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.4",
+ "phpunit/phpunit": "^10.5.17",
+ "predis/predis": "^1.1 || ^2",
+ "ruflin/elastica": "^7",
+ "symfony/mailer": "^5.4 || ^6",
+ "symfony/mime": "^5.4 || ^6"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+ },
+ "time": "2024-04-12T21:02:21+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "https://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../monolog/monolog"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "2.72.5",
+ "version_normalized": "2.72.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed",
+ "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "carbonphp/carbon-doctrine-types": "*",
+ "ext-json": "*",
+ "php": "^7.1.8 || ^8.0",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0",
+ "doctrine/orm": "^2.7 || ^3.0",
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "kylekatarnls/multi-tester": "^2.0",
+ "ondrejmirtes/better-reflection": "*",
+ "phpmd/phpmd": "^2.9",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+ "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "time": "2024-06-03T19:18:41+00:00",
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev",
+ "dev-2.x": "2.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "https://markido.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "https://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "https://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "docs": "https://carbon.nesbot.com/docs",
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../nesbot/carbon"
+ },
+ {
+ "name": "nette/schema",
+ "version": "v1.3.0",
+ "version_normalized": "1.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/schema.git",
+ "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
+ "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.3"
+ },
+ "require-dev": {
+ "nette/tester": "^2.4",
+ "phpstan/phpstan-nette": "^1.0",
+ "tracy/tracy": "^2.8"
+ },
+ "time": "2023-12-11T11:54:22+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "📐 Nette Schema: validating data structures against a given Schema.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "config",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/schema/issues",
+ "source": "https://github.com/nette/schema/tree/v1.3.0"
+ },
+ "install-path": "../nette/schema"
+ },
+ {
+ "name": "nette/utils",
+ "version": "v4.0.4",
+ "version_normalized": "4.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/utils.git",
+ "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0 <8.4"
+ },
+ "conflict": {
+ "nette/finder": "<3",
+ "nette/schema": "<1.2.2"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "dev-master",
+ "nette/tester": "^2.5",
+ "phpstan/phpstan": "^1.0",
+ "tracy/tracy": "^2.9"
+ },
+ "suggest": {
+ "ext-gd": "to use Image",
+ "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
+ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
+ "ext-json": "to use Nette\\Utils\\Json",
+ "ext-mbstring": "to use Strings::lower() etc...",
+ "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
+ },
+ "time": "2024-01-17T16:50:36+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "array",
+ "core",
+ "datetime",
+ "images",
+ "json",
+ "nette",
+ "paginator",
+ "password",
+ "slugify",
+ "string",
+ "unicode",
+ "utf-8",
+ "utility",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/utils/issues",
+ "source": "https://github.com/nette/utils/tree/v4.0.4"
+ },
+ "install-path": "../nette/utils"
+ },
+ {
+ "name": "nunomaduro/termwind",
+ "version": "v1.15.1",
+ "version_normalized": "1.15.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nunomaduro/termwind.git",
+ "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc",
+ "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": "^8.0",
+ "symfony/console": "^5.3.0|^6.0.0"
+ },
+ "require-dev": {
+ "ergebnis/phpstan-rules": "^1.0.",
+ "illuminate/console": "^8.0|^9.0",
+ "illuminate/support": "^8.0|^9.0",
+ "laravel/pint": "^1.0.0",
+ "pestphp/pest": "^1.21.0",
+ "pestphp/pest-plugin-mock": "^1.0",
+ "phpstan/phpstan": "^1.4.6",
+ "phpstan/phpstan-strict-rules": "^1.1.0",
+ "symfony/var-dumper": "^5.2.7|^6.0.0",
+ "thecodingmachine/phpstan-strict-rules": "^1.0.0"
+ },
+ "time": "2023-02-08T01:06:31+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Termwind\\Laravel\\TermwindServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Termwind\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "Its like Tailwind CSS, but for the console.",
+ "keywords": [
+ "cli",
+ "console",
+ "css",
+ "package",
+ "php",
+ "style"
+ ],
+ "support": {
+ "issues": "https://github.com/nunomaduro/termwind/issues",
+ "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/paypalme/enunomaduro",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/nunomaduro",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/xiCO2k",
+ "type": "github"
+ }
+ ],
+ "install-path": "../nunomaduro/termwind"
+ },
+ {
+ "name": "openspout/openspout",
+ "version": "v4.24.5",
+ "version_normalized": "4.24.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/openspout/openspout.git",
+ "reference": "393299ae21153f042f48b185f2adeb4b157d1d93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/openspout/openspout/zipball/393299ae21153f042f48b185f2adeb4b157d1d93",
+ "reference": "393299ae21153f042f48b185f2adeb4b157d1d93",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-fileinfo": "*",
+ "ext-filter": "*",
+ "ext-libxml": "*",
+ "ext-xmlreader": "*",
+ "ext-zip": "*",
+ "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
+ },
+ "require-dev": {
+ "ext-zlib": "*",
+ "friendsofphp/php-cs-fixer": "^3.60.0",
+ "infection/infection": "^0.29.6",
+ "phpbench/phpbench": "^1.3.1",
+ "phpstan/phpstan": "^1.11.8",
+ "phpstan/phpstan-phpunit": "^1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.6.0",
+ "phpunit/phpunit": "^10.5.20 || ^11.2.8"
+ },
+ "suggest": {
+ "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)",
+ "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)"
+ },
+ "time": "2024-07-26T05:48:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "OpenSpout\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Adrien Loison",
+ "email": "adrien@box.com"
+ }
+ ],
+ "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way",
+ "homepage": "https://github.com/openspout/openspout",
+ "keywords": [
+ "OOXML",
+ "csv",
+ "excel",
+ "memory",
+ "odf",
+ "ods",
+ "office",
+ "open",
+ "php",
+ "read",
+ "scale",
+ "spreadsheet",
+ "stream",
+ "write",
+ "xlsx"
+ ],
+ "support": {
+ "issues": "https://github.com/openspout/openspout/issues",
+ "source": "https://github.com/openspout/openspout/tree/v4.24.5"
+ },
+ "funding": [
+ {
+ "url": "https://paypal.me/filippotessarotto",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/Slamdunk",
+ "type": "github"
+ }
+ ],
+ "install-path": "../openspout/openspout"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "version_normalized": "2.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2020-06-27T09:03:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "install-path": "../phpdocumentor/reflection-common"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.8.2",
+ "version_normalized": "1.8.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "doctrine/deprecations": "^1.0",
+ "php": "^7.3 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpstan/phpdoc-parser": "^1.13"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.13.9",
+ "vimeo/psalm": "^4.25"
+ },
+ "time": "2024-02-23T11:10:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
+ },
+ "install-path": "../phpdocumentor/type-resolver"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.9.3",
+ "version_normalized": "1.9.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54",
+ "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
+ },
+ "time": "2024-07-20T21:41:07+00:00",
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PhpOption\\": "src/PhpOption/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "support": {
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../phpoption/phpoption"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc",
+ "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^4.15",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.5",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
+ },
+ "time": "2024-05-06T12:04:23+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0"
+ },
+ "install-path": "../phpstan/phpdoc-parser"
+ },
+ {
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "install-path": "../psr/cache"
+ },
+ {
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "install-path": "../psr/clock"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "version_normalized": "2.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "time": "2021-11-05T16:47:00+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "install-path": "../psr/container"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "install-path": "../psr/event-dispatcher"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "time": "2023-04-10T20:10:41+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+ },
+ "install-path": "../psr/http-factory"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "version_normalized": "2.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
+ },
+ "install-path": "../psr/http-message"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "install-path": "../psr/log"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "time": "2021-10-29T13:26:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ },
+ "install-path": "../psr/simple-cache"
+ },
+ {
+ "name": "ramsey/collection",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/collection.git",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "captainhook/plugin-composer": "^5.3",
+ "ergebnis/composer-normalize": "^2.28.3",
+ "fakerphp/faker": "^1.21",
+ "hamcrest/hamcrest-php": "^2.0",
+ "jangregor/phpstan-prophecy": "^1.0",
+ "mockery/mockery": "^1.5",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcsstandards/phpcsutils": "^1.0.0-rc1",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpstan/extension-installer": "^1.2",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "ramsey/coding-standard": "^2.0.3",
+ "ramsey/conventional-commits": "^1.3",
+ "vimeo/psalm": "^5.4"
+ },
+ "time": "2022-12-31T21:50:55+00:00",
+ "type": "library",
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ },
+ "ramsey/conventional-commits": {
+ "configFile": "conventional-commits.json"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Ramsey\\Collection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
+ }
+ ],
+ "description": "A PHP library for representing and manipulating collections.",
+ "keywords": [
+ "array",
+ "collection",
+ "hash",
+ "map",
+ "queue",
+ "set"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/collection/issues",
+ "source": "https://github.com/ramsey/collection/tree/2.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../ramsey/collection"
+ },
+ {
+ "name": "ramsey/uuid",
+ "version": "4.7.5",
+ "version_normalized": "4.7.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+ "ext-json": "*",
+ "php": "^8.0",
+ "ramsey/collection": "^1.2 || ^2.0"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "captainhook/captainhook": "^5.10",
+ "captainhook/plugin-composer": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.8",
+ "ergebnis/composer-normalize": "^2.15",
+ "mockery/mockery": "^1.3",
+ "paragonie/random-lib": "^2",
+ "php-mock/php-mock": "^2.2",
+ "php-mock/php-mock-mockery": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.1",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "ramsey/composer-repl": "^1.4",
+ "slevomat/coding-standard": "^8.4",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.9"
+ },
+ "suggest": {
+ "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
+ "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
+ "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
+ "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
+ },
+ "time": "2023-11-08T05:53:05+00:00",
+ "type": "library",
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
+ "keywords": [
+ "guid",
+ "identifier",
+ "uuid"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/uuid/issues",
+ "source": "https://github.com/ramsey/uuid/tree/4.7.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../ramsey/uuid"
+ },
+ {
+ "name": "ryangjchandler/blade-capture-directive",
+ "version": "v1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ryangjchandler/blade-capture-directive.git",
+ "reference": "cb6f58663d97f17bece176295240b740835e14f1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/cb6f58663d97f17bece176295240b740835e14f1",
+ "reference": "cb6f58663d97f17bece176295240b740835e14f1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/contracts": "^10.0|^11.0",
+ "php": "^8.1",
+ "spatie/laravel-package-tools": "^1.9.2"
+ },
+ "require-dev": {
+ "nunomaduro/collision": "^7.0|^8.0",
+ "nunomaduro/larastan": "^2.0",
+ "orchestra/testbench": "^8.0|^9.0",
+ "pestphp/pest": "^2.0",
+ "pestphp/pest-plugin-laravel": "^2.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^10.0",
+ "spatie/laravel-ray": "^1.26"
+ },
+ "time": "2024-02-26T18:08:49+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider"
+ ],
+ "aliases": {
+ "BladeCaptureDirective": "RyanChandler\\BladeCaptureDirective\\Facades\\BladeCaptureDirective"
+ }
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "RyanChandler\\BladeCaptureDirective\\": "src",
+ "RyanChandler\\BladeCaptureDirective\\Database\\Factories\\": "database/factories"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ryan Chandler",
+ "email": "support@ryangjchandler.co.uk",
+ "role": "Developer"
+ }
+ ],
+ "description": "Create inline partials in your Blade templates with ease.",
+ "homepage": "https://github.com/ryangjchandler/blade-capture-directive",
+ "keywords": [
+ "blade-capture-directive",
+ "laravel",
+ "ryangjchandler"
+ ],
+ "support": {
+ "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues",
+ "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v1.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ryangjchandler",
+ "type": "github"
+ }
+ ],
+ "install-path": "../ryangjchandler/blade-capture-directive"
+ },
+ {
+ "name": "spatie/color",
+ "version": "1.5.3",
+ "version_normalized": "1.5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/color.git",
+ "reference": "49739265900cabce4640cd26c3266fd8d2cca390"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/color/zipball/49739265900cabce4640cd26c3266fd8d2cca390",
+ "reference": "49739265900cabce4640cd26c3266fd8d2cca390",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^7.3|^8.0"
+ },
+ "require-dev": {
+ "pestphp/pest": "^1.22",
+ "phpunit/phpunit": "^6.5||^9.0"
+ },
+ "time": "2022-12-18T12:58:32+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\Color\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian De Deyne",
+ "email": "sebastian@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "A little library to handle color conversions",
+ "homepage": "https://github.com/spatie/color",
+ "keywords": [
+ "color",
+ "conversion",
+ "rgb",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/color/issues",
+ "source": "https://github.com/spatie/color/tree/1.5.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "install-path": "../spatie/color"
+ },
+ {
+ "name": "spatie/invade",
+ "version": "2.1.0",
+ "version_normalized": "2.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/invade.git",
+ "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/invade/zipball/b920f6411d21df4e8610a138e2e87ae4957d7f63",
+ "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "pestphp/pest": "^1.20",
+ "phpstan/phpstan": "^1.4",
+ "spatie/ray": "^1.28"
+ },
+ "time": "2024-05-17T09:06:10+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Spatie\\Invade\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "A PHP function to work with private properties and methods",
+ "homepage": "https://github.com/spatie/invade",
+ "keywords": [
+ "invade",
+ "spatie"
+ ],
+ "support": {
+ "source": "https://github.com/spatie/invade/tree/2.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "install-path": "../spatie/invade"
+ },
+ {
+ "name": "spatie/laravel-package-tools",
+ "version": "1.16.4",
+ "version_normalized": "1.16.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-package-tools.git",
+ "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53",
+ "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "illuminate/contracts": "^9.28|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5",
+ "orchestra/testbench": "^7.7|^8.0",
+ "pestphp/pest": "^1.22",
+ "phpunit/phpunit": "^9.5.24",
+ "spatie/pest-plugin-test-time": "^1.1"
+ },
+ "time": "2024-03-20T07:29:11+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\LaravelPackageTools\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Tools for creating Laravel packages",
+ "homepage": "https://github.com/spatie/laravel-package-tools",
+ "keywords": [
+ "laravel-package-tools",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-package-tools/issues",
+ "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "install-path": "../spatie/laravel-package-tools"
+ },
+ {
+ "name": "spatie/laravel-settings",
+ "version": "3.3.2",
+ "version_normalized": "3.3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-settings.git",
+ "reference": "395066797823856638a0a2feb243b396a94e22e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/395066797823856638a0a2feb243b396a94e22e5",
+ "reference": "395066797823856638a0a2feb243b396a94e22e5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/database": "^8.73|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0",
+ "phpdocumentor/type-resolver": "^1.5",
+ "spatie/temporary-directory": "^1.3|^2.0"
+ },
+ "require-dev": {
+ "ext-redis": "*",
+ "larastan/larastan": "^2.0",
+ "mockery/mockery": "^1.4",
+ "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0",
+ "pestphp/pest": "^1.21|^2.0",
+ "pestphp/pest-plugin-laravel": "^1.2|^2.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^9.5|^10.0",
+ "spatie/laravel-data": "^1.0.0|^2.0.0|^4.0.0",
+ "spatie/pest-plugin-snapshots": "^1.1|^2.0",
+ "spatie/phpunit-snapshot-assertions": "^4.2|^5.0",
+ "spatie/ray": "^1.36"
+ },
+ "suggest": {
+ "spatie/data-transfer-object": "Allows for DTO casting to settings. (deprecated)"
+ },
+ "time": "2024-03-22T07:50:04+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Spatie\\LaravelSettings\\LaravelSettingsServiceProvider"
+ ]
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\LaravelSettings\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ruben Van Assche",
+ "email": "ruben@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Store your application settings",
+ "homepage": "https://github.com/spatie/laravel-settings",
+ "keywords": [
+ "laravel-settings",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-settings/issues",
+ "source": "https://github.com/spatie/laravel-settings/tree/3.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "install-path": "../spatie/laravel-settings"
+ },
+ {
+ "name": "spatie/temporary-directory",
+ "version": "2.2.1",
+ "version_normalized": "2.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/temporary-directory.git",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
+ },
+ "time": "2023-12-25T11:46:58+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\TemporaryDirectory\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alex Vanderbist",
+ "email": "alex@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Easily create, use and destroy temporary directories",
+ "homepage": "https://github.com/spatie/temporary-directory",
+ "keywords": [
+ "php",
+ "spatie",
+ "temporary-directory"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/temporary-directory/issues",
+ "source": "https://github.com/spatie/temporary-directory/tree/2.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "install-path": "../spatie/temporary-directory"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91",
+ "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/string": "^5.4|^6.0|^7.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command-line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/console"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v7.1.1",
+ "version_normalized": "7.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
+ "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "time": "2024-05-31T14:57:53+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Converts CSS selectors to XPath expressions",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/css-selector/tree/v7.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/css-selector"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.3.0",
+ "version_normalized": "3.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "time": "2023-05-23T14:45:45+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/deprecation-contracts"
+ },
+ {
+ "name": "symfony/error-handler",
+ "version": "v6.4.10",
+ "version_normalized": "6.4.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/error-handler.git",
+ "reference": "231f1b2ee80f72daa1972f7340297d67439224f0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0",
+ "reference": "231f1b2ee80f72daa1972f7340297d67439224f0",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "^1|^2|^3",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ },
+ "conflict": {
+ "symfony/deprecation-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4"
+ },
+ "require-dev": {
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/serializer": "^5.4|^6.0|^7.0"
+ },
+ "time": "2024-07-26T12:30:32+00:00",
+ "bin": [
+ "Resources/bin/patch-type-declarations"
+ ],
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ErrorHandler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to manage errors and ease debugging PHP code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/error-handler/tree/v6.4.10"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/error-handler"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v7.1.1",
+ "version_normalized": "7.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
+ "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/event-dispatcher-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<6.4",
+ "symfony/service-contracts": "<2.5"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/stopwatch": "^6.4|^7.0"
+ },
+ "time": "2024-05-31T14:57:53+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/event-dispatcher"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.4.0",
+ "version_normalized": "3.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
+ "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1"
+ },
+ "time": "2023-05-23T14:45:45+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/event-dispatcher-contracts"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v6.4.10",
+ "version_normalized": "6.4.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "af29198d87112bebdd397bd7735fbd115997824c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c",
+ "reference": "af29198d87112bebdd397bd7735fbd115997824c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.0|^7.0"
+ },
+ "time": "2024-07-24T07:06:38+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v6.4.10"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/finder"
+ },
+ {
+ "name": "symfony/html-sanitizer",
+ "version": "v7.1.1",
+ "version_normalized": "7.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/html-sanitizer.git",
+ "reference": "737cbaa8082b696d0574afd91b9f471eca67fc65"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/737cbaa8082b696d0574afd91b9f471eca67fc65",
+ "reference": "737cbaa8082b696d0574afd91b9f471eca67fc65",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "league/uri": "^6.5|^7.0",
+ "masterminds/html5": "^2.7.2",
+ "php": ">=8.2"
+ },
+ "time": "2024-05-31T14:55:39+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HtmlSanitizer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Titouan Galopin",
+ "email": "galopintitouan@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "Purifier",
+ "html",
+ "sanitizer"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/html-sanitizer/tree/v7.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/html-sanitizer"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "27de8cc95e11db7a50b027e71caaab9024545947"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947",
+ "reference": "27de8cc95e11db7a50b027e71caaab9024545947",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php83": "^1.27"
+ },
+ "conflict": {
+ "symfony/cache": "<6.3"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.13.1|^3|^4",
+ "predis/predis": "^1.1|^2.0",
+ "symfony/cache": "^6.3|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0",
+ "symfony/mime": "^5.4|^6.0|^7.0",
+ "symfony/rate-limiter": "^5.4|^6.0|^7.0"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Defines an object-oriented layer for the HTTP specification",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-foundation/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/http-foundation"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1",
+ "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "^1|^2|^3",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<5.4",
+ "symfony/cache": "<5.4",
+ "symfony/config": "<6.1",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/doctrine-bridge": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-client": "<5.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/mailer": "<5.4",
+ "symfony/messenger": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/translation-contracts": "<2.5",
+ "symfony/twig-bridge": "<5.4",
+ "symfony/validator": "<6.4",
+ "symfony/var-dumper": "<6.3",
+ "twig/twig": "<2.13"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/cache": "^1.0|^2.0|^3.0",
+ "symfony/browser-kit": "^5.4|^6.0|^7.0",
+ "symfony/clock": "^6.2|^7.0",
+ "symfony/config": "^6.1|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/css-selector": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/dom-crawler": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/property-access": "^5.4.5|^6.0.5|^7.0",
+ "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^6.4.4|^7.0.4",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/translation": "^5.4|^6.0|^7.0",
+ "symfony/translation-contracts": "^2.5|^3",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/var-dumper": "^5.4|^6.4|^7.0",
+ "symfony/var-exporter": "^6.2|^7.0",
+ "twig/twig": "^2.13|^3.0.4"
+ },
+ "time": "2024-06-02T16:06:25+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a structured process for converting a Request into a Response",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-kernel/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/http-kernel"
+ },
+ {
+ "name": "symfony/mailer",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mailer.git",
+ "reference": "76326421d44c07f7824b19487cfbf87870b37efc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/76326421d44c07f7824b19487cfbf87870b37efc",
+ "reference": "76326421d44c07f7824b19487cfbf87870b37efc",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "egulias/email-validator": "^2.1.10|^3|^4",
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1",
+ "psr/log": "^1|^2|^3",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/mime": "^6.2|^7.0",
+ "symfony/service-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/http-kernel": "<5.4",
+ "symfony/messenger": "<6.2",
+ "symfony/mime": "<6.2",
+ "symfony/twig-bridge": "<6.2.1"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^6.2|^7.0",
+ "symfony/twig-bridge": "^6.2|^7.0"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mailer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Helps sending emails",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/mailer/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/mailer"
+ },
+ {
+ "name": "symfony/mime",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mime.git",
+ "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33",
+ "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-intl-idn": "^1.10",
+ "symfony/polyfill-mbstring": "^1.0"
+ },
+ "conflict": {
+ "egulias/email-validator": "~3.0.0",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/mailer": "<5.4",
+ "symfony/serializer": "<6.3.2"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.1.10|^3.1|^4",
+ "league/html-to-markdown": "^5.0",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.4|^7.0",
+ "symfony/property-access": "^5.4|^6.0|^7.0",
+ "symfony/property-info": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^6.3.2|^7.0"
+ },
+ "time": "2024-06-01T07:50:16+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mime\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Allows manipulating MIME messages",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "mime",
+ "mime-type"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/mime/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/mime"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+ "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-ctype"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.30.0",
+ "version_normalized": "1.30.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "time": "2024-05-31T15:07:36+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-intl-grapheme"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.30.0",
+ "version_normalized": "1.30.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
+ "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "time": "2024-05-31T15:07:36+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-intl-idn"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
+ "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-intl-normalizer"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-mbstring"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25",
+ "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php72"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php80"
+ },
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.30.0",
+ "version_normalized": "1.30.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
+ "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2024-06-19T12:35:24+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php83"
+ },
+ {
+ "name": "symfony/polyfill-uuid",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-uuid.git",
+ "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853",
+ "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-uuid": "*"
+ },
+ "suggest": {
+ "ext-uuid": "For best performance"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Uuid\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for uuid functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-uuid"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5",
+ "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/process"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58",
+ "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.12",
+ "symfony/config": "<6.2",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.12|^2",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.2|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Routing\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Maps an HTTP request to a set of configuration variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "router",
+ "routing",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/routing/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/routing"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.4.0",
+ "version_normalized": "3.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
+ "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/container": "^2.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "time": "2023-07-30T20:28:31+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/service-contracts"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v7.1.2",
+ "version_normalized": "7.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8",
+ "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.5"
+ },
+ "require-dev": {
+ "symfony/emoji": "^7.1",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/translation-contracts": "^2.5|^3.0",
+ "symfony/var-exporter": "^6.4|^7.0"
+ },
+ "time": "2024-06-28T09:27:18+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v7.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/string"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a",
+ "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^2.5|^3.0"
+ },
+ "conflict": {
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/http-kernel": "<5.4",
+ "symfony/service-contracts": "<2.5",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.3|3.0"
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4.18|^5.0",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^5.4|^6.0|^7.0",
+ "symfony/polyfill-intl-icu": "^1.21",
+ "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to internationalize your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/translation"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v3.4.1",
+ "version_normalized": "3.4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "06450585bf65e978026bda220cdebca3f867fde7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7",
+ "reference": "06450585bf65e978026bda220cdebca3f867fde7",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "time": "2023-12-26T14:02:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/translation-contracts"
+ },
+ {
+ "name": "symfony/uid",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/uid.git",
+ "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
+ "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/polyfill-uuid": "^1.15"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0|^7.0"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Uid\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to generate and represent UIDs",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "UID",
+ "ulid",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/uid/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/uid"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v6.4.8",
+ "version_normalized": "6.4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25",
+ "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/console": "<5.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^6.3|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "twig/twig": "^2.13|^3.0.4"
+ },
+ "time": "2024-05-31T14:49:08+00:00",
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides mechanisms for walking through any arbitrary PHP variable",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v6.4.8"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/var-dumper"
+ },
+ {
+ "name": "tijsverkoyen/css-to-inline-styles",
+ "version": "v2.2.7",
+ "version_normalized": "2.2.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
+ "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb",
+ "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "php": "^5.5 || ^7.0 || ^8.0",
+ "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10"
+ },
+ "time": "2023-12-08T13:03:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "TijsVerkoyen\\CssToInlineStyles\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Tijs Verkoyen",
+ "email": "css_to_inline_styles@verkoyen.eu",
+ "role": "Developer"
+ }
+ ],
+ "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
+ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
+ "support": {
+ "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7"
+ },
+ "install-path": "../tijsverkoyen/css-to-inline-styles"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v5.6.0",
+ "version_normalized": "5.6.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
+ "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-pcre": "*",
+ "graham-campbell/result-type": "^1.1.2",
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9.2",
+ "symfony/polyfill-ctype": "^1.24",
+ "symfony/polyfill-mbstring": "^1.24",
+ "symfony/polyfill-php80": "^1.24"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "ext-filter": "*",
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+ },
+ "suggest": {
+ "ext-filter": "Required to use the boolean validator."
+ },
+ "time": "2023-11-12T22:43:29+00:00",
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
+ "branch-alias": {
+ "dev-master": "5.6-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "https://github.com/vlucas"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "support": {
+ "issues": "https://github.com/vlucas/phpdotenv/issues",
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../vlucas/phpdotenv"
+ },
+ {
+ "name": "voku/portable-ascii",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/voku/portable-ascii.git",
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
+ },
+ "suggest": {
+ "ext-intl": "Use Intl for transliterator_transliterate() support"
+ },
+ "time": "2022-03-08T17:03:00+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "voku\\": "src/voku/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Lars Moelleken",
+ "homepage": "http://www.moelleken.org/"
+ }
+ ],
+ "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
+ "homepage": "https://github.com/voku/portable-ascii",
+ "keywords": [
+ "ascii",
+ "clean",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/voku/portable-ascii/issues",
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/moelleken",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/voku",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/portable-ascii",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../voku/portable-ascii"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.11.0",
+ "version_normalized": "1.11.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-ctype": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "time": "2022-06-03T18:03:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ },
+ "install-path": "../webmozart/assert"
+ }
+ ],
+ "dev": true,
+ "dev-package-names": []
+}
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
new file mode 100644
index 0000000..810c44e
--- /dev/null
+++ b/vendor/composer/installed.php
@@ -0,0 +1,1185 @@
+ array(
+ 'name' => '__root__',
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => '3913bcf7e17af0657a6f38d5a72c0152c65f9f26',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev' => true,
+ ),
+ 'versions' => array(
+ '__root__' => array(
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => '3913bcf7e17af0657a6f38d5a72c0152c65f9f26',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'anourvalar/eloquent-serialize' => array(
+ 'pretty_version' => '1.2.23',
+ 'version' => '1.2.23.0',
+ 'reference' => 'fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../anourvalar/eloquent-serialize',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'blade-ui-kit/blade-heroicons' => array(
+ 'pretty_version' => '2.4.0',
+ 'version' => '2.4.0.0',
+ 'reference' => 'a7c377a4ef88cd54712e3e15cbed30446820da0b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../blade-ui-kit/blade-heroicons',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'blade-ui-kit/blade-icons' => array(
+ 'pretty_version' => '1.7.0',
+ 'version' => '1.7.0.0',
+ 'reference' => '74275f44c71e815b85bf7cea66e3bf98c57fb7e4',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../blade-ui-kit/blade-icons',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'brick/math' => array(
+ 'pretty_version' => '0.11.0',
+ 'version' => '0.11.0.0',
+ 'reference' => '0ad82ce168c82ba30d1c01ec86116ab52f589478',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../brick/math',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'carbonphp/carbon-doctrine-types' => array(
+ 'pretty_version' => '2.1.0',
+ 'version' => '2.1.0.0',
+ 'reference' => '99f76ffa36cce3b70a4a6abce41dba15ca2e84cb',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../carbonphp/carbon-doctrine-types',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'danharrin/date-format-converter' => array(
+ 'pretty_version' => 'v0.3.1',
+ 'version' => '0.3.1.0',
+ 'reference' => '7c31171bc981e48726729a5f3a05a2d2b63f0b1e',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../danharrin/date-format-converter',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'danharrin/livewire-rate-limiting' => array(
+ 'pretty_version' => 'v1.3.0',
+ 'version' => '1.3.0.0',
+ 'reference' => 'bf16003f0d977b5a41071526d697eec94ac41735',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../danharrin/livewire-rate-limiting',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'dflydev/dot-access-data' => array(
+ 'pretty_version' => 'v3.0.3',
+ 'version' => '3.0.3.0',
+ 'reference' => 'a23a2bf4f31d3518f3ecb38660c95715dfead60f',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../dflydev/dot-access-data',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/cache' => array(
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'reference' => '1ca8f21980e770095a31456042471a57bc4c68fb',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/cache',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/dbal' => array(
+ 'pretty_version' => '3.8.6',
+ 'version' => '3.8.6.0',
+ 'reference' => 'b7411825cf7efb7e51f9791dea19d86e43b399a1',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/dbal',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/deprecations' => array(
+ 'pretty_version' => '1.1.3',
+ 'version' => '1.1.3.0',
+ 'reference' => 'dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/deprecations',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/event-manager' => array(
+ 'pretty_version' => '2.0.1',
+ 'version' => '2.0.1.0',
+ 'reference' => 'b680156fa328f1dfd874fd48c7026c41570b9c6e',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/event-manager',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/inflector' => array(
+ 'pretty_version' => '2.0.10',
+ 'version' => '2.0.10.0',
+ 'reference' => '5817d0659c5b50c9b950feb9af7b9668e2c436bc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/inflector',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/lexer' => array(
+ 'pretty_version' => '3.0.1',
+ 'version' => '3.0.1.0',
+ 'reference' => '31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/lexer',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'dragonmantank/cron-expression' => array(
+ 'pretty_version' => 'v3.3.3',
+ 'version' => '3.3.3.0',
+ 'reference' => 'adfb1f505deb6384dc8b39804c5065dd3c8c8c0a',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../dragonmantank/cron-expression',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'egulias/email-validator' => array(
+ 'pretty_version' => '4.0.2',
+ 'version' => '4.0.2.0',
+ 'reference' => 'ebaaf5be6c0286928352e054f2d5125608e5405e',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../egulias/email-validator',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/actions' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => '483557cc10c84c8536e12280da7855bf53c2a4e2',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/actions',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/filament' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => 'c89fcc0ef9f9d9222cc25bcd4f7c327a23c8352c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/filament',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/forms' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => 'f58cc7d23ef2df1594f13d01e8dd016ed9033803',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/forms',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/infolists' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => '82f96586e082905a7c86362e83309829f0d23bd0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/infolists',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/notifications' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => 'a78b0be5e5b2a598e65ba62ae5cfbb3d464f6bbb',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/notifications',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/spatie-laravel-settings-plugin' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => 'bdb75d72cb32545b29f7cf506f18b57730d6a2a7',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/spatie-laravel-settings-plugin',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/support' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => 'a62d52739d661042123da30fa2b8e64e46bef901',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/support',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/tables' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => '4debcc2b5dca501e6061a39c30565692c156ecd1',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/tables',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'filament/widgets' => array(
+ 'pretty_version' => 'v3.2.87',
+ 'version' => '3.2.87.0',
+ 'reference' => '0253f4312909a17e2d80b70021daae3f1659e7da',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../filament/widgets',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'fruitcake/php-cors' => array(
+ 'pretty_version' => 'v1.2.0',
+ 'version' => '1.2.0.0',
+ 'reference' => '58571acbaa5f9f462c9c77e911700ac66f446d4e',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../fruitcake/php-cors',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'graham-campbell/result-type' => array(
+ 'pretty_version' => 'v1.1.2',
+ 'version' => '1.1.2.0',
+ 'reference' => 'fbd48bce38f73f8a4ec8583362e732e4095e5862',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../graham-campbell/result-type',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'guzzlehttp/uri-template' => array(
+ 'pretty_version' => 'v1.0.3',
+ 'version' => '1.0.3.0',
+ 'reference' => 'ecea8feef63bd4fef1f037ecb288386999ecc11c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../guzzlehttp/uri-template',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'illuminate/auth' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/broadcasting' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/bus' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/cache' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/collections' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/conditionable' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/config' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/console' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/container' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/contracts' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/cookie' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/database' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/encryption' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/events' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/filesystem' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/hashing' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/http' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/log' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/macroable' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/mail' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/notifications' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/pagination' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/pipeline' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/process' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/queue' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/redis' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/routing' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/session' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/support' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/testing' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/translation' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/validation' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'illuminate/view' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => 'v10.48.12',
+ ),
+ ),
+ 'kirschbaum-development/eloquent-power-joins' => array(
+ 'pretty_version' => '3.5.4',
+ 'version' => '3.5.4.0',
+ 'reference' => 'fc8bb379f062cd120ffab20a6913ad824c3366d8',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../kirschbaum-development/eloquent-power-joins',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'laravel/framework' => array(
+ 'pretty_version' => 'v10.48.12',
+ 'version' => '10.48.12.0',
+ 'reference' => '590afea38e708022662629fbf5184351fa82cf08',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../laravel/framework',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'laravel/prompts' => array(
+ 'pretty_version' => 'v0.1.23',
+ 'version' => '0.1.23.0',
+ 'reference' => '9bc4df7c699b0452c6b815e64a2d84b6d7f99400',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../laravel/prompts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'laravel/serializable-closure' => array(
+ 'pretty_version' => 'v1.3.3',
+ 'version' => '1.3.3.0',
+ 'reference' => '3dbf8a8e914634c48d389c1234552666b3d43754',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../laravel/serializable-closure',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/commonmark' => array(
+ 'pretty_version' => '2.4.2',
+ 'version' => '2.4.2.0',
+ 'reference' => '91c24291965bd6d7c46c46a12ba7492f83b1cadf',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/commonmark',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/config' => array(
+ 'pretty_version' => 'v1.2.0',
+ 'version' => '1.2.0.0',
+ 'reference' => '754b3604fb2984c71f4af4a9cbe7b57f346ec1f3',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/config',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/csv' => array(
+ 'pretty_version' => '9.16.0',
+ 'version' => '9.16.0.0',
+ 'reference' => '998280c6c34bd67d8125fdc8b45bae28d761b440',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/csv',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/flysystem' => array(
+ 'pretty_version' => '3.28.0',
+ 'version' => '3.28.0.0',
+ 'reference' => 'e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/flysystem',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/flysystem-local' => array(
+ 'pretty_version' => '3.28.0',
+ 'version' => '3.28.0.0',
+ 'reference' => '13f22ea8be526ea58c2ddff9e158ef7c296e4f40',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/flysystem-local',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/mime-type-detection' => array(
+ 'pretty_version' => '1.15.0',
+ 'version' => '1.15.0.0',
+ 'reference' => 'ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/mime-type-detection',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/uri' => array(
+ 'pretty_version' => '7.4.0',
+ 'version' => '7.4.0.0',
+ 'reference' => 'bf414ba956d902f5d98bf9385fcf63954f09dce5',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/uri',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'league/uri-interfaces' => array(
+ 'pretty_version' => '7.4.0',
+ 'version' => '7.4.0.0',
+ 'reference' => 'bd8c487ec236930f7bbc42b8d374fa882fbba0f3',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../league/uri-interfaces',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'livewire/livewire' => array(
+ 'pretty_version' => 'v3.5.0',
+ 'version' => '3.5.0.0',
+ 'reference' => '72e900825c560f0e4e620185b26c5441a8914435',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../livewire/livewire',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'masterminds/html5' => array(
+ 'pretty_version' => '2.8.1',
+ 'version' => '2.8.1.0',
+ 'reference' => 'f47dcf3c70c584de14f21143c55d9939631bc6cf',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../masterminds/html5',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'monolog/monolog' => array(
+ 'pretty_version' => '3.6.0',
+ 'version' => '3.6.0.0',
+ 'reference' => '4b18b21a5527a3d5ffdac2fd35d3ab25a9597654',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../monolog/monolog',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'mtdowling/cron-expression' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => '^1.0',
+ ),
+ ),
+ 'nesbot/carbon' => array(
+ 'pretty_version' => '2.72.5',
+ 'version' => '2.72.5.0',
+ 'reference' => 'afd46589c216118ecd48ff2b95d77596af1e57ed',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nesbot/carbon',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'nette/schema' => array(
+ 'pretty_version' => 'v1.3.0',
+ 'version' => '1.3.0.0',
+ 'reference' => 'a6d3a6d1f545f01ef38e60f375d1cf1f4de98188',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nette/schema',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'nette/utils' => array(
+ 'pretty_version' => 'v4.0.4',
+ 'version' => '4.0.4.0',
+ 'reference' => 'd3ad0aa3b9f934602cb3e3902ebccf10be34d218',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nette/utils',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'nunomaduro/termwind' => array(
+ 'pretty_version' => 'v1.15.1',
+ 'version' => '1.15.1.0',
+ 'reference' => '8ab0b32c8caa4a2e09700ea32925441385e4a5dc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nunomaduro/termwind',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'openspout/openspout' => array(
+ 'pretty_version' => 'v4.24.5',
+ 'version' => '4.24.5.0',
+ 'reference' => '393299ae21153f042f48b185f2adeb4b157d1d93',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../openspout/openspout',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'phpdocumentor/reflection-common' => array(
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'phpdocumentor/type-resolver' => array(
+ 'pretty_version' => '1.8.2',
+ 'version' => '1.8.2.0',
+ 'reference' => '153ae662783729388a584b4361f2545e4d841e3c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'phpoption/phpoption' => array(
+ 'pretty_version' => '1.9.3',
+ 'version' => '1.9.3.0',
+ 'reference' => 'e3fac8b24f56113f7cb96af14958c0dd16330f54',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpoption/phpoption',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'phpstan/phpdoc-parser' => array(
+ 'pretty_version' => '1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '536889f2b340489d328f5ffb7b02bb6b183ddedc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/cache' => array(
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/cache',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/clock' => array(
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/clock',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/clock-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0',
+ ),
+ ),
+ 'psr/container' => array(
+ 'pretty_version' => '2.0.2',
+ 'version' => '2.0.2.0',
+ 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/container',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/container-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.1|2.0',
+ ),
+ ),
+ 'psr/event-dispatcher' => array(
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/event-dispatcher',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/event-dispatcher-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0',
+ ),
+ ),
+ 'psr/http-factory' => array(
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'reference' => 'e616d01114759c4c489f93b099585439f795fe35',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/http-factory',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/http-message' => array(
+ 'pretty_version' => '2.0',
+ 'version' => '2.0.0.0',
+ 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/http-message',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/log' => array(
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/log',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/log-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0|2.0|3.0',
+ 1 => '3.0.0',
+ ),
+ ),
+ 'psr/simple-cache' => array(
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../psr/simple-cache',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'psr/simple-cache-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '1.0|2.0|3.0',
+ ),
+ ),
+ 'ramsey/collection' => array(
+ 'pretty_version' => '2.0.0',
+ 'version' => '2.0.0.0',
+ 'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../ramsey/collection',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'ramsey/uuid' => array(
+ 'pretty_version' => '4.7.5',
+ 'version' => '4.7.5.0',
+ 'reference' => '5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../ramsey/uuid',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'rhumsaa/uuid' => array(
+ 'dev_requirement' => false,
+ 'replaced' => array(
+ 0 => '4.7.5',
+ ),
+ ),
+ 'ryangjchandler/blade-capture-directive' => array(
+ 'pretty_version' => 'v1.0.0',
+ 'version' => '1.0.0.0',
+ 'reference' => 'cb6f58663d97f17bece176295240b740835e14f1',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../ryangjchandler/blade-capture-directive',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'spatie/color' => array(
+ 'pretty_version' => '1.5.3',
+ 'version' => '1.5.3.0',
+ 'reference' => '49739265900cabce4640cd26c3266fd8d2cca390',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../spatie/color',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'spatie/invade' => array(
+ 'pretty_version' => '2.1.0',
+ 'version' => '2.1.0.0',
+ 'reference' => 'b920f6411d21df4e8610a138e2e87ae4957d7f63',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../spatie/invade',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'spatie/laravel-package-tools' => array(
+ 'pretty_version' => '1.16.4',
+ 'version' => '1.16.4.0',
+ 'reference' => 'ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../spatie/laravel-package-tools',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'spatie/laravel-settings' => array(
+ 'pretty_version' => '3.3.2',
+ 'version' => '3.3.2.0',
+ 'reference' => '395066797823856638a0a2feb243b396a94e22e5',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../spatie/laravel-settings',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'spatie/temporary-directory' => array(
+ 'pretty_version' => '2.2.1',
+ 'version' => '2.2.1.0',
+ 'reference' => '76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../spatie/temporary-directory',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/console' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => 'be5854cee0e8c7b110f00d695d11debdfa1a2a91',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/console',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/css-selector' => array(
+ 'pretty_version' => 'v7.1.1',
+ 'version' => '7.1.1.0',
+ 'reference' => '1c7cee86c6f812896af54434f8ce29c8d94f9ff4',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/css-selector',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/deprecation-contracts' => array(
+ 'pretty_version' => 'v3.3.0',
+ 'version' => '3.3.0.0',
+ 'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/error-handler' => array(
+ 'pretty_version' => 'v6.4.10',
+ 'version' => '6.4.10.0',
+ 'reference' => '231f1b2ee80f72daa1972f7340297d67439224f0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/error-handler',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/event-dispatcher' => array(
+ 'pretty_version' => 'v7.1.1',
+ 'version' => '7.1.1.0',
+ 'reference' => '9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/event-dispatcher',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/event-dispatcher-contracts' => array(
+ 'pretty_version' => 'v3.4.0',
+ 'version' => '3.4.0.0',
+ 'reference' => 'a76aed96a42d2b521153fb382d418e30d18b59df',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/event-dispatcher-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '2.0|3.0',
+ ),
+ ),
+ 'symfony/finder' => array(
+ 'pretty_version' => 'v6.4.10',
+ 'version' => '6.4.10.0',
+ 'reference' => 'af29198d87112bebdd397bd7735fbd115997824c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/finder',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/html-sanitizer' => array(
+ 'pretty_version' => 'v7.1.1',
+ 'version' => '7.1.1.0',
+ 'reference' => '737cbaa8082b696d0574afd91b9f471eca67fc65',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/html-sanitizer',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/http-foundation' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => '27de8cc95e11db7a50b027e71caaab9024545947',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/http-foundation',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/http-kernel' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => '6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/http-kernel',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/mailer' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => '76326421d44c07f7824b19487cfbf87870b37efc',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/mailer',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/mime' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => '618597ab8b78ac86d1c75a9d0b35540cda074f33',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/mime',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-ctype' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => 'ef4d7e442ca910c4764bce785146269b30cb5fc4',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-intl-grapheme' => array(
+ 'pretty_version' => 'v1.30.0',
+ 'version' => '1.30.0.0',
+ 'reference' => '64647a7c30b2283f5d49b874d84a18fc22054b7a',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-intl-idn' => array(
+ 'pretty_version' => 'v1.30.0',
+ 'version' => '1.30.0.0',
+ 'reference' => 'a6e83bdeb3c84391d1dfe16f42e40727ce524a5c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-intl-normalizer' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => 'bc45c394692b948b4d383a08d7753968bed9a83d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-mbstring' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '9773676c8a1bb1f8d4340a62efe641cf76eda7ec',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-php72' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '861391a8da9a04cbad2d232ddd9e4893220d6e25',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-php72',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-php80' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '87b68208d5c1188808dd7839ee1e6c8ec3b02f1b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-php80',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-php83' => array(
+ 'pretty_version' => 'v1.30.0',
+ 'version' => '1.30.0.0',
+ 'reference' => 'dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-php83',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-uuid' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '3abdd21b0ceaa3000ee950097bc3cf9efc137853',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-uuid',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/process' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => '8d92dd79149f29e89ee0f480254db595f6a6a2c5',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/process',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/routing' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => '8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/routing',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/service-contracts' => array(
+ 'pretty_version' => 'v3.4.0',
+ 'version' => '3.4.0.0',
+ 'reference' => 'b3313c2dbffaf71c8de2934e2ea56ed2291a3838',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/service-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/string' => array(
+ 'pretty_version' => 'v7.1.2',
+ 'version' => '7.1.2.0',
+ 'reference' => '14221089ac66cf82e3cf3d1c1da65de305587ff8',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/string',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/translation' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => 'a002933b13989fc4bd0b58e04bf7eec5210e438a',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/translation',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/translation-contracts' => array(
+ 'pretty_version' => 'v3.4.1',
+ 'version' => '3.4.1.0',
+ 'reference' => '06450585bf65e978026bda220cdebca3f867fde7',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/translation-contracts',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/translation-implementation' => array(
+ 'dev_requirement' => false,
+ 'provided' => array(
+ 0 => '2.3|3.0',
+ ),
+ ),
+ 'symfony/uid' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => '35904eca37a84bb764c560cbfcac9f0ac2bcdbdf',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/uid',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/var-dumper' => array(
+ 'pretty_version' => 'v6.4.8',
+ 'version' => '6.4.8.0',
+ 'reference' => 'ad23ca4312395f0a8a8633c831ef4c4ee542ed25',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/var-dumper',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'tijsverkoyen/css-to-inline-styles' => array(
+ 'pretty_version' => 'v2.2.7',
+ 'version' => '2.2.7.0',
+ 'reference' => '83ee6f38df0a63106a9e4536e3060458b74ccedb',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../tijsverkoyen/css-to-inline-styles',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'vlucas/phpdotenv' => array(
+ 'pretty_version' => 'v5.6.0',
+ 'version' => '5.6.0.0',
+ 'reference' => '2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../vlucas/phpdotenv',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'voku/portable-ascii' => array(
+ 'pretty_version' => '2.0.1',
+ 'version' => '2.0.1.0',
+ 'reference' => 'b56450eed252f6801410d810c8e1727224ae0743',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../voku/portable-ascii',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'webmozart/assert' => array(
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../webmozart/assert',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ ),
+);
diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php
new file mode 100644
index 0000000..d32d90c
--- /dev/null
+++ b/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+= 80200)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+ } elseif (!headers_sent()) {
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
+ }
+ }
+ trigger_error(
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
+ E_USER_ERROR
+ );
+}
diff --git a/vendor/danharrin/date-format-converter/.gitattributes b/vendor/danharrin/date-format-converter/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/vendor/danharrin/date-format-converter/.github/FUNDING.yml b/vendor/danharrin/date-format-converter/.github/FUNDING.yml
new file mode 100644
index 0000000..4df58a1
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/.github/FUNDING.yml
@@ -0,0 +1 @@
+github: [danharrin]
diff --git a/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/bug_report.md b/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..916ebae
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,23 @@
+---
+name: Bug report
+about: Create a report to help us improve
+labels: bug
+assignees: DanHarrin
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To reproduce**
+A simplified code example to demonstrate the issue you are facing.
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Context**
+- Package version: [e.g. 0.1.0]
+- Server OS: [e.g. Ubuntu 18.04.4]
+- PHP version: [e.g. 7.4]
+
+**Additional details**
+Add any other details about the problem here.
diff --git a/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/config.yml b/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..89e253d
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Feature request
+ url: https://github.com/danharrin/date-format-converter/discussions/new
+ about: For ideas or feature requests
+ - name: Support questions & other
+ url: https://github.com/danharrin/date-format-converter/discussions/new
+ about: If you have a question or need help installing using the package
diff --git a/vendor/danharrin/date-format-converter/.gitignore b/vendor/danharrin/date-format-converter/.gitignore
new file mode 100644
index 0000000..dfd6caa
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/.gitignore
@@ -0,0 +1,2 @@
+/vendor
+composer.lock
\ No newline at end of file
diff --git a/vendor/danharrin/date-format-converter/CODE_OF_CONDUCT.md b/vendor/danharrin/date-format-converter/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..e330c34
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/CODE_OF_CONDUCT.md
@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting Dan Harrin at dan@danharrin.com. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff --git a/vendor/danharrin/date-format-converter/LICENSE.md b/vendor/danharrin/date-format-converter/LICENSE.md
new file mode 100644
index 0000000..0069f9e
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/LICENSE.md
@@ -0,0 +1,21 @@
+# MIT License
+
+Copyright (c) Dan Harrin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/danharrin/date-format-converter/README.md b/vendor/danharrin/date-format-converter/README.md
new file mode 100644
index 0000000..badcb7d
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/README.md
@@ -0,0 +1,33 @@
+
+
+
+
+This package allows you to convert token-based date formats between standards.
+
+## Installation
+
+You can use Composer to install this package into your application:
+
+```
+composer require danharrin/date-format-converter
+```
+
+## Usage
+
+Use the `convert_date_format()` method to initialise a new instance of the converter, ready to use:
+
+```php
+convert_date_format('Y-m-d H:i:s')->to('day.js');
+// YYYY-MM-DD HH:mm:ss
+
+convert_date_format('Y-m-d H:i:s')->to('moment.js');
+// YYYY-MM-DD HH:mm:ss
+```
+
+## Need Help?
+
+🐞 If you spot a bug with this package, please [submit a detailed issue](https://github.com/danharrin/date-format-converter/issues/new), and wait for assistance.
+
+🤔 If you have a question or feature request, please [start a new discussion](https://github.com/danharrin/date-format-converter/discussions/new).
+
+🔐 If you discover a vulnerability within the package, please review our [security policy](https://github.com/danharrin/date-format-converter/blob/main/SECURITY.md).
diff --git a/vendor/danharrin/date-format-converter/SECURITY.md b/vendor/danharrin/date-format-converter/SECURITY.md
new file mode 100644
index 0000000..9954dc1
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/SECURITY.md
@@ -0,0 +1,11 @@
+# Security Policy
+
+## Supported Versions
+
+| Version | Supported |
+| ------- | ------------------ |
+| 0.x | :white_check_mark: |
+
+## Reporting a Vulnerability
+
+If you discover a security vulnerability within the package, please email Dan Harrin via [dan@danharrin.com](mailto:dan@danharrin.com). All security vulnerabilities will be promptly addressed.
diff --git a/vendor/danharrin/date-format-converter/composer.json b/vendor/danharrin/date-format-converter/composer.json
new file mode 100644
index 0000000..79ed30c
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/composer.json
@@ -0,0 +1,32 @@
+{
+ "name": "danharrin/date-format-converter",
+ "description": "Convert token-based date formats between standards.",
+ "license": "MIT",
+ "homepage": "https://github.com/danharrin/date-format-converter",
+ "support": {
+ "issues": "https://github.com/danharrin/date-format-converter/issues",
+ "source": "https://github.com/danharrin/date-format-converter"
+ },
+ "authors": [
+ {
+ "name": "Dan Harrin",
+ "email": "dan@danharrin.com"
+ }
+ ],
+ "require": {
+ "php": "^7.2|^8.0"
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php",
+ "src/standards.php"
+ ],
+ "psr-4": {
+ "DanHarrin\\DateFormatConverter\\": "src/"
+ }
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "minimum-stability": "dev"
+}
diff --git a/vendor/danharrin/date-format-converter/src/Converter.php b/vendor/danharrin/date-format-converter/src/Converter.php
new file mode 100644
index 0000000..be87315
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/src/Converter.php
@@ -0,0 +1,42 @@
+format = $format;
+ }
+
+ public function to($standard)
+ {
+ $format = '';
+
+ $escape = false;
+
+ foreach (str_split($this->format) as $token) {
+ if ($token === '[') {
+ $escape = true;
+ }
+
+ if ($escape) {
+ if ($token === ']') {
+ $escape = false;
+ }
+
+ $format .= $token;
+
+ continue;
+ }
+
+ $format .= array_key_exists($token, DATE_FORMAT_STANDARDS) ?
+ DATE_FORMAT_STANDARDS[$token][$standard] :
+ $token;
+ }
+
+ return $format;
+ }
+}
diff --git a/vendor/danharrin/date-format-converter/src/helpers.php b/vendor/danharrin/date-format-converter/src/helpers.php
new file mode 100644
index 0000000..22da813
--- /dev/null
+++ b/vendor/danharrin/date-format-converter/src/helpers.php
@@ -0,0 +1,10 @@
+ [
+ 'day.js' => 'A',
+ 'moment.js' => 'A',
+ ],
+ 'a' => [
+ 'day.js' => 'a',
+ 'moment.js' => 'a',
+ ],
+ 'B' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'c' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'D' => [
+ 'day.js' => 'ddd',
+ 'moment.js' => 'ddd',
+ ],
+ 'd' => [
+ 'day.js' => 'DD',
+ 'moment.js' => 'DD',
+ ],
+ 'e' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'F' => [
+ 'day.js' => 'MMMM',
+ 'moment.js' => 'MMMM',
+ ],
+ 'G' => [
+ 'day.js' => 'H',
+ 'moment.js' => 'H',
+ ],
+ 'g' => [
+ 'day.js' => 'h',
+ 'moment.js' => 'h',
+ ],
+ 'H' => [
+ 'day.js' => 'HH',
+ 'moment.js' => 'HH',
+ ],
+ 'h' => [
+ 'day.js' => 'hh',
+ 'moment.js' => 'hh',
+ ],
+ 'i' => [
+ 'day.js' => 'mm',
+ 'moment.js' => 'mm',
+ ],
+ 'I' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'j' => [
+ 'day.js' => 'D',
+ 'moment.js' => 'D',
+ ],
+ 'L' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'l' => [
+ 'day.js' => 'dddd',
+ 'moment.js' => 'dddd',
+ ],
+ 'M' => [
+ 'day.js' => 'MMM',
+ 'moment.js' => 'MMM',
+ ],
+ 'm' => [
+ 'day.js' => 'MM',
+ 'moment.js' => 'MM',
+ ],
+ 'N' => [
+ 'day.js' => '',
+ 'moment.js' => 'E',
+ ],
+ 'n' => [
+ 'day.js' => 'M',
+ 'moment.js' => 'M',
+ ],
+ 'O' => [
+ 'day.js' => 'ZZ',
+ 'moment.js' => 'ZZ',
+ ],
+ 'o' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'P' => [
+ 'day.js' => 'Z',
+ 'moment.js' => 'Z',
+ ],
+ 'p' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'r' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'S' => [
+ 'day.js' => 'o',
+ 'moment.js' => 'o',
+ ],
+ 's' => [
+ 'day.js' => 'ss',
+ 'moment.js' => 'ss',
+ ],
+ 'T' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 't' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'U' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'u' => [
+ 'day.js' => '',
+ 'moment.js' => '',
+ ],
+ 'v' => [
+ 'day.js' => 'SSS',
+ 'moment.js' => 'SSS',
+ ],
+ 'w' => [
+ 'day.js' => '',
+ 'moment.js' => 'e',
+ ],
+ 'Y' => [
+ 'day.js' => 'YYYY',
+ 'moment.js' => 'YYYY',
+ ],
+ 'y' => [
+ 'day.js' => 'YY',
+ 'moment.js' => 'YY',
+ ],
+ 'X' => [
+ 'day.js' => '',
+ 'moment.js' => 'DDDD',
+ ],
+];
diff --git a/vendor/danharrin/livewire-rate-limiting/.github/FUNDING.yml b/vendor/danharrin/livewire-rate-limiting/.github/FUNDING.yml
new file mode 100644
index 0000000..4df58a1
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/.github/FUNDING.yml
@@ -0,0 +1 @@
+github: [danharrin]
diff --git a/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/bug_report.md b/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..02228f3
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,25 @@
+---
+name: Bug report
+about: Create a report to help us improve
+labels: bug
+assignees: DanHarrin
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To reproduce**
+A simplified code example to demonstrate the issue you are facing.
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Context**
+- Package version: [e.g. 0.1.0]
+- Livewire version: [e.g. 2.0.0]
+- Laravel version: [e.g. 8.0.0]
+- Server OS: [e.g. Ubuntu 18.04.4]
+- PHP version: [e.g. 7.4]
+
+**Additional details**
+Add any other details about the problem here.
diff --git a/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/config.yml b/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..720ab07
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Feature request
+ url: https://github.com/danharrin/livewire-rate-limiting/discussions/new
+ about: For ideas or feature requests
+ - name: Support questions & other
+ url: https://github.com/danharrin/livewire-rate-limiting/discussions/new
+ about: If you have a question or need help installing using the package
diff --git a/vendor/danharrin/livewire-rate-limiting/.github/workflows/tests.yml b/vendor/danharrin/livewire-rate-limiting/.github/workflows/tests.yml
new file mode 100644
index 0000000..0df7b33
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/.github/workflows/tests.yml
@@ -0,0 +1,40 @@
+name: tests
+
+on:
+ push:
+ pull_request:
+
+jobs:
+ run-tests:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ php: [ 8.3, 8.2 ]
+ laravel: [ 11.*, 10.* ]
+ dependency-version: [ prefer-stable ]
+ include:
+ - laravel: 11.*
+ testbench: 9.*
+ - laravel: 10.*
+ testbench: 8.*
+ name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }}
+ steps:
+ - uses: actions/checkout@v2
+ - name: Cache dependencies
+ uses: actions/cache@v2
+ with:
+ path: ~/.composer/cache/files
+ key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: mbstring, pdo, pdo_sqlite
+ coverage: none
+ - name: Install dependencies
+ run: |
+ composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
+ composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest
+ - name: Execute tests
+ run: vendor/bin/phpunit
diff --git a/vendor/danharrin/livewire-rate-limiting/.gitignore b/vendor/danharrin/livewire-rate-limiting/.gitignore
new file mode 100644
index 0000000..ef30700
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/.gitignore
@@ -0,0 +1,4 @@
+/.idea
+/vendor
+.phpunit.result.cache
+.phpunit.cache
diff --git a/vendor/danharrin/livewire-rate-limiting/CODE_OF_CONDUCT.md b/vendor/danharrin/livewire-rate-limiting/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..e330c34
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/CODE_OF_CONDUCT.md
@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting Dan Harrin at dan@danharrin.com. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff --git a/vendor/danharrin/livewire-rate-limiting/LICENSE.md b/vendor/danharrin/livewire-rate-limiting/LICENSE.md
new file mode 100644
index 0000000..0069f9e
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/LICENSE.md
@@ -0,0 +1,21 @@
+# MIT License
+
+Copyright (c) Dan Harrin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/danharrin/livewire-rate-limiting/README.md b/vendor/danharrin/livewire-rate-limiting/README.md
new file mode 100644
index 0000000..748640b
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/README.md
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+This package allows you to apply rate limiters to Laravel Livewire actions. This is useful for throttling login attempts and other brute force attacks, reducing spam, and more.
+
+## Installation
+
+You can use Composer to install this package into your application:
+
+```
+composer require danharrin/livewire-rate-limiting
+```
+
+This package requires at least Laravel v8.x, when rate limiting improvements were introduced.
+
+This package is tested to support the `file` and `redis` cache drivers, but not `array`.
+
+## Usage
+
+Apply the `DanHarrin\LivewireRateLimiting\WithRateLimiting` trait to your Livewire component:
+
+```php
+rateLimit(10);
+ } catch (TooManyRequestsException $exception) {
+ throw ValidationException::withMessages([
+ 'email' => "Slow down! Please wait another {$exception->secondsUntilAvailable} seconds to log in.",
+ ]);
+ }
+
+ // ...
+ }
+}
+```
+
+## API Reference
+
+### Component Methods
+
+```php
+use DanHarrin\LivewireRateLimiting\WithRateLimiting;
+
+/**
+ * Rate limit a Livewire method, `$maxAttempts` times every `$decaySeconds` seconds.
+ *
+ * @throws DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException
+ */
+$this->rateLimit(
+ $maxAttempts, // The number of times that the rate limit can be hit in the given decay period.
+ $decaySeconds = 60, // The length of the decay period in seconds. By default, this is a minute.
+ $method, // The name of the method that is being rate limited. By default, this is set to the method that `$this->rateLimit()` is called from.
+);
+
+/**
+ * Hit a method's rate limiter without consequence.
+ */
+$this->hitRateLimiter(
+ $method, // The name of the method that is being rate limited. By default, this is set to the method that `$this->hitRateLimiter()` is called from.
+ $decaySeconds = 60, // The length of the decay period in seconds. By default, this is a minute.
+);
+
+/**
+ * Clear a method's rate limiter.
+ */
+$this->clearRateLimiter(
+ $method, // The name of the method that is being rate limited. By default, this is set to the method that `$this->clearRateLimiter()` is called from.
+);
+```
+
+### Exceptions
+
+```php
+use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
+
+try {
+ $this->rateLimit(10);
+} catch (TooManyRequestsException $exception) {
+ $exception->component; // Class of the component that the rate limit was hit within.
+ $exception->ip; // IP of the user that has hit the rate limit.
+ $exception->method; // Name of the method that has hit the rate limit.
+ $exception->minutesUntilAvailable; // Number of minutes until the rate limit is lifted, rounded up.
+ $exception->secondsUntilAvailable; // Number of seconds until the rate limit is lifted.
+}
+```
+
+## Need Help?
+
+🐞 If you spot a bug with this package, please [submit a detailed issue](https://github.com/danharrin/livewire-rate-limiting/issues/new), and wait for assistance.
+
+🤔 If you have a question or feature request, please [start a new discussion](https://github.com/danharrin/livewire-rate-limiting/discussions/new).
+
+🔐 If you discover a vulnerability within the package, please review our [security policy](https://github.com/danharrin/livewire-rate-limiting/blob/main/SECURITY.md).
diff --git a/vendor/danharrin/livewire-rate-limiting/SECURITY.md b/vendor/danharrin/livewire-rate-limiting/SECURITY.md
new file mode 100644
index 0000000..9954dc1
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/SECURITY.md
@@ -0,0 +1,11 @@
+# Security Policy
+
+## Supported Versions
+
+| Version | Supported |
+| ------- | ------------------ |
+| 0.x | :white_check_mark: |
+
+## Reporting a Vulnerability
+
+If you discover a security vulnerability within the package, please email Dan Harrin via [dan@danharrin.com](mailto:dan@danharrin.com). All security vulnerabilities will be promptly addressed.
diff --git a/vendor/danharrin/livewire-rate-limiting/composer.json b/vendor/danharrin/livewire-rate-limiting/composer.json
new file mode 100644
index 0000000..3acfc32
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/composer.json
@@ -0,0 +1,40 @@
+{
+ "name": "danharrin/livewire-rate-limiting",
+ "description": "Apply rate limiters to Laravel Livewire actions.",
+ "license": "MIT",
+ "homepage": "https://github.com/danharrin/livewire-rate-limiting",
+ "support": {
+ "issues": "https://github.com/danharrin/livewire-rate-limiting/issues",
+ "source": "https://github.com/danharrin/livewire-rate-limiting"
+ },
+ "authors": [
+ {
+ "name": "Dan Harrin",
+ "email": "dan@danharrin.com"
+ }
+ ],
+ "require": {
+ "php": "^8.0",
+ "illuminate/support": "^9.0|^10.0|^11.0"
+ },
+ "require-dev": {
+ "livewire/livewire": "^3.0",
+ "livewire/volt": "^1.3",
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "DanHarrin\\LivewireRateLimiting\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "DanHarrin\\LivewireRateLimiting\\Tests\\": "tests"
+ }
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "minimum-stability": "dev"
+}
diff --git a/vendor/danharrin/livewire-rate-limiting/phpunit.xml.dist b/vendor/danharrin/livewire-rate-limiting/phpunit.xml.dist
new file mode 100644
index 0000000..c569c7a
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/phpunit.xml.dist
@@ -0,0 +1,22 @@
+
+
+
+
+ src
+
+
+
+
+ tests
+
+
+
diff --git a/vendor/danharrin/livewire-rate-limiting/src/Exceptions/TooManyRequestsException.php b/vendor/danharrin/livewire-rate-limiting/src/Exceptions/TooManyRequestsException.php
new file mode 100644
index 0000000..a78a320
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/src/Exceptions/TooManyRequestsException.php
@@ -0,0 +1,27 @@
+minutesUntilAvailable = ceil($this->secondsUntilAvailable / 60);
+
+ parent::__construct(sprintf(
+ 'Too many requests from [%s] to method [%s] on component: [%s]. Retry in %d seconds.',
+ $this->ip,
+ $this->method,
+ $this->component,
+ $this->secondsUntilAvailable,
+ ));
+ }
+}
diff --git a/vendor/danharrin/livewire-rate-limiting/src/WithRateLimiting.php b/vendor/danharrin/livewire-rate-limiting/src/WithRateLimiting.php
new file mode 100644
index 0000000..400c3ff
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/src/WithRateLimiting.php
@@ -0,0 +1,58 @@
+getRateLimitKey($method, $component);
+
+ RateLimiter::clear($key);
+ }
+
+ protected function getRateLimitKey($method, $component)
+ {
+ $method ??= debug_backtrace(limit: 2)[1]['function'];
+
+ $component ??= static::class;
+
+ return sha1($component.'|'.$method.'|'.request()->ip());
+ }
+
+ protected function hitRateLimiter($method = null, $decaySeconds = 60, $component = null)
+ {
+ $method ??= debug_backtrace(limit: 2)[1]['function'];
+
+ $component ??= static::class;
+
+ $key = $this->getRateLimitKey($method, $component);
+
+ RateLimiter::hit($key, $decaySeconds);
+ }
+
+ protected function rateLimit($maxAttempts, $decaySeconds = 60, $method = null, $component = null)
+ {
+ $method ??= debug_backtrace(limit: 2)[1]['function'];
+
+ $component ??= static::class;
+
+ $key = $this->getRateLimitKey($method, $component);
+
+ if (RateLimiter::tooManyAttempts($key, $maxAttempts)) {
+ $ip = request()->ip();
+ $secondsUntilAvailable = RateLimiter::availableIn($key);
+
+ throw new TooManyRequestsException($component, $method, $ip, $secondsUntilAvailable);
+ }
+
+ $this->hitRateLimiter($method, $decaySeconds, $component);
+ }
+}
diff --git a/vendor/danharrin/livewire-rate-limiting/tests/RateLimitingTest.php b/vendor/danharrin/livewire-rate-limiting/tests/RateLimitingTest.php
new file mode 100644
index 0000000..cefe524
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/tests/RateLimitingTest.php
@@ -0,0 +1,124 @@
+call('limit')
+ ->assertSet('secondsUntilAvailable', 0)
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0)
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0)
+ ->call('limit')
+ ->assertNotSet('secondsUntilAvailable', 0);
+
+ sleep(1);
+
+ $component
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0);
+ }
+
+ /** @test */
+ public function can_hit_and_clear_rate_limiter()
+ {
+ Livewire::test(Component::class)
+ ->call('hit')
+ ->call('hit')
+ ->call('hit')
+ ->call('limit')
+ ->assertNotSet('secondsUntilAvailable', 0)
+ ->call('clear')
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0);
+ }
+
+ /** @test */
+ public function can_rate_limit_volt()
+ {
+ $this->mountVolt();
+ $component = Volt::test('volt-component');
+
+ $component
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0)
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0)
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0)
+ ->call('limit')
+ ->assertNotSet('secondsUntilAvailable', 0);
+
+ sleep(1);
+
+ $component
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0);
+ }
+
+ /** @test */
+ public function can_hit_and_clear_rate_limiter_volt()
+ {
+ $this->mountVolt();
+ Volt::test('volt-component')
+ ->call('hit')
+ ->call('hit')
+ ->call('hit')
+ ->call('limit')
+ ->assertNotSet('secondsUntilAvailable', 0)
+ ->call('clear')
+ ->call('limit')
+ ->assertSet('secondsUntilAvailable', 0);
+ }
+
+ protected function mountVolt()
+ {
+ Volt::mount([
+ __DIR__ . '/views',
+ ]);
+ }
+}
+
+class Component extends \Livewire\Component
+{
+ use \DanHarrin\LivewireRateLimiting\WithRateLimiting;
+
+ public $secondsUntilAvailable;
+
+ public function clear()
+ {
+ $this->clearRateLimiter('limit');
+ }
+
+ public function hit()
+ {
+ $this->hitRateLimiter('limit', 1);
+ }
+
+ public function limit()
+ {
+ try {
+ $this->rateLimit(3, 1);
+ } catch (TooManyRequestsException $exception) {
+ return $this->secondsUntilAvailable = $exception->secondsUntilAvailable;
+ }
+
+ $this->secondsUntilAvailable = 0;
+ }
+
+ public function render()
+ {
+ return view('component');
+ }
+}
diff --git a/vendor/danharrin/livewire-rate-limiting/tests/TestCase.php b/vendor/danharrin/livewire-rate-limiting/tests/TestCase.php
new file mode 100644
index 0000000..244f04d
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/tests/TestCase.php
@@ -0,0 +1,28 @@
+set('view.paths', [
+ __DIR__ . '/views',
+ resource_path('views'),
+ ]);
+
+ $app['config']->set('app.key', 'base64:Hupx3yAySikrM2/edkZQNQHslgDWYfiBfCuSThJ5SK8=');
+ }
+
+ protected function getPackageProviders($app)
+ {
+ return [
+ LivewireServiceProvider::class,
+ VoltServiceProvider::class,
+ ];
+ }
+}
diff --git a/vendor/danharrin/livewire-rate-limiting/tests/views/component.blade.php b/vendor/danharrin/livewire-rate-limiting/tests/views/component.blade.php
new file mode 100644
index 0000000..281c686
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/tests/views/component.blade.php
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/vendor/danharrin/livewire-rate-limiting/tests/views/volt-component.blade.php b/vendor/danharrin/livewire-rate-limiting/tests/views/volt-component.blade.php
new file mode 100644
index 0000000..867a06d
--- /dev/null
+++ b/vendor/danharrin/livewire-rate-limiting/tests/views/volt-component.blade.php
@@ -0,0 +1,36 @@
+clearRateLimiter('limit', component: 'VoltComponent');
+ }
+
+ public function hit()
+ {
+ $this->hitRateLimiter('limit', 1, component: 'VoltComponent');
+ }
+
+ public function limit()
+ {
+ try {
+ $this->rateLimit(3, 1, component: 'VoltComponent');
+ } catch (TooManyRequestsException $exception) {
+ return $this->secondsUntilAvailable = $exception->secondsUntilAvailable;
+ }
+
+ $this->secondsUntilAvailable = 0;
+ }
+
+}; ?>
+
+
+ //
+
diff --git a/vendor/dflydev/dot-access-data/CHANGELOG.md b/vendor/dflydev/dot-access-data/CHANGELOG.md
new file mode 100644
index 0000000..b8b468d
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/CHANGELOG.md
@@ -0,0 +1,74 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+
+## [3.0.3] - 2024-07-08
+
+### Fixed
+
+ - Fixed PHP 8.4 deprecation notices (#47)
+
+## [3.0.2] - 2022-10-27
+
+### Fixed
+
+ - Added missing return types to docblocks (#44, #45)
+
+## [3.0.1] - 2021-08-13
+
+### Added
+
+ - Adds ReturnTypeWillChange to suppress PHP 8.1 warnings (#40)
+
+## [3.0.0] - 2021-01-01
+
+### Added
+ - Added support for both `.` and `/`-delimited key paths (#24)
+ - Added parameter and return types to everything; enabled strict type checks (#18)
+ - Added new exception classes to better identify certain types of errors (#20)
+ - `Data` now implements `ArrayAccess` (#17)
+ - Added ability to merge non-associative array values (#31, #32)
+
+### Changed
+ - All thrown exceptions are now instances or subclasses of `DataException` (#20)
+ - Calling `get()` on a missing key path without providing a default will throw a `MissingPathException` instead of returning `null` (#29)
+ - Bumped supported PHP versions to 7.1 - 8.x (#18)
+
+### Fixed
+ - Fixed incorrect merging of array values into string values (#32)
+ - Fixed `get()` method behaving as if keys with `null` values didn't exist
+
+## [2.0.0] - 2017-12-21
+
+### Changed
+ - Bumped supported PHP versions to 7.0 - 7.4 (#12)
+ - Switched to PSR-4 autoloading
+
+## [1.1.0] - 2017-01-20
+
+### Added
+ - Added new `has()` method to check for the existence of the given key (#4, #7)
+
+## [1.0.1] - 2015-08-12
+
+### Added
+ - Added new optional `$default` parameter to the `get()` method (#2)
+
+## [1.0.0] - 2012-07-17
+
+**Initial release!**
+
+[Unreleased]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.3...main
+[3.0.3]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.2...v3.0.3
+[3.0.2]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.1...v3.0.2
+[3.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.0...v3.0.1
+[3.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v2.0.0...v3.0.0
+[2.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.1.0...v2.0.0
+[1.1.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.0.1...v1.1.0
+[1.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.0.0...v1.0.1
+[1.0.0]: https://github.com/dflydev/dflydev-dot-access-data/releases/tag/v1.0.0
diff --git a/vendor/dflydev/dot-access-data/LICENSE b/vendor/dflydev/dot-access-data/LICENSE
new file mode 100644
index 0000000..b6880d4
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2012 Dragonfly Development Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/dflydev/dot-access-data/README.md b/vendor/dflydev/dot-access-data/README.md
new file mode 100644
index 0000000..775fbdf
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/README.md
@@ -0,0 +1,158 @@
+Dot Access Data
+===============
+
+[](https://packagist.org/packages/dflydev/dot-access-data)
+[](https://packagist.org/packages/dflydev/dot-access-data)
+[](LICENSE)
+[](https://github.com/dflydev/dflydev-dot-access-data/actions?query=workflow%3ATests+branch%3Amain)
+[](https://scrutinizer-ci.com/g/dflydev/dflydev-dot-access-data/code-structure/)
+[](https://scrutinizer-ci.com/g/dflydev/dflydev-dot-access-data)
+
+Given a deep data structure, access data by dot notation.
+
+
+Requirements
+------------
+
+ * PHP (7.1+)
+
+> For PHP (5.3+) please refer to version `1.0`.
+
+
+Usage
+-----
+
+Abstract example:
+
+```php
+use Dflydev\DotAccessData\Data;
+
+$data = new Data;
+
+$data->set('a.b.c', 'C');
+$data->set('a.b.d', 'D1');
+$data->append('a.b.d', 'D2');
+$data->set('a.b.e', ['E0', 'E1', 'E2']);
+
+// C
+$data->get('a.b.c');
+
+// ['D1', 'D2']
+$data->get('a.b.d');
+
+// ['E0', 'E1', 'E2']
+$data->get('a.b.e');
+
+// true
+$data->has('a.b.c');
+
+// false
+$data->has('a.b.d.j');
+
+
+// 'some-default-value'
+$data->get('some.path.that.does.not.exist', 'some-default-value');
+
+// throws a MissingPathException because no default was given
+$data->get('some.path.that.does.not.exist');
+```
+
+A more concrete example:
+
+```php
+use Dflydev\DotAccessData\Data;
+
+$data = new Data([
+ 'hosts' => [
+ 'hewey' => [
+ 'username' => 'hman',
+ 'password' => 'HPASS',
+ 'roles' => ['web'],
+ ],
+ 'dewey' => [
+ 'username' => 'dman',
+ 'password' => 'D---S',
+ 'roles' => ['web', 'db'],
+ 'nick' => 'dewey dman',
+ ],
+ 'lewey' => [
+ 'username' => 'lman',
+ 'password' => 'LP@$$',
+ 'roles' => ['db'],
+ ],
+ ],
+]);
+
+// hman
+$username = $data->get('hosts.hewey.username');
+// HPASS
+$password = $data->get('hosts.hewey.password');
+// ['web']
+$roles = $data->get('hosts.hewey.roles');
+// dewey dman
+$nick = $data->get('hosts.dewey.nick');
+// Unknown
+$nick = $data->get('hosts.lewey.nick', 'Unknown');
+
+// DataInterface instance
+$dewey = $data->getData('hosts.dewey');
+// dman
+$username = $dewey->get('username');
+// D---S
+$password = $dewey->get('password');
+// ['web', 'db']
+$roles = $dewey->get('roles');
+
+// No more lewey
+$data->remove('hosts.lewey');
+
+// Add DB to hewey's roles
+$data->append('hosts.hewey.roles', 'db');
+
+$data->set('hosts.april', [
+ 'username' => 'aman',
+ 'password' => '@---S',
+ 'roles' => ['web'],
+]);
+
+// Check if a key exists (true to this case)
+$hasKey = $data->has('hosts.dewey.username');
+```
+
+`Data` may be used as an array, since it implements `ArrayAccess` interface:
+
+```php
+// Get
+$data->get('name') === $data['name']; // true
+
+$data['name'] = 'Dewey';
+// is equivalent to
+$data->set($name, 'Dewey');
+
+isset($data['name']) === $data->has('name');
+
+// Remove key
+unset($data['name']);
+```
+
+`/` can also be used as a path delimiter:
+
+```php
+$data->set('a/b/c', 'd');
+echo $data->get('a/b/c'); // "d"
+
+$data->get('a/b/c') === $data->get('a.b.c'); // true
+```
+
+License
+-------
+
+This library is licensed under the MIT License - see the LICENSE file
+for details.
+
+
+Community
+---------
+
+If you have questions or want to help out, join us in the
+[#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net.
diff --git a/vendor/dflydev/dot-access-data/composer.json b/vendor/dflydev/dot-access-data/composer.json
new file mode 100644
index 0000000..44dc5ed
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/composer.json
@@ -0,0 +1,67 @@
+{
+ "name": "dflydev/dot-access-data",
+ "type": "library",
+ "description": "Given a deep data structure, access data by dot notation.",
+ "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+ "keywords": ["dot", "access", "data", "notation"],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Dragonfly Development Inc.",
+ "email": "info@dflydev.com",
+ "homepage": "http://dflydev.com"
+ },
+ {
+ "name": "Beau Simensen",
+ "email": "beau@dflydev.com",
+ "homepage": "http://beausimensen.com"
+ },
+ {
+ "name": "Carlos Frutos",
+ "email": "carlos@kiwing.it",
+ "homepage": "https://github.com/cfrutos"
+ },
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com"
+ }
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.42",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
+ "scrutinizer/ocular": "1.6.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.0.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Dflydev\\DotAccessData\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Dflydev\\DotAccessData\\": "tests/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "scripts": {
+ "phpcs": "phpcs",
+ "phpstan": "phpstan analyse",
+ "phpunit": "phpunit --no-coverage",
+ "psalm": "psalm",
+ "test": [
+ "@phpcs",
+ "@phpstan",
+ "@psalm",
+ "@phpunit"
+ ]
+ }
+}
diff --git a/vendor/dflydev/dot-access-data/src/Data.php b/vendor/dflydev/dot-access-data/src/Data.php
new file mode 100644
index 0000000..3409b8e
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/src/Data.php
@@ -0,0 +1,286 @@
+
+ */
+class Data implements DataInterface, ArrayAccess
+{
+ private const DELIMITERS = ['.', '/'];
+
+ /**
+ * Internal representation of data data
+ *
+ * @var array
+ */
+ protected $data;
+
+ /**
+ * Constructor
+ *
+ * @param array $data
+ */
+ public function __construct(array $data = [])
+ {
+ $this->data = $data;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function append(string $key, $value = null): void
+ {
+ $currentValue =& $this->data;
+ $keyPath = self::keyToPathArray($key);
+
+ $endKey = array_pop($keyPath);
+ foreach ($keyPath as $currentKey) {
+ if (! isset($currentValue[$currentKey])) {
+ $currentValue[$currentKey] = [];
+ }
+ $currentValue =& $currentValue[$currentKey];
+ }
+
+ if (!isset($currentValue[$endKey])) {
+ $currentValue[$endKey] = [];
+ }
+
+ if (!is_array($currentValue[$endKey])) {
+ // Promote this key to an array.
+ // TODO: Is this really what we want to do?
+ $currentValue[$endKey] = [$currentValue[$endKey]];
+ }
+
+ $currentValue[$endKey][] = $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function set(string $key, $value = null): void
+ {
+ $currentValue =& $this->data;
+ $keyPath = self::keyToPathArray($key);
+
+ $endKey = array_pop($keyPath);
+ foreach ($keyPath as $currentKey) {
+ if (!isset($currentValue[$currentKey])) {
+ $currentValue[$currentKey] = [];
+ }
+ if (!is_array($currentValue[$currentKey])) {
+ throw new DataException(sprintf('Key path "%s" within "%s" cannot be indexed into (is not an array)', $currentKey, self::formatPath($key)));
+ }
+ $currentValue =& $currentValue[$currentKey];
+ }
+ $currentValue[$endKey] = $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function remove(string $key): void
+ {
+ $currentValue =& $this->data;
+ $keyPath = self::keyToPathArray($key);
+
+ $endKey = array_pop($keyPath);
+ foreach ($keyPath as $currentKey) {
+ if (!isset($currentValue[$currentKey])) {
+ return;
+ }
+ $currentValue =& $currentValue[$currentKey];
+ }
+ unset($currentValue[$endKey]);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @psalm-mutation-free
+ */
+ public function get(string $key, $default = null)
+ {
+ /** @psalm-suppress ImpureFunctionCall */
+ $hasDefault = \func_num_args() > 1;
+
+ $currentValue = $this->data;
+ $keyPath = self::keyToPathArray($key);
+
+ foreach ($keyPath as $currentKey) {
+ if (!is_array($currentValue) || !array_key_exists($currentKey, $currentValue)) {
+ if ($hasDefault) {
+ return $default;
+ }
+
+ throw new MissingPathException($key, sprintf('No data exists at the given path: "%s"', self::formatPath($keyPath)));
+ }
+
+ $currentValue = $currentValue[$currentKey];
+ }
+
+ return $currentValue === null ? $default : $currentValue;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @psalm-mutation-free
+ */
+ public function has(string $key): bool
+ {
+ $currentValue = $this->data;
+
+ foreach (self::keyToPathArray($key) as $currentKey) {
+ if (
+ !is_array($currentValue) ||
+ !array_key_exists($currentKey, $currentValue)
+ ) {
+ return false;
+ }
+ $currentValue = $currentValue[$currentKey];
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @psalm-mutation-free
+ */
+ public function getData(string $key): DataInterface
+ {
+ $value = $this->get($key);
+ if (is_array($value) && Util::isAssoc($value)) {
+ return new Data($value);
+ }
+
+ throw new DataException(sprintf('Value at "%s" could not be represented as a DataInterface', self::formatPath($key)));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function import(array $data, int $mode = self::REPLACE): void
+ {
+ $this->data = Util::mergeAssocArray($this->data, $data, $mode);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function importData(DataInterface $data, int $mode = self::REPLACE): void
+ {
+ $this->import($data->export(), $mode);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @psalm-mutation-free
+ */
+ public function export(): array
+ {
+ return $this->data;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetExists($key)
+ {
+ return $this->has($key);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return mixed
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetGet($key)
+ {
+ return $this->get($key, null);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $key
+ * @param mixed $value
+ *
+ * @return void
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetSet($key, $value)
+ {
+ $this->set($key, $value);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetUnset($key)
+ {
+ $this->remove($key);
+ }
+
+ /**
+ * @param string $path
+ *
+ * @return string[]
+ *
+ * @psalm-return non-empty-list
+ *
+ * @psalm-pure
+ */
+ protected static function keyToPathArray(string $path): array
+ {
+ if (\strlen($path) === 0) {
+ throw new InvalidPathException('Path cannot be an empty string');
+ }
+
+ $path = \str_replace(self::DELIMITERS, '.', $path);
+
+ return \explode('.', $path);
+ }
+
+ /**
+ * @param string|string[] $path
+ *
+ * @return string
+ *
+ * @psalm-pure
+ */
+ protected static function formatPath($path): string
+ {
+ if (is_string($path)) {
+ $path = self::keyToPathArray($path);
+ }
+
+ return implode(' » ', $path);
+ }
+}
diff --git a/vendor/dflydev/dot-access-data/src/DataInterface.php b/vendor/dflydev/dot-access-data/src/DataInterface.php
new file mode 100644
index 0000000..5909a8c
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/src/DataInterface.php
@@ -0,0 +1,131 @@
+ $data
+ * @param self::PRESERVE|self::REPLACE|self::MERGE $mode
+ */
+ public function import(array $data, int $mode = self::REPLACE): void;
+
+ /**
+ * Import data from an external data into existing data
+ *
+ * @param DataInterface $data
+ * @param self::PRESERVE|self::REPLACE|self::MERGE $mode
+ */
+ public function importData(DataInterface $data, int $mode = self::REPLACE): void;
+
+ /**
+ * Export data as raw data
+ *
+ * @return array
+ *
+ * @psalm-mutation-free
+ */
+ public function export(): array;
+}
diff --git a/vendor/dflydev/dot-access-data/src/Exception/DataException.php b/vendor/dflydev/dot-access-data/src/Exception/DataException.php
new file mode 100644
index 0000000..2faf9f5
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/src/Exception/DataException.php
@@ -0,0 +1,21 @@
+path = $path;
+
+ parent::__construct($message, $code, $previous);
+ }
+
+ public function getPath(): string
+ {
+ return $this->path;
+ }
+}
diff --git a/vendor/dflydev/dot-access-data/src/Util.php b/vendor/dflydev/dot-access-data/src/Util.php
new file mode 100644
index 0000000..5634c51
--- /dev/null
+++ b/vendor/dflydev/dot-access-data/src/Util.php
@@ -0,0 +1,78 @@
+ $arr
+ *
+ * @return bool
+ *
+ * @psalm-pure
+ */
+ public static function isAssoc(array $arr): bool
+ {
+ return !count($arr) || count(array_filter(array_keys($arr), 'is_string')) == count($arr);
+ }
+
+ /**
+ * Merge contents from one associtative array to another
+ *
+ * @param mixed $to
+ * @param mixed $from
+ * @param DataInterface::PRESERVE|DataInterface::REPLACE|DataInterface::MERGE $mode
+ *
+ * @return mixed
+ *
+ * @psalm-pure
+ */
+ public static function mergeAssocArray($to, $from, int $mode = DataInterface::REPLACE)
+ {
+ if ($mode === DataInterface::MERGE && self::isList($to) && self::isList($from)) {
+ return array_merge($to, $from);
+ }
+
+ if (is_array($from) && is_array($to)) {
+ foreach ($from as $k => $v) {
+ if (!isset($to[$k])) {
+ $to[$k] = $v;
+ } else {
+ $to[$k] = self::mergeAssocArray($to[$k], $v, $mode);
+ }
+ }
+
+ return $to;
+ }
+
+ return $mode === DataInterface::PRESERVE ? $to : $from;
+ }
+
+ /**
+ * @param mixed $value
+ *
+ * @return bool
+ *
+ * @psalm-pure
+ */
+ private static function isList($value): bool
+ {
+ return is_array($value) && array_values($value) === $value;
+ }
+}
diff --git a/vendor/doctrine/cache/LICENSE b/vendor/doctrine/cache/LICENSE
new file mode 100644
index 0000000..8c38cc1
--- /dev/null
+++ b/vendor/doctrine/cache/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2015 Doctrine Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/doctrine/cache/README.md b/vendor/doctrine/cache/README.md
new file mode 100644
index 0000000..a13196d
--- /dev/null
+++ b/vendor/doctrine/cache/README.md
@@ -0,0 +1,13 @@
+# Doctrine Cache
+
+[](https://github.com/doctrine/cache/actions)
+[](https://codecov.io/gh/doctrine/cache/branch/1.10.x)
+
+[](https://packagist.org/packages/doctrine/cache)
+[](https://packagist.org/packages/doctrine/cache)
+
+Cache component extracted from the Doctrine Common project. [Documentation](https://www.doctrine-project.org/projects/doctrine-cache/en/current/index.html)
+
+This library is deprecated and will no longer receive bug fixes from the
+Doctrine Project. Please use a different cache library, preferably PSR-6 or
+PSR-16 instead.
diff --git a/vendor/doctrine/cache/UPGRADE-1.11.md b/vendor/doctrine/cache/UPGRADE-1.11.md
new file mode 100644
index 0000000..6c5ddb5
--- /dev/null
+++ b/vendor/doctrine/cache/UPGRADE-1.11.md
@@ -0,0 +1,27 @@
+# Upgrade to 1.11
+
+doctrine/cache will no longer be maintained and all cache implementations have
+been marked as deprecated. These implementations will be removed in 2.0, which
+will only contain interfaces to provide a lightweight package for backward
+compatibility.
+
+There are two new classes to use in the `Doctrine\Common\Cache\Psr6` namespace:
+* The `CacheAdapter` class allows using any Doctrine Cache as PSR-6 cache. This
+ is useful to provide a forward compatibility layer in libraries that accept
+ Doctrine cache implementations and switch to PSR-6.
+* The `DoctrineProvider` class allows using any PSR-6 cache as Doctrine cache.
+ This implementation is designed for libraries that leak the cache and want to
+ switch to allowing PSR-6 implementations. This class is design to be used
+ during the transition phase of sunsetting doctrine/cache support.
+
+A full example to setup a filesystem based PSR-6 cache with symfony/cache
+using the `DoctrineProvider` to convert back to Doctrine's `Cache` interface:
+
+```php
+use Doctrine\Common\Cache\Psr6\DoctrineProvider;
+use Symfony\Component\Cache\Adapter\FilesystemAdapter;
+
+$cachePool = new FilesystemAdapter();
+$cache = DoctrineProvider::wrap($cachePool);
+// $cache instanceof \Doctrine\Common\Cache\Cache
+```
diff --git a/vendor/doctrine/cache/UPGRADE-1.4.md b/vendor/doctrine/cache/UPGRADE-1.4.md
new file mode 100644
index 0000000..e1f8a50
--- /dev/null
+++ b/vendor/doctrine/cache/UPGRADE-1.4.md
@@ -0,0 +1,16 @@
+# Upgrade to 1.4
+
+## Minor BC Break: `Doctrine\Common\Cache\FileCache#$extension` is now `private`.
+
+If you need to override the value of `Doctrine\Common\Cache\FileCache#$extension`, then use the
+second parameter of `Doctrine\Common\Cache\FileCache#__construct()` instead of overriding
+the property in your own implementation.
+
+## Minor BC Break: file based caches paths changed
+
+`Doctrine\Common\Cache\FileCache`, `Doctrine\Common\Cache\PhpFileCache` and
+`Doctrine\Common\Cache\FilesystemCache` are using a different cache paths structure.
+
+If you rely on warmed up caches for deployments, consider that caches generated
+with `doctrine/cache` `<1.4` are not compatible with the new directory structure,
+and will be ignored.
diff --git a/vendor/doctrine/cache/composer.json b/vendor/doctrine/cache/composer.json
new file mode 100644
index 0000000..3c8ca97
--- /dev/null
+++ b/vendor/doctrine/cache/composer.json
@@ -0,0 +1,50 @@
+{
+ "name": "doctrine/cache",
+ "type": "library",
+ "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
+ "keywords": [
+ "php",
+ "cache",
+ "caching",
+ "abstraction",
+ "redis",
+ "memcached",
+ "couchdb",
+ "xcache",
+ "apcu"
+ ],
+ "homepage": "https://www.doctrine-project.org/projects/cache.html",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": "~7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "doctrine/coding-standard": "^9",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "cache/integration-tests": "dev-master",
+ "symfony/cache": "^4.4 || ^5.4 || ^6",
+ "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "autoload": {
+ "psr-4": { "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" }
+ },
+ "autoload-dev": {
+ "psr-4": { "Doctrine\\Tests\\": "tests/Doctrine/Tests" }
+ },
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true
+ }
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
new file mode 100644
index 0000000..4cfab6c
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
@@ -0,0 +1,90 @@
+hits
+ * Number of keys that have been requested and found present.
+ *
+ * - misses
+ * Number of items that have been requested and not found.
+ *
+ * - uptime
+ * Time that the server is running.
+ *
+ * - memory_usage
+ * Memory used by this server to store items.
+ *
+ * - memory_available
+ * Memory allowed to use for storage.
+ *
+ * @return mixed[]|null An associative array with server's statistics if available, NULL otherwise.
+ */
+ public function getStats();
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
new file mode 100644
index 0000000..180482a
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
@@ -0,0 +1,325 @@
+namespace = (string) $namespace;
+ $this->namespaceVersion = null;
+ }
+
+ /**
+ * Retrieves the namespace that prefixes all cache ids.
+ *
+ * @return string
+ */
+ public function getNamespace()
+ {
+ return $this->namespace;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function fetch($id)
+ {
+ return $this->doFetch($this->getNamespacedId($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function fetchMultiple(array $keys)
+ {
+ if (empty($keys)) {
+ return [];
+ }
+
+ // note: the array_combine() is in place to keep an association between our $keys and the $namespacedKeys
+ $namespacedKeys = array_combine($keys, array_map([$this, 'getNamespacedId'], $keys));
+ $items = $this->doFetchMultiple($namespacedKeys);
+ $foundItems = [];
+
+ // no internal array function supports this sort of mapping: needs to be iterative
+ // this filters and combines keys in one pass
+ foreach ($namespacedKeys as $requestedKey => $namespacedKey) {
+ if (! isset($items[$namespacedKey]) && ! array_key_exists($namespacedKey, $items)) {
+ continue;
+ }
+
+ $foundItems[$requestedKey] = $items[$namespacedKey];
+ }
+
+ return $foundItems;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function saveMultiple(array $keysAndValues, $lifetime = 0)
+ {
+ $namespacedKeysAndValues = [];
+ foreach ($keysAndValues as $key => $value) {
+ $namespacedKeysAndValues[$this->getNamespacedId($key)] = $value;
+ }
+
+ return $this->doSaveMultiple($namespacedKeysAndValues, $lifetime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function contains($id)
+ {
+ return $this->doContains($this->getNamespacedId($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function save($id, $data, $lifeTime = 0)
+ {
+ return $this->doSave($this->getNamespacedId($id), $data, $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteMultiple(array $keys)
+ {
+ return $this->doDeleteMultiple(array_map([$this, 'getNamespacedId'], $keys));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function delete($id)
+ {
+ return $this->doDelete($this->getNamespacedId($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getStats()
+ {
+ return $this->doGetStats();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function flushAll()
+ {
+ return $this->doFlush();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function deleteAll()
+ {
+ $namespaceCacheKey = $this->getNamespaceCacheKey();
+ $namespaceVersion = $this->getNamespaceVersion() + 1;
+
+ if ($this->doSave($namespaceCacheKey, $namespaceVersion)) {
+ $this->namespaceVersion = $namespaceVersion;
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Prefixes the passed id with the configured namespace value.
+ *
+ * @param string $id The id to namespace.
+ *
+ * @return string The namespaced id.
+ */
+ private function getNamespacedId(string $id): string
+ {
+ $namespaceVersion = $this->getNamespaceVersion();
+
+ return sprintf('%s[%s][%s]', $this->namespace, $id, $namespaceVersion);
+ }
+
+ /**
+ * Returns the namespace cache key.
+ */
+ private function getNamespaceCacheKey(): string
+ {
+ return sprintf(self::DOCTRINE_NAMESPACE_CACHEKEY, $this->namespace);
+ }
+
+ /**
+ * Returns the namespace version.
+ */
+ private function getNamespaceVersion(): int
+ {
+ if ($this->namespaceVersion !== null) {
+ return $this->namespaceVersion;
+ }
+
+ $namespaceCacheKey = $this->getNamespaceCacheKey();
+ $this->namespaceVersion = (int) $this->doFetch($namespaceCacheKey) ?: 1;
+
+ return $this->namespaceVersion;
+ }
+
+ /**
+ * Default implementation of doFetchMultiple. Each driver that supports multi-get should owerwrite it.
+ *
+ * @param string[] $keys Array of keys to retrieve from cache
+ *
+ * @return mixed[] Array of values retrieved for the given keys.
+ */
+ protected function doFetchMultiple(array $keys)
+ {
+ $returnValues = [];
+
+ foreach ($keys as $key) {
+ $item = $this->doFetch($key);
+ if ($item === false && ! $this->doContains($key)) {
+ continue;
+ }
+
+ $returnValues[$key] = $item;
+ }
+
+ return $returnValues;
+ }
+
+ /**
+ * Fetches an entry from the cache.
+ *
+ * @param string $id The id of the cache entry to fetch.
+ *
+ * @return mixed|false The cached data or FALSE, if no cache entry exists for the given id.
+ */
+ abstract protected function doFetch($id);
+
+ /**
+ * Tests if an entry exists in the cache.
+ *
+ * @param string $id The cache id of the entry to check for.
+ *
+ * @return bool TRUE if a cache entry exists for the given cache id, FALSE otherwise.
+ */
+ abstract protected function doContains($id);
+
+ /**
+ * Default implementation of doSaveMultiple. Each driver that supports multi-put should override it.
+ *
+ * @param mixed[] $keysAndValues Array of keys and values to save in cache
+ * @param int $lifetime The lifetime. If != 0, sets a specific lifetime for these
+ * cache entries (0 => infinite lifeTime).
+ *
+ * @return bool TRUE if the operation was successful, FALSE if it wasn't.
+ */
+ protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
+ {
+ $success = true;
+
+ foreach ($keysAndValues as $key => $value) {
+ if ($this->doSave($key, $value, $lifetime)) {
+ continue;
+ }
+
+ $success = false;
+ }
+
+ return $success;
+ }
+
+ /**
+ * Puts data into the cache.
+ *
+ * @param string $id The cache id.
+ * @param string $data The cache entry/data.
+ * @param int $lifeTime The lifetime. If != 0, sets a specific lifetime for this
+ * cache entry (0 => infinite lifeTime).
+ *
+ * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
+ */
+ abstract protected function doSave($id, $data, $lifeTime = 0);
+
+ /**
+ * Default implementation of doDeleteMultiple. Each driver that supports multi-delete should override it.
+ *
+ * @param string[] $keys Array of keys to delete from cache
+ *
+ * @return bool TRUE if the operation was successful, FALSE if it wasn't
+ */
+ protected function doDeleteMultiple(array $keys)
+ {
+ $success = true;
+
+ foreach ($keys as $key) {
+ if ($this->doDelete($key)) {
+ continue;
+ }
+
+ $success = false;
+ }
+
+ return $success;
+ }
+
+ /**
+ * Deletes a cache entry.
+ *
+ * @param string $id The cache id.
+ *
+ * @return bool TRUE if the cache entry was successfully deleted, FALSE otherwise.
+ */
+ abstract protected function doDelete($id);
+
+ /**
+ * Flushes all cache entries.
+ *
+ * @return bool TRUE if the cache entries were successfully flushed, FALSE otherwise.
+ */
+ abstract protected function doFlush();
+
+ /**
+ * Retrieves cached information from the data store.
+ *
+ * @return mixed[]|null An associative array with server's statistics if available, NULL otherwise.
+ */
+ abstract protected function doGetStats();
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
new file mode 100644
index 0000000..b94618e
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
@@ -0,0 +1,21 @@
+ infinite lifeTime).
+ *
+ * @return bool TRUE if the operation was successful, FALSE if it wasn't.
+ */
+ public function saveMultiple(array $keysAndValues, $lifetime = 0);
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php
new file mode 100644
index 0000000..d3693b7
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php
@@ -0,0 +1,340 @@
+ */
+ private $deferredItems = [];
+
+ public static function wrap(Cache $cache): CacheItemPoolInterface
+ {
+ if ($cache instanceof DoctrineProvider && ! $cache->getNamespace()) {
+ return $cache->getPool();
+ }
+
+ if ($cache instanceof SymfonyDoctrineProvider && ! $cache->getNamespace()) {
+ $getPool = function () {
+ // phpcs:ignore Squiz.Scope.StaticThisUsage.Found
+ return $this->pool;
+ };
+
+ return $getPool->bindTo($cache, SymfonyDoctrineProvider::class)();
+ }
+
+ return new self($cache);
+ }
+
+ private function __construct(Cache $cache)
+ {
+ $this->cache = $cache;
+ }
+
+ /** @internal */
+ public function getCache(): Cache
+ {
+ return $this->cache;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getItem($key): CacheItemInterface
+ {
+ assert(self::validKey($key));
+
+ if (isset($this->deferredItems[$key])) {
+ $this->commit();
+ }
+
+ $value = $this->cache->fetch($key);
+
+ if (PHP_VERSION_ID >= 80000) {
+ if ($value !== false) {
+ return new TypedCacheItem($key, $value, true);
+ }
+
+ return new TypedCacheItem($key, null, false);
+ }
+
+ if ($value !== false) {
+ return new CacheItem($key, $value, true);
+ }
+
+ return new CacheItem($key, null, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getItems(array $keys = []): array
+ {
+ if ($this->deferredItems) {
+ $this->commit();
+ }
+
+ assert(self::validKeys($keys));
+
+ $values = $this->doFetchMultiple($keys);
+ $items = [];
+
+ if (PHP_VERSION_ID >= 80000) {
+ foreach ($keys as $key) {
+ if (array_key_exists($key, $values)) {
+ $items[$key] = new TypedCacheItem($key, $values[$key], true);
+ } else {
+ $items[$key] = new TypedCacheItem($key, null, false);
+ }
+ }
+
+ return $items;
+ }
+
+ foreach ($keys as $key) {
+ if (array_key_exists($key, $values)) {
+ $items[$key] = new CacheItem($key, $values[$key], true);
+ } else {
+ $items[$key] = new CacheItem($key, null, false);
+ }
+ }
+
+ return $items;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasItem($key): bool
+ {
+ assert(self::validKey($key));
+
+ if (isset($this->deferredItems[$key])) {
+ $this->commit();
+ }
+
+ return $this->cache->contains($key);
+ }
+
+ public function clear(): bool
+ {
+ $this->deferredItems = [];
+
+ if (! $this->cache instanceof ClearableCache) {
+ return false;
+ }
+
+ return $this->cache->deleteAll();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function deleteItem($key): bool
+ {
+ assert(self::validKey($key));
+ unset($this->deferredItems[$key]);
+
+ return $this->cache->delete($key);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function deleteItems(array $keys): bool
+ {
+ foreach ($keys as $key) {
+ assert(self::validKey($key));
+ unset($this->deferredItems[$key]);
+ }
+
+ return $this->doDeleteMultiple($keys);
+ }
+
+ public function save(CacheItemInterface $item): bool
+ {
+ return $this->saveDeferred($item) && $this->commit();
+ }
+
+ public function saveDeferred(CacheItemInterface $item): bool
+ {
+ if (! $item instanceof CacheItem && ! $item instanceof TypedCacheItem) {
+ return false;
+ }
+
+ $this->deferredItems[$item->getKey()] = $item;
+
+ return true;
+ }
+
+ public function commit(): bool
+ {
+ if (! $this->deferredItems) {
+ return true;
+ }
+
+ $now = microtime(true);
+ $itemsCount = 0;
+ $byLifetime = [];
+ $expiredKeys = [];
+
+ foreach ($this->deferredItems as $key => $item) {
+ $lifetime = ($item->getExpiry() ?? $now) - $now;
+
+ if ($lifetime < 0) {
+ $expiredKeys[] = $key;
+
+ continue;
+ }
+
+ ++$itemsCount;
+ $byLifetime[(int) $lifetime][$key] = $item->get();
+ }
+
+ $this->deferredItems = [];
+
+ switch (count($expiredKeys)) {
+ case 0:
+ break;
+ case 1:
+ $this->cache->delete(current($expiredKeys));
+ break;
+ default:
+ $this->doDeleteMultiple($expiredKeys);
+ break;
+ }
+
+ if ($itemsCount === 1) {
+ return $this->cache->save($key, $item->get(), (int) $lifetime);
+ }
+
+ $success = true;
+ foreach ($byLifetime as $lifetime => $values) {
+ $success = $this->doSaveMultiple($values, $lifetime) && $success;
+ }
+
+ return $success;
+ }
+
+ public function __destruct()
+ {
+ $this->commit();
+ }
+
+ /**
+ * @param mixed $key
+ */
+ private static function validKey($key): bool
+ {
+ if (! is_string($key)) {
+ throw new InvalidArgument(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key)));
+ }
+
+ if ($key === '') {
+ throw new InvalidArgument('Cache key length must be greater than zero.');
+ }
+
+ if (strpbrk($key, self::RESERVED_CHARACTERS) !== false) {
+ throw new InvalidArgument(sprintf('Cache key "%s" contains reserved characters "%s".', $key, self::RESERVED_CHARACTERS));
+ }
+
+ return true;
+ }
+
+ /**
+ * @param mixed[] $keys
+ */
+ private static function validKeys(array $keys): bool
+ {
+ foreach ($keys as $key) {
+ self::validKey($key);
+ }
+
+ return true;
+ }
+
+ /**
+ * @param mixed[] $keys
+ */
+ private function doDeleteMultiple(array $keys): bool
+ {
+ if ($this->cache instanceof MultiDeleteCache) {
+ return $this->cache->deleteMultiple($keys);
+ }
+
+ $success = true;
+ foreach ($keys as $key) {
+ $success = $this->cache->delete($key) && $success;
+ }
+
+ return $success;
+ }
+
+ /**
+ * @param mixed[] $keys
+ *
+ * @return mixed[]
+ */
+ private function doFetchMultiple(array $keys): array
+ {
+ if ($this->cache instanceof MultiGetCache) {
+ return $this->cache->fetchMultiple($keys);
+ }
+
+ $values = [];
+ foreach ($keys as $key) {
+ $value = $this->cache->fetch($key);
+ if (! $value) {
+ continue;
+ }
+
+ $values[$key] = $value;
+ }
+
+ return $values;
+ }
+
+ /**
+ * @param mixed[] $keysAndValues
+ */
+ private function doSaveMultiple(array $keysAndValues, int $lifetime = 0): bool
+ {
+ if ($this->cache instanceof MultiPutCache) {
+ return $this->cache->saveMultiple($keysAndValues, $lifetime);
+ }
+
+ $success = true;
+ foreach ($keysAndValues as $key => $value) {
+ $success = $this->cache->save($key, $value, $lifetime) && $success;
+ }
+
+ return $success;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php
new file mode 100644
index 0000000..0b6f0a2
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php
@@ -0,0 +1,118 @@
+key = $key;
+ $this->value = $data;
+ $this->isHit = $isHit;
+ }
+
+ public function getKey(): string
+ {
+ return $this->key;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @return mixed
+ */
+ public function get()
+ {
+ return $this->value;
+ }
+
+ public function isHit(): bool
+ {
+ return $this->isHit;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function set($value): self
+ {
+ $this->value = $value;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function expiresAt($expiration): self
+ {
+ if ($expiration === null) {
+ $this->expiry = null;
+ } elseif ($expiration instanceof DateTimeInterface) {
+ $this->expiry = (float) $expiration->format('U.u');
+ } else {
+ throw new TypeError(sprintf(
+ 'Expected $expiration to be an instance of DateTimeInterface or null, got %s',
+ is_object($expiration) ? get_class($expiration) : gettype($expiration)
+ ));
+ }
+
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function expiresAfter($time): self
+ {
+ if ($time === null) {
+ $this->expiry = null;
+ } elseif ($time instanceof DateInterval) {
+ $this->expiry = microtime(true) + DateTime::createFromFormat('U', 0)->add($time)->format('U.u');
+ } elseif (is_int($time)) {
+ $this->expiry = $time + microtime(true);
+ } else {
+ throw new TypeError(sprintf(
+ 'Expected $time to be either an integer, an instance of DateInterval or null, got %s',
+ is_object($time) ? get_class($time) : gettype($time)
+ ));
+ }
+
+ return $this;
+ }
+
+ /**
+ * @internal
+ */
+ public function getExpiry(): ?float
+ {
+ return $this->expiry;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php
new file mode 100644
index 0000000..3b0f416
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php
@@ -0,0 +1,135 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Doctrine\Common\Cache\Psr6;
+
+use Doctrine\Common\Cache\Cache;
+use Doctrine\Common\Cache\CacheProvider;
+use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\Cache\Adapter\DoctrineAdapter as SymfonyDoctrineAdapter;
+use Symfony\Contracts\Service\ResetInterface;
+
+use function rawurlencode;
+
+/**
+ * This class was copied from the Symfony Framework, see the original copyright
+ * notice above. The code is distributed subject to the license terms in
+ * https://github.com/symfony/symfony/blob/ff0cf61278982539c49e467db9ab13cbd342f76d/LICENSE
+ */
+final class DoctrineProvider extends CacheProvider
+{
+ /** @var CacheItemPoolInterface */
+ private $pool;
+
+ public static function wrap(CacheItemPoolInterface $pool): Cache
+ {
+ if ($pool instanceof CacheAdapter) {
+ return $pool->getCache();
+ }
+
+ if ($pool instanceof SymfonyDoctrineAdapter) {
+ $getCache = function () {
+ // phpcs:ignore Squiz.Scope.StaticThisUsage.Found
+ return $this->provider;
+ };
+
+ return $getCache->bindTo($pool, SymfonyDoctrineAdapter::class)();
+ }
+
+ return new self($pool);
+ }
+
+ private function __construct(CacheItemPoolInterface $pool)
+ {
+ $this->pool = $pool;
+ }
+
+ /** @internal */
+ public function getPool(): CacheItemPoolInterface
+ {
+ return $this->pool;
+ }
+
+ public function reset(): void
+ {
+ if ($this->pool instanceof ResetInterface) {
+ $this->pool->reset();
+ }
+
+ $this->setNamespace($this->getNamespace());
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ $item = $this->pool->getItem(rawurlencode($id));
+
+ return $item->isHit() ? $item->get() : false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doContains($id)
+ {
+ return $this->pool->hasItem(rawurlencode($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ $item = $this->pool->getItem(rawurlencode($id));
+
+ if (0 < $lifeTime) {
+ $item->expiresAfter($lifeTime);
+ }
+
+ return $this->pool->save($item->set($data));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doDelete($id)
+ {
+ return $this->pool->deleteItem(rawurlencode($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doFlush()
+ {
+ return $this->pool->clear();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return array|null
+ */
+ protected function doGetStats()
+ {
+ return null;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php
new file mode 100644
index 0000000..196f1bc
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php
@@ -0,0 +1,13 @@
+key;
+ }
+
+ public function get(): mixed
+ {
+ return $this->value;
+ }
+
+ public function isHit(): bool
+ {
+ return $this->isHit;
+ }
+
+ public function set(mixed $value): static
+ {
+ $this->value = $value;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function expiresAt($expiration): static
+ {
+ if ($expiration === null) {
+ $this->expiry = null;
+ } elseif ($expiration instanceof DateTimeInterface) {
+ $this->expiry = (float) $expiration->format('U.u');
+ } else {
+ throw new TypeError(sprintf(
+ 'Expected $expiration to be an instance of DateTimeInterface or null, got %s',
+ get_debug_type($expiration)
+ ));
+ }
+
+ return $this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function expiresAfter($time): static
+ {
+ if ($time === null) {
+ $this->expiry = null;
+ } elseif ($time instanceof DateInterval) {
+ $this->expiry = microtime(true) + DateTime::createFromFormat('U', 0)->add($time)->format('U.u');
+ } elseif (is_int($time)) {
+ $this->expiry = $time + microtime(true);
+ } else {
+ throw new TypeError(sprintf(
+ 'Expected $time to be either an integer, an instance of DateInterval or null, got %s',
+ get_debug_type($time)
+ ));
+ }
+
+ return $this;
+ }
+
+ /**
+ * @internal
+ */
+ public function getExpiry(): ?float
+ {
+ return $this->expiry;
+ }
+}
diff --git a/vendor/doctrine/dbal/CONTRIBUTING.md b/vendor/doctrine/dbal/CONTRIBUTING.md
new file mode 100644
index 0000000..31b6eff
--- /dev/null
+++ b/vendor/doctrine/dbal/CONTRIBUTING.md
@@ -0,0 +1,6 @@
+This repository has [guidelines specific to testing][testing guidelines], and
+Doctrine has [general contributing guidelines][contributor workflow], make
+sure you follow both.
+
+[contributor workflow]: https://www.doctrine-project.org/contribute/index.html
+[testing guidelines]: https://www.doctrine-project.org/projects/doctrine-dbal/en/stable/reference/testing.html
diff --git a/vendor/doctrine/dbal/LICENSE b/vendor/doctrine/dbal/LICENSE
new file mode 100644
index 0000000..e8fdec4
--- /dev/null
+++ b/vendor/doctrine/dbal/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2018 Doctrine Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/doctrine/dbal/README.md b/vendor/doctrine/dbal/README.md
new file mode 100644
index 0000000..bf1b204
--- /dev/null
+++ b/vendor/doctrine/dbal/README.md
@@ -0,0 +1,58 @@
+# Doctrine DBAL
+
+| [5.0-dev][5.0] | [4.1-dev][4.1] | [4.0][4.0] | [3.9-dev][3.9] | [3.8][3.8] |
+|:---------------------------------------------------:|:---------------------------------------------------:|:---------------------------------------------------:|:---------------------------------------------------:|:---------------------------------------------------:|
+| [![GitHub Actions][GA 5.0 image]][GA 5.0] | [![GitHub Actions][GA 4.1 image]][GA 4.1] | [![GitHub Actions][GA 4.0 image]][GA 4.0] | [![GitHub Actions][GA 3.9 image]][GA 3.9] | [![GitHub Actions][GA 3.8 image]][GA 3.8] |
+| [![AppVeyor][AppVeyor 5.0 image]][AppVeyor 5.0] | [![AppVeyor][AppVeyor 4.1 image]][AppVeyor 4.1] | [![AppVeyor][AppVeyor 4.0 image]][AppVeyor 4.0] | [![AppVeyor][AppVeyor 3.9 image]][AppVeyor 3.9] | [![AppVeyor][AppVeyor 3.8 image]][AppVeyor 3.8] |
+| [![Code Coverage][Coverage 5.0 image]][CodeCov 5.0] | [![Code Coverage][Coverage 4.1 image]][CodeCov 4.1] | [![Code Coverage][Coverage 4.0 image]][CodeCov 4.0] | [![Code Coverage][Coverage 3.9 image]][CodeCov 3.9] | [![Code Coverage][Coverage 3.8 image]][CodeCov 3.8] |
+| N/A | N/A | [![Type Coverage][TypeCov image]][TypeCov] | N/A | |
+
+Powerful ***D***ata***B***ase ***A***bstraction ***L***ayer with many features for database schema introspection and schema management.
+
+## More resources:
+
+* [Website](http://www.doctrine-project.org/projects/dbal.html)
+* [Documentation](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/)
+* [Issue Tracker](https://github.com/doctrine/dbal/issues)
+
+ [Coverage 5.0 image]: https://codecov.io/gh/doctrine/dbal/branch/5.0.x/graph/badge.svg
+ [5.0]: https://github.com/doctrine/dbal/tree/5.0.x
+ [CodeCov 5.0]: https://codecov.io/gh/doctrine/dbal/branch/5.0.x
+ [AppVeyor 5.0]: https://ci.appveyor.com/project/doctrine/dbal/branch/5.0.x
+ [AppVeyor 5.0 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/5.0.x?svg=true
+ [GA 5.0]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A5.0.x
+ [GA 5.0 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=5.0.x
+
+ [Coverage 4.1 image]: https://codecov.io/gh/doctrine/dbal/branch/4.1.x/graph/badge.svg
+ [4.1]: https://github.com/doctrine/dbal/tree/4.1.x
+ [CodeCov 4.1]: https://codecov.io/gh/doctrine/dbal/branch/4.1.x
+ [AppVeyor 4.1]: https://ci.appveyor.com/project/doctrine/dbal/branch/4.1.x
+ [AppVeyor 4.1 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/4.1.x?svg=true
+ [GA 4.1]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A4.1.x
+ [GA 4.1 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=4.1.x
+
+ [Coverage 4.0 image]: https://codecov.io/gh/doctrine/dbal/branch/4.0.x/graph/badge.svg
+ [4.0]: https://github.com/doctrine/dbal/tree/4.0.x
+ [CodeCov 4.0]: https://codecov.io/gh/doctrine/dbal/branch/4.0.x
+ [AppVeyor 4.0]: https://ci.appveyor.com/project/doctrine/dbal/branch/4.0.x
+ [AppVeyor 4.0 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/4.0.x?svg=true
+ [GA 4.0]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A4.0.x
+ [GA 4.0 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=4.0.x
+ [TypeCov]: https://shepherd.dev/github/doctrine/dbal
+ [TypeCov image]: https://shepherd.dev/github/doctrine/dbal/coverage.svg
+
+ [Coverage 3.9 image]: https://codecov.io/gh/doctrine/dbal/branch/3.9.x/graph/badge.svg
+ [3.9]: https://github.com/doctrine/dbal/tree/3.9.x
+ [CodeCov 3.9]: https://codecov.io/gh/doctrine/dbal/branch/3.9.x
+ [AppVeyor 3.9]: https://ci.appveyor.com/project/doctrine/dbal/branch/3.9.x
+ [AppVeyor 3.9 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/3.9.x?svg=true
+ [GA 3.9]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A3.9.x
+ [GA 3.9 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=3.9.x
+
+ [Coverage 3.8 image]: https://codecov.io/gh/doctrine/dbal/branch/3.8.x/graph/badge.svg
+ [3.8]: https://github.com/doctrine/dbal/tree/3.8.x
+ [CodeCov 3.8]: https://codecov.io/gh/doctrine/dbal/branch/3.8.x
+ [AppVeyor 3.8]: https://ci.appveyor.com/project/doctrine/dbal/branch/3.8.x
+ [AppVeyor 3.8 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/3.8.x?svg=true
+ [GA 3.8]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A3.8.x
+ [GA 3.8 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=3.8.x
diff --git a/vendor/doctrine/dbal/bin/doctrine-dbal b/vendor/doctrine/dbal/bin/doctrine-dbal
new file mode 100644
index 0000000..0531527
--- /dev/null
+++ b/vendor/doctrine/dbal/bin/doctrine-dbal
@@ -0,0 +1,4 @@
+#!/usr/bin/env php
+> */
+ private array $data;
+
+ private int $columnCount = 0;
+ private int $num = 0;
+
+ /** @param list> $data */
+ public function __construct(array $data)
+ {
+ $this->data = $data;
+ if (count($data) === 0) {
+ return;
+ }
+
+ $this->columnCount = count($data[0]);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchNumeric()
+ {
+ $row = $this->fetch();
+
+ if ($row === false) {
+ return false;
+ }
+
+ return array_values($row);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAssociative()
+ {
+ return $this->fetch();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchOne()
+ {
+ $row = $this->fetch();
+
+ if ($row === false) {
+ return false;
+ }
+
+ return reset($row);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllNumeric(): array
+ {
+ return FetchUtils::fetchAllNumeric($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllAssociative(): array
+ {
+ return FetchUtils::fetchAllAssociative($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchFirstColumn(): array
+ {
+ return FetchUtils::fetchFirstColumn($this);
+ }
+
+ public function rowCount(): int
+ {
+ return count($this->data);
+ }
+
+ public function columnCount(): int
+ {
+ return $this->columnCount;
+ }
+
+ public function free(): void
+ {
+ $this->data = [];
+ }
+
+ /** @return array|false */
+ private function fetch()
+ {
+ if (! isset($this->data[$this->num])) {
+ return false;
+ }
+
+ return $this->data[$this->num++];
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Cache/CacheException.php b/vendor/doctrine/dbal/src/Cache/CacheException.php
new file mode 100644
index 0000000..18e95d6
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Cache/CacheException.php
@@ -0,0 +1,21 @@
+lifetime = $lifetime;
+ $this->cacheKey = $cacheKey;
+ if ($resultCache instanceof CacheItemPoolInterface) {
+ $this->resultCache = $resultCache;
+ } elseif ($resultCache instanceof Cache) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4620',
+ 'Passing an instance of %s to %s as $resultCache is deprecated. Pass an instance of %s instead.',
+ Cache::class,
+ __METHOD__,
+ CacheItemPoolInterface::class,
+ );
+
+ $this->resultCache = CacheAdapter::wrap($resultCache);
+ } elseif ($resultCache !== null) {
+ throw new TypeError(sprintf(
+ '$resultCache: Expected either null or an instance of %s or %s, got %s.',
+ CacheItemPoolInterface::class,
+ Cache::class,
+ get_class($resultCache),
+ ));
+ }
+ }
+
+ public function getResultCache(): ?CacheItemPoolInterface
+ {
+ return $this->resultCache;
+ }
+
+ /**
+ * @deprecated Use {@see getResultCache()} instead.
+ *
+ * @return Cache|null
+ */
+ public function getResultCacheDriver()
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4620',
+ '%s is deprecated, call getResultCache() instead.',
+ __METHOD__,
+ );
+
+ return $this->resultCache !== null ? DoctrineProvider::wrap($this->resultCache) : null;
+ }
+
+ /** @return int */
+ public function getLifetime()
+ {
+ return $this->lifetime;
+ }
+
+ /**
+ * @return string
+ *
+ * @throws CacheException
+ */
+ public function getCacheKey()
+ {
+ if ($this->cacheKey === null) {
+ throw CacheException::noCacheKey();
+ }
+
+ return $this->cacheKey;
+ }
+
+ /**
+ * Generates the real cache key from query, params, types and connection parameters.
+ *
+ * @param string $sql
+ * @param list|array $params
+ * @param array|array $types
+ * @param array $connectionParams
+ *
+ * @return array{string, string}
+ */
+ public function generateCacheKeys($sql, $params, $types, array $connectionParams = [])
+ {
+ if (isset($connectionParams['password'])) {
+ unset($connectionParams['password']);
+ }
+
+ $realCacheKey = 'query=' . $sql .
+ '¶ms=' . serialize($params) .
+ '&types=' . serialize($types) .
+ '&connectionParams=' . hash('sha256', serialize($connectionParams));
+
+ // should the key be automatically generated using the inputs or is the cache key set?
+ $cacheKey = $this->cacheKey ?? sha1($realCacheKey);
+
+ return [$cacheKey, $realCacheKey];
+ }
+
+ public function setResultCache(CacheItemPoolInterface $cache): QueryCacheProfile
+ {
+ return new QueryCacheProfile($this->lifetime, $this->cacheKey, $cache);
+ }
+
+ /**
+ * @deprecated Use {@see setResultCache()} instead.
+ *
+ * @return QueryCacheProfile
+ */
+ public function setResultCacheDriver(Cache $cache)
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4620',
+ '%s is deprecated, call setResultCache() instead.',
+ __METHOD__,
+ );
+
+ return new QueryCacheProfile($this->lifetime, $this->cacheKey, CacheAdapter::wrap($cache));
+ }
+
+ /**
+ * @param string|null $cacheKey
+ *
+ * @return QueryCacheProfile
+ */
+ public function setCacheKey($cacheKey)
+ {
+ return new QueryCacheProfile($this->lifetime, $cacheKey, $this->resultCache);
+ }
+
+ /**
+ * @param int $lifetime
+ *
+ * @return QueryCacheProfile
+ */
+ public function setLifetime($lifetime)
+ {
+ return new QueryCacheProfile($lifetime, $this->cacheKey, $this->resultCache);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/ColumnCase.php b/vendor/doctrine/dbal/src/ColumnCase.php
new file mode 100644
index 0000000..cb0dd40
--- /dev/null
+++ b/vendor/doctrine/dbal/src/ColumnCase.php
@@ -0,0 +1,28 @@
+schemaAssetsFilter = static function (): bool {
+ return true;
+ };
+ }
+
+ /**
+ * Sets the SQL logger to use. Defaults to NULL which means SQL logging is disabled.
+ *
+ * @deprecated Use {@see setMiddlewares()} and {@see \Doctrine\DBAL\Logging\Middleware} instead.
+ */
+ public function setSQLLogger(?SQLLogger $logger = null): void
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4967',
+ '%s is deprecated, use setMiddlewares() and Logging\\Middleware instead.',
+ __METHOD__,
+ );
+
+ $this->sqlLogger = $logger;
+ }
+
+ /**
+ * Gets the SQL logger that is used.
+ *
+ * @deprecated
+ */
+ public function getSQLLogger(): ?SQLLogger
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4967',
+ '%s is deprecated.',
+ __METHOD__,
+ );
+
+ return $this->sqlLogger;
+ }
+
+ /**
+ * Gets the cache driver implementation that is used for query result caching.
+ */
+ public function getResultCache(): ?CacheItemPoolInterface
+ {
+ return $this->resultCache;
+ }
+
+ /**
+ * Gets the cache driver implementation that is used for query result caching.
+ *
+ * @deprecated Use {@see getResultCache()} instead.
+ */
+ public function getResultCacheImpl(): ?Cache
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4620',
+ '%s is deprecated, call getResultCache() instead.',
+ __METHOD__,
+ );
+
+ return $this->resultCacheImpl;
+ }
+
+ /**
+ * Sets the cache driver implementation that is used for query result caching.
+ */
+ public function setResultCache(CacheItemPoolInterface $cache): void
+ {
+ $this->resultCacheImpl = DoctrineProvider::wrap($cache);
+ $this->resultCache = $cache;
+ }
+
+ /**
+ * Sets the cache driver implementation that is used for query result caching.
+ *
+ * @deprecated Use {@see setResultCache()} instead.
+ */
+ public function setResultCacheImpl(Cache $cacheImpl): void
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4620',
+ '%s is deprecated, call setResultCache() instead.',
+ __METHOD__,
+ );
+
+ $this->resultCacheImpl = $cacheImpl;
+ $this->resultCache = CacheAdapter::wrap($cacheImpl);
+ }
+
+ /**
+ * Sets the callable to use to filter schema assets.
+ */
+ public function setSchemaAssetsFilter(?callable $callable = null): void
+ {
+ if (func_num_args() < 1) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5483',
+ 'Not passing an argument to %s is deprecated.',
+ __METHOD__,
+ );
+ } elseif ($callable === null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5483',
+ 'Using NULL as a schema asset filter is deprecated.'
+ . ' Use a callable that always returns true instead.',
+ );
+ }
+
+ $this->schemaAssetsFilter = $callable;
+ }
+
+ /**
+ * Returns the callable to use to filter schema assets.
+ */
+ public function getSchemaAssetsFilter(): ?callable
+ {
+ return $this->schemaAssetsFilter;
+ }
+
+ /**
+ * Sets the default auto-commit mode for connections.
+ *
+ * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual
+ * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either
+ * the method commit or the method rollback. By default, new connections are in auto-commit mode.
+ *
+ * @see getAutoCommit
+ *
+ * @param bool $autoCommit True to enable auto-commit mode; false to disable it
+ */
+ public function setAutoCommit(bool $autoCommit): void
+ {
+ $this->autoCommit = $autoCommit;
+ }
+
+ /**
+ * Returns the default auto-commit mode for connections.
+ *
+ * @see setAutoCommit
+ *
+ * @return bool True if auto-commit mode is enabled by default for connections, false otherwise.
+ */
+ public function getAutoCommit(): bool
+ {
+ return $this->autoCommit;
+ }
+
+ /**
+ * @param Middleware[] $middlewares
+ *
+ * @return $this
+ */
+ public function setMiddlewares(array $middlewares): self
+ {
+ $this->middlewares = $middlewares;
+
+ return $this;
+ }
+
+ /** @return Middleware[] */
+ public function getMiddlewares(): array
+ {
+ return $this->middlewares;
+ }
+
+ public function getSchemaManagerFactory(): ?SchemaManagerFactory
+ {
+ return $this->schemaManagerFactory;
+ }
+
+ /** @return $this */
+ public function setSchemaManagerFactory(SchemaManagerFactory $schemaManagerFactory): self
+ {
+ $this->schemaManagerFactory = $schemaManagerFactory;
+
+ return $this;
+ }
+
+ public function getDisableTypeComments(): bool
+ {
+ return $this->disableTypeComments;
+ }
+
+ /** @return $this */
+ public function setDisableTypeComments(bool $disableTypeComments): self
+ {
+ $this->disableTypeComments = $disableTypeComments;
+
+ return $this;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Connection.php b/vendor/doctrine/dbal/src/Connection.php
new file mode 100644
index 0000000..b975670
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Connection.php
@@ -0,0 +1,2001 @@
+
+ * @psalm-var Params
+ */
+ private array $params;
+
+ /**
+ * The database platform object used by the connection or NULL before it's initialized.
+ */
+ private ?AbstractPlatform $platform = null;
+
+ private ?ExceptionConverter $exceptionConverter = null;
+ private ?Parser $parser = null;
+
+ /**
+ * The schema manager.
+ *
+ * @deprecated Use {@see createSchemaManager()} instead.
+ *
+ * @var AbstractSchemaManager|null
+ */
+ protected $_schemaManager;
+
+ /**
+ * The used DBAL driver.
+ *
+ * @var Driver
+ */
+ protected $_driver;
+
+ /**
+ * Flag that indicates whether the current transaction is marked for rollback only.
+ */
+ private bool $isRollbackOnly = false;
+
+ private SchemaManagerFactory $schemaManagerFactory;
+
+ /**
+ * Initializes a new instance of the Connection class.
+ *
+ * @internal The connection can be only instantiated by the driver manager.
+ *
+ * @param array $params The connection parameters.
+ * @param Driver $driver The driver to use.
+ * @param Configuration|null $config The configuration, optional.
+ * @param EventManager|null $eventManager The event manager, optional.
+ * @psalm-param Params $params
+ *
+ * @throws Exception
+ */
+ public function __construct(
+ #[SensitiveParameter]
+ array $params,
+ Driver $driver,
+ ?Configuration $config = null,
+ ?EventManager $eventManager = null
+ ) {
+ $this->_driver = $driver;
+ $this->params = $params;
+
+ // Create default config and event manager if none given
+ $config ??= new Configuration();
+ $eventManager ??= new EventManager();
+
+ $this->_config = $config;
+ $this->_eventManager = $eventManager;
+
+ if (isset($params['platform'])) {
+ if (! $params['platform'] instanceof Platforms\AbstractPlatform) {
+ throw Exception::invalidPlatformType($params['platform']);
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5699',
+ 'The "platform" connection parameter is deprecated.'
+ . ' Use a driver middleware that would instantiate the platform instead.',
+ );
+
+ $this->platform = $params['platform'];
+ $this->platform->setEventManager($this->_eventManager);
+ $this->platform->setDisableTypeComments($config->getDisableTypeComments());
+ }
+
+ $this->_expr = $this->createExpressionBuilder();
+
+ $this->autoCommit = $config->getAutoCommit();
+
+ $schemaManagerFactory = $config->getSchemaManagerFactory();
+ if ($schemaManagerFactory === null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/5812',
+ 'Not configuring a schema manager factory is deprecated.'
+ . ' Use %s which is going to be the default in DBAL 4.',
+ DefaultSchemaManagerFactory::class,
+ );
+
+ $schemaManagerFactory = new LegacySchemaManagerFactory();
+ }
+
+ $this->schemaManagerFactory = $schemaManagerFactory;
+ }
+
+ /**
+ * Gets the parameters used during instantiation.
+ *
+ * @internal
+ *
+ * @return array
+ * @psalm-return Params
+ */
+ public function getParams()
+ {
+ return $this->params;
+ }
+
+ /**
+ * Gets the name of the currently selected database.
+ *
+ * @return string|null The name of the database or NULL if a database is not selected.
+ * The platforms which don't support the concept of a database (e.g. embedded databases)
+ * must always return a string as an indicator of an implicitly selected database.
+ *
+ * @throws Exception
+ */
+ public function getDatabase()
+ {
+ $platform = $this->getDatabasePlatform();
+ $query = $platform->getDummySelectSQL($platform->getCurrentDatabaseExpression());
+ $database = $this->fetchOne($query);
+
+ assert(is_string($database) || $database === null);
+
+ return $database;
+ }
+
+ /**
+ * Gets the DBAL driver instance.
+ *
+ * @return Driver
+ */
+ public function getDriver()
+ {
+ return $this->_driver;
+ }
+
+ /**
+ * Gets the Configuration used by the Connection.
+ *
+ * @return Configuration
+ */
+ public function getConfiguration()
+ {
+ return $this->_config;
+ }
+
+ /**
+ * Gets the EventManager used by the Connection.
+ *
+ * @deprecated
+ *
+ * @return EventManager
+ */
+ public function getEventManager()
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/5784',
+ '%s is deprecated.',
+ __METHOD__,
+ );
+
+ return $this->_eventManager;
+ }
+
+ /**
+ * Gets the DatabasePlatform for the connection.
+ *
+ * @return AbstractPlatform
+ *
+ * @throws Exception
+ */
+ public function getDatabasePlatform()
+ {
+ if ($this->platform === null) {
+ $this->platform = $this->detectDatabasePlatform();
+ $this->platform->setEventManager($this->_eventManager);
+ $this->platform->setDisableTypeComments($this->_config->getDisableTypeComments());
+ }
+
+ return $this->platform;
+ }
+
+ /**
+ * Creates an expression builder for the connection.
+ */
+ public function createExpressionBuilder(): ExpressionBuilder
+ {
+ return new ExpressionBuilder($this);
+ }
+
+ /**
+ * Gets the ExpressionBuilder for the connection.
+ *
+ * @deprecated Use {@see createExpressionBuilder()} instead.
+ *
+ * @return ExpressionBuilder
+ */
+ public function getExpressionBuilder()
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4515',
+ 'Connection::getExpressionBuilder() is deprecated,'
+ . ' use Connection::createExpressionBuilder() instead.',
+ );
+
+ return $this->_expr;
+ }
+
+ /**
+ * Establishes the connection with the database.
+ *
+ * @internal This method will be made protected in DBAL 4.0.
+ *
+ * @return bool TRUE if the connection was successfully established, FALSE if
+ * the connection is already open.
+ *
+ * @throws Exception
+ *
+ * @psalm-assert !null $this->_conn
+ */
+ public function connect()
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4966',
+ 'Public access to Connection::connect() is deprecated.',
+ );
+
+ if ($this->_conn !== null) {
+ return false;
+ }
+
+ try {
+ $this->_conn = $this->_driver->connect($this->params);
+ } catch (Driver\Exception $e) {
+ throw $this->convertException($e);
+ }
+
+ if ($this->autoCommit === false) {
+ $this->beginTransaction();
+ }
+
+ if ($this->_eventManager->hasListeners(Events::postConnect)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/5784',
+ 'Subscribing to %s events is deprecated. Implement a middleware instead.',
+ Events::postConnect,
+ );
+
+ $eventArgs = new Event\ConnectionEventArgs($this);
+ $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);
+ }
+
+ return true;
+ }
+
+ /**
+ * Detects and sets the database platform.
+ *
+ * Evaluates custom platform class and version in order to set the correct platform.
+ *
+ * @throws Exception If an invalid platform was specified for this connection.
+ */
+ private function detectDatabasePlatform(): AbstractPlatform
+ {
+ $version = $this->getDatabasePlatformVersion();
+
+ if ($version !== null) {
+ assert($this->_driver instanceof VersionAwarePlatformDriver);
+
+ return $this->_driver->createDatabasePlatformForVersion($version);
+ }
+
+ return $this->_driver->getDatabasePlatform();
+ }
+
+ /**
+ * Returns the version of the related platform if applicable.
+ *
+ * Returns null if either the driver is not capable to create version
+ * specific platform instances, no explicit server version was specified
+ * or the underlying driver connection cannot determine the platform
+ * version without having to query it (performance reasons).
+ *
+ * @return string|null
+ *
+ * @throws Throwable
+ */
+ private function getDatabasePlatformVersion()
+ {
+ // Driver does not support version specific platforms.
+ if (! $this->_driver instanceof VersionAwarePlatformDriver) {
+ return null;
+ }
+
+ // Explicit platform version requested (supersedes auto-detection).
+ if (isset($this->params['serverVersion'])) {
+ return $this->params['serverVersion'];
+ }
+
+ if (isset($this->params['primary']) && isset($this->params['primary']['serverVersion'])) {
+ return $this->params['primary']['serverVersion'];
+ }
+
+ // If not connected, we need to connect now to determine the platform version.
+ if ($this->_conn === null) {
+ try {
+ $this->connect();
+ } catch (Exception $originalException) {
+ if (! isset($this->params['dbname'])) {
+ throw $originalException;
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5707',
+ 'Relying on a fallback connection used to determine the database platform while connecting'
+ . ' to a non-existing database is deprecated. Either use an existing database name in'
+ . ' connection parameters or omit the database name if the platform'
+ . ' and the server configuration allow that.',
+ );
+
+ // The database to connect to might not yet exist.
+ // Retry detection without database name connection parameter.
+ $params = $this->params;
+
+ unset($this->params['dbname']);
+
+ try {
+ $this->connect();
+ } catch (Exception $fallbackException) {
+ // Either the platform does not support database-less connections
+ // or something else went wrong.
+ throw $originalException;
+ } finally {
+ $this->params = $params;
+ }
+
+ $serverVersion = $this->getServerVersion();
+
+ // Close "temporary" connection to allow connecting to the real database again.
+ $this->close();
+
+ return $serverVersion;
+ }
+ }
+
+ return $this->getServerVersion();
+ }
+
+ /**
+ * Returns the database server version if the underlying driver supports it.
+ *
+ * @return string|null
+ *
+ * @throws Exception
+ */
+ private function getServerVersion()
+ {
+ $connection = $this->getWrappedConnection();
+
+ // Automatic platform version detection.
+ if ($connection instanceof ServerInfoAwareConnection) {
+ try {
+ return $connection->getServerVersion();
+ } catch (Driver\Exception $e) {
+ throw $this->convertException($e);
+ }
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4750',
+ 'Not implementing the ServerInfoAwareConnection interface in %s is deprecated',
+ get_class($connection),
+ );
+
+ // Unable to detect platform version.
+ return null;
+ }
+
+ /**
+ * Returns the current auto-commit mode for this connection.
+ *
+ * @see setAutoCommit
+ *
+ * @return bool True if auto-commit mode is currently enabled for this connection, false otherwise.
+ */
+ public function isAutoCommit()
+ {
+ return $this->autoCommit === true;
+ }
+
+ /**
+ * Sets auto-commit mode for this connection.
+ *
+ * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual
+ * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either
+ * the method commit or the method rollback. By default, new connections are in auto-commit mode.
+ *
+ * NOTE: If this method is called during a transaction and the auto-commit mode is changed, the transaction is
+ * committed. If this method is called and the auto-commit mode is not changed, the call is a no-op.
+ *
+ * @see isAutoCommit
+ *
+ * @param bool $autoCommit True to enable auto-commit mode; false to disable it.
+ *
+ * @return void
+ */
+ public function setAutoCommit($autoCommit)
+ {
+ $autoCommit = (bool) $autoCommit;
+
+ // Mode not changed, no-op.
+ if ($autoCommit === $this->autoCommit) {
+ return;
+ }
+
+ $this->autoCommit = $autoCommit;
+
+ // Commit all currently active transactions if any when switching auto-commit mode.
+ if ($this->_conn === null || $this->transactionNestingLevel === 0) {
+ return;
+ }
+
+ $this->commitAll();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the first row of the result
+ * as an associative array.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return array|false False is returned if no rows are found.
+ *
+ * @throws Exception
+ */
+ public function fetchAssociative(string $query, array $params = [], array $types = [])
+ {
+ return $this->executeQuery($query, $params, $types)->fetchAssociative();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the first row of the result
+ * as a numerically indexed array.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return list|false False is returned if no rows are found.
+ *
+ * @throws Exception
+ */
+ public function fetchNumeric(string $query, array $params = [], array $types = [])
+ {
+ return $this->executeQuery($query, $params, $types)->fetchNumeric();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the value of a single column
+ * of the first row of the result.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return mixed|false False is returned if no rows are found.
+ *
+ * @throws Exception
+ */
+ public function fetchOne(string $query, array $params = [], array $types = [])
+ {
+ return $this->executeQuery($query, $params, $types)->fetchOne();
+ }
+
+ /**
+ * Whether an actual connection to the database is established.
+ *
+ * @return bool
+ */
+ public function isConnected()
+ {
+ return $this->_conn !== null;
+ }
+
+ /**
+ * Checks whether a transaction is currently active.
+ *
+ * @return bool TRUE if a transaction is currently active, FALSE otherwise.
+ */
+ public function isTransactionActive()
+ {
+ return $this->transactionNestingLevel > 0;
+ }
+
+ /**
+ * Adds condition based on the criteria to the query components
+ *
+ * @param array $criteria Map of key columns to their values
+ * @param string[] $columns Column names
+ * @param mixed[] $values Column values
+ * @param string[] $conditions Key conditions
+ *
+ * @throws Exception
+ */
+ private function addCriteriaCondition(
+ array $criteria,
+ array &$columns,
+ array &$values,
+ array &$conditions
+ ): void {
+ $platform = $this->getDatabasePlatform();
+
+ foreach ($criteria as $columnName => $value) {
+ if ($value === null) {
+ $conditions[] = $platform->getIsNullExpression($columnName);
+ continue;
+ }
+
+ $columns[] = $columnName;
+ $values[] = $value;
+ $conditions[] = $columnName . ' = ?';
+ }
+ }
+
+ /**
+ * Executes an SQL DELETE statement on a table.
+ *
+ * Table expression and columns are not escaped and are not safe for user-input.
+ *
+ * @param string $table Table name
+ * @param array $criteria Deletion criteria
+ * @param array|array $types Parameter types
+ *
+ * @return int|string The number of affected rows.
+ *
+ * @throws Exception
+ */
+ public function delete($table, array $criteria, array $types = [])
+ {
+ if (count($criteria) === 0) {
+ throw InvalidArgumentException::fromEmptyCriteria();
+ }
+
+ $columns = $values = $conditions = [];
+
+ $this->addCriteriaCondition($criteria, $columns, $values, $conditions);
+
+ return $this->executeStatement(
+ 'DELETE FROM ' . $table . ' WHERE ' . implode(' AND ', $conditions),
+ $values,
+ is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types,
+ );
+ }
+
+ /**
+ * Closes the connection.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ $this->_conn = null;
+ $this->transactionNestingLevel = 0;
+ }
+
+ /**
+ * Sets the transaction isolation level.
+ *
+ * @param TransactionIsolationLevel::* $level The level to set.
+ *
+ * @return int|string
+ *
+ * @throws Exception
+ */
+ public function setTransactionIsolation($level)
+ {
+ $this->transactionIsolationLevel = $level;
+
+ return $this->executeStatement($this->getDatabasePlatform()->getSetTransactionIsolationSQL($level));
+ }
+
+ /**
+ * Gets the currently active transaction isolation level.
+ *
+ * @return TransactionIsolationLevel::* The current transaction isolation level.
+ *
+ * @throws Exception
+ */
+ public function getTransactionIsolation()
+ {
+ return $this->transactionIsolationLevel ??= $this->getDatabasePlatform()->getDefaultTransactionIsolationLevel();
+ }
+
+ /**
+ * Executes an SQL UPDATE statement on a table.
+ *
+ * Table expression and columns are not escaped and are not safe for user-input.
+ *
+ * @param string $table Table name
+ * @param array $data Column-value pairs
+ * @param array $criteria Update criteria
+ * @param array|array $types Parameter types
+ *
+ * @return int|string The number of affected rows.
+ *
+ * @throws Exception
+ */
+ public function update($table, array $data, array $criteria, array $types = [])
+ {
+ $columns = $values = $conditions = $set = [];
+
+ foreach ($data as $columnName => $value) {
+ $columns[] = $columnName;
+ $values[] = $value;
+ $set[] = $columnName . ' = ?';
+ }
+
+ $this->addCriteriaCondition($criteria, $columns, $values, $conditions);
+
+ if (is_string(key($types))) {
+ $types = $this->extractTypeValues($columns, $types);
+ }
+
+ $sql = 'UPDATE ' . $table . ' SET ' . implode(', ', $set)
+ . ' WHERE ' . implode(' AND ', $conditions);
+
+ return $this->executeStatement($sql, $values, $types);
+ }
+
+ /**
+ * Inserts a table row with specified data.
+ *
+ * Table expression and columns are not escaped and are not safe for user-input.
+ *
+ * @param string $table Table name
+ * @param array $data Column-value pairs
+ * @param array|array $types Parameter types
+ *
+ * @return int|string The number of affected rows.
+ *
+ * @throws Exception
+ */
+ public function insert($table, array $data, array $types = [])
+ {
+ if (count($data) === 0) {
+ return $this->executeStatement('INSERT INTO ' . $table . ' () VALUES ()');
+ }
+
+ $columns = [];
+ $values = [];
+ $set = [];
+
+ foreach ($data as $columnName => $value) {
+ $columns[] = $columnName;
+ $values[] = $value;
+ $set[] = '?';
+ }
+
+ return $this->executeStatement(
+ 'INSERT INTO ' . $table . ' (' . implode(', ', $columns) . ')' .
+ ' VALUES (' . implode(', ', $set) . ')',
+ $values,
+ is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types,
+ );
+ }
+
+ /**
+ * Extract ordered type list from an ordered column list and type map.
+ *
+ * @param array $columnList
+ * @param array|array $types
+ *
+ * @return array|array
+ */
+ private function extractTypeValues(array $columnList, array $types): array
+ {
+ $typeValues = [];
+
+ foreach ($columnList as $columnName) {
+ $typeValues[] = $types[$columnName] ?? ParameterType::STRING;
+ }
+
+ return $typeValues;
+ }
+
+ /**
+ * Quotes a string so it can be safely used as a table or column name, even if
+ * it is a reserved name.
+ *
+ * Delimiting style depends on the underlying database platform that is being used.
+ *
+ * NOTE: Just because you CAN use quoted identifiers does not mean
+ * you SHOULD use them. In general, they end up causing way more
+ * problems than they solve.
+ *
+ * @param string $str The name to be quoted.
+ *
+ * @return string The quoted name.
+ */
+ public function quoteIdentifier($str)
+ {
+ return $this->getDatabasePlatform()->quoteIdentifier($str);
+ }
+
+ /**
+ * The usage of this method is discouraged. Use prepared statements
+ * or {@see AbstractPlatform::quoteStringLiteral()} instead.
+ *
+ * @param mixed $value
+ * @param int|string|Type|null $type
+ *
+ * @return mixed
+ */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ $connection = $this->getWrappedConnection();
+
+ [$value, $bindingType] = $this->getBindingInfo($value, $type);
+
+ return $connection->quote($value, $bindingType);
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an array of numeric arrays.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return list>
+ *
+ * @throws Exception
+ */
+ public function fetchAllNumeric(string $query, array $params = [], array $types = []): array
+ {
+ return $this->executeQuery($query, $params, $types)->fetchAllNumeric();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an array of associative arrays.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return list>
+ *
+ * @throws Exception
+ */
+ public function fetchAllAssociative(string $query, array $params = [], array $types = []): array
+ {
+ return $this->executeQuery($query, $params, $types)->fetchAllAssociative();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an associative array with the keys
+ * mapped to the first column and the values mapped to the second column.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return array
+ *
+ * @throws Exception
+ */
+ public function fetchAllKeyValue(string $query, array $params = [], array $types = []): array
+ {
+ return $this->executeQuery($query, $params, $types)->fetchAllKeyValue();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an associative array with the keys mapped
+ * to the first column and the values being an associative array representing the rest of the columns
+ * and their values.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return array>
+ *
+ * @throws Exception
+ */
+ public function fetchAllAssociativeIndexed(string $query, array $params = [], array $types = []): array
+ {
+ return $this->executeQuery($query, $params, $types)->fetchAllAssociativeIndexed();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an array of the first column values.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return list
+ *
+ * @throws Exception
+ */
+ public function fetchFirstColumn(string $query, array $params = [], array $types = []): array
+ {
+ return $this->executeQuery($query, $params, $types)->fetchFirstColumn();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an iterator over rows represented as numeric arrays.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return Traversable>
+ *
+ * @throws Exception
+ */
+ public function iterateNumeric(string $query, array $params = [], array $types = []): Traversable
+ {
+ return $this->executeQuery($query, $params, $types)->iterateNumeric();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an iterator over rows represented
+ * as associative arrays.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return Traversable>
+ *
+ * @throws Exception
+ */
+ public function iterateAssociative(string $query, array $params = [], array $types = []): Traversable
+ {
+ return $this->executeQuery($query, $params, $types)->iterateAssociative();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an iterator with the keys
+ * mapped to the first column and the values mapped to the second column.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return Traversable
+ *
+ * @throws Exception
+ */
+ public function iterateKeyValue(string $query, array $params = [], array $types = []): Traversable
+ {
+ return $this->executeQuery($query, $params, $types)->iterateKeyValue();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an iterator with the keys mapped
+ * to the first column and the values being an associative array representing the rest of the columns
+ * and their values.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return Traversable>
+ *
+ * @throws Exception
+ */
+ public function iterateAssociativeIndexed(string $query, array $params = [], array $types = []): Traversable
+ {
+ return $this->executeQuery($query, $params, $types)->iterateAssociativeIndexed();
+ }
+
+ /**
+ * Prepares and executes an SQL query and returns the result as an iterator over the first column values.
+ *
+ * @param string $query SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @return Traversable
+ *
+ * @throws Exception
+ */
+ public function iterateColumn(string $query, array $params = [], array $types = []): Traversable
+ {
+ return $this->executeQuery($query, $params, $types)->iterateColumn();
+ }
+
+ /**
+ * Prepares an SQL statement.
+ *
+ * @param string $sql The SQL statement to prepare.
+ *
+ * @throws Exception
+ */
+ public function prepare(string $sql): Statement
+ {
+ $connection = $this->getWrappedConnection();
+
+ try {
+ $statement = $connection->prepare($sql);
+ } catch (Driver\Exception $e) {
+ throw $this->convertExceptionDuringQuery($e, $sql);
+ }
+
+ return new Statement($this, $statement, $sql);
+ }
+
+ /**
+ * Executes an, optionally parameterized, SQL query.
+ *
+ * If the query is parametrized, a prepared statement is used.
+ * If an SQLLogger is configured, the execution is logged.
+ *
+ * @param string $sql SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @throws Exception
+ */
+ public function executeQuery(
+ string $sql,
+ array $params = [],
+ $types = [],
+ ?QueryCacheProfile $qcp = null
+ ): Result {
+ if ($qcp !== null) {
+ return $this->executeCacheQuery($sql, $params, $types, $qcp);
+ }
+
+ $connection = $this->getWrappedConnection();
+
+ $logger = $this->_config->getSQLLogger();
+ if ($logger !== null) {
+ $logger->startQuery($sql, $params, $types);
+ }
+
+ try {
+ if (count($params) > 0) {
+ if ($this->needsArrayParameterConversion($params, $types)) {
+ [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types);
+ }
+
+ $stmt = $connection->prepare($sql);
+
+ $this->bindParameters($stmt, $params, $types);
+
+ $result = $stmt->execute();
+ } else {
+ $result = $connection->query($sql);
+ }
+
+ return new Result($result, $this);
+ } catch (Driver\Exception $e) {
+ throw $this->convertExceptionDuringQuery($e, $sql, $params, $types);
+ } finally {
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+ }
+ }
+
+ /**
+ * Executes a caching query.
+ *
+ * @param string $sql SQL query
+ * @param list|array $params Query parameters
+ * @param array|array $types Parameter types
+ *
+ * @throws CacheException
+ * @throws Exception
+ */
+ public function executeCacheQuery($sql, $params, $types, QueryCacheProfile $qcp): Result
+ {
+ $resultCache = $qcp->getResultCache() ?? $this->_config->getResultCache();
+
+ if ($resultCache === null) {
+ throw CacheException::noResultDriverConfigured();
+ }
+
+ $connectionParams = $this->params;
+ unset($connectionParams['platform'], $connectionParams['password'], $connectionParams['url']);
+
+ [$cacheKey, $realKey] = $qcp->generateCacheKeys($sql, $params, $types, $connectionParams);
+
+ $item = $resultCache->getItem($cacheKey);
+
+ if ($item->isHit()) {
+ $value = $item->get();
+ if (! is_array($value)) {
+ $value = [];
+ }
+
+ if (isset($value[$realKey])) {
+ return new Result(new ArrayResult($value[$realKey]), $this);
+ }
+ } else {
+ $value = [];
+ }
+
+ $data = $this->fetchAllAssociative($sql, $params, $types);
+
+ $value[$realKey] = $data;
+
+ $item->set($value);
+
+ $lifetime = $qcp->getLifetime();
+ if ($lifetime > 0) {
+ $item->expiresAfter($lifetime);
+ }
+
+ $resultCache->save($item);
+
+ return new Result(new ArrayResult($data), $this);
+ }
+
+ /**
+ * Executes an SQL statement with the given parameters and returns the number of affected rows.
+ *
+ * Could be used for:
+ * - DML statements: INSERT, UPDATE, DELETE, etc.
+ * - DDL statements: CREATE, DROP, ALTER, etc.
+ * - DCL statements: GRANT, REVOKE, etc.
+ * - Session control statements: ALTER SESSION, SET, DECLARE, etc.
+ * - Other statements that don't yield a row set.
+ *
+ * This method supports PDO binding types as well as DBAL mapping types.
+ *
+ * @param string $sql SQL statement
+ * @param list|array $params Statement parameters
+ * @param array|array $types Parameter types
+ *
+ * @return int|string The number of affected rows.
+ *
+ * @throws Exception
+ */
+ public function executeStatement($sql, array $params = [], array $types = [])
+ {
+ $connection = $this->getWrappedConnection();
+
+ $logger = $this->_config->getSQLLogger();
+ if ($logger !== null) {
+ $logger->startQuery($sql, $params, $types);
+ }
+
+ try {
+ if (count($params) > 0) {
+ if ($this->needsArrayParameterConversion($params, $types)) {
+ [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types);
+ }
+
+ $stmt = $connection->prepare($sql);
+
+ $this->bindParameters($stmt, $params, $types);
+
+ return $stmt->execute()
+ ->rowCount();
+ }
+
+ return $connection->exec($sql);
+ } catch (Driver\Exception $e) {
+ throw $this->convertExceptionDuringQuery($e, $sql, $params, $types);
+ } finally {
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+ }
+ }
+
+ /**
+ * Returns the current transaction nesting level.
+ *
+ * @return int The nesting level. A value of 0 means there's no active transaction.
+ */
+ public function getTransactionNestingLevel()
+ {
+ return $this->transactionNestingLevel;
+ }
+
+ /**
+ * Returns the ID of the last inserted row, or the last value from a sequence object,
+ * depending on the underlying driver.
+ *
+ * Note: This method may not return a meaningful or consistent result across different drivers,
+ * because the underlying database may not even support the notion of AUTO_INCREMENT/IDENTITY
+ * columns or sequences.
+ *
+ * @param string|null $name Name of the sequence object from which the ID should be returned.
+ *
+ * @return string|int|false A string representation of the last inserted ID.
+ *
+ * @throws Exception
+ */
+ public function lastInsertId($name = null)
+ {
+ if ($name !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+ }
+
+ try {
+ return $this->getWrappedConnection()->lastInsertId($name);
+ } catch (Driver\Exception $e) {
+ throw $this->convertException($e);
+ }
+ }
+
+ /**
+ * Executes a function in a transaction.
+ *
+ * The function gets passed this Connection instance as an (optional) parameter.
+ *
+ * If an exception occurs during execution of the function or transaction commit,
+ * the transaction is rolled back and the exception re-thrown.
+ *
+ * @param Closure(self):T $func The function to execute transactionally.
+ *
+ * @return T The value returned by $func
+ *
+ * @throws Throwable
+ *
+ * @template T
+ */
+ public function transactional(Closure $func)
+ {
+ $this->beginTransaction();
+ try {
+ $res = $func($this);
+ $this->commit();
+
+ return $res;
+ } catch (Throwable $e) {
+ $this->rollBack();
+
+ throw $e;
+ }
+ }
+
+ /**
+ * Sets if nested transactions should use savepoints.
+ *
+ * @param bool $nestTransactionsWithSavepoints
+ *
+ * @return void
+ *
+ * @throws Exception
+ */
+ public function setNestTransactionsWithSavepoints($nestTransactionsWithSavepoints)
+ {
+ if (! $nestTransactionsWithSavepoints) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5383',
+ <<<'DEPRECATION'
+ Nesting transactions without enabling savepoints is deprecated.
+ Call %s::setNestTransactionsWithSavepoints(true) to enable savepoints.
+ DEPRECATION,
+ self::class,
+ );
+ }
+
+ if ($this->transactionNestingLevel > 0) {
+ throw ConnectionException::mayNotAlterNestedTransactionWithSavepointsInTransaction();
+ }
+
+ $this->nestTransactionsWithSavepoints = (bool) $nestTransactionsWithSavepoints;
+ }
+
+ /**
+ * Gets if nested transactions should use savepoints.
+ *
+ * @return bool
+ */
+ public function getNestTransactionsWithSavepoints()
+ {
+ return $this->nestTransactionsWithSavepoints;
+ }
+
+ /**
+ * Returns the savepoint name to use for nested transactions.
+ *
+ * @return string
+ */
+ protected function _getNestedTransactionSavePointName()
+ {
+ return 'DOCTRINE_' . $this->transactionNestingLevel;
+ }
+
+ /**
+ * @return bool
+ *
+ * @throws Exception
+ */
+ public function beginTransaction()
+ {
+ $connection = $this->getWrappedConnection();
+
+ ++$this->transactionNestingLevel;
+
+ $logger = $this->_config->getSQLLogger();
+
+ if ($this->transactionNestingLevel === 1) {
+ if ($logger !== null) {
+ $logger->startQuery('"START TRANSACTION"');
+ }
+
+ $connection->beginTransaction();
+
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+ } elseif ($this->nestTransactionsWithSavepoints) {
+ if ($logger !== null) {
+ $logger->startQuery('"SAVEPOINT"');
+ }
+
+ $this->createSavepoint($this->_getNestedTransactionSavePointName());
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+ } else {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5383',
+ <<<'DEPRECATION'
+ Nesting transactions without enabling savepoints is deprecated.
+ Call %s::setNestTransactionsWithSavepoints(true) to enable savepoints.
+ DEPRECATION,
+ self::class,
+ );
+ }
+
+ $eventManager = $this->getEventManager();
+
+ if ($eventManager->hasListeners(Events::onTransactionBegin)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/5784',
+ 'Subscribing to %s events is deprecated.',
+ Events::onTransactionBegin,
+ );
+
+ $eventManager->dispatchEvent(Events::onTransactionBegin, new TransactionBeginEventArgs($this));
+ }
+
+ return true;
+ }
+
+ /**
+ * @return bool
+ *
+ * @throws Exception
+ */
+ public function commit()
+ {
+ if ($this->transactionNestingLevel === 0) {
+ throw ConnectionException::noActiveTransaction();
+ }
+
+ if ($this->isRollbackOnly) {
+ throw ConnectionException::commitFailedRollbackOnly();
+ }
+
+ $result = true;
+
+ $connection = $this->getWrappedConnection();
+
+ if ($this->transactionNestingLevel === 1) {
+ $result = $this->doCommit($connection);
+ } elseif ($this->nestTransactionsWithSavepoints) {
+ $this->releaseSavepoint($this->_getNestedTransactionSavePointName());
+ }
+
+ --$this->transactionNestingLevel;
+
+ $eventManager = $this->getEventManager();
+
+ if ($eventManager->hasListeners(Events::onTransactionCommit)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/5784',
+ 'Subscribing to %s events is deprecated.',
+ Events::onTransactionCommit,
+ );
+
+ $eventManager->dispatchEvent(Events::onTransactionCommit, new TransactionCommitEventArgs($this));
+ }
+
+ if ($this->autoCommit !== false || $this->transactionNestingLevel !== 0) {
+ return $result;
+ }
+
+ $this->beginTransaction();
+
+ return $result;
+ }
+
+ /**
+ * @return bool
+ *
+ * @throws DriverException
+ */
+ private function doCommit(DriverConnection $connection)
+ {
+ $logger = $this->_config->getSQLLogger();
+
+ if ($logger !== null) {
+ $logger->startQuery('"COMMIT"');
+ }
+
+ $result = $connection->commit();
+
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+
+ return $result;
+ }
+
+ /**
+ * Commits all current nesting transactions.
+ *
+ * @throws Exception
+ */
+ private function commitAll(): void
+ {
+ while ($this->transactionNestingLevel !== 0) {
+ if ($this->autoCommit === false && $this->transactionNestingLevel === 1) {
+ // When in no auto-commit mode, the last nesting commit immediately starts a new transaction.
+ // Therefore we need to do the final commit here and then leave to avoid an infinite loop.
+ $this->commit();
+
+ return;
+ }
+
+ $this->commit();
+ }
+ }
+
+ /**
+ * Cancels any database changes done during the current transaction.
+ *
+ * @return bool
+ *
+ * @throws Exception
+ */
+ public function rollBack()
+ {
+ if ($this->transactionNestingLevel === 0) {
+ throw ConnectionException::noActiveTransaction();
+ }
+
+ $connection = $this->getWrappedConnection();
+
+ $logger = $this->_config->getSQLLogger();
+
+ if ($this->transactionNestingLevel === 1) {
+ if ($logger !== null) {
+ $logger->startQuery('"ROLLBACK"');
+ }
+
+ $this->transactionNestingLevel = 0;
+ $connection->rollBack();
+ $this->isRollbackOnly = false;
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+
+ if ($this->autoCommit === false) {
+ $this->beginTransaction();
+ }
+ } elseif ($this->nestTransactionsWithSavepoints) {
+ if ($logger !== null) {
+ $logger->startQuery('"ROLLBACK TO SAVEPOINT"');
+ }
+
+ $this->rollbackSavepoint($this->_getNestedTransactionSavePointName());
+ --$this->transactionNestingLevel;
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+ } else {
+ $this->isRollbackOnly = true;
+ --$this->transactionNestingLevel;
+ }
+
+ $eventManager = $this->getEventManager();
+
+ if ($eventManager->hasListeners(Events::onTransactionRollBack)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/5784',
+ 'Subscribing to %s events is deprecated.',
+ Events::onTransactionRollBack,
+ );
+
+ $eventManager->dispatchEvent(Events::onTransactionRollBack, new TransactionRollBackEventArgs($this));
+ }
+
+ return true;
+ }
+
+ /**
+ * Creates a new savepoint.
+ *
+ * @param string $savepoint The name of the savepoint to create.
+ *
+ * @return void
+ *
+ * @throws Exception
+ */
+ public function createSavepoint($savepoint)
+ {
+ $platform = $this->getDatabasePlatform();
+
+ if (! $platform->supportsSavepoints()) {
+ throw ConnectionException::savepointsNotSupported();
+ }
+
+ $this->executeStatement($platform->createSavePoint($savepoint));
+ }
+
+ /**
+ * Releases the given savepoint.
+ *
+ * @param string $savepoint The name of the savepoint to release.
+ *
+ * @return void
+ *
+ * @throws Exception
+ */
+ public function releaseSavepoint($savepoint)
+ {
+ $logger = $this->_config->getSQLLogger();
+
+ $platform = $this->getDatabasePlatform();
+
+ if (! $platform->supportsSavepoints()) {
+ throw ConnectionException::savepointsNotSupported();
+ }
+
+ if (! $platform->supportsReleaseSavepoints()) {
+ if ($logger !== null) {
+ $logger->stopQuery();
+ }
+
+ return;
+ }
+
+ if ($logger !== null) {
+ $logger->startQuery('"RELEASE SAVEPOINT"');
+ }
+
+ $this->executeStatement($platform->releaseSavePoint($savepoint));
+
+ if ($logger === null) {
+ return;
+ }
+
+ $logger->stopQuery();
+ }
+
+ /**
+ * Rolls back to the given savepoint.
+ *
+ * @param string $savepoint The name of the savepoint to rollback to.
+ *
+ * @return void
+ *
+ * @throws Exception
+ */
+ public function rollbackSavepoint($savepoint)
+ {
+ $platform = $this->getDatabasePlatform();
+
+ if (! $platform->supportsSavepoints()) {
+ throw ConnectionException::savepointsNotSupported();
+ }
+
+ $this->executeStatement($platform->rollbackSavePoint($savepoint));
+ }
+
+ /**
+ * Gets the wrapped driver connection.
+ *
+ * @deprecated Use {@link getNativeConnection()} to access the native connection.
+ *
+ * @return DriverConnection
+ *
+ * @throws Exception
+ */
+ public function getWrappedConnection()
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4966',
+ 'Connection::getWrappedConnection() is deprecated.'
+ . ' Use Connection::getNativeConnection() to access the native connection.',
+ );
+
+ $this->connect();
+
+ return $this->_conn;
+ }
+
+ /** @return resource|object */
+ public function getNativeConnection()
+ {
+ $this->connect();
+
+ if (! method_exists($this->_conn, 'getNativeConnection')) {
+ throw new LogicException(sprintf(
+ 'The driver connection %s does not support accessing the native connection.',
+ get_class($this->_conn),
+ ));
+ }
+
+ return $this->_conn->getNativeConnection();
+ }
+
+ /**
+ * Creates a SchemaManager that can be used to inspect or change the
+ * database schema through the connection.
+ *
+ * @throws Exception
+ */
+ public function createSchemaManager(): AbstractSchemaManager
+ {
+ return $this->schemaManagerFactory->createSchemaManager($this);
+ }
+
+ /**
+ * Gets the SchemaManager that can be used to inspect or change the
+ * database schema through the connection.
+ *
+ * @deprecated Use {@see createSchemaManager()} instead.
+ *
+ * @return AbstractSchemaManager
+ *
+ * @throws Exception
+ */
+ public function getSchemaManager()
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4515',
+ 'Connection::getSchemaManager() is deprecated, use Connection::createSchemaManager() instead.',
+ );
+
+ return $this->_schemaManager ??= $this->createSchemaManager();
+ }
+
+ /**
+ * Marks the current transaction so that the only possible
+ * outcome for the transaction to be rolled back.
+ *
+ * @return void
+ *
+ * @throws ConnectionException If no transaction is active.
+ */
+ public function setRollbackOnly()
+ {
+ if ($this->transactionNestingLevel === 0) {
+ throw ConnectionException::noActiveTransaction();
+ }
+
+ $this->isRollbackOnly = true;
+ }
+
+ /**
+ * Checks whether the current transaction is marked for rollback only.
+ *
+ * @return bool
+ *
+ * @throws ConnectionException If no transaction is active.
+ */
+ public function isRollbackOnly()
+ {
+ if ($this->transactionNestingLevel === 0) {
+ throw ConnectionException::noActiveTransaction();
+ }
+
+ return $this->isRollbackOnly;
+ }
+
+ /**
+ * Converts a given value to its database representation according to the conversion
+ * rules of a specific DBAL mapping type.
+ *
+ * @param mixed $value The value to convert.
+ * @param string $type The name of the DBAL mapping type.
+ *
+ * @return mixed The converted value.
+ *
+ * @throws Exception
+ */
+ public function convertToDatabaseValue($value, $type)
+ {
+ return Type::getType($type)->convertToDatabaseValue($value, $this->getDatabasePlatform());
+ }
+
+ /**
+ * Converts a given value to its PHP representation according to the conversion
+ * rules of a specific DBAL mapping type.
+ *
+ * @param mixed $value The value to convert.
+ * @param string $type The name of the DBAL mapping type.
+ *
+ * @return mixed The converted type.
+ *
+ * @throws Exception
+ */
+ public function convertToPHPValue($value, $type)
+ {
+ return Type::getType($type)->convertToPHPValue($value, $this->getDatabasePlatform());
+ }
+
+ /**
+ * Binds a set of parameters, some or all of which are typed with a PDO binding type
+ * or DBAL mapping type, to a given statement.
+ *
+ * @param DriverStatement $stmt Prepared statement
+ * @param list|array $params Statement parameters
+ * @param array|array $types Parameter types
+ *
+ * @throws Exception
+ */
+ private function bindParameters(DriverStatement $stmt, array $params, array $types): void
+ {
+ // Check whether parameters are positional or named. Mixing is not allowed.
+ if (is_int(key($params))) {
+ $bindIndex = 1;
+
+ foreach ($params as $key => $value) {
+ if (isset($types[$key])) {
+ $type = $types[$key];
+ [$value, $bindingType] = $this->getBindingInfo($value, $type);
+ } else {
+ if (array_key_exists($key, $types)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5550',
+ 'Using NULL as prepared statement parameter type is deprecated.'
+ . 'Omit or use ParameterType::STRING instead',
+ );
+ }
+
+ $bindingType = ParameterType::STRING;
+ }
+
+ $stmt->bindValue($bindIndex, $value, $bindingType);
+
+ ++$bindIndex;
+ }
+ } else {
+ // Named parameters
+ foreach ($params as $name => $value) {
+ if (isset($types[$name])) {
+ $type = $types[$name];
+ [$value, $bindingType] = $this->getBindingInfo($value, $type);
+ } else {
+ if (array_key_exists($name, $types)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5550',
+ 'Using NULL as prepared statement parameter type is deprecated.'
+ . 'Omit or use ParameterType::STRING instead',
+ );
+ }
+
+ $bindingType = ParameterType::STRING;
+ }
+
+ $stmt->bindValue($name, $value, $bindingType);
+ }
+ }
+ }
+
+ /**
+ * Gets the binding type of a given type.
+ *
+ * @param mixed $value The value to bind.
+ * @param int|string|Type|null $type The type to bind (PDO or DBAL).
+ *
+ * @return array{mixed, int} [0] => the (escaped) value, [1] => the binding type.
+ *
+ * @throws Exception
+ */
+ private function getBindingInfo($value, $type): array
+ {
+ if (is_string($type)) {
+ $type = Type::getType($type);
+ }
+
+ if ($type instanceof Type) {
+ $value = $type->convertToDatabaseValue($value, $this->getDatabasePlatform());
+ $bindingType = $type->getBindingType();
+ } else {
+ $bindingType = $type ?? ParameterType::STRING;
+ }
+
+ return [$value, $bindingType];
+ }
+
+ /**
+ * Creates a new instance of a SQL query builder.
+ *
+ * @return QueryBuilder
+ */
+ public function createQueryBuilder()
+ {
+ return new Query\QueryBuilder($this);
+ }
+
+ /**
+ * @internal
+ *
+ * @param list|array $params
+ * @param array|array $types
+ */
+ final public function convertExceptionDuringQuery(
+ Driver\Exception $e,
+ string $sql,
+ array $params = [],
+ array $types = []
+ ): DriverException {
+ return $this->handleDriverException($e, new Query($sql, $params, $types));
+ }
+
+ /** @internal */
+ final public function convertException(Driver\Exception $e): DriverException
+ {
+ return $this->handleDriverException($e, null);
+ }
+
+ /**
+ * @param array|array $params
+ * @param array|array $types
+ *
+ * @return array{string, list, array}
+ */
+ private function expandArrayParameters(string $sql, array $params, array $types): array
+ {
+ $this->parser ??= $this->getDatabasePlatform()->createSQLParser();
+ $visitor = new ExpandArrayParameters($params, $types);
+
+ $this->parser->parse($sql, $visitor);
+
+ return [
+ $visitor->getSQL(),
+ $visitor->getParameters(),
+ $visitor->getTypes(),
+ ];
+ }
+
+ /**
+ * @param array|array $params
+ * @param array|array $types
+ */
+ private function needsArrayParameterConversion(array $params, array $types): bool
+ {
+ if (is_string(key($params))) {
+ return true;
+ }
+
+ foreach ($types as $type) {
+ if (
+ $type === ArrayParameterType::INTEGER
+ || $type === ArrayParameterType::STRING
+ || $type === ArrayParameterType::ASCII
+ || $type === ArrayParameterType::BINARY
+ ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private function handleDriverException(
+ Driver\Exception $driverException,
+ ?Query $query
+ ): DriverException {
+ $this->exceptionConverter ??= $this->_driver->getExceptionConverter();
+ $exception = $this->exceptionConverter->convert($driverException, $query);
+
+ if ($exception instanceof ConnectionLost) {
+ $this->close();
+ }
+
+ return $exception;
+ }
+
+ /**
+ * BC layer for a wide-spread use-case of old DBAL APIs
+ *
+ * @deprecated Use {@see executeStatement()} instead
+ *
+ * @param array $params The query parameters
+ * @param array $types The parameter types
+ */
+ public function executeUpdate(string $sql, array $params = [], array $types = []): int
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4163',
+ '%s is deprecated, please use executeStatement() instead.',
+ __METHOD__,
+ );
+
+ return $this->executeStatement($sql, $params, $types);
+ }
+
+ /**
+ * BC layer for a wide-spread use-case of old DBAL APIs
+ *
+ * @deprecated Use {@see executeQuery()} instead
+ */
+ public function query(string $sql): Result
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4163',
+ '%s is deprecated, please use executeQuery() instead.',
+ __METHOD__,
+ );
+
+ return $this->executeQuery($sql);
+ }
+
+ /**
+ * BC layer for a wide-spread use-case of old DBAL APIs
+ *
+ * @deprecated please use {@see executeStatement()} instead
+ */
+ public function exec(string $sql): int
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/4163',
+ '%s is deprecated, please use executeStatement() instead.',
+ __METHOD__,
+ );
+
+ return $this->executeStatement($sql);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/ConnectionException.php b/vendor/doctrine/dbal/src/ConnectionException.php
new file mode 100644
index 0000000..f1e1898
--- /dev/null
+++ b/vendor/doctrine/dbal/src/ConnectionException.php
@@ -0,0 +1,31 @@
+executeQuery("DELETE FROM table");
+ *
+ * Be aware that Connection#executeQuery is a method specifically for READ
+ * operations only.
+ *
+ * Use Connection#executeStatement for any SQL statement that changes/updates
+ * state in the database (UPDATE, INSERT, DELETE or DDL statements).
+ *
+ * This connection is limited to replica operations using the
+ * Connection#executeQuery operation only, because it wouldn't be compatible
+ * with the ORM or SchemaManager code otherwise. Both use all the other
+ * operations in a context where writes could happen to a replica, which makes
+ * this restricted approach necessary.
+ *
+ * You can manually connect to the primary at any time by calling:
+ *
+ * $conn->ensureConnectedToPrimary();
+ *
+ * Instantiation through the DriverManager looks like:
+ *
+ * @psalm-import-type Params from DriverManager
+ * @example
+ *
+ * $conn = DriverManager::getConnection(array(
+ * 'wrapperClass' => 'Doctrine\DBAL\Connections\PrimaryReadReplicaConnection',
+ * 'driver' => 'pdo_mysql',
+ * 'primary' => array('user' => '', 'password' => '', 'host' => '', 'dbname' => ''),
+ * 'replica' => array(
+ * array('user' => 'replica1', 'password' => '', 'host' => '', 'dbname' => ''),
+ * array('user' => 'replica2', 'password' => '', 'host' => '', 'dbname' => ''),
+ * )
+ * ));
+ *
+ * You can also pass 'driverOptions' and any other documented option to each of this drivers
+ * to pass additional information.
+ */
+class PrimaryReadReplicaConnection extends Connection
+{
+ /**
+ * Primary and Replica connection (one of the randomly picked replicas).
+ *
+ * @var DriverConnection[]|null[]
+ */
+ protected $connections = ['primary' => null, 'replica' => null];
+
+ /**
+ * You can keep the replica connection and then switch back to it
+ * during the request if you know what you are doing.
+ *
+ * @var bool
+ */
+ protected $keepReplica = false;
+
+ /**
+ * Creates Primary Replica Connection.
+ *
+ * @internal The connection can be only instantiated by the driver manager.
+ *
+ * @param array $params
+ * @psalm-param Params $params
+ *
+ * @throws Exception
+ * @throws InvalidArgumentException
+ */
+ public function __construct(
+ array $params,
+ Driver $driver,
+ ?Configuration $config = null,
+ ?EventManager $eventManager = null
+ ) {
+ if (! isset($params['replica'], $params['primary'])) {
+ throw new InvalidArgumentException('primary or replica configuration missing');
+ }
+
+ if (count($params['replica']) === 0) {
+ throw new InvalidArgumentException('You have to configure at least one replica.');
+ }
+
+ if (isset($params['driver'])) {
+ $params['primary']['driver'] = $params['driver'];
+
+ foreach ($params['replica'] as $replicaKey => $replica) {
+ $params['replica'][$replicaKey]['driver'] = $params['driver'];
+ }
+ }
+
+ $this->keepReplica = (bool) ($params['keepReplica'] ?? false);
+
+ parent::__construct($params, $driver, $config, $eventManager);
+ }
+
+ /**
+ * Checks if the connection is currently towards the primary or not.
+ */
+ public function isConnectedToPrimary(): bool
+ {
+ return $this->_conn !== null && $this->_conn === $this->connections['primary'];
+ }
+
+ /**
+ * @param string|null $connectionName
+ *
+ * @return bool
+ */
+ public function connect($connectionName = null)
+ {
+ if ($connectionName !== null) {
+ throw new InvalidArgumentException(
+ 'Passing a connection name as first argument is not supported anymore.'
+ . ' Use ensureConnectedToPrimary()/ensureConnectedToReplica() instead.',
+ );
+ }
+
+ return $this->performConnect();
+ }
+
+ protected function performConnect(?string $connectionName = null): bool
+ {
+ $requestedConnectionChange = ($connectionName !== null);
+ $connectionName = $connectionName ?? 'replica';
+
+ if ($connectionName !== 'replica' && $connectionName !== 'primary') {
+ throw new InvalidArgumentException('Invalid option to connect(), only primary or replica allowed.');
+ }
+
+ // If we have a connection open, and this is not an explicit connection
+ // change request, then abort right here, because we are already done.
+ // This prevents writes to the replica in case of "keepReplica" option enabled.
+ if ($this->_conn !== null && ! $requestedConnectionChange) {
+ return false;
+ }
+
+ $forcePrimaryAsReplica = false;
+
+ if ($this->getTransactionNestingLevel() > 0) {
+ $connectionName = 'primary';
+ $forcePrimaryAsReplica = true;
+ }
+
+ if (isset($this->connections[$connectionName])) {
+ $this->_conn = $this->connections[$connectionName];
+
+ if ($forcePrimaryAsReplica && ! $this->keepReplica) {
+ $this->connections['replica'] = $this->_conn;
+ }
+
+ return false;
+ }
+
+ if ($connectionName === 'primary') {
+ $this->connections['primary'] = $this->_conn = $this->connectTo($connectionName);
+
+ // Set replica connection to primary to avoid invalid reads
+ if (! $this->keepReplica) {
+ $this->connections['replica'] = $this->connections['primary'];
+ }
+ } else {
+ $this->connections['replica'] = $this->_conn = $this->connectTo($connectionName);
+ }
+
+ if ($this->_eventManager->hasListeners(Events::postConnect)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/5784',
+ 'Subscribing to %s events is deprecated. Implement a middleware instead.',
+ Events::postConnect,
+ );
+
+ $eventArgs = new ConnectionEventArgs($this);
+ $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);
+ }
+
+ return true;
+ }
+
+ /**
+ * Connects to the primary node of the database cluster.
+ *
+ * All following statements after this will be executed against the primary node.
+ */
+ public function ensureConnectedToPrimary(): bool
+ {
+ return $this->performConnect('primary');
+ }
+
+ /**
+ * Connects to a replica node of the database cluster.
+ *
+ * All following statements after this will be executed against the replica node,
+ * unless the keepReplica option is set to false and a primary connection
+ * was already opened.
+ */
+ public function ensureConnectedToReplica(): bool
+ {
+ return $this->performConnect('replica');
+ }
+
+ /**
+ * Connects to a specific connection.
+ *
+ * @param string $connectionName
+ *
+ * @return DriverConnection
+ *
+ * @throws Exception
+ */
+ protected function connectTo($connectionName)
+ {
+ $params = $this->getParams();
+
+ $connectionParams = $this->chooseConnectionConfiguration($connectionName, $params);
+
+ try {
+ return $this->_driver->connect($connectionParams);
+ } catch (DriverException $e) {
+ throw $this->convertException($e);
+ }
+ }
+
+ /**
+ * @param string $connectionName
+ * @param mixed[] $params
+ *
+ * @return mixed
+ */
+ protected function chooseConnectionConfiguration(
+ $connectionName,
+ #[SensitiveParameter]
+ $params
+ ) {
+ if ($connectionName === 'primary') {
+ return $params['primary'];
+ }
+
+ $config = $params['replica'][array_rand($params['replica'])];
+
+ if (! isset($config['charset']) && isset($params['primary']['charset'])) {
+ $config['charset'] = $params['primary']['charset'];
+ }
+
+ return $config;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function executeStatement($sql, array $params = [], array $types = [])
+ {
+ $this->ensureConnectedToPrimary();
+
+ return parent::executeStatement($sql, $params, $types);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function beginTransaction()
+ {
+ $this->ensureConnectedToPrimary();
+
+ return parent::beginTransaction();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function commit()
+ {
+ $this->ensureConnectedToPrimary();
+
+ return parent::commit();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function rollBack()
+ {
+ $this->ensureConnectedToPrimary();
+
+ return parent::rollBack();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function close()
+ {
+ unset($this->connections['primary'], $this->connections['replica']);
+
+ parent::close();
+
+ $this->_conn = null;
+ $this->connections = ['primary' => null, 'replica' => null];
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function createSavepoint($savepoint)
+ {
+ $this->ensureConnectedToPrimary();
+
+ parent::createSavepoint($savepoint);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function releaseSavepoint($savepoint)
+ {
+ $this->ensureConnectedToPrimary();
+
+ parent::releaseSavepoint($savepoint);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function rollbackSavepoint($savepoint)
+ {
+ $this->ensureConnectedToPrimary();
+
+ parent::rollbackSavepoint($savepoint);
+ }
+
+ public function prepare(string $sql): Statement
+ {
+ $this->ensureConnectedToPrimary();
+
+ return parent::prepare($sql);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver.php b/vendor/doctrine/dbal/src/Driver.php
new file mode 100644
index 0000000..46e422b
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver.php
@@ -0,0 +1,57 @@
+ $params All connection parameters.
+ * @psalm-param Params $params All connection parameters.
+ *
+ * @return DriverConnection The database connection.
+ *
+ * @throws Exception
+ */
+ public function connect(
+ #[SensitiveParameter]
+ array $params
+ );
+
+ /**
+ * Gets the DatabasePlatform instance that provides all the metadata about
+ * the platform this driver connects to.
+ *
+ * @return AbstractPlatform The database platform.
+ */
+ public function getDatabasePlatform();
+
+ /**
+ * Gets the SchemaManager that can be used to inspect and change the underlying
+ * database schema of the platform this driver connects to.
+ *
+ * @deprecated Use {@link AbstractPlatform::createSchemaManager()} instead.
+ *
+ * @return AbstractSchemaManager
+ */
+ public function getSchemaManager(Connection $conn, AbstractPlatform $platform);
+
+ /**
+ * Gets the ExceptionConverter that can be used to convert driver-level exceptions into DBAL exceptions.
+ */
+ public function getExceptionConverter(): ExceptionConverter;
+}
diff --git a/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php
new file mode 100644
index 0000000..a7bf271
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php
@@ -0,0 +1,25 @@
+getCode()) {
+ case -104:
+ return new SyntaxErrorException($exception, $query);
+
+ case -203:
+ return new NonUniqueFieldNameException($exception, $query);
+
+ case -204:
+ return new TableNotFoundException($exception, $query);
+
+ case -206:
+ return new InvalidFieldNameException($exception, $query);
+
+ case -407:
+ return new NotNullConstraintViolationException($exception, $query);
+
+ case -530:
+ case -531:
+ case -532:
+ case -20356:
+ return new ForeignKeyConstraintViolationException($exception, $query);
+
+ case -601:
+ return new TableExistsException($exception, $query);
+
+ case -803:
+ return new UniqueConstraintViolationException($exception, $query);
+
+ case -1336:
+ case -30082:
+ return new ConnectionException($exception, $query);
+ }
+
+ return new DriverException($exception, $query);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php
new file mode 100644
index 0000000..87d50af
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php
@@ -0,0 +1,119 @@
+getCode()) {
+ case 1008:
+ return new DatabaseDoesNotExist($exception, $query);
+
+ case 1213:
+ return new DeadlockException($exception, $query);
+
+ case 1205:
+ return new LockWaitTimeoutException($exception, $query);
+
+ case 1050:
+ return new TableExistsException($exception, $query);
+
+ case 1051:
+ case 1146:
+ return new TableNotFoundException($exception, $query);
+
+ case 1216:
+ case 1217:
+ case 1451:
+ case 1452:
+ case 1701:
+ return new ForeignKeyConstraintViolationException($exception, $query);
+
+ case 1062:
+ case 1557:
+ case 1569:
+ case 1586:
+ return new UniqueConstraintViolationException($exception, $query);
+
+ case 1054:
+ case 1166:
+ case 1611:
+ return new InvalidFieldNameException($exception, $query);
+
+ case 1052:
+ case 1060:
+ case 1110:
+ return new NonUniqueFieldNameException($exception, $query);
+
+ case 1064:
+ case 1149:
+ case 1287:
+ case 1341:
+ case 1342:
+ case 1343:
+ case 1344:
+ case 1382:
+ case 1479:
+ case 1541:
+ case 1554:
+ case 1626:
+ return new SyntaxErrorException($exception, $query);
+
+ case 1044:
+ case 1045:
+ case 1046:
+ case 1049:
+ case 1095:
+ case 1142:
+ case 1143:
+ case 1227:
+ case 1370:
+ case 1429:
+ case 2002:
+ case 2005:
+ case 2054:
+ return new ConnectionException($exception, $query);
+
+ case 2006:
+ return new ConnectionLost($exception, $query);
+
+ case 1048:
+ case 1121:
+ case 1138:
+ case 1171:
+ case 1252:
+ case 1263:
+ case 1364:
+ case 1566:
+ return new NotNullConstraintViolationException($exception, $query);
+ }
+
+ return new DriverException($exception, $query);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php
new file mode 100644
index 0000000..4703a57
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php
@@ -0,0 +1,74 @@
+getCode()) {
+ case 1:
+ case 2299:
+ case 38911:
+ return new UniqueConstraintViolationException($exception, $query);
+
+ case 904:
+ return new InvalidFieldNameException($exception, $query);
+
+ case 918:
+ case 960:
+ return new NonUniqueFieldNameException($exception, $query);
+
+ case 923:
+ return new SyntaxErrorException($exception, $query);
+
+ case 942:
+ return new TableNotFoundException($exception, $query);
+
+ case 955:
+ return new TableExistsException($exception, $query);
+
+ case 1017:
+ case 12545:
+ return new ConnectionException($exception, $query);
+
+ case 1400:
+ return new NotNullConstraintViolationException($exception, $query);
+
+ case 1918:
+ return new DatabaseDoesNotExist($exception, $query);
+
+ case 2289:
+ case 2443:
+ case 4080:
+ return new DatabaseObjectNotFoundException($exception, $query);
+
+ case 2266:
+ case 2291:
+ case 2292:
+ return new ForeignKeyConstraintViolationException($exception, $query);
+ }
+
+ return new DriverException($exception, $query);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php
new file mode 100644
index 0000000..2baca1e
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php
@@ -0,0 +1,89 @@
+getSQLState()) {
+ case '40001':
+ case '40P01':
+ return new DeadlockException($exception, $query);
+
+ case '0A000':
+ // Foreign key constraint violations during a TRUNCATE operation
+ // are considered "feature not supported" in PostgreSQL.
+ if (strpos($exception->getMessage(), 'truncate') !== false) {
+ return new ForeignKeyConstraintViolationException($exception, $query);
+ }
+
+ break;
+
+ case '23502':
+ return new NotNullConstraintViolationException($exception, $query);
+
+ case '23503':
+ return new ForeignKeyConstraintViolationException($exception, $query);
+
+ case '23505':
+ return new UniqueConstraintViolationException($exception, $query);
+
+ case '3D000':
+ return new DatabaseDoesNotExist($exception, $query);
+
+ case '3F000':
+ return new SchemaDoesNotExist($exception, $query);
+
+ case '42601':
+ return new SyntaxErrorException($exception, $query);
+
+ case '42702':
+ return new NonUniqueFieldNameException($exception, $query);
+
+ case '42703':
+ return new InvalidFieldNameException($exception, $query);
+
+ case '42P01':
+ return new TableNotFoundException($exception, $query);
+
+ case '42P07':
+ return new TableExistsException($exception, $query);
+
+ case '08006':
+ return new ConnectionException($exception, $query);
+ }
+
+ // Prior to fixing https://bugs.php.net/bug.php?id=64705 (PHP 7.4.10),
+ // in some cases (mainly connection errors) the PDO exception wouldn't provide a SQLSTATE via its code.
+ // We have to match against the SQLSTATE in the error message in these cases.
+ if ($exception->getCode() === 7 && strpos($exception->getMessage(), 'SQLSTATE[08006]') !== false) {
+ return new ConnectionException($exception, $query);
+ }
+
+ return new DriverException($exception, $query);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php
new file mode 100644
index 0000000..d0e8e9f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php
@@ -0,0 +1,69 @@
+getCode()) {
+ case 102:
+ return new SyntaxErrorException($exception, $query);
+
+ case 207:
+ return new InvalidFieldNameException($exception, $query);
+
+ case 208:
+ return new TableNotFoundException($exception, $query);
+
+ case 209:
+ return new NonUniqueFieldNameException($exception, $query);
+
+ case 515:
+ return new NotNullConstraintViolationException($exception, $query);
+
+ case 547:
+ case 4712:
+ return new ForeignKeyConstraintViolationException($exception, $query);
+
+ case 2601:
+ case 2627:
+ return new UniqueConstraintViolationException($exception, $query);
+
+ case 2714:
+ return new TableExistsException($exception, $query);
+
+ case 3701:
+ case 15151:
+ return new DatabaseObjectNotFoundException($exception, $query);
+
+ case 11001:
+ case 18456:
+ return new ConnectionException($exception, $query);
+ }
+
+ return new DriverException($exception, $query);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php
new file mode 100644
index 0000000..9e67155
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php
@@ -0,0 +1,85 @@
+getMessage(), 'database is locked') !== false) {
+ return new LockWaitTimeoutException($exception, $query);
+ }
+
+ if (
+ strpos($exception->getMessage(), 'must be unique') !== false ||
+ strpos($exception->getMessage(), 'is not unique') !== false ||
+ strpos($exception->getMessage(), 'are not unique') !== false ||
+ strpos($exception->getMessage(), 'UNIQUE constraint failed') !== false
+ ) {
+ return new UniqueConstraintViolationException($exception, $query);
+ }
+
+ if (
+ strpos($exception->getMessage(), 'may not be NULL') !== false ||
+ strpos($exception->getMessage(), 'NOT NULL constraint failed') !== false
+ ) {
+ return new NotNullConstraintViolationException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'no such table:') !== false) {
+ return new TableNotFoundException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'already exists') !== false) {
+ return new TableExistsException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'has no column named') !== false) {
+ return new InvalidFieldNameException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'ambiguous column name') !== false) {
+ return new NonUniqueFieldNameException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'syntax error') !== false) {
+ return new SyntaxErrorException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'attempt to write a readonly database') !== false) {
+ return new ReadOnlyException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'unable to open database file') !== false) {
+ return new ConnectionException($exception, $query);
+ }
+
+ if (strpos($exception->getMessage(), 'FOREIGN KEY constraint failed') !== false) {
+ return new ForeignKeyConstraintViolationException($exception, $query);
+ }
+
+ return new DriverException($exception, $query);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php b/vendor/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php
new file mode 100644
index 0000000..3779c8b
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php
@@ -0,0 +1,80 @@
+ ['callback' => [SqlitePlatform::class, 'udfSqrt'], 'numArgs' => 1],
+ 'mod' => ['callback' => [SqlitePlatform::class, 'udfMod'], 'numArgs' => 2],
+ 'locate' => ['callback' => [SqlitePlatform::class, 'udfLocate'], 'numArgs' => -1],
+ ];
+
+ /**
+ * @param callable(string, callable, int): bool $callback
+ * @param array $additionalFunctions
+ */
+ public static function register(callable $callback, array $additionalFunctions = []): void
+ {
+ $userDefinedFunctions = array_merge(self::DEFAULT_FUNCTIONS, $additionalFunctions);
+
+ foreach ($userDefinedFunctions as $function => $data) {
+ $callback($function, $data['callback'], $data['numArgs']);
+ }
+ }
+
+ /**
+ * User-defined function that implements MOD().
+ *
+ * @param int $a
+ * @param int $b
+ */
+ public static function mod($a, $b): int
+ {
+ return $a % $b;
+ }
+
+ /**
+ * User-defined function that implements LOCATE().
+ *
+ * @param string $str
+ * @param string $substr
+ * @param int $offset
+ */
+ public static function locate($str, $substr, $offset = 0): int
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5749',
+ 'Relying on DBAL\'s emulated LOCATE() function is deprecated. '
+ . 'Use INSTR() or %s::getLocateExpression() instead.',
+ AbstractPlatform::class,
+ );
+
+ // SQL's LOCATE function works on 1-based positions, while PHP's strpos works on 0-based positions.
+ // So we have to make them compatible if an offset is given.
+ if ($offset > 0) {
+ $offset -= 1;
+ }
+
+ $pos = strpos($str, $substr, $offset);
+
+ if ($pos !== false) {
+ return $pos + 1;
+ }
+
+ return 0;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php b/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php
new file mode 100644
index 0000000..79efb86
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php
@@ -0,0 +1,100 @@
+getVersionNumber($version), '11.1', '>=')) {
+ return new DB2111Platform();
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5156',
+ 'IBM DB2 < 11.1 support is deprecated and will be removed in DBAL 4.'
+ . ' Consider upgrading to IBM DB2 11.1 or later.',
+ );
+
+ return $this->getDatabasePlatform();
+ }
+
+ /**
+ * Detects IBM DB2 server version
+ *
+ * @param string $versionString Version string as returned by IBM DB2 server, i.e. 'DB2/LINUXX8664 11.5.8.0'
+ *
+ * @throws DBALException
+ */
+ private function getVersionNumber(string $versionString): string
+ {
+ if (
+ preg_match(
+ '/^(?:[^\s]+\s)?(?P\d+)\.(?P\d+)\.(?P\d+)/i',
+ $versionString,
+ $versionParts,
+ ) === 0
+ ) {
+ throw DBALException::invalidPlatformVersionSpecified(
+ $versionString,
+ '^(?:[^\s]+\s)?..',
+ );
+ }
+
+ return $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch'];
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/AbstractException.php b/vendor/doctrine/dbal/src/Driver/AbstractException.php
new file mode 100644
index 0000000..389f82e
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/AbstractException.php
@@ -0,0 +1,44 @@
+sqlState = $sqlState;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getSQLState()
+ {
+ return $this->sqlState;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php
new file mode 100644
index 0000000..83159a5
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php
@@ -0,0 +1,209 @@
+getMariaDbMysqlVersionNumber($version);
+ if (version_compare($mariaDbVersion, '10.6.0', '>=')) {
+ return new MariaDb1060Platform();
+ }
+
+ if (version_compare($mariaDbVersion, '10.5.2', '>=')) {
+ return new MariaDb1052Platform();
+ }
+
+ if (version_compare($mariaDbVersion, '10.4.3', '>=')) {
+ return new MariaDb1043Platform();
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/6110',
+ 'Support for MariaDB < 10.4 is deprecated and will be removed in DBAL 4.'
+ . ' Consider upgrading to a more recent version of MariaDB.',
+ );
+
+ if (version_compare($mariaDbVersion, '10.2.7', '>=')) {
+ return new MariaDb1027Platform();
+ }
+ } else {
+ $oracleMysqlVersion = $this->getOracleMysqlVersionNumber($version);
+ if (version_compare($oracleMysqlVersion, '8', '>=')) {
+ if (! version_compare($version, '8.0.0', '>=')) {
+ Deprecation::trigger(
+ 'doctrine/orm',
+ 'https://github.com/doctrine/dbal/pull/5779',
+ 'Version detection logic for MySQL will change in DBAL 4. '
+ . 'Please specify the version as the server reports it, e.g. "8.0.31" instead of "8".',
+ );
+ }
+
+ return new MySQL80Platform();
+ }
+
+ if (version_compare($oracleMysqlVersion, '5.7.9', '>=')) {
+ if (! version_compare($version, '5.7.9', '>=')) {
+ Deprecation::trigger(
+ 'doctrine/orm',
+ 'https://github.com/doctrine/dbal/pull/5779',
+ 'Version detection logic for MySQL will change in DBAL 4. '
+ . 'Please specify the version as the server reports it, e.g. "5.7.40" instead of "5.7".',
+ );
+ }
+
+ return new MySQL57Platform();
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5072',
+ 'MySQL 5.6 support is deprecated and will be removed in DBAL 4.'
+ . ' Consider upgrading to MySQL 5.7 or later.',
+ );
+ }
+
+ return $this->getDatabasePlatform();
+ }
+
+ /**
+ * Get a normalized 'version number' from the server string
+ * returned by Oracle MySQL servers.
+ *
+ * @param string $versionString Version string returned by the driver, i.e. '5.7.10'
+ *
+ * @throws Exception
+ */
+ private function getOracleMysqlVersionNumber(string $versionString): string
+ {
+ if (
+ preg_match(
+ '/^(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/',
+ $versionString,
+ $versionParts,
+ ) === 0
+ ) {
+ throw Exception::invalidPlatformVersionSpecified(
+ $versionString,
+ '..',
+ );
+ }
+
+ $majorVersion = $versionParts['major'];
+ $minorVersion = $versionParts['minor'] ?? 0;
+ $patchVersion = $versionParts['patch'] ?? null;
+
+ if ($majorVersion === '5' && $minorVersion === '7') {
+ $patchVersion ??= '9';
+ }
+
+ return $majorVersion . '.' . $minorVersion . '.' . $patchVersion;
+ }
+
+ /**
+ * Detect MariaDB server version, including hack for some mariadb distributions
+ * that starts with the prefix '5.5.5-'
+ *
+ * @param string $versionString Version string as returned by mariadb server, i.e. '5.5.5-Mariadb-10.0.8-xenial'
+ *
+ * @throws Exception
+ */
+ private function getMariaDbMysqlVersionNumber(string $versionString): string
+ {
+ if (stripos($versionString, 'MariaDB') === 0) {
+ Deprecation::trigger(
+ 'doctrine/orm',
+ 'https://github.com/doctrine/dbal/pull/5779',
+ 'Version detection logic for MySQL will change in DBAL 4. '
+ . 'Please specify the version as the server reports it, '
+ . 'e.g. "10.9.3-MariaDB" instead of "mariadb-10.9".',
+ );
+ }
+
+ if (
+ preg_match(
+ '/^(?:5\.5\.5-)?(mariadb-)?(?P\d+)\.(?P\d+)\.(?P\d+)/i',
+ $versionString,
+ $versionParts,
+ ) === 0
+ ) {
+ throw Exception::invalidPlatformVersionSpecified(
+ $versionString,
+ '^(?:5\.5\.5-)?(mariadb-)?..',
+ );
+ }
+
+ return $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch'];
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @return AbstractMySQLPlatform
+ */
+ public function getDatabasePlatform()
+ {
+ return new MySQLPlatform();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@link AbstractMySQLPlatform::createSchemaManager()} instead.
+ *
+ * @return MySQLSchemaManager
+ */
+ public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5458',
+ 'AbstractMySQLDriver::getSchemaManager() is deprecated.'
+ . ' Use MySQLPlatform::createSchemaManager() instead.',
+ );
+
+ assert($platform instanceof AbstractMySQLPlatform);
+
+ return new MySQLSchemaManager($conn, $platform);
+ }
+
+ public function getExceptionConverter(): ExceptionConverter
+ {
+ return new MySQL\ExceptionConverter();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver.php
new file mode 100644
index 0000000..b0f9245
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver.php
@@ -0,0 +1,65 @@
+ $params The connection parameters to return the Easy Connect String for.
+ *
+ * @return string
+ */
+ protected function getEasyConnectString(array $params)
+ {
+ return (string) EasyConnectString::fromConnectionParameters($params);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php b/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php
new file mode 100644
index 0000000..91bc6a7
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php
@@ -0,0 +1,116 @@
+string = $string;
+ }
+
+ public function __toString(): string
+ {
+ return $this->string;
+ }
+
+ /**
+ * Creates the object from an array representation
+ *
+ * @param mixed[] $params
+ */
+ public static function fromArray(array $params): self
+ {
+ return new self(self::renderParams($params));
+ }
+
+ /**
+ * Creates the object from the given DBAL connection parameters.
+ *
+ * @param mixed[] $params
+ */
+ public static function fromConnectionParameters(array $params): self
+ {
+ if (isset($params['connectstring'])) {
+ return new self($params['connectstring']);
+ }
+
+ if (! isset($params['host'])) {
+ return new self($params['dbname'] ?? '');
+ }
+
+ $connectData = [];
+
+ if (isset($params['servicename']) || isset($params['dbname'])) {
+ $serviceKey = 'SID';
+
+ if (isset($params['service'])) {
+ $serviceKey = 'SERVICE_NAME';
+ }
+
+ $serviceName = $params['servicename'] ?? $params['dbname'];
+
+ $connectData[$serviceKey] = $serviceName;
+ }
+
+ if (isset($params['instancename'])) {
+ $connectData['INSTANCE_NAME'] = $params['instancename'];
+ }
+
+ if (! empty($params['pooled'])) {
+ $connectData['SERVER'] = 'POOLED';
+ }
+
+ return self::fromArray([
+ 'DESCRIPTION' => [
+ 'ADDRESS' => [
+ 'PROTOCOL' => 'TCP',
+ 'HOST' => $params['host'],
+ 'PORT' => $params['port'] ?? 1521,
+ ],
+ 'CONNECT_DATA' => $connectData,
+ ],
+ ]);
+ }
+
+ /** @param mixed[] $params */
+ private static function renderParams(array $params): string
+ {
+ $chunks = [];
+
+ foreach ($params as $key => $value) {
+ $string = self::renderValue($value);
+
+ if ($string === '') {
+ continue;
+ }
+
+ $chunks[] = sprintf('(%s=%s)', $key, $string);
+ }
+
+ return implode('', $chunks);
+ }
+
+ /** @param mixed $value */
+ private static function renderValue($value): string
+ {
+ if (is_array($value)) {
+ return self::renderParams($value);
+ }
+
+ return (string) $value;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php
new file mode 100644
index 0000000..099630d
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php
@@ -0,0 +1,88 @@
+\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/', $version, $versionParts) === 0) {
+ throw Exception::invalidPlatformVersionSpecified(
+ $version,
+ '..',
+ );
+ }
+
+ $majorVersion = $versionParts['major'];
+ $minorVersion = $versionParts['minor'] ?? 0;
+ $patchVersion = $versionParts['patch'] ?? 0;
+ $version = $majorVersion . '.' . $minorVersion . '.' . $patchVersion;
+
+ if (version_compare($version, '10.0', '>=')) {
+ return new PostgreSQL100Platform();
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5060',
+ 'PostgreSQL 9 support is deprecated and will be removed in DBAL 4.'
+ . ' Consider upgrading to Postgres 10 or later.',
+ );
+
+ return new PostgreSQL94Platform();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDatabasePlatform()
+ {
+ return new PostgreSQL94Platform();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@link PostgreSQLPlatform::createSchemaManager()} instead.
+ */
+ public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5458',
+ 'AbstractPostgreSQLDriver::getSchemaManager() is deprecated.'
+ . ' Use PostgreSQLPlatform::createSchemaManager() instead.',
+ );
+
+ assert($platform instanceof PostgreSQLPlatform);
+
+ return new PostgreSQLSchemaManager($conn, $platform);
+ }
+
+ public function getExceptionConverter(): ExceptionConverter
+ {
+ return new PostgreSQL\ExceptionConverter();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php
new file mode 100644
index 0000000..b9a9955
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php
@@ -0,0 +1,53 @@
+exec('PRAGMA foreign_keys=ON');
+
+ return $connection;
+ }
+ };
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Connection.php b/vendor/doctrine/dbal/src/Driver/Connection.php
new file mode 100644
index 0000000..2f460fd
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Connection.php
@@ -0,0 +1,86 @@
+fetchNumeric();
+
+ if ($row === false) {
+ return false;
+ }
+
+ return $row[0];
+ }
+
+ /**
+ * @return list>
+ *
+ * @throws Exception
+ */
+ public static function fetchAllNumeric(Result $result): array
+ {
+ $rows = [];
+
+ while (($row = $result->fetchNumeric()) !== false) {
+ $rows[] = $row;
+ }
+
+ return $rows;
+ }
+
+ /**
+ * @return list>
+ *
+ * @throws Exception
+ */
+ public static function fetchAllAssociative(Result $result): array
+ {
+ $rows = [];
+
+ while (($row = $result->fetchAssociative()) !== false) {
+ $rows[] = $row;
+ }
+
+ return $rows;
+ }
+
+ /**
+ * @return list
+ *
+ * @throws Exception
+ */
+ public static function fetchFirstColumn(Result $result): array
+ {
+ $rows = [];
+
+ while (($row = $result->fetchOne()) !== false) {
+ $rows[] = $row;
+ }
+
+ return $rows;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Connection.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Connection.php
new file mode 100644
index 0000000..dfb11c2
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/IBMDB2/Connection.php
@@ -0,0 +1,141 @@
+connection = $connection;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getServerVersion()
+ {
+ $serverInfo = db2_server_info($this->connection);
+ assert($serverInfo instanceof stdClass);
+
+ return $serverInfo->DBMS_VER;
+ }
+
+ public function prepare(string $sql): DriverStatement
+ {
+ $stmt = @db2_prepare($this->connection, $sql);
+
+ if ($stmt === false) {
+ throw PrepareFailed::new(error_get_last());
+ }
+
+ return new Statement($stmt);
+ }
+
+ public function query(string $sql): ResultInterface
+ {
+ return $this->prepare($sql)->execute();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ $value = db2_escape_string($value);
+
+ if ($type === ParameterType::INTEGER) {
+ return $value;
+ }
+
+ return "'" . $value . "'";
+ }
+
+ public function exec(string $sql): int
+ {
+ $stmt = @db2_exec($this->connection, $sql);
+
+ if ($stmt === false) {
+ throw StatementError::new();
+ }
+
+ return db2_num_rows($stmt);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function lastInsertId($name = null)
+ {
+ if ($name !== null) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+ }
+
+ return db2_last_insert_id($this->connection) ?? false;
+ }
+
+ public function beginTransaction(): bool
+ {
+ return db2_autocommit($this->connection, DB2_AUTOCOMMIT_OFF);
+ }
+
+ public function commit(): bool
+ {
+ if (! db2_commit($this->connection)) {
+ throw ConnectionError::new($this->connection);
+ }
+
+ return db2_autocommit($this->connection, DB2_AUTOCOMMIT_ON);
+ }
+
+ public function rollBack(): bool
+ {
+ if (! db2_rollback($this->connection)) {
+ throw ConnectionError::new($this->connection);
+ }
+
+ return db2_autocommit($this->connection, DB2_AUTOCOMMIT_ON);
+ }
+
+ /** @return resource */
+ public function getNativeConnection()
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php
new file mode 100644
index 0000000..124a6f6
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php
@@ -0,0 +1,84 @@
+string = $string;
+ }
+
+ public function toString(): string
+ {
+ return $this->string;
+ }
+
+ /**
+ * Creates the object from an array representation
+ *
+ * @param array $params
+ */
+ public static function fromArray(
+ #[SensitiveParameter]
+ array $params
+ ): self {
+ $chunks = [];
+
+ foreach ($params as $key => $value) {
+ $chunks[] = sprintf('%s=%s', $key, $value);
+ }
+
+ return new self(implode(';', $chunks));
+ }
+
+ /**
+ * Creates the object from the given DBAL connection parameters.
+ *
+ * @param array $params
+ */
+ public static function fromConnectionParameters(
+ #[SensitiveParameter]
+ array $params
+ ): self {
+ if (isset($params['dbname']) && strpos($params['dbname'], '=') !== false) {
+ return new self($params['dbname']);
+ }
+
+ $dsnParams = [];
+
+ foreach (
+ [
+ 'host' => 'HOSTNAME',
+ 'port' => 'PORT',
+ 'protocol' => 'PROTOCOL',
+ 'dbname' => 'DATABASE',
+ 'user' => 'UID',
+ 'password' => 'PWD',
+ ] as $dbalParam => $dsnParam
+ ) {
+ if (! isset($params[$dbalParam])) {
+ continue;
+ }
+
+ $dsnParams[$dsnParam] = $params[$dbalParam];
+ }
+
+ return self::fromArray($dsnParams);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Driver.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Driver.php
new file mode 100644
index 0000000..7650db5
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/IBMDB2/Driver.php
@@ -0,0 +1,41 @@
+toString();
+
+ $username = $params['user'] ?? '';
+ $password = $params['password'] ?? '';
+ $driverOptions = $params['driverOptions'] ?? [];
+
+ if (! empty($params['persistent'])) {
+ $connection = db2_pconnect($dataSourceName, $username, $password, $driverOptions);
+ } else {
+ $connection = db2_connect($dataSourceName, $username, $password, $driverOptions);
+ }
+
+ if ($connection === false) {
+ throw ConnectionFailed::new();
+ }
+
+ return new Connection($connection);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php
new file mode 100644
index 0000000..231c9d4
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php
@@ -0,0 +1,27 @@
+statement = $statement;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchNumeric()
+ {
+ $row = @db2_fetch_array($this->statement);
+
+ if ($row === false && db2_stmt_error($this->statement) !== '02000') {
+ throw StatementError::new($this->statement);
+ }
+
+ return $row;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAssociative()
+ {
+ $row = @db2_fetch_assoc($this->statement);
+
+ if ($row === false && db2_stmt_error($this->statement) !== '02000') {
+ throw StatementError::new($this->statement);
+ }
+
+ return $row;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchOne()
+ {
+ return FetchUtils::fetchOne($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllNumeric(): array
+ {
+ return FetchUtils::fetchAllNumeric($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllAssociative(): array
+ {
+ return FetchUtils::fetchAllAssociative($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchFirstColumn(): array
+ {
+ return FetchUtils::fetchFirstColumn($this);
+ }
+
+ public function rowCount(): int
+ {
+ return @db2_num_rows($this->statement);
+ }
+
+ public function columnCount(): int
+ {
+ $count = db2_num_fields($this->statement);
+
+ if ($count !== false) {
+ return $count;
+ }
+
+ return 0;
+ }
+
+ public function free(): void
+ {
+ db2_free_result($this->statement);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Statement.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Statement.php
new file mode 100644
index 0000000..699e236
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/IBMDB2/Statement.php
@@ -0,0 +1,220 @@
+
+ */
+ private array $lobs = [];
+
+ /**
+ * @internal The statement can be only instantiated by its driver connection.
+ *
+ * @param resource $stmt
+ */
+ public function __construct($stmt)
+ {
+ $this->stmt = $stmt;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING): bool
+ {
+ assert(is_int($param));
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ return $this->bindParam($param, $value, $type);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@see bindValue()} instead.
+ */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ assert(is_int($param));
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ switch ($type) {
+ case ParameterType::INTEGER:
+ $this->bind($param, $variable, DB2_PARAM_IN, DB2_LONG);
+ break;
+
+ case ParameterType::LARGE_OBJECT:
+ $this->lobs[$param] = &$variable;
+ break;
+
+ default:
+ $this->bind($param, $variable, DB2_PARAM_IN, DB2_CHAR);
+ break;
+ }
+
+ return true;
+ }
+
+ /**
+ * @param int $position Parameter position
+ * @param mixed $variable
+ *
+ * @throws Exception
+ */
+ private function bind($position, &$variable, int $parameterType, int $dataType): void
+ {
+ $this->parameters[$position] =& $variable;
+
+ if (! db2_bind_param($this->stmt, $position, '', $parameterType, $dataType)) {
+ throw StatementError::new($this->stmt);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function execute($params = null): ResultInterface
+ {
+ if ($params !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5556',
+ 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
+ . ' Statement::bindParam() or Statement::bindValue() instead.',
+ );
+ }
+
+ $handles = $this->bindLobs();
+
+ $result = @db2_execute($this->stmt, $params ?? $this->parameters);
+
+ foreach ($handles as $handle) {
+ fclose($handle);
+ }
+
+ $this->lobs = [];
+
+ if ($result === false) {
+ throw StatementError::new($this->stmt);
+ }
+
+ return new Result($this->stmt);
+ }
+
+ /**
+ * @return list
+ *
+ * @throws Exception
+ */
+ private function bindLobs(): array
+ {
+ $handles = [];
+
+ foreach ($this->lobs as $param => $value) {
+ if (is_resource($value)) {
+ $handle = $handles[] = $this->createTemporaryFile();
+ $path = stream_get_meta_data($handle)['uri'];
+
+ $this->copyStreamToStream($value, $handle);
+
+ $this->bind($param, $path, DB2_PARAM_FILE, DB2_BINARY);
+ } else {
+ $this->bind($param, $value, DB2_PARAM_IN, DB2_CHAR);
+ }
+
+ unset($value);
+ }
+
+ return $handles;
+ }
+
+ /**
+ * @return resource
+ *
+ * @throws Exception
+ */
+ private function createTemporaryFile()
+ {
+ $handle = @tmpfile();
+
+ if ($handle === false) {
+ throw CannotCreateTemporaryFile::new(error_get_last());
+ }
+
+ return $handle;
+ }
+
+ /**
+ * @param resource $source
+ * @param resource $target
+ *
+ * @throws Exception
+ */
+ private function copyStreamToStream($source, $target): void
+ {
+ if (@stream_copy_to_stream($source, $target) === false) {
+ throw CannotCopyStreamToStream::new(error_get_last());
+ }
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Middleware.php b/vendor/doctrine/dbal/src/Driver/Middleware.php
new file mode 100644
index 0000000..4629d9a
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Middleware.php
@@ -0,0 +1,12 @@
+wrappedConnection = $wrappedConnection;
+ }
+
+ public function prepare(string $sql): Statement
+ {
+ return $this->wrappedConnection->prepare($sql);
+ }
+
+ public function query(string $sql): Result
+ {
+ return $this->wrappedConnection->query($sql);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ return $this->wrappedConnection->quote($value, $type);
+ }
+
+ public function exec(string $sql): int
+ {
+ return $this->wrappedConnection->exec($sql);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function lastInsertId($name = null)
+ {
+ if ($name !== null) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+ }
+
+ return $this->wrappedConnection->lastInsertId($name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function beginTransaction()
+ {
+ return $this->wrappedConnection->beginTransaction();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function commit()
+ {
+ return $this->wrappedConnection->commit();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function rollBack()
+ {
+ return $this->wrappedConnection->rollBack();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getServerVersion()
+ {
+ if (! $this->wrappedConnection instanceof ServerInfoAwareConnection) {
+ throw new LogicException('The underlying connection is not a ServerInfoAwareConnection');
+ }
+
+ return $this->wrappedConnection->getServerVersion();
+ }
+
+ /** @return resource|object */
+ public function getNativeConnection()
+ {
+ if (! method_exists($this->wrappedConnection, 'getNativeConnection')) {
+ throw new LogicException(sprintf(
+ 'The driver connection %s does not support accessing the native connection.',
+ get_class($this->wrappedConnection),
+ ));
+ }
+
+ return $this->wrappedConnection->getNativeConnection();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php
new file mode 100644
index 0000000..1c9d430
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php
@@ -0,0 +1,73 @@
+wrappedDriver = $wrappedDriver;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function connect(
+ #[SensitiveParameter]
+ array $params
+ ) {
+ return $this->wrappedDriver->connect($params);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDatabasePlatform()
+ {
+ return $this->wrappedDriver->getDatabasePlatform();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@link AbstractPlatform::createSchemaManager()} instead.
+ */
+ public function getSchemaManager(Connection $conn, AbstractPlatform $platform)
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5458',
+ 'AbstractDriverMiddleware::getSchemaManager() is deprecated.'
+ . ' Use AbstractPlatform::createSchemaManager() instead.',
+ );
+
+ return $this->wrappedDriver->getSchemaManager($conn, $platform);
+ }
+
+ public function getExceptionConverter(): ExceptionConverter
+ {
+ return $this->wrappedDriver->getExceptionConverter();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function createDatabasePlatformForVersion($version)
+ {
+ if ($this->wrappedDriver instanceof VersionAwarePlatformDriver) {
+ return $this->wrappedDriver->createDatabasePlatformForVersion($version);
+ }
+
+ return $this->wrappedDriver->getDatabasePlatform();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php
new file mode 100644
index 0000000..198d39b
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php
@@ -0,0 +1,78 @@
+wrappedResult = $result;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchNumeric()
+ {
+ return $this->wrappedResult->fetchNumeric();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAssociative()
+ {
+ return $this->wrappedResult->fetchAssociative();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchOne()
+ {
+ return $this->wrappedResult->fetchOne();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllNumeric(): array
+ {
+ return $this->wrappedResult->fetchAllNumeric();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllAssociative(): array
+ {
+ return $this->wrappedResult->fetchAllAssociative();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchFirstColumn(): array
+ {
+ return $this->wrappedResult->fetchFirstColumn();
+ }
+
+ public function rowCount(): int
+ {
+ return $this->wrappedResult->rowCount();
+ }
+
+ public function columnCount(): int
+ {
+ return $this->wrappedResult->columnCount();
+ }
+
+ public function free(): void
+ {
+ $this->wrappedResult->free();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php
new file mode 100644
index 0000000..6cd2f8f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php
@@ -0,0 +1,71 @@
+wrappedStatement = $wrappedStatement;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING)
+ {
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ return $this->wrappedStatement->bindValue($param, $value, $type);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@see bindValue()} instead.
+ */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null)
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ return $this->wrappedStatement->bindParam($param, $variable, $type, $length);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function execute($params = null): Result
+ {
+ return $this->wrappedStatement->execute($params);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php
new file mode 100644
index 0000000..d492684
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php
@@ -0,0 +1,141 @@
+connection = $connection;
+ }
+
+ /**
+ * Retrieves mysqli native resource handle.
+ *
+ * Could be used if part of your application is not using DBAL.
+ *
+ * @deprecated Call {@see getNativeConnection()} instead.
+ */
+ public function getWrappedResourceHandle(): mysqli
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5037',
+ '%s is deprecated, call getNativeConnection() instead.',
+ __METHOD__,
+ );
+
+ return $this->getNativeConnection();
+ }
+
+ public function getServerVersion(): string
+ {
+ return $this->connection->get_server_info();
+ }
+
+ public function prepare(string $sql): DriverStatement
+ {
+ try {
+ $stmt = $this->connection->prepare($sql);
+ } catch (mysqli_sql_exception $e) {
+ throw ConnectionError::upcast($e);
+ }
+
+ if ($stmt === false) {
+ throw ConnectionError::new($this->connection);
+ }
+
+ return new Statement($stmt);
+ }
+
+ public function query(string $sql): ResultInterface
+ {
+ return $this->prepare($sql)->execute();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ return "'" . $this->connection->escape_string($value) . "'";
+ }
+
+ public function exec(string $sql): int
+ {
+ try {
+ $result = $this->connection->query($sql);
+ } catch (mysqli_sql_exception $e) {
+ throw ConnectionError::upcast($e);
+ }
+
+ if ($result === false) {
+ throw ConnectionError::new($this->connection);
+ }
+
+ return $this->connection->affected_rows;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function lastInsertId($name = null)
+ {
+ if ($name !== null) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+ }
+
+ return $this->connection->insert_id;
+ }
+
+ public function beginTransaction(): bool
+ {
+ $this->connection->begin_transaction();
+
+ return true;
+ }
+
+ public function commit(): bool
+ {
+ try {
+ return $this->connection->commit();
+ } catch (mysqli_sql_exception $e) {
+ return false;
+ }
+ }
+
+ public function rollBack(): bool
+ {
+ try {
+ return $this->connection->rollback();
+ } catch (mysqli_sql_exception $e) {
+ return false;
+ }
+ }
+
+ public function getNativeConnection(): mysqli
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php
new file mode 100644
index 0000000..4f51868
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php
@@ -0,0 +1,117 @@
+compilePreInitializers($params) as $initializer) {
+ $initializer->initialize($connection);
+ }
+
+ try {
+ $success = @$connection->real_connect(
+ $host,
+ $params['user'] ?? null,
+ $params['password'] ?? null,
+ $params['dbname'] ?? null,
+ $params['port'] ?? null,
+ $params['unix_socket'] ?? null,
+ $params['driverOptions'][Connection::OPTION_FLAGS] ?? 0,
+ );
+ } catch (mysqli_sql_exception $e) {
+ throw ConnectionFailed::upcast($e);
+ }
+
+ if (! $success) {
+ throw ConnectionFailed::new($connection);
+ }
+
+ foreach ($this->compilePostInitializers($params) as $initializer) {
+ $initializer->initialize($connection);
+ }
+
+ return new Connection($connection);
+ }
+
+ /**
+ * @param array $params
+ *
+ * @return Generator
+ */
+ private function compilePreInitializers(
+ #[SensitiveParameter]
+ array $params
+ ): Generator {
+ unset($params['driverOptions'][Connection::OPTION_FLAGS]);
+
+ if (isset($params['driverOptions']) && $params['driverOptions'] !== []) {
+ yield new Options($params['driverOptions']);
+ }
+
+ if (
+ ! isset($params['ssl_key']) &&
+ ! isset($params['ssl_cert']) &&
+ ! isset($params['ssl_ca']) &&
+ ! isset($params['ssl_capath']) &&
+ ! isset($params['ssl_cipher'])
+ ) {
+ return;
+ }
+
+ yield new Secure(
+ $params['ssl_key'] ?? '',
+ $params['ssl_cert'] ?? '',
+ $params['ssl_ca'] ?? '',
+ $params['ssl_capath'] ?? '',
+ $params['ssl_cipher'] ?? '',
+ );
+ }
+
+ /**
+ * @param array $params
+ *
+ * @return Generator
+ */
+ private function compilePostInitializers(
+ #[SensitiveParameter]
+ array $params
+ ): Generator {
+ if (! isset($params['charset'])) {
+ return;
+ }
+
+ yield new Charset($params['charset']);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php
new file mode 100644
index 0000000..ef5b980
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php
@@ -0,0 +1,31 @@
+error, $connection->sqlstate, $connection->errno);
+ }
+
+ public static function upcast(mysqli_sql_exception $exception): self
+ {
+ $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate');
+ $p->setAccessible(true);
+
+ return new self($exception->getMessage(), $p->getValue($exception), (int) $exception->getCode(), $exception);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php
new file mode 100644
index 0000000..44a8cab
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php
@@ -0,0 +1,36 @@
+connect_error;
+ assert($error !== null);
+
+ return new self($error, 'HY000', $connection->connect_errno);
+ }
+
+ public static function upcast(mysqli_sql_exception $exception): self
+ {
+ $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate');
+ $p->setAccessible(true);
+
+ return new self($exception->getMessage(), $p->getValue($exception), (int) $exception->getCode(), $exception);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php
new file mode 100644
index 0000000..6f26dbe
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php
@@ -0,0 +1,22 @@
+error),
+ $connection->sqlstate,
+ $connection->errno,
+ );
+ }
+
+ public static function upcast(mysqli_sql_exception $exception, string $charset): self
+ {
+ $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate');
+ $p->setAccessible(true);
+
+ return new self(
+ sprintf('Failed to set charset "%s": %s', $charset, $exception->getMessage()),
+ $p->getValue($exception),
+ (int) $exception->getCode(),
+ $exception,
+ );
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php
new file mode 100644
index 0000000..6fb4631
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php
@@ -0,0 +1,25 @@
+error, $statement->sqlstate, $statement->errno);
+ }
+
+ public static function upcast(mysqli_sql_exception $exception): self
+ {
+ $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate');
+ $p->setAccessible(true);
+
+ return new self($exception->getMessage(), $p->getValue($exception), (int) $exception->getCode(), $exception);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer.php
new file mode 100644
index 0000000..efab67e
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer.php
@@ -0,0 +1,14 @@
+charset = $charset;
+ }
+
+ public function initialize(mysqli $connection): void
+ {
+ try {
+ $success = $connection->set_charset($this->charset);
+ } catch (mysqli_sql_exception $e) {
+ throw InvalidCharset::upcast($e, $this->charset);
+ }
+
+ if ($success) {
+ return;
+ }
+
+ throw InvalidCharset::fromCharset($connection, $this->charset);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php
new file mode 100644
index 0000000..2e66f8d
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php
@@ -0,0 +1,32 @@
+ */
+ private array $options;
+
+ /** @param array $options */
+ public function __construct(array $options)
+ {
+ $this->options = $options;
+ }
+
+ public function initialize(mysqli $connection): void
+ {
+ foreach ($this->options as $option => $value) {
+ if (! mysqli_options($connection, $option, $value)) {
+ throw InvalidOption::fromOption($option, $value);
+ }
+ }
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php
new file mode 100644
index 0000000..a25fcfc
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php
@@ -0,0 +1,38 @@
+key = $key;
+ $this->cert = $cert;
+ $this->ca = $ca;
+ $this->capath = $capath;
+ $this->cipher = $cipher;
+ }
+
+ public function initialize(mysqli $connection): void
+ {
+ $connection->ssl_set($this->key, $this->cert, $this->ca, $this->capath, $this->cipher);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Result.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Result.php
new file mode 100644
index 0000000..c7dc65d
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Result.php
@@ -0,0 +1,179 @@
+
+ */
+ private array $columnNames = [];
+
+ /** @var mixed[] */
+ private array $boundValues = [];
+
+ /**
+ * @internal The result can be only instantiated by its driver connection or statement.
+ *
+ * @throws Exception
+ */
+ public function __construct(mysqli_stmt $statement)
+ {
+ $this->statement = $statement;
+
+ $meta = $statement->result_metadata();
+
+ if ($meta === false) {
+ return;
+ }
+
+ $this->hasColumns = true;
+
+ $this->columnNames = array_column($meta->fetch_fields(), 'name');
+
+ $meta->free();
+
+ // Store result of every execution which has it. Otherwise it will be impossible
+ // to execute a new statement in case if the previous one has non-fetched rows
+ // @link http://dev.mysql.com/doc/refman/5.7/en/commands-out-of-sync.html
+ $this->statement->store_result();
+
+ // Bind row values _after_ storing the result. Otherwise, if mysqli is compiled with libmysql,
+ // it will have to allocate as much memory as it may be needed for the given column type
+ // (e.g. for a LONGBLOB column it's 4 gigabytes)
+ // @link https://bugs.php.net/bug.php?id=51386#1270673122
+ //
+ // Make sure that the values are bound after each execution. Otherwise, if free() has been
+ // previously called on the result, the values are unbound making the statement unusable.
+ //
+ // It's also important that row values are bound after _each_ call to store_result(). Otherwise,
+ // if mysqli is compiled with libmysql, subsequently fetched string values will get truncated
+ // to the length of the ones fetched during the previous execution.
+ $this->boundValues = array_fill(0, count($this->columnNames), null);
+
+ // The following is necessary as PHP cannot handle references to properties properly
+ $refs = &$this->boundValues;
+
+ if (! $this->statement->bind_result(...$refs)) {
+ throw StatementError::new($this->statement);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchNumeric()
+ {
+ try {
+ $ret = $this->statement->fetch();
+ } catch (mysqli_sql_exception $e) {
+ throw StatementError::upcast($e);
+ }
+
+ if ($ret === false) {
+ throw StatementError::new($this->statement);
+ }
+
+ if ($ret === null) {
+ return false;
+ }
+
+ $values = [];
+
+ foreach ($this->boundValues as $v) {
+ $values[] = $v;
+ }
+
+ return $values;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAssociative()
+ {
+ $values = $this->fetchNumeric();
+
+ if ($values === false) {
+ return false;
+ }
+
+ return array_combine($this->columnNames, $values);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchOne()
+ {
+ return FetchUtils::fetchOne($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllNumeric(): array
+ {
+ return FetchUtils::fetchAllNumeric($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllAssociative(): array
+ {
+ return FetchUtils::fetchAllAssociative($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchFirstColumn(): array
+ {
+ return FetchUtils::fetchFirstColumn($this);
+ }
+
+ public function rowCount(): int
+ {
+ if ($this->hasColumns) {
+ return $this->statement->num_rows;
+ }
+
+ return $this->statement->affected_rows;
+ }
+
+ public function columnCount(): int
+ {
+ return $this->statement->field_count;
+ }
+
+ public function free(): void
+ {
+ $this->statement->free_result();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Statement.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Statement.php
new file mode 100644
index 0000000..fec7c95
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Mysqli/Statement.php
@@ -0,0 +1,239 @@
+ 's',
+ ParameterType::STRING => 's',
+ ParameterType::BINARY => 's',
+ ParameterType::BOOLEAN => 'i',
+ ParameterType::NULL => 's',
+ ParameterType::INTEGER => 'i',
+ ParameterType::LARGE_OBJECT => 'b',
+ ];
+
+ private mysqli_stmt $stmt;
+
+ /** @var mixed[] */
+ private array $boundValues;
+
+ private string $types;
+
+ /**
+ * Contains ref values for bindValue().
+ *
+ * @var mixed[]
+ */
+ private array $values = [];
+
+ /** @internal The statement can be only instantiated by its driver connection. */
+ public function __construct(mysqli_stmt $stmt)
+ {
+ $this->stmt = $stmt;
+
+ $paramCount = $this->stmt->param_count;
+ $this->types = str_repeat('s', $paramCount);
+ $this->boundValues = array_fill(1, $paramCount, null);
+ }
+
+ /**
+ * @deprecated Use {@see bindValue()} instead.
+ *
+ * {@inheritDoc}
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ assert(is_int($param));
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ if (! isset(self::PARAM_TYPE_MAP[$type])) {
+ throw UnknownParameterType::new($type);
+ }
+
+ $this->boundValues[$param] =& $variable;
+ $this->types[$param - 1] = self::PARAM_TYPE_MAP[$type];
+
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING): bool
+ {
+ assert(is_int($param));
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ if (! isset(self::PARAM_TYPE_MAP[$type])) {
+ throw UnknownParameterType::new($type);
+ }
+
+ $this->values[$param] = $value;
+ $this->boundValues[$param] =& $this->values[$param];
+ $this->types[$param - 1] = self::PARAM_TYPE_MAP[$type];
+
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function execute($params = null): ResultInterface
+ {
+ if ($params !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5556',
+ 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
+ . ' Statement::bindParam() or Statement::bindValue() instead.',
+ );
+ }
+
+ if ($params !== null && count($params) > 0) {
+ if (! $this->bindUntypedValues($params)) {
+ throw StatementError::new($this->stmt);
+ }
+ } elseif (count($this->boundValues) > 0) {
+ $this->bindTypedParameters();
+ }
+
+ try {
+ $result = $this->stmt->execute();
+ } catch (mysqli_sql_exception $e) {
+ throw StatementError::upcast($e);
+ }
+
+ if (! $result) {
+ throw StatementError::new($this->stmt);
+ }
+
+ return new Result($this->stmt);
+ }
+
+ /**
+ * Binds parameters with known types previously bound to the statement
+ *
+ * @throws Exception
+ */
+ private function bindTypedParameters(): void
+ {
+ $streams = $values = [];
+ $types = $this->types;
+
+ foreach ($this->boundValues as $parameter => $value) {
+ assert(is_int($parameter));
+
+ if (! isset($types[$parameter - 1])) {
+ $types[$parameter - 1] = self::PARAM_TYPE_MAP[ParameterType::STRING];
+ }
+
+ if ($types[$parameter - 1] === self::PARAM_TYPE_MAP[ParameterType::LARGE_OBJECT]) {
+ if (is_resource($value)) {
+ if (get_resource_type($value) !== 'stream') {
+ throw NonStreamResourceUsedAsLargeObject::new($parameter);
+ }
+
+ $streams[$parameter] = $value;
+ $values[$parameter] = null;
+ continue;
+ }
+
+ $types[$parameter - 1] = self::PARAM_TYPE_MAP[ParameterType::STRING];
+ }
+
+ $values[$parameter] = $value;
+ }
+
+ if (! $this->stmt->bind_param($types, ...$values)) {
+ throw StatementError::new($this->stmt);
+ }
+
+ $this->sendLongData($streams);
+ }
+
+ /**
+ * Handle $this->_longData after regular query parameters have been bound
+ *
+ * @param array $streams
+ *
+ * @throws Exception
+ */
+ private function sendLongData(array $streams): void
+ {
+ foreach ($streams as $paramNr => $stream) {
+ while (! feof($stream)) {
+ $chunk = fread($stream, 8192);
+
+ if ($chunk === false) {
+ throw FailedReadingStreamOffset::new($paramNr);
+ }
+
+ if (! $this->stmt->send_long_data($paramNr - 1, $chunk)) {
+ throw StatementError::new($this->stmt);
+ }
+ }
+ }
+ }
+
+ /**
+ * Binds a array of values to bound parameters.
+ *
+ * @param mixed[] $values
+ */
+ private function bindUntypedValues(array $values): bool
+ {
+ return $this->stmt->bind_param(str_repeat('s', count($values)), ...$values);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Connection.php b/vendor/doctrine/dbal/src/Driver/OCI8/Connection.php
new file mode 100644
index 0000000..72353fa
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/OCI8/Connection.php
@@ -0,0 +1,170 @@
+connection = $connection;
+ $this->parser = new Parser(false);
+ $this->executionMode = new ExecutionMode();
+ }
+
+ public function getServerVersion(): string
+ {
+ $version = oci_server_version($this->connection);
+
+ if ($version === false) {
+ throw Error::new($this->connection);
+ }
+
+ $result = preg_match('/\s+(\d+\.\d+\.\d+\.\d+\.\d+)\s+/', $version, $matches);
+ assert($result === 1);
+
+ return $matches[1];
+ }
+
+ /** @throws Parser\Exception */
+ public function prepare(string $sql): DriverStatement
+ {
+ $visitor = new ConvertPositionalToNamedPlaceholders();
+
+ $this->parser->parse($sql, $visitor);
+
+ $statement = oci_parse($this->connection, $visitor->getSQL());
+ assert(is_resource($statement));
+
+ return new Statement($this->connection, $statement, $visitor->getParameterMap(), $this->executionMode);
+ }
+
+ /**
+ * @throws Exception
+ * @throws Parser\Exception
+ */
+ public function query(string $sql): ResultInterface
+ {
+ return $this->prepare($sql)->execute();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ if (is_int($value) || is_float($value)) {
+ return $value;
+ }
+
+ $value = str_replace("'", "''", $value);
+
+ return "'" . addcslashes($value, "\000\n\r\\\032") . "'";
+ }
+
+ /**
+ * @throws Exception
+ * @throws Parser\Exception
+ */
+ public function exec(string $sql): int
+ {
+ return $this->prepare($sql)->execute()->rowCount();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @param string|null $name
+ *
+ * @return int|false
+ *
+ * @throws Parser\Exception
+ */
+ public function lastInsertId($name = null)
+ {
+ if ($name === null) {
+ return false;
+ }
+
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+
+ $result = $this->query('SELECT ' . $name . '.CURRVAL FROM DUAL')->fetchOne();
+
+ if ($result === false) {
+ throw SequenceDoesNotExist::new();
+ }
+
+ return (int) $result;
+ }
+
+ public function beginTransaction(): bool
+ {
+ $this->executionMode->disableAutoCommit();
+
+ return true;
+ }
+
+ public function commit(): bool
+ {
+ if (! oci_commit($this->connection)) {
+ throw Error::new($this->connection);
+ }
+
+ $this->executionMode->enableAutoCommit();
+
+ return true;
+ }
+
+ public function rollBack(): bool
+ {
+ if (! oci_rollback($this->connection)) {
+ throw Error::new($this->connection);
+ }
+
+ $this->executionMode->enableAutoCommit();
+
+ return true;
+ }
+
+ /** @return resource */
+ public function getNativeConnection()
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php b/vendor/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php
new file mode 100644
index 0000000..e2a1126
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php
@@ -0,0 +1,56 @@
+).
+ *
+ * Oracle does not support positional parameters, hence this method converts all
+ * positional parameters into artificially named parameters.
+ *
+ * @internal This class is not covered by the backward compatibility promise
+ */
+final class ConvertPositionalToNamedPlaceholders implements Visitor
+{
+ /** @var list */
+ private array $buffer = [];
+
+ /** @var array */
+ private array $parameterMap = [];
+
+ public function acceptOther(string $sql): void
+ {
+ $this->buffer[] = $sql;
+ }
+
+ public function acceptPositionalParameter(string $sql): void
+ {
+ $position = count($this->parameterMap) + 1;
+ $param = ':param' . $position;
+
+ $this->parameterMap[$position] = $param;
+
+ $this->buffer[] = $param;
+ }
+
+ public function acceptNamedParameter(string $sql): void
+ {
+ $this->buffer[] = $sql;
+ }
+
+ public function getSQL(): string
+ {
+ return implode('', $this->buffer);
+ }
+
+ /** @return array */
+ public function getParameterMap(): array
+ {
+ return $this->parameterMap;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Driver.php b/vendor/doctrine/dbal/src/Driver/OCI8/Driver.php
new file mode 100644
index 0000000..650a4f9
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/OCI8/Driver.php
@@ -0,0 +1,58 @@
+getEasyConnectString($params);
+
+ $persistent = ! empty($params['persistent']);
+ $exclusive = ! empty($params['driverOptions']['exclusive']);
+
+ if ($persistent && $exclusive) {
+ throw InvalidConfiguration::forPersistentAndExclusive();
+ }
+
+ if ($persistent) {
+ $connection = @oci_pconnect($username, $password, $connectionString, $charset, $sessionMode);
+ } elseif ($exclusive) {
+ $connection = @oci_new_connect($username, $password, $connectionString, $charset, $sessionMode);
+ } else {
+ $connection = @oci_connect($username, $password, $connectionString, $charset, $sessionMode);
+ }
+
+ if ($connection === false) {
+ throw ConnectionFailed::new();
+ }
+
+ return new Connection($connection);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php b/vendor/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php
new file mode 100644
index 0000000..cefe9a3
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php
@@ -0,0 +1,26 @@
+isAutoCommitEnabled = true;
+ }
+
+ public function disableAutoCommit(): void
+ {
+ $this->isAutoCommitEnabled = false;
+ }
+
+ public function isAutoCommitEnabled(): bool
+ {
+ return $this->isAutoCommitEnabled;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php b/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php
new file mode 100644
index 0000000..3a356fb
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php
@@ -0,0 +1,38 @@
+exec(
+ 'ALTER SESSION SET'
+ . " NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'"
+ . " NLS_TIME_FORMAT = 'HH24:MI:SS'"
+ . " NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS'"
+ . " NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS TZH:TZM'"
+ . " NLS_NUMERIC_CHARACTERS = '.,'",
+ );
+
+ return $connection;
+ }
+ };
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Result.php b/vendor/doctrine/dbal/src/Driver/OCI8/Result.php
new file mode 100644
index 0000000..08add4f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/OCI8/Result.php
@@ -0,0 +1,145 @@
+statement = $statement;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchNumeric()
+ {
+ return $this->fetch(OCI_NUM);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAssociative()
+ {
+ return $this->fetch(OCI_ASSOC);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchOne()
+ {
+ return FetchUtils::fetchOne($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllNumeric(): array
+ {
+ return $this->fetchAll(OCI_NUM, OCI_FETCHSTATEMENT_BY_ROW);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllAssociative(): array
+ {
+ return $this->fetchAll(OCI_ASSOC, OCI_FETCHSTATEMENT_BY_ROW);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchFirstColumn(): array
+ {
+ return $this->fetchAll(OCI_NUM, OCI_FETCHSTATEMENT_BY_COLUMN)[0];
+ }
+
+ public function rowCount(): int
+ {
+ $count = oci_num_rows($this->statement);
+
+ if ($count !== false) {
+ return $count;
+ }
+
+ return 0;
+ }
+
+ public function columnCount(): int
+ {
+ $count = oci_num_fields($this->statement);
+
+ if ($count !== false) {
+ return $count;
+ }
+
+ return 0;
+ }
+
+ public function free(): void
+ {
+ oci_cancel($this->statement);
+ }
+
+ /**
+ * @return mixed|false
+ *
+ * @throws Exception
+ */
+ private function fetch(int $mode)
+ {
+ $result = oci_fetch_array($this->statement, $mode | OCI_RETURN_NULLS | OCI_RETURN_LOBS);
+
+ if ($result === false && oci_error($this->statement) !== false) {
+ throw Error::new($this->statement);
+ }
+
+ return $result;
+ }
+
+ /** @return array */
+ private function fetchAll(int $mode, int $fetchStructure): array
+ {
+ oci_fetch_all(
+ $this->statement,
+ $result,
+ 0,
+ -1,
+ $mode | OCI_RETURN_NULLS | $fetchStructure | OCI_RETURN_LOBS,
+ );
+
+ return $result;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Statement.php b/vendor/doctrine/dbal/src/Driver/OCI8/Statement.php
new file mode 100644
index 0000000..015a14b
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/OCI8/Statement.php
@@ -0,0 +1,174 @@
+ */
+ private array $parameterMap;
+
+ private ExecutionMode $executionMode;
+
+ /**
+ * @internal The statement can be only instantiated by its driver connection.
+ *
+ * @param resource $connection
+ * @param resource $statement
+ * @param array $parameterMap
+ */
+ public function __construct($connection, $statement, array $parameterMap, ExecutionMode $executionMode)
+ {
+ $this->connection = $connection;
+ $this->statement = $statement;
+ $this->parameterMap = $parameterMap;
+ $this->executionMode = $executionMode;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING): bool
+ {
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ return $this->bindParam($param, $value, $type);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@see bindValue()} instead.
+ */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ if (is_int($param)) {
+ if (! isset($this->parameterMap[$param])) {
+ throw UnknownParameterIndex::new($param);
+ }
+
+ $param = $this->parameterMap[$param];
+ }
+
+ if ($type === ParameterType::LARGE_OBJECT) {
+ if ($variable !== null) {
+ $lob = oci_new_descriptor($this->connection, OCI_D_LOB);
+ $lob->writeTemporary($variable, OCI_TEMP_BLOB);
+
+ $variable =& $lob;
+ } else {
+ $type = ParameterType::STRING;
+ }
+ }
+
+ return oci_bind_by_name(
+ $this->statement,
+ $param,
+ $variable,
+ $length ?? -1,
+ $this->convertParameterType($type),
+ );
+ }
+
+ /**
+ * Converts DBAL parameter type to oci8 parameter type
+ */
+ private function convertParameterType(int $type): int
+ {
+ switch ($type) {
+ case ParameterType::BINARY:
+ return OCI_B_BIN;
+
+ case ParameterType::LARGE_OBJECT:
+ return OCI_B_BLOB;
+
+ default:
+ return SQLT_CHR;
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function execute($params = null): ResultInterface
+ {
+ if ($params !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5556',
+ 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
+ . ' Statement::bindParam() or Statement::bindValue() instead.',
+ );
+
+ foreach ($params as $key => $val) {
+ if (is_int($key)) {
+ $this->bindValue($key + 1, $val, ParameterType::STRING);
+ } else {
+ $this->bindValue($key, $val, ParameterType::STRING);
+ }
+ }
+ }
+
+ if ($this->executionMode->isAutoCommitEnabled()) {
+ $mode = OCI_COMMIT_ON_SUCCESS;
+ } else {
+ $mode = OCI_NO_AUTO_COMMIT;
+ }
+
+ $ret = @oci_execute($this->statement, $mode);
+ if (! $ret) {
+ throw Error::new($this->statement);
+ }
+
+ return new Result($this->statement);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Connection.php b/vendor/doctrine/dbal/src/Driver/PDO/Connection.php
new file mode 100644
index 0000000..290dcc2
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/Connection.php
@@ -0,0 +1,158 @@
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+ $this->connection = $connection;
+ }
+
+ public function exec(string $sql): int
+ {
+ try {
+ $result = $this->connection->exec($sql);
+
+ assert($result !== false);
+
+ return $result;
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getServerVersion()
+ {
+ return $this->connection->getAttribute(PDO::ATTR_SERVER_VERSION);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @return Statement
+ */
+ public function prepare(string $sql): StatementInterface
+ {
+ try {
+ $stmt = $this->connection->prepare($sql);
+ assert($stmt instanceof PDOStatement);
+
+ return new Statement($stmt);
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ public function query(string $sql): ResultInterface
+ {
+ try {
+ $stmt = $this->connection->query($sql);
+ assert($stmt instanceof PDOStatement);
+
+ return new Result($stmt);
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnknownParameterType
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ return $this->connection->quote($value, ParameterTypeMap::convertParamType($type));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function lastInsertId($name = null)
+ {
+ try {
+ if ($name === null) {
+ return $this->connection->lastInsertId();
+ }
+
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+
+ return $this->connection->lastInsertId($name);
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ public function beginTransaction(): bool
+ {
+ try {
+ return $this->connection->beginTransaction();
+ } catch (PDOException $exception) {
+ throw DriverPDOException::new($exception);
+ }
+ }
+
+ public function commit(): bool
+ {
+ try {
+ return $this->connection->commit();
+ } catch (PDOException $exception) {
+ throw DriverPDOException::new($exception);
+ }
+ }
+
+ public function rollBack(): bool
+ {
+ try {
+ return $this->connection->rollBack();
+ } catch (PDOException $exception) {
+ throw DriverPDOException::new($exception);
+ }
+ }
+
+ public function getNativeConnection(): PDO
+ {
+ return $this->connection;
+ }
+
+ /** @deprecated Call {@see getNativeConnection()} instead. */
+ public function getWrappedConnection(): PDO
+ {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5037',
+ '%s is deprecated, call getNativeConnection() instead.',
+ __METHOD__,
+ );
+
+ return $this->getNativeConnection();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Exception.php b/vendor/doctrine/dbal/src/Driver/PDO/Exception.php
new file mode 100644
index 0000000..fbb8125
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/Exception.php
@@ -0,0 +1,30 @@
+errorInfo !== null) {
+ [$sqlState, $code] = $exception->errorInfo;
+
+ $code ??= 0;
+ } else {
+ $code = $exception->getCode();
+ $sqlState = null;
+ }
+
+ return new self($exception->getMessage(), $sqlState, $code, $exception);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php
new file mode 100644
index 0000000..2492698
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php
@@ -0,0 +1,76 @@
+constructPdoDsn($safeParams),
+ $params['user'] ?? '',
+ $params['password'] ?? '',
+ $driverOptions,
+ );
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+
+ return new Connection($pdo);
+ }
+
+ /**
+ * Constructs the MySQL PDO DSN.
+ *
+ * @param mixed[] $params
+ */
+ private function constructPdoDsn(array $params): string
+ {
+ $dsn = 'mysql:';
+ if (isset($params['host']) && $params['host'] !== '') {
+ $dsn .= 'host=' . $params['host'] . ';';
+ }
+
+ if (isset($params['port'])) {
+ $dsn .= 'port=' . $params['port'] . ';';
+ }
+
+ if (isset($params['dbname'])) {
+ $dsn .= 'dbname=' . $params['dbname'] . ';';
+ }
+
+ if (isset($params['unix_socket'])) {
+ $dsn .= 'unix_socket=' . $params['unix_socket'] . ';';
+ }
+
+ if (isset($params['charset'])) {
+ $dsn .= 'charset=' . $params['charset'] . ';';
+ }
+
+ return $dsn;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php
new file mode 100644
index 0000000..10ada9f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php
@@ -0,0 +1,61 @@
+constructPdoDsn($params),
+ $params['user'] ?? '',
+ $params['password'] ?? '',
+ $driverOptions,
+ );
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+
+ return new Connection($pdo);
+ }
+
+ /**
+ * Constructs the Oracle PDO DSN.
+ *
+ * @param mixed[] $params
+ */
+ private function constructPdoDsn(array $params): string
+ {
+ $dsn = 'oci:dbname=' . $this->getEasyConnectString($params);
+
+ if (isset($params['charset'])) {
+ $dsn .= ';charset=' . $params['charset'];
+ }
+
+ return $dsn;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/PDOException.php b/vendor/doctrine/dbal/src/Driver/PDO/PDOException.php
new file mode 100644
index 0000000..6eefda4
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/PDOException.php
@@ -0,0 +1,33 @@
+message, 0, $previous);
+
+ $exception->errorInfo = $previous->errorInfo;
+ $exception->code = $previous->code;
+ $exception->sqlState = $previous->errorInfo[0] ?? null;
+
+ return $exception;
+ }
+
+ public function getSQLState(): ?string
+ {
+ return $this->sqlState;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php b/vendor/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php
new file mode 100644
index 0000000..f17b585
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php
@@ -0,0 +1,49 @@
+ PDO::PARAM_NULL,
+ ParameterType::INTEGER => PDO::PARAM_INT,
+ ParameterType::STRING => PDO::PARAM_STR,
+ ParameterType::ASCII => PDO::PARAM_STR,
+ ParameterType::BINARY => PDO::PARAM_LOB,
+ ParameterType::LARGE_OBJECT => PDO::PARAM_LOB,
+ ParameterType::BOOLEAN => PDO::PARAM_BOOL,
+ ];
+
+ /**
+ * Converts DBAL parameter type to PDO parameter type
+ *
+ * @psalm-return PDO::PARAM_*
+ *
+ * @throws UnknownParameterType
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public static function convertParamType(int $type): int
+ {
+ if (! isset(self::PARAM_TYPE_MAP[$type])) {
+ throw UnknownParameterType::new($type);
+ }
+
+ return self::PARAM_TYPE_MAP[$type];
+ }
+
+ private function __construct()
+ {
+ }
+
+ private function __clone()
+ {
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php
new file mode 100644
index 0000000..5bfcd73
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php
@@ -0,0 +1,135 @@
+constructPdoDsn($safeParams),
+ $params['user'] ?? '',
+ $params['password'] ?? '',
+ $driverOptions,
+ );
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+
+ if (
+ ! isset($driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES])
+ || $driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES] === true
+ ) {
+ $pdo->setAttribute(PDO::PGSQL_ATTR_DISABLE_PREPARES, true);
+ }
+
+ $connection = new Connection($pdo);
+
+ /* defining client_encoding via SET NAMES to avoid inconsistent DSN support
+ * - passing client_encoding via the 'options' param breaks pgbouncer support
+ */
+ if (isset($params['charset'])) {
+ $connection->exec('SET NAMES \'' . $params['charset'] . '\'');
+ }
+
+ return $connection;
+ }
+
+ /**
+ * Constructs the Postgres PDO DSN.
+ *
+ * @param array $params
+ */
+ private function constructPdoDsn(array $params): string
+ {
+ $dsn = 'pgsql:';
+
+ if (isset($params['host']) && $params['host'] !== '') {
+ $dsn .= 'host=' . $params['host'] . ';';
+ }
+
+ if (isset($params['port']) && $params['port'] !== '') {
+ $dsn .= 'port=' . $params['port'] . ';';
+ }
+
+ if (isset($params['dbname'])) {
+ $dsn .= 'dbname=' . $params['dbname'] . ';';
+ } elseif (isset($params['default_dbname'])) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5705',
+ 'The "default_dbname" connection parameter is deprecated. Use "dbname" instead.',
+ );
+
+ $dsn .= 'dbname=' . $params['default_dbname'] . ';';
+ } else {
+ if (isset($params['user']) && $params['user'] !== 'postgres') {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5705',
+ 'Relying on the DBAL connecting to the "postgres" database by default is deprecated.'
+ . ' Unless you want to have the server determine the default database for the connection,'
+ . ' specify the database name explicitly.',
+ );
+ }
+
+ // Used for temporary connections to allow operations like dropping the database currently connected to.
+ $dsn .= 'dbname=postgres;';
+ }
+
+ if (isset($params['sslmode'])) {
+ $dsn .= 'sslmode=' . $params['sslmode'] . ';';
+ }
+
+ if (isset($params['sslrootcert'])) {
+ $dsn .= 'sslrootcert=' . $params['sslrootcert'] . ';';
+ }
+
+ if (isset($params['sslcert'])) {
+ $dsn .= 'sslcert=' . $params['sslcert'] . ';';
+ }
+
+ if (isset($params['sslkey'])) {
+ $dsn .= 'sslkey=' . $params['sslkey'] . ';';
+ }
+
+ if (isset($params['sslcrl'])) {
+ $dsn .= 'sslcrl=' . $params['sslcrl'] . ';';
+ }
+
+ if (isset($params['application_name'])) {
+ $dsn .= 'application_name=' . $params['application_name'] . ';';
+ }
+
+ if (isset($params['gssencmode'])) {
+ $dsn .= 'gssencmode=' . $params['gssencmode'] . ';';
+ }
+
+ return $dsn;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Result.php b/vendor/doctrine/dbal/src/Driver/PDO/Result.php
new file mode 100644
index 0000000..67970ac
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/Result.php
@@ -0,0 +1,124 @@
+statement = $statement;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchNumeric()
+ {
+ return $this->fetch(PDO::FETCH_NUM);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAssociative()
+ {
+ return $this->fetch(PDO::FETCH_ASSOC);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchOne()
+ {
+ return $this->fetch(PDO::FETCH_COLUMN);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllNumeric(): array
+ {
+ return $this->fetchAll(PDO::FETCH_NUM);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllAssociative(): array
+ {
+ return $this->fetchAll(PDO::FETCH_ASSOC);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchFirstColumn(): array
+ {
+ return $this->fetchAll(PDO::FETCH_COLUMN);
+ }
+
+ public function rowCount(): int
+ {
+ try {
+ return $this->statement->rowCount();
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ public function columnCount(): int
+ {
+ try {
+ return $this->statement->columnCount();
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ public function free(): void
+ {
+ $this->statement->closeCursor();
+ }
+
+ /**
+ * @psalm-param PDO::FETCH_* $mode
+ *
+ * @return mixed
+ *
+ * @throws Exception
+ */
+ private function fetch(int $mode)
+ {
+ try {
+ return $this->statement->fetch($mode);
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ /**
+ * @psalm-param PDO::FETCH_* $mode
+ *
+ * @return list
+ *
+ * @throws Exception
+ */
+ private function fetchAll(int $mode): array
+ {
+ try {
+ return $this->statement->fetchAll($mode);
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php
new file mode 100644
index 0000000..9015f55
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php
@@ -0,0 +1,70 @@
+connection = $connection;
+ }
+
+ public function prepare(string $sql): StatementInterface
+ {
+ return new Statement(
+ $this->connection->prepare($sql),
+ );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function lastInsertId($name = null)
+ {
+ if ($name === null) {
+ return parent::lastInsertId($name);
+ }
+
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+
+ $statement = $this->prepare(
+ 'SELECT CONVERT(VARCHAR(MAX), current_value) FROM sys.sequences WHERE name = ?',
+ );
+ $statement->bindValue(1, $name);
+
+ return $statement->execute()
+ ->fetchOne();
+ }
+
+ public function getNativeConnection(): PDO
+ {
+ return $this->connection->getNativeConnection();
+ }
+
+ /** @deprecated Call {@see getNativeConnection()} instead. */
+ public function getWrappedConnection(): PDO
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5037',
+ '%s is deprecated, call getNativeConnection() instead.',
+ __METHOD__,
+ );
+
+ return $this->connection->getWrappedConnection();
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php
new file mode 100644
index 0000000..63eabb7
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php
@@ -0,0 +1,108 @@
+ $value) {
+ if (is_int($option)) {
+ $driverOptions[$option] = $value;
+ } else {
+ $dsnOptions[$option] = $value;
+ }
+ }
+ }
+
+ if (! empty($params['persistent'])) {
+ $driverOptions[PDO::ATTR_PERSISTENT] = true;
+ }
+
+ $safeParams = $params;
+ unset($safeParams['password'], $safeParams['url']);
+
+ try {
+ $pdo = new PDO(
+ $this->constructDsn($safeParams, $dsnOptions),
+ $params['user'] ?? '',
+ $params['password'] ?? '',
+ $driverOptions,
+ );
+ } catch (\PDOException $exception) {
+ throw PDOException::new($exception);
+ }
+
+ return new Connection(new PDOConnection($pdo));
+ }
+
+ /**
+ * Constructs the Sqlsrv PDO DSN.
+ *
+ * @param mixed[] $params
+ * @param string[] $connectionOptions
+ *
+ * @throws Exception
+ */
+ private function constructDsn(array $params, array $connectionOptions): string
+ {
+ $dsn = 'sqlsrv:server=';
+
+ if (isset($params['host'])) {
+ $dsn .= $params['host'];
+
+ if (isset($params['port'])) {
+ $dsn .= ',' . $params['port'];
+ }
+ } elseif (isset($params['port'])) {
+ throw PortWithoutHost::new();
+ }
+
+ if (isset($params['dbname'])) {
+ $connectionOptions['Database'] = $params['dbname'];
+ }
+
+ if (isset($params['MultipleActiveResultSets'])) {
+ $connectionOptions['MultipleActiveResultSets'] = $params['MultipleActiveResultSets'] ? 'true' : 'false';
+ }
+
+ return $dsn . $this->getConnectionOptionsDsn($connectionOptions);
+ }
+
+ /**
+ * Converts a connection options array to the DSN
+ *
+ * @param string[] $connectionOptions
+ */
+ private function getConnectionOptionsDsn(array $connectionOptions): string
+ {
+ $connectionOptionsDsn = '';
+
+ foreach ($connectionOptions as $paramName => $paramValue) {
+ $connectionOptionsDsn .= sprintf(';%s=%s', $paramName, $paramValue);
+ }
+
+ return $connectionOptionsDsn;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php
new file mode 100644
index 0000000..cb2dfae
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php
@@ -0,0 +1,109 @@
+statement = $statement;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@see bindValue()} instead.
+ *
+ * @param string|int $param
+ * @param mixed $variable
+ * @param int $type
+ * @param int|null $length
+ * @param mixed $driverOptions The usage of the argument is deprecated.
+ *
+ * @throws UnknownParameterType
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindParam(
+ $param,
+ &$variable,
+ $type = ParameterType::STRING,
+ $length = null,
+ $driverOptions = null
+ ): bool {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ if (func_num_args() > 4) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4533',
+ 'The $driverOptions argument of Statement::bindParam() is deprecated.',
+ );
+ }
+
+ switch ($type) {
+ case ParameterType::LARGE_OBJECT:
+ case ParameterType::BINARY:
+ $driverOptions ??= PDO::SQLSRV_ENCODING_BINARY;
+
+ break;
+
+ case ParameterType::ASCII:
+ $type = ParameterType::STRING;
+ $length = 0;
+ $driverOptions = PDO::SQLSRV_ENCODING_SYSTEM;
+ break;
+ }
+
+ return $this->statement->bindParam($param, $variable, $type, $length ?? 0, $driverOptions);
+ }
+
+ /**
+ * @throws UnknownParameterType
+ *
+ * {@inheritDoc}
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING): bool
+ {
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ return $this->bindParam($param, $value, $type);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php
new file mode 100644
index 0000000..2e97788
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php
@@ -0,0 +1,77 @@
+constructPdoDsn(array_intersect_key($params, ['path' => true, 'memory' => true])),
+ $params['user'] ?? '',
+ $params['password'] ?? '',
+ $driverOptions,
+ );
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+
+ UserDefinedFunctions::register(
+ [$pdo, 'sqliteCreateFunction'],
+ $userDefinedFunctions,
+ );
+
+ return new Connection($pdo);
+ }
+
+ /**
+ * Constructs the Sqlite PDO DSN.
+ *
+ * @param array $params
+ */
+ private function constructPdoDsn(array $params): string
+ {
+ $dsn = 'sqlite:';
+ if (isset($params['path'])) {
+ $dsn .= $params['path'];
+ } elseif (isset($params['memory'])) {
+ $dsn .= ':memory:';
+ }
+
+ return $dsn;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Statement.php b/vendor/doctrine/dbal/src/Driver/PDO/Statement.php
new file mode 100644
index 0000000..64f318d
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/Statement.php
@@ -0,0 +1,137 @@
+stmt = $stmt;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws UnknownParameterType
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING)
+ {
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ $pdoType = ParameterTypeMap::convertParamType($type);
+
+ try {
+ return $this->stmt->bindValue($param, $value, $pdoType);
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@see bindValue()} instead.
+ *
+ * @param mixed $param
+ * @param mixed $variable
+ * @param int $type
+ * @param int|null $length
+ * @param mixed $driverOptions The usage of the argument is deprecated.
+ *
+ * @throws UnknownParameterType
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindParam(
+ $param,
+ &$variable,
+ $type = ParameterType::STRING,
+ $length = null,
+ $driverOptions = null
+ ): bool {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ if (func_num_args() > 4) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4533',
+ 'The $driverOptions argument of Statement::bindParam() is deprecated.',
+ );
+ }
+
+ $pdoType = ParameterTypeMap::convertParamType($type);
+
+ try {
+ return $this->stmt->bindParam(
+ $param,
+ $variable,
+ $pdoType,
+ $length ?? 0,
+ ...array_slice(func_get_args(), 4),
+ );
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function execute($params = null): ResultInterface
+ {
+ if ($params !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5556',
+ 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
+ . ' Statement::bindParam() or Statement::bindValue() instead.',
+ );
+ }
+
+ try {
+ $this->stmt->execute($params);
+ } catch (PDOException $exception) {
+ throw Exception::new($exception);
+ }
+
+ return new Result($this->stmt);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Connection.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Connection.php
new file mode 100644
index 0000000..378e8ed
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PgSQL/Connection.php
@@ -0,0 +1,161 @@
+connection = $connection;
+ $this->parser = new Parser(false);
+ }
+
+ public function __destruct()
+ {
+ if (! isset($this->connection)) {
+ return;
+ }
+
+ @pg_close($this->connection);
+ }
+
+ public function prepare(string $sql): Statement
+ {
+ $visitor = new ConvertParameters();
+ $this->parser->parse($sql, $visitor);
+
+ $statementName = uniqid('dbal', true);
+ if (@pg_send_prepare($this->connection, $statementName, $visitor->getSQL()) !== true) {
+ throw new Exception(pg_last_error($this->connection));
+ }
+
+ $result = @pg_get_result($this->connection);
+ assert($result !== false);
+
+ if ((bool) pg_result_error($result)) {
+ throw Exception::fromResult($result);
+ }
+
+ return new Statement($this->connection, $statementName, $visitor->getParameterMap());
+ }
+
+ public function query(string $sql): Result
+ {
+ if (@pg_send_query($this->connection, $sql) !== true) {
+ throw new Exception(pg_last_error($this->connection));
+ }
+
+ $result = @pg_get_result($this->connection);
+ assert($result !== false);
+
+ if ((bool) pg_result_error($result)) {
+ throw Exception::fromResult($result);
+ }
+
+ return new Result($result);
+ }
+
+ /** {@inheritDoc} */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ if ($type === ParameterType::BINARY || $type === ParameterType::LARGE_OBJECT) {
+ return sprintf("'%s'", pg_escape_bytea($this->connection, $value));
+ }
+
+ return pg_escape_literal($this->connection, $value);
+ }
+
+ public function exec(string $sql): int
+ {
+ return $this->query($sql)->rowCount();
+ }
+
+ /** {@inheritDoc} */
+ public function lastInsertId($name = null)
+ {
+ if ($name !== null) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+
+ return $this->query(sprintf('SELECT CURRVAL(%s)', $this->quote($name)))->fetchOne();
+ }
+
+ return $this->query('SELECT LASTVAL()')->fetchOne();
+ }
+
+ /** @return true */
+ public function beginTransaction(): bool
+ {
+ $this->exec('BEGIN');
+
+ return true;
+ }
+
+ /** @return true */
+ public function commit(): bool
+ {
+ $this->exec('COMMIT');
+
+ return true;
+ }
+
+ /** @return true */
+ public function rollBack(): bool
+ {
+ $this->exec('ROLLBACK');
+
+ return true;
+ }
+
+ public function getServerVersion(): string
+ {
+ return (string) pg_version($this->connection)['server'];
+ }
+
+ /** @return PgSqlConnection|resource */
+ public function getNativeConnection()
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php b/vendor/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php
new file mode 100644
index 0000000..795f12d
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php
@@ -0,0 +1,49 @@
+ */
+ private array $buffer = [];
+
+ /** @var array */
+ private array $parameterMap = [];
+
+ public function acceptPositionalParameter(string $sql): void
+ {
+ $position = count($this->parameterMap) + 1;
+ $this->parameterMap[$position] = $position;
+ $this->buffer[] = '$' . $position;
+ }
+
+ public function acceptNamedParameter(string $sql): void
+ {
+ $position = count($this->parameterMap) + 1;
+ $this->parameterMap[$sql] = $position;
+ $this->buffer[] = '$' . $position;
+ }
+
+ public function acceptOther(string $sql): void
+ {
+ $this->buffer[] = $sql;
+ }
+
+ public function getSQL(): string
+ {
+ return implode('', $this->buffer);
+ }
+
+ /** @return array */
+ public function getParameterMap(): array
+ {
+ return $this->parameterMap;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php
new file mode 100644
index 0000000..6377499
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php
@@ -0,0 +1,86 @@
+constructConnectionString($params), PGSQL_CONNECT_FORCE_NEW);
+ } catch (ErrorException $e) {
+ throw new Exception($e->getMessage(), '08006', 0, $e);
+ } finally {
+ restore_error_handler();
+ }
+
+ if ($connection === false) {
+ throw new Exception('Unable to connect to Postgres server.');
+ }
+
+ $driverConnection = new Connection($connection);
+
+ if (isset($params['application_name'])) {
+ $driverConnection->exec('SET application_name = ' . $driverConnection->quote($params['application_name']));
+ }
+
+ return $driverConnection;
+ }
+
+ /**
+ * Constructs the Postgres connection string
+ *
+ * @param array $params
+ */
+ private function constructConnectionString(
+ #[SensitiveParameter]
+ array $params
+ ): string {
+ $components = array_filter(
+ [
+ 'host' => $params['host'] ?? null,
+ 'port' => $params['port'] ?? null,
+ 'dbname' => $params['dbname'] ?? 'postgres',
+ 'user' => $params['user'] ?? null,
+ 'password' => $params['password'] ?? null,
+ 'sslmode' => $params['sslmode'] ?? null,
+ 'gssencmode' => $params['gssencmode'] ?? null,
+ ],
+ static fn ($value) => $value !== '' && $value !== null,
+ );
+
+ return implode(' ', array_map(
+ static fn ($value, string $key) => sprintf("%s='%s'", $key, addslashes($value)),
+ array_values($components),
+ array_keys($components),
+ ));
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Exception.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Exception.php
new file mode 100644
index 0000000..41e0dff
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PgSQL/Exception.php
@@ -0,0 +1,30 @@
+result = $result;
+ }
+
+ public function __destruct()
+ {
+ if (! isset($this->result)) {
+ return;
+ }
+
+ $this->free();
+ }
+
+ /** {@inheritDoc} */
+ public function fetchNumeric()
+ {
+ if ($this->result === null) {
+ return false;
+ }
+
+ $row = pg_fetch_row($this->result);
+ if ($row === false) {
+ return false;
+ }
+
+ return $this->mapNumericRow($row, $this->fetchNumericColumnTypes());
+ }
+
+ /** {@inheritDoc} */
+ public function fetchAssociative()
+ {
+ if ($this->result === null) {
+ return false;
+ }
+
+ $row = pg_fetch_assoc($this->result);
+ if ($row === false) {
+ return false;
+ }
+
+ return $this->mapAssociativeRow($row, $this->fetchAssociativeColumnTypes());
+ }
+
+ /** {@inheritDoc} */
+ public function fetchOne()
+ {
+ return FetchUtils::fetchOne($this);
+ }
+
+ /** {@inheritDoc} */
+ public function fetchAllNumeric(): array
+ {
+ if ($this->result === null) {
+ return [];
+ }
+
+ $resultSet = pg_fetch_all($this->result, PGSQL_NUM);
+ // On PHP 7.4, pg_fetch_all() might return false for empty result sets.
+ if ($resultSet === false) {
+ return [];
+ }
+
+ $types = $this->fetchNumericColumnTypes();
+
+ return array_map(
+ fn (array $row) => $this->mapNumericRow($row, $types),
+ $resultSet,
+ );
+ }
+
+ /** {@inheritDoc} */
+ public function fetchAllAssociative(): array
+ {
+ if ($this->result === null) {
+ return [];
+ }
+
+ $resultSet = pg_fetch_all($this->result, PGSQL_ASSOC);
+ // On PHP 7.4, pg_fetch_all() might return false for empty result sets.
+ if ($resultSet === false) {
+ return [];
+ }
+
+ $types = $this->fetchAssociativeColumnTypes();
+
+ return array_map(
+ fn (array $row) => $this->mapAssociativeRow($row, $types),
+ $resultSet,
+ );
+ }
+
+ /** {@inheritDoc} */
+ public function fetchFirstColumn(): array
+ {
+ if ($this->result === null) {
+ return [];
+ }
+
+ $postgresType = pg_field_type($this->result, 0);
+
+ return array_map(
+ fn ($value) => $this->mapType($postgresType, $value),
+ pg_fetch_all_columns($this->result),
+ );
+ }
+
+ public function rowCount(): int
+ {
+ if ($this->result === null) {
+ return 0;
+ }
+
+ return pg_affected_rows($this->result);
+ }
+
+ public function columnCount(): int
+ {
+ if ($this->result === null) {
+ return 0;
+ }
+
+ return pg_num_fields($this->result);
+ }
+
+ public function free(): void
+ {
+ if ($this->result === null) {
+ return;
+ }
+
+ pg_free_result($this->result);
+ $this->result = null;
+ }
+
+ /** @return array */
+ private function fetchNumericColumnTypes(): array
+ {
+ assert($this->result !== null);
+
+ $types = [];
+ $numFields = pg_num_fields($this->result);
+ for ($i = 0; $i < $numFields; ++$i) {
+ $types[$i] = pg_field_type($this->result, $i);
+ }
+
+ return $types;
+ }
+
+ /** @return array */
+ private function fetchAssociativeColumnTypes(): array
+ {
+ assert($this->result !== null);
+
+ $types = [];
+ $numFields = pg_num_fields($this->result);
+ for ($i = 0; $i < $numFields; ++$i) {
+ $types[pg_field_name($this->result, $i)] = pg_field_type($this->result, $i);
+ }
+
+ return $types;
+ }
+
+ /**
+ * @param list $row
+ * @param array $types
+ *
+ * @return list
+ */
+ private function mapNumericRow(array $row, array $types): array
+ {
+ assert($this->result !== null);
+
+ return array_map(
+ fn ($value, $field) => $this->mapType($types[$field], $value),
+ $row,
+ array_keys($row),
+ );
+ }
+
+ /**
+ * @param array $row
+ * @param array $types
+ *
+ * @return array
+ */
+ private function mapAssociativeRow(array $row, array $types): array
+ {
+ assert($this->result !== null);
+
+ $mappedRow = [];
+ foreach ($row as $field => $value) {
+ $mappedRow[$field] = $this->mapType($types[$field], $value);
+ }
+
+ return $mappedRow;
+ }
+
+ /** @return string|int|float|bool|null */
+ private function mapType(string $postgresType, ?string $value)
+ {
+ if ($value === null) {
+ return null;
+ }
+
+ switch ($postgresType) {
+ case 'bool':
+ switch ($value) {
+ case 't':
+ return true;
+ case 'f':
+ return false;
+ }
+
+ throw UnexpectedValue::new($value, $postgresType);
+
+ case 'bytea':
+ return hex2bin(substr($value, 2));
+
+ case 'float4':
+ case 'float8':
+ return (float) $value;
+
+ case 'int2':
+ case 'int4':
+ return (int) $value;
+
+ case 'int8':
+ return PHP_INT_SIZE >= 8 ? (int) $value : $value;
+ }
+
+ return $value;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Statement.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Statement.php
new file mode 100644
index 0000000..75af66f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PgSQL/Statement.php
@@ -0,0 +1,177 @@
+ */
+ private array $parameterMap;
+
+ /** @var array */
+ private array $parameters = [];
+
+ /** @psalm-var array */
+ private array $parameterTypes = [];
+
+ /**
+ * @param PgSqlConnection|resource $connection
+ * @param array $parameterMap
+ */
+ public function __construct($connection, string $name, array $parameterMap)
+ {
+ if (! is_resource($connection) && ! $connection instanceof PgSqlConnection) {
+ throw new TypeError(sprintf(
+ 'Expected connection to be a resource or an instance of %s, got %s.',
+ PgSqlConnection::class,
+ is_object($connection) ? get_class($connection) : gettype($connection),
+ ));
+ }
+
+ $this->connection = $connection;
+ $this->name = $name;
+ $this->parameterMap = $parameterMap;
+ }
+
+ public function __destruct()
+ {
+ if (! isset($this->connection)) {
+ return;
+ }
+
+ @pg_query(
+ $this->connection,
+ 'DEALLOCATE ' . pg_escape_identifier($this->connection, $this->name),
+ );
+ }
+
+ /** {@inheritDoc} */
+ public function bindValue($param, $value, $type = ParameterType::STRING): bool
+ {
+ if (! isset($this->parameterMap[$param])) {
+ throw UnknownParameter::new((string) $param);
+ }
+
+ $this->parameters[$this->parameterMap[$param]] = $value;
+ $this->parameterTypes[$this->parameterMap[$param]] = $type;
+
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ if (func_num_args() > 4) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4533',
+ 'The $driverOptions argument of Statement::bindParam() is deprecated.',
+ );
+ }
+
+ if (! isset($this->parameterMap[$param])) {
+ throw UnknownParameter::new((string) $param);
+ }
+
+ $this->parameters[$this->parameterMap[$param]] = &$variable;
+ $this->parameterTypes[$this->parameterMap[$param]] = $type;
+
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ public function execute($params = null): Result
+ {
+ if ($params !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5556',
+ 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
+ . ' Statement::bindParam() or Statement::bindValue() instead.',
+ );
+
+ foreach ($params as $param => $value) {
+ if (is_int($param)) {
+ $this->bindValue($param + 1, $value, ParameterType::STRING);
+ } else {
+ $this->bindValue($param, $value, ParameterType::STRING);
+ }
+ }
+ }
+
+ ksort($this->parameters);
+
+ $escapedParameters = [];
+ foreach ($this->parameters as $parameter => $value) {
+ switch ($this->parameterTypes[$parameter]) {
+ case ParameterType::BINARY:
+ case ParameterType::LARGE_OBJECT:
+ $escapedParameters[] = $value === null ? null : pg_escape_bytea(
+ $this->connection,
+ is_resource($value) ? stream_get_contents($value) : $value,
+ );
+ break;
+ default:
+ $escapedParameters[] = $value;
+ }
+ }
+
+ if (@pg_send_execute($this->connection, $this->name, $escapedParameters) !== true) {
+ throw new Exception(pg_last_error($this->connection));
+ }
+
+ $result = @pg_get_result($this->connection);
+ assert($result !== false);
+
+ if ((bool) pg_result_error($result)) {
+ throw Exception::fromResult($result);
+ }
+
+ return new Result($result);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/Result.php b/vendor/doctrine/dbal/src/Driver/Result.php
new file mode 100644
index 0000000..7843a95
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/Result.php
@@ -0,0 +1,93 @@
+|false
+ *
+ * @throws Exception
+ */
+ public function fetchNumeric();
+
+ /**
+ * Returns the next row of the result as an associative array or FALSE if there are no more rows.
+ *
+ * @return array|false
+ *
+ * @throws Exception
+ */
+ public function fetchAssociative();
+
+ /**
+ * Returns the first value of the next row of the result or FALSE if there are no more rows.
+ *
+ * @return mixed|false
+ *
+ * @throws Exception
+ */
+ public function fetchOne();
+
+ /**
+ * Returns an array containing all of the result rows represented as numeric arrays.
+ *
+ * @return list>
+ *
+ * @throws Exception
+ */
+ public function fetchAllNumeric(): array;
+
+ /**
+ * Returns an array containing all of the result rows represented as associative arrays.
+ *
+ * @return list>
+ *
+ * @throws Exception
+ */
+ public function fetchAllAssociative(): array;
+
+ /**
+ * Returns an array containing the values of the first column of the result.
+ *
+ * @return list
+ *
+ * @throws Exception
+ */
+ public function fetchFirstColumn(): array;
+
+ /**
+ * Returns the number of rows affected by the DELETE, INSERT, or UPDATE statement that produced the result.
+ *
+ * If the statement executed a SELECT query or a similar platform-specific SQL (e.g. DESCRIBE, SHOW, etc.),
+ * some database drivers may return the number of rows returned by that query. However, this behaviour
+ * is not guaranteed for all drivers and should not be relied on in portable applications.
+ *
+ * @return int The number of rows.
+ *
+ * @throws Exception
+ */
+ public function rowCount(): int;
+
+ /**
+ * Returns the number of columns in the result
+ *
+ * @return int The number of columns in the result. If the columns cannot be counted,
+ * this method must return 0.
+ *
+ * @throws Exception
+ */
+ public function columnCount(): int;
+
+ /**
+ * Discards the non-fetched portion of the result, enabling the originating statement to be executed again.
+ */
+ public function free(): void;
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLSrv/Connection.php b/vendor/doctrine/dbal/src/Driver/SQLSrv/Connection.php
new file mode 100644
index 0000000..16e45d1
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLSrv/Connection.php
@@ -0,0 +1,144 @@
+connection = $connection;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getServerVersion()
+ {
+ $serverInfo = sqlsrv_server_info($this->connection);
+
+ return $serverInfo['SQLServerVersion'];
+ }
+
+ public function prepare(string $sql): DriverStatement
+ {
+ return new Statement($this->connection, $sql);
+ }
+
+ public function query(string $sql): ResultInterface
+ {
+ return $this->prepare($sql)->execute();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function quote($value, $type = ParameterType::STRING)
+ {
+ if (is_int($value)) {
+ return $value;
+ }
+
+ if (is_float($value)) {
+ return sprintf('%F', $value);
+ }
+
+ return "'" . str_replace("'", "''", $value) . "'";
+ }
+
+ public function exec(string $sql): int
+ {
+ $stmt = sqlsrv_query($this->connection, $sql);
+
+ if ($stmt === false) {
+ throw Error::new();
+ }
+
+ $rowsAffected = sqlsrv_rows_affected($stmt);
+
+ if ($rowsAffected === false) {
+ throw Error::new();
+ }
+
+ return $rowsAffected;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function lastInsertId($name = null)
+ {
+ if ($name !== null) {
+ Deprecation::triggerIfCalledFromOutside(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/4687',
+ 'The usage of Connection::lastInsertId() with a sequence name is deprecated.',
+ );
+
+ $result = $this->prepare('SELECT CONVERT(VARCHAR(MAX), current_value) FROM sys.sequences WHERE name = ?')
+ ->execute([$name]);
+ } else {
+ $result = $this->query('SELECT @@IDENTITY');
+ }
+
+ return $result->fetchOne();
+ }
+
+ public function beginTransaction(): bool
+ {
+ if (! sqlsrv_begin_transaction($this->connection)) {
+ throw Error::new();
+ }
+
+ return true;
+ }
+
+ public function commit(): bool
+ {
+ if (! sqlsrv_commit($this->connection)) {
+ throw Error::new();
+ }
+
+ return true;
+ }
+
+ public function rollBack(): bool
+ {
+ if (! sqlsrv_rollback($this->connection)) {
+ throw Error::new();
+ }
+
+ return true;
+ }
+
+ /** @return resource */
+ public function getNativeConnection()
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php b/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php
new file mode 100644
index 0000000..fcbdb77
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php
@@ -0,0 +1,73 @@
+statement = $stmt;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchNumeric()
+ {
+ return $this->fetch(SQLSRV_FETCH_NUMERIC);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAssociative()
+ {
+ return $this->fetch(SQLSRV_FETCH_ASSOC);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchOne()
+ {
+ return FetchUtils::fetchOne($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllNumeric(): array
+ {
+ return FetchUtils::fetchAllNumeric($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchAllAssociative(): array
+ {
+ return FetchUtils::fetchAllAssociative($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fetchFirstColumn(): array
+ {
+ return FetchUtils::fetchFirstColumn($this);
+ }
+
+ public function rowCount(): int
+ {
+ $count = sqlsrv_rows_affected($this->statement);
+
+ if ($count !== false) {
+ return $count;
+ }
+
+ return 0;
+ }
+
+ public function columnCount(): int
+ {
+ $count = sqlsrv_num_fields($this->statement);
+
+ if ($count !== false) {
+ return $count;
+ }
+
+ return 0;
+ }
+
+ public function free(): void
+ {
+ // emulate it by fetching and discarding rows, similarly to what PDO does in this case
+ // @link http://php.net/manual/en/pdostatement.closecursor.php
+ // @link https://github.com/php/php-src/blob/php-7.0.11/ext/pdo/pdo_stmt.c#L2075
+ // deliberately do not consider multiple result sets, since doctrine/dbal doesn't support them
+ while (sqlsrv_fetch($this->statement)) {
+ }
+ }
+
+ /** @return mixed|false */
+ private function fetch(int $fetchType)
+ {
+ return sqlsrv_fetch_array($this->statement, $fetchType) ?? false;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLSrv/Statement.php b/vendor/doctrine/dbal/src/Driver/SQLSrv/Statement.php
new file mode 100644
index 0000000..227c334
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLSrv/Statement.php
@@ -0,0 +1,223 @@
+
+ */
+ private array $variables = [];
+
+ /**
+ * Bound parameter types.
+ *
+ * @var array
+ */
+ private array $types = [];
+
+ /**
+ * Append to any INSERT query to retrieve the last insert id.
+ */
+ private const LAST_INSERT_ID_SQL = ';SELECT SCOPE_IDENTITY() AS LastInsertId;';
+
+ /**
+ * @internal The statement can be only instantiated by its driver connection.
+ *
+ * @param resource $conn
+ * @param string $sql
+ */
+ public function __construct($conn, $sql)
+ {
+ $this->conn = $conn;
+ $this->sql = $sql;
+
+ if (stripos($sql, 'INSERT INTO ') !== 0) {
+ return;
+ }
+
+ $this->sql .= self::LAST_INSERT_ID_SQL;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING): bool
+ {
+ assert(is_int($param));
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ $this->variables[$param] = $value;
+ $this->types[$param] = $type;
+
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @deprecated Use {@see bindValue()} instead.
+ */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ assert(is_int($param));
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ $this->variables[$param] =& $variable;
+ $this->types[$param] = $type;
+
+ // unset the statement resource if it exists as the new one will need to be bound to the new variable
+ $this->stmt = null;
+
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function execute($params = null): ResultInterface
+ {
+ if ($params !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5556',
+ 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
+ . ' Statement::bindParam() or Statement::bindValue() instead.',
+ );
+
+ foreach ($params as $key => $val) {
+ if (is_int($key)) {
+ $this->bindValue($key + 1, $val, ParameterType::STRING);
+ } else {
+ $this->bindValue($key, $val, ParameterType::STRING);
+ }
+ }
+ }
+
+ $this->stmt ??= $this->prepare();
+
+ if (! sqlsrv_execute($this->stmt)) {
+ throw Error::new();
+ }
+
+ return new Result($this->stmt);
+ }
+
+ /**
+ * Prepares SQL Server statement resource
+ *
+ * @return resource
+ *
+ * @throws Exception
+ */
+ private function prepare()
+ {
+ $params = [];
+
+ foreach ($this->variables as $column => &$variable) {
+ switch ($this->types[$column]) {
+ case ParameterType::LARGE_OBJECT:
+ $params[$column - 1] = [
+ &$variable,
+ SQLSRV_PARAM_IN,
+ SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY),
+ SQLSRV_SQLTYPE_VARBINARY('max'),
+ ];
+ break;
+
+ case ParameterType::BINARY:
+ $params[$column - 1] = [
+ &$variable,
+ SQLSRV_PARAM_IN,
+ SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY),
+ ];
+ break;
+
+ case ParameterType::ASCII:
+ $params[$column - 1] = [
+ &$variable,
+ SQLSRV_PARAM_IN,
+ SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR),
+ ];
+ break;
+
+ default:
+ $params[$column - 1] =& $variable;
+ break;
+ }
+ }
+
+ $stmt = sqlsrv_prepare($this->conn, $this->sql, $params);
+
+ if ($stmt === false) {
+ throw Error::new();
+ }
+
+ return $stmt;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Connection.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Connection.php
new file mode 100644
index 0000000..91b9b5f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLite3/Connection.php
@@ -0,0 +1,107 @@
+connection = $connection;
+ }
+
+ public function prepare(string $sql): Statement
+ {
+ try {
+ $statement = $this->connection->prepare($sql);
+ } catch (\Exception $e) {
+ throw Exception::new($e);
+ }
+
+ assert($statement !== false);
+
+ return new Statement($this->connection, $statement);
+ }
+
+ public function query(string $sql): Result
+ {
+ try {
+ $result = $this->connection->query($sql);
+ } catch (\Exception $e) {
+ throw Exception::new($e);
+ }
+
+ assert($result !== false);
+
+ return new Result($result, $this->connection->changes());
+ }
+
+ /** @inheritDoc */
+ public function quote($value, $type = ParameterType::STRING): string
+ {
+ return sprintf('\'%s\'', SQLite3::escapeString($value));
+ }
+
+ public function exec(string $sql): int
+ {
+ try {
+ $this->connection->exec($sql);
+ } catch (\Exception $e) {
+ throw Exception::new($e);
+ }
+
+ return $this->connection->changes();
+ }
+
+ /** @inheritDoc */
+ public function lastInsertId($name = null): int
+ {
+ return $this->connection->lastInsertRowID();
+ }
+
+ public function beginTransaction(): bool
+ {
+ try {
+ return $this->connection->exec('BEGIN');
+ } catch (\Exception $e) {
+ return false;
+ }
+ }
+
+ public function commit(): bool
+ {
+ try {
+ return $this->connection->exec('COMMIT');
+ } catch (\Exception $e) {
+ return false;
+ }
+ }
+
+ public function rollBack(): bool
+ {
+ try {
+ return $this->connection->exec('ROLLBACK');
+ } catch (\Exception $e) {
+ return false;
+ }
+ }
+
+ public function getNativeConnection(): SQLite3
+ {
+ return $this->connection;
+ }
+
+ public function getServerVersion(): string
+ {
+ return SQLite3::version()['versionString'];
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Driver.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Driver.php
new file mode 100644
index 0000000..fecc481
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLite3/Driver.php
@@ -0,0 +1,49 @@
+enableExceptions(true);
+
+ UserDefinedFunctions::register([$connection, 'createFunction']);
+
+ return new Connection($connection);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Exception.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Exception.php
new file mode 100644
index 0000000..3ca1190
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLite3/Exception.php
@@ -0,0 +1,18 @@
+getMessage(), null, (int) $exception->getCode(), $exception);
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Result.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Result.php
new file mode 100644
index 0000000..3881e18
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLite3/Result.php
@@ -0,0 +1,91 @@
+result = $result;
+ $this->changes = $changes;
+ }
+
+ /** @inheritDoc */
+ public function fetchNumeric()
+ {
+ if ($this->result === null) {
+ return false;
+ }
+
+ return $this->result->fetchArray(SQLITE3_NUM);
+ }
+
+ /** @inheritDoc */
+ public function fetchAssociative()
+ {
+ if ($this->result === null) {
+ return false;
+ }
+
+ return $this->result->fetchArray(SQLITE3_ASSOC);
+ }
+
+ /** @inheritDoc */
+ public function fetchOne()
+ {
+ return FetchUtils::fetchOne($this);
+ }
+
+ /** @inheritDoc */
+ public function fetchAllNumeric(): array
+ {
+ return FetchUtils::fetchAllNumeric($this);
+ }
+
+ /** @inheritDoc */
+ public function fetchAllAssociative(): array
+ {
+ return FetchUtils::fetchAllAssociative($this);
+ }
+
+ /** @inheritDoc */
+ public function fetchFirstColumn(): array
+ {
+ return FetchUtils::fetchFirstColumn($this);
+ }
+
+ public function rowCount(): int
+ {
+ return $this->changes;
+ }
+
+ public function columnCount(): int
+ {
+ if ($this->result === null) {
+ return 0;
+ }
+
+ return $this->result->numColumns();
+ }
+
+ public function free(): void
+ {
+ if ($this->result === null) {
+ return;
+ }
+
+ $this->result->finalize();
+ $this->result = null;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Statement.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Statement.php
new file mode 100644
index 0000000..a4166aa
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLite3/Statement.php
@@ -0,0 +1,136 @@
+ SQLITE3_NULL,
+ ParameterType::INTEGER => SQLITE3_INTEGER,
+ ParameterType::STRING => SQLITE3_TEXT,
+ ParameterType::ASCII => SQLITE3_TEXT,
+ ParameterType::BINARY => SQLITE3_BLOB,
+ ParameterType::LARGE_OBJECT => SQLITE3_BLOB,
+ ParameterType::BOOLEAN => SQLITE3_INTEGER,
+ ];
+
+ private SQLite3 $connection;
+ private SQLite3Stmt $statement;
+
+ /** @internal The statement can be only instantiated by its driver connection. */
+ public function __construct(SQLite3 $connection, SQLite3Stmt $statement)
+ {
+ $this->connection = $connection;
+ $this->statement = $statement;
+ }
+
+ /**
+ * @throws UnknownParameterType
+ *
+ * {@inheritDoc}
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindValue($param, $value, $type = ParameterType::STRING): bool
+ {
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindValue() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ return $this->statement->bindValue($param, $value, $this->convertParamType($type));
+ }
+
+ /**
+ * @throws UnknownParameterType
+ *
+ * {@inheritDoc}
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool
+ {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5563',
+ '%s is deprecated. Use bindValue() instead.',
+ __METHOD__,
+ );
+
+ if (func_num_args() < 3) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5558',
+ 'Not passing $type to Statement::bindParam() is deprecated.'
+ . ' Pass the type corresponding to the parameter being bound.',
+ );
+ }
+
+ return $this->statement->bindParam($param, $variable, $this->convertParamType($type));
+ }
+
+ /** @inheritDoc */
+ public function execute($params = null): Result
+ {
+ if ($params !== null) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5556',
+ 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
+ . ' Statement::bindParam() or Statement::bindValue() instead.',
+ );
+
+ foreach ($params as $param => $value) {
+ if (is_int($param)) {
+ $this->bindValue($param + 1, $value, ParameterType::STRING);
+ } else {
+ $this->bindValue($param, $value, ParameterType::STRING);
+ }
+ }
+ }
+
+ try {
+ $result = $this->statement->execute();
+ } catch (\Exception $e) {
+ throw Exception::new($e);
+ }
+
+ assert($result !== false);
+
+ return new Result($result, $this->connection->changes());
+ }
+
+ /**
+ * @psalm-return value-of
+ *
+ * @psalm-assert ParameterType::* $type
+ */
+ private function convertParamType(int $type): int
+ {
+ if (! isset(self::PARAM_TYPE_MAP[$type])) {
+ throw UnknownParameterType::new($type);
+ }
+
+ return self::PARAM_TYPE_MAP[$type];
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php b/vendor/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php
new file mode 100644
index 0000000..5687ab0
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php
@@ -0,0 +1,21 @@
+execute() is called.
+ *
+ * As mentioned above, the named parameters are not natively supported by the mysqli driver, use executeQuery(),
+ * fetchAll(), fetchArray(), fetchColumn(), fetchAssoc() methods to have the named parameter emulated by doctrine.
+ *
+ * Most parameters are input parameters, that is, parameters that are
+ * used in a read-only fashion to build up the query. Some drivers support the invocation
+ * of stored procedures that return data as output parameters, and some also as input/output
+ * parameters that both send in data and are updated to receive it.
+ *
+ * @deprecated Use {@see bindValue()} instead.
+ *
+ * @param string|int $param Parameter identifier. For a prepared statement using named placeholders,
+ * this will be a parameter name of the form :name. For a prepared statement using
+ * question mark placeholders, this will be the 1-indexed position of the parameter.
+ * @param mixed $variable Name of the PHP variable to bind to the SQL statement parameter.
+ * @param int $type Explicit data type for the parameter using the {@see ParameterType}
+ * constants.
+ * @param int|null $length You must specify maxlength when using an OUT bind
+ * so that PHP allocates enough memory to hold the returned value.
+ *
+ * @return bool TRUE on success or FALSE on failure.
+ *
+ * @throws Exception
+ */
+ public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null);
+
+ /**
+ * Executes a prepared statement
+ *
+ * If the prepared statement included parameter markers, you must either:
+ * call {@see bindParam()} to bind PHP variables to the parameter markers:
+ * bound variables pass their value as input and receive the output value,
+ * if any, of their associated parameter markers or pass an array of input-only
+ * parameter values.
+ *
+ * @param mixed[]|null $params A numeric array of values with as many elements as there are
+ * bound parameters in the SQL statement being executed.
+ *
+ * @throws Exception
+ */
+ public function execute($params = null): Result;
+}
diff --git a/vendor/doctrine/dbal/src/DriverManager.php b/vendor/doctrine/dbal/src/DriverManager.php
new file mode 100644
index 0000000..056f420
--- /dev/null
+++ b/vendor/doctrine/dbal/src/DriverManager.php
@@ -0,0 +1,288 @@
+,
+ * driverClass?: class-string,
+ * driverOptions?: array,
+ * host?: string,
+ * password?: string,
+ * path?: string,
+ * persistent?: bool,
+ * platform?: Platforms\AbstractPlatform,
+ * port?: int,
+ * serverVersion?: string,
+ * url?: string,
+ * user?: string,
+ * unix_socket?: string,
+ * }
+ * @psalm-type Params = array{
+ * application_name?: string,
+ * charset?: string,
+ * dbname?: string,
+ * defaultTableOptions?: array,
+ * default_dbname?: string,
+ * driver?: key-of,
+ * driverClass?: class-string,
+ * driverOptions?: array,
+ * host?: string,
+ * keepSlave?: bool,
+ * keepReplica?: bool,
+ * master?: OverrideParams,
+ * memory?: bool,
+ * password?: string,
+ * path?: string,
+ * persistent?: bool,
+ * platform?: Platforms\AbstractPlatform,
+ * port?: int,
+ * primary?: OverrideParams,
+ * replica?: array,
+ * serverVersion?: string,
+ * sharding?: array,
+ * slaves?: array,
+ * url?: string,
+ * user?: string,
+ * wrapperClass?: class-string,
+ * unix_socket?: string,
+ * }
+ */
+final class DriverManager
+{
+ /**
+ * List of supported drivers and their mappings to the driver classes.
+ *
+ * To add your own driver use the 'driverClass' parameter to {@see DriverManager::getConnection()}.
+ */
+ private const DRIVER_MAP = [
+ 'pdo_mysql' => PDO\MySQL\Driver::class,
+ 'pdo_sqlite' => PDO\SQLite\Driver::class,
+ 'pdo_pgsql' => PDO\PgSQL\Driver::class,
+ 'pdo_oci' => PDO\OCI\Driver::class,
+ 'oci8' => OCI8\Driver::class,
+ 'ibm_db2' => IBMDB2\Driver::class,
+ 'pdo_sqlsrv' => PDO\SQLSrv\Driver::class,
+ 'mysqli' => Mysqli\Driver::class,
+ 'pgsql' => PgSQL\Driver::class,
+ 'sqlsrv' => SQLSrv\Driver::class,
+ 'sqlite3' => SQLite3\Driver::class,
+ ];
+
+ /**
+ * List of URL schemes from a database URL and their mappings to driver.
+ *
+ * @deprecated Use actual driver names instead.
+ *
+ * @var array
+ * @psalm-var array>
+ */
+ private static array $driverSchemeAliases = [
+ 'db2' => 'ibm_db2',
+ 'mssql' => 'pdo_sqlsrv',
+ 'mysql' => 'pdo_mysql',
+ 'mysql2' => 'pdo_mysql', // Amazon RDS, for some weird reason
+ 'postgres' => 'pdo_pgsql',
+ 'postgresql' => 'pdo_pgsql',
+ 'pgsql' => 'pdo_pgsql',
+ 'sqlite' => 'pdo_sqlite',
+ 'sqlite3' => 'pdo_sqlite',
+ ];
+
+ /**
+ * Private constructor. This class cannot be instantiated.
+ *
+ * @codeCoverageIgnore
+ */
+ private function __construct()
+ {
+ }
+
+ /**
+ * Creates a connection object based on the specified parameters.
+ * This method returns a Doctrine\DBAL\Connection which wraps the underlying
+ * driver connection.
+ *
+ * $params must contain at least one of the following.
+ *
+ * Either 'driver' with one of the array keys of {@see DRIVER_MAP},
+ * OR 'driverClass' that contains the full class name (with namespace) of the
+ * driver class to instantiate.
+ *
+ * Other (optional) parameters:
+ *
+ * user (string) :
+ * The username to use when connecting.
+ *
+ * password (string) :
+ * The password to use when connecting.
+ *
+ * driverOptions (array) :
+ * Any additional driver-specific options for the driver. These are just passed
+ * through to the driver.
+ *
+ * wrapperClass :
+ * You may specify a custom wrapper class through the 'wrapperClass'
+ * parameter but this class MUST inherit from Doctrine\DBAL\Connection.
+ *
+ * driverClass :
+ * The driver class to use.
+ *
+ * @param Configuration|null $config The configuration to use.
+ * @param EventManager|null $eventManager The event manager to use.
+ * @psalm-param Params $params
+ *
+ * @psalm-return ($params is array{wrapperClass: class-string} ? T : Connection)
+ *
+ * @throws Exception
+ *
+ * @template T of Connection
+ */
+ public static function getConnection(
+ #[SensitiveParameter]
+ array $params,
+ ?Configuration $config = null,
+ ?EventManager $eventManager = null
+ ): Connection {
+ // create default config and event manager, if not set
+ $config ??= new Configuration();
+ $eventManager ??= new EventManager();
+ $params = self::parseDatabaseUrl($params);
+
+ // URL support for PrimaryReplicaConnection
+ if (isset($params['primary'])) {
+ $params['primary'] = self::parseDatabaseUrl($params['primary']);
+ }
+
+ if (isset($params['replica'])) {
+ foreach ($params['replica'] as $key => $replicaParams) {
+ $params['replica'][$key] = self::parseDatabaseUrl($replicaParams);
+ }
+ }
+
+ $driver = self::createDriver($params['driver'] ?? null, $params['driverClass'] ?? null);
+
+ foreach ($config->getMiddlewares() as $middleware) {
+ $driver = $middleware->wrap($driver);
+ }
+
+ $wrapperClass = $params['wrapperClass'] ?? Connection::class;
+ if (! is_a($wrapperClass, Connection::class, true)) {
+ throw Exception::invalidWrapperClass($wrapperClass);
+ }
+
+ return new $wrapperClass($params, $driver, $config, $eventManager);
+ }
+
+ /**
+ * Returns the list of supported drivers.
+ *
+ * @return string[]
+ * @psalm-return list>
+ */
+ public static function getAvailableDrivers(): array
+ {
+ return array_keys(self::DRIVER_MAP);
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @psalm-assert key-of|null $driver
+ * @psalm-assert class-string|null $driverClass
+ */
+ private static function createDriver(?string $driver, ?string $driverClass): Driver
+ {
+ if ($driverClass === null) {
+ if ($driver === null) {
+ throw Exception::driverRequired();
+ }
+
+ if (! isset(self::DRIVER_MAP[$driver])) {
+ throw Exception::unknownDriver($driver, array_keys(self::DRIVER_MAP));
+ }
+
+ $driverClass = self::DRIVER_MAP[$driver];
+ } elseif (! is_a($driverClass, Driver::class, true)) {
+ throw Exception::invalidDriverClass($driverClass);
+ }
+
+ return new $driverClass();
+ }
+
+ /**
+ * Extracts parts from a database URL, if present, and returns an
+ * updated list of parameters.
+ *
+ * @param mixed[] $params The list of parameters.
+ * @psalm-param Params $params
+ *
+ * @return mixed[] A modified list of parameters with info from a database
+ * URL extracted into indidivual parameter parts.
+ * @psalm-return Params
+ *
+ * @throws Exception
+ */
+ private static function parseDatabaseUrl(
+ #[SensitiveParameter]
+ array $params
+ ): array {
+ if (! isset($params['url'])) {
+ return $params;
+ }
+
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/pull/5843',
+ 'The "url" connection parameter is deprecated. Please use %s to parse a database url before calling %s.',
+ DsnParser::class,
+ self::class,
+ );
+
+ $parser = new DsnParser(self::$driverSchemeAliases);
+ try {
+ $parsedParams = $parser->parse($params['url']);
+ } catch (MalformedDsnException $e) {
+ throw new Exception('Malformed parameter "url".', 0, $e);
+ }
+
+ if (isset($parsedParams['driver'])) {
+ // The requested driver from the URL scheme takes precedence
+ // over the default custom driver from the connection parameters (if any).
+ unset($params['driverClass']);
+ }
+
+ $params = array_merge($params, $parsedParams);
+
+ // If a schemeless connection URL is given, we require a default driver or default custom driver
+ // as connection parameter.
+ if (! isset($params['driverClass']) && ! isset($params['driver'])) {
+ throw Exception::driverRequired($params['url']);
+ }
+
+ return $params;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/ConnectionEventArgs.php b/vendor/doctrine/dbal/src/Event/ConnectionEventArgs.php
new file mode 100644
index 0000000..9a69c25
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/ConnectionEventArgs.php
@@ -0,0 +1,27 @@
+connection = $connection;
+ }
+
+ /** @return Connection */
+ public function getConnection()
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php b/vendor/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php
new file mode 100644
index 0000000..9598f43
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php
@@ -0,0 +1,77 @@
+ 'HH24:MI:SS',
+ 'NLS_DATE_FORMAT' => 'YYYY-MM-DD HH24:MI:SS',
+ 'NLS_TIMESTAMP_FORMAT' => 'YYYY-MM-DD HH24:MI:SS',
+ 'NLS_TIMESTAMP_TZ_FORMAT' => 'YYYY-MM-DD HH24:MI:SS TZH:TZM',
+ 'NLS_NUMERIC_CHARACTERS' => '.,',
+ ];
+
+ /** @param string[] $oracleSessionVars */
+ public function __construct(array $oracleSessionVars = [])
+ {
+ $this->_defaultSessionVars = array_merge($this->_defaultSessionVars, $oracleSessionVars);
+ }
+
+ /**
+ * @return void
+ *
+ * @throws Exception
+ */
+ public function postConnect(ConnectionEventArgs $args)
+ {
+ if (count($this->_defaultSessionVars) === 0) {
+ return;
+ }
+
+ $vars = [];
+ foreach (array_change_key_case($this->_defaultSessionVars, CASE_UPPER) as $option => $value) {
+ if ($option === 'CURRENT_SCHEMA') {
+ $vars[] = $option . ' = ' . $value;
+ } else {
+ $vars[] = $option . " = '" . $value . "'";
+ }
+ }
+
+ $sql = 'ALTER SESSION SET ' . implode(' ', $vars);
+ $args->getConnection()->executeStatement($sql);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getSubscribedEvents()
+ {
+ return [Events::postConnect];
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php b/vendor/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php
new file mode 100644
index 0000000..4ce32d6
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php
@@ -0,0 +1,43 @@
+sql = $sql;
+ }
+
+ /**
+ * @return void
+ *
+ * @throws Exception
+ */
+ public function postConnect(ConnectionEventArgs $args)
+ {
+ $args->getConnection()->executeStatement($this->sql);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getSubscribedEvents()
+ {
+ return [Events::postConnect];
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php b/vendor/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php
new file mode 100644
index 0000000..950f05f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php
@@ -0,0 +1,30 @@
+getConnection()->executeStatement('PRAGMA foreign_keys=ON');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getSubscribedEvents()
+ {
+ return [Events::postConnect];
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php
new file mode 100644
index 0000000..9f3ff6e
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php
@@ -0,0 +1,81 @@
+column = $column;
+ $this->tableDiff = $tableDiff;
+ $this->platform = $platform;
+ }
+
+ /** @return Column */
+ public function getColumn()
+ {
+ return $this->column;
+ }
+
+ /** @return TableDiff */
+ public function getTableDiff()
+ {
+ return $this->tableDiff;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
+ *
+ * @param string|string[] $sql
+ *
+ * @return SchemaAlterTableAddColumnEventArgs
+ */
+ public function addSql($sql)
+ {
+ if (is_array($sql)) {
+ Deprecation::trigger(
+ 'doctrine/dbal',
+ 'https://github.com/doctrine/dbal/issues/3580',
+ 'Passing multiple SQL statements as an array to SchemaAlterTableAddColumnEventaArrgs::addSql() ' .
+ 'is deprecated. Pass each statement as an individual argument instead.',
+ );
+ }
+
+ $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
+
+ return $this;
+ }
+
+ /** @return string[] */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php
new file mode 100644
index 0000000..9ba37aa
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php
@@ -0,0 +1,71 @@
+columnDiff = $columnDiff;
+ $this->tableDiff = $tableDiff;
+ $this->platform = $platform;
+ }
+
+ /** @return ColumnDiff */
+ public function getColumnDiff()
+ {
+ return $this->columnDiff;
+ }
+
+ /** @return TableDiff */
+ public function getTableDiff()
+ {
+ return $this->tableDiff;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
+ *
+ * @param string|string[] $sql
+ *
+ * @return SchemaAlterTableChangeColumnEventArgs
+ */
+ public function addSql($sql)
+ {
+ $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
+
+ return $this;
+ }
+
+ /** @return string[] */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php
new file mode 100644
index 0000000..07c065a
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php
@@ -0,0 +1,62 @@
+tableDiff = $tableDiff;
+ $this->platform = $platform;
+ }
+
+ /** @return TableDiff */
+ public function getTableDiff()
+ {
+ return $this->tableDiff;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
+ *
+ * @param string|string[] $sql
+ *
+ * @return SchemaAlterTableEventArgs
+ */
+ public function addSql($sql)
+ {
+ $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
+
+ return $this;
+ }
+
+ /** @return string[] */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php
new file mode 100644
index 0000000..4122b41
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php
@@ -0,0 +1,71 @@
+column = $column;
+ $this->tableDiff = $tableDiff;
+ $this->platform = $platform;
+ }
+
+ /** @return Column */
+ public function getColumn()
+ {
+ return $this->column;
+ }
+
+ /** @return TableDiff */
+ public function getTableDiff()
+ {
+ return $this->tableDiff;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
+ *
+ * @param string|string[] $sql
+ *
+ * @return SchemaAlterTableRemoveColumnEventArgs
+ */
+ public function addSql($sql)
+ {
+ $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
+
+ return $this;
+ }
+
+ /** @return string[] */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php
new file mode 100644
index 0000000..21d3c16
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php
@@ -0,0 +1,82 @@
+oldColumnName = $oldColumnName;
+ $this->column = $column;
+ $this->tableDiff = $tableDiff;
+ $this->platform = $platform;
+ }
+
+ /** @return string */
+ public function getOldColumnName()
+ {
+ return $this->oldColumnName;
+ }
+
+ /** @return Column */
+ public function getColumn()
+ {
+ return $this->column;
+ }
+
+ /** @return TableDiff */
+ public function getTableDiff()
+ {
+ return $this->tableDiff;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
+ *
+ * @param string|string[] $sql
+ *
+ * @return SchemaAlterTableRenameColumnEventArgs
+ */
+ public function addSql($sql)
+ {
+ $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
+
+ return $this;
+ }
+
+ /** @return string[] */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php
new file mode 100644
index 0000000..04fcbde
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php
@@ -0,0 +1,87 @@
+tableColumn = $tableColumn;
+ $this->table = $table;
+ $this->database = $database;
+ $this->connection = $connection;
+ }
+
+ /**
+ * Allows to clear the column which means the column will be excluded from
+ * tables column list.
+ *
+ * @return SchemaColumnDefinitionEventArgs
+ */
+ public function setColumn(?Column $column = null)
+ {
+ $this->column = $column;
+
+ return $this;
+ }
+
+ /** @return Column|null */
+ public function getColumn()
+ {
+ return $this->column;
+ }
+
+ /** @return mixed[] */
+ public function getTableColumn()
+ {
+ return $this->tableColumn;
+ }
+
+ /** @return string */
+ public function getTable()
+ {
+ return $this->table;
+ }
+
+ /** @return string */
+ public function getDatabase()
+ {
+ return $this->database;
+ }
+
+ /** @return Connection */
+ public function getConnection()
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php
new file mode 100644
index 0000000..54f134d
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php
@@ -0,0 +1,71 @@
+column = $column;
+ $this->table = $table;
+ $this->platform = $platform;
+ }
+
+ /** @return Column */
+ public function getColumn()
+ {
+ return $this->column;
+ }
+
+ /** @return Table */
+ public function getTable()
+ {
+ return $this->table;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
+ *
+ * @param string|string[] $sql
+ *
+ * @return SchemaCreateTableColumnEventArgs
+ */
+ public function addSql($sql)
+ {
+ $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
+
+ return $this;
+ }
+
+ /** @return string[] */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php
new file mode 100644
index 0000000..a7d548d
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php
@@ -0,0 +1,87 @@
+table = $table;
+ $this->columns = $columns;
+ $this->options = $options;
+ $this->platform = $platform;
+ }
+
+ /** @return Table */
+ public function getTable()
+ {
+ return $this->table;
+ }
+
+ /** @return mixed[][] */
+ public function getColumns()
+ {
+ return $this->columns;
+ }
+
+ /** @return mixed[] */
+ public function getOptions()
+ {
+ return $this->options;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
+ *
+ * @param string|string[] $sql
+ *
+ * @return SchemaCreateTableEventArgs
+ */
+ public function addSql($sql)
+ {
+ $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
+
+ return $this;
+ }
+
+ /** @return string[] */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php
new file mode 100644
index 0000000..f45e3a1
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php
@@ -0,0 +1,64 @@
+table = $table;
+ $this->platform = $platform;
+ }
+
+ /** @return string|Table */
+ public function getTable()
+ {
+ return $this->table;
+ }
+
+ /** @return AbstractPlatform */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+
+ /**
+ * @param string $sql
+ *
+ * @return SchemaDropTableEventArgs
+ */
+ public function setSql($sql)
+ {
+ $this->sql = $sql;
+
+ return $this;
+ }
+
+ /** @return string|null */
+ public function getSql()
+ {
+ return $this->sql;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaEventArgs.php
new file mode 100644
index 0000000..77d1d39
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaEventArgs.php
@@ -0,0 +1,29 @@
+preventDefault = true;
+
+ return $this;
+ }
+
+ /** @return bool */
+ public function isDefaultPrevented()
+ {
+ return $this->preventDefault;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php
new file mode 100644
index 0000000..dbee55a
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php
@@ -0,0 +1,75 @@
+tableIndex = $tableIndex;
+ $this->table = $table;
+ $this->connection = $connection;
+ }
+
+ /**
+ * Allows to clear the index which means the index will be excluded from tables index list.
+ *
+ * @return SchemaIndexDefinitionEventArgs
+ */
+ public function setIndex(?Index $index = null)
+ {
+ $this->index = $index;
+
+ return $this;
+ }
+
+ /** @return Index|null */
+ public function getIndex()
+ {
+ return $this->index;
+ }
+
+ /** @return mixed[] */
+ public function getTableIndex()
+ {
+ return $this->tableIndex;
+ }
+
+ /** @return string */
+ public function getTable()
+ {
+ return $this->table;
+ }
+
+ /** @return Connection */
+ public function getConnection()
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/TransactionBeginEventArgs.php b/vendor/doctrine/dbal/src/Event/TransactionBeginEventArgs.php
new file mode 100644
index 0000000..be4ccdf
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/TransactionBeginEventArgs.php
@@ -0,0 +1,10 @@
+connection = $connection;
+ }
+
+ public function getConnection(): Connection
+ {
+ return $this->connection;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php b/vendor/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php
new file mode 100644
index 0000000..9e6e650
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php
@@ -0,0 +1,10 @@
+getMessage();
+ } else {
+ $message = 'An exception occurred in the driver: ' . $driverException->getMessage();
+ }
+
+ parent::__construct($message, $driverException->getCode(), $driverException);
+
+ $this->query = $query;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getSQLState()
+ {
+ $previous = $this->getPrevious();
+ assert($previous instanceof TheDriverException);
+
+ return $previous->getSQLState();
+ }
+
+ public function getQuery(): ?Query
+ {
+ return $this->query;
+ }
+}
diff --git a/vendor/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php b/vendor/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php
new file mode 100644
index 0000000..f1a612b
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php
@@ -0,0 +1,12 @@
+|array */
+ private array $originalParameters;
+
+ /** @var array|array