Browse Source

Remove ignored files

rkljw 2 months ago
parent
commit
f04c8ad51f
100 changed files with 1313 additions and 18016 deletions
  1. 1 1
      .gitignore
  2. 23 23
      .watcher.php
  3. 54 54
      Dockerfile
  4. 21 21
      LICENSE
  5. 63 63
      README.md
  6. 23 23
      app/Constants/ErrorCode.php
  7. 30 30
      app/Controller/AbstractController.php
  8. 38 38
      app/Controller/IndexController.php
  9. 42 42
      app/Exception/Handler/JsonRpcExceptionHandler.php
  10. 66 66
      app/JsonRpc/LinkService.php
  11. 35 35
      app/Listener/ResumeExitCoordinatorListener.php
  12. 27 27
      app/Model/Article.php
  13. 27 27
      app/Model/ArticleData.php
  14. 27 27
      app/Model/Category.php
  15. 27 27
      app/Model/District.php
  16. 27 27
      app/Model/LetterOfComplaint.php
  17. 27 27
      app/Model/LetterType.php
  18. 27 27
      app/Model/Link.php
  19. 19 19
      app/Model/Model.php
  20. 27 27
      app/Model/TemplateClass.php
  21. 27 27
      app/Model/UserLevel.php
  22. 27 27
      app/Model/WebsiteCategory.php
  23. 27 27
      app/Model/WebsiteColumn.php
  24. 27 27
      app/Model/WebsiteRole.php
  25. 27 27
      app/Model/WebsiteRoleUser.php
  26. 4 1
      app/Service/MinioService.php
  27. 25 25
      app/Tools/Result.php
  28. 21 21
      composer.json
  29. 13 13
      config/autoload/aspects.php
  30. 19 19
      config/autoload/cache.php
  31. 13 13
      config/autoload/commands.php
  32. 28 28
      config/autoload/config_center.php
  33. 13 13
      config/autoload/databases.php
  34. 44 44
      config/autoload/devtool.php
  35. 22 22
      config/autoload/exceptions.php
  36. 15 15
      config/autoload/listeners.php
  37. 21 21
      config/autoload/logger.php
  38. 15 15
      config/autoload/middlewares.php
  39. 13 13
      config/autoload/processes.php
  40. 29 29
      config/autoload/redis.php
  41. 33 33
      config/autoload/server.php
  42. 21 21
      config/container.php
  43. 18 18
      config/routes.php
  44. 30 30
      deploy.test.yml
  45. 18 18
      docker-compose.yml
  46. 14 14
      phpstan.neon.dist
  47. 16 16
      phpunit.xml.dist
  48. 27 27
      test/Cases/ExampleTest.php
  49. 45 45
      test/HttpTestCase.php
  50. 30 30
      test/bootstrap.php
  51. 0 25
      vendor/autoload.php
  52. 0 21
      vendor/carbonphp/carbon-doctrine-types/LICENSE
  53. 0 14
      vendor/carbonphp/carbon-doctrine-types/README.md
  54. 0 36
      vendor/carbonphp/carbon-doctrine-types/composer.json
  55. 0 16
      vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php
  56. 0 9
      vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonImmutableType.php
  57. 0 9
      vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonType.php
  58. 0 131
      vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonTypeConverter.php
  59. 0 30
      vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
  60. 0 32
      vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeImmutableType.php
  61. 0 24
      vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php
  62. 0 2
      vendor/clue/ndjson-react/.github/FUNDING.yml
  63. 0 75
      vendor/clue/ndjson-react/CHANGELOG.md
  64. 0 21
      vendor/clue/ndjson-react/LICENSE
  65. 0 365
      vendor/clue/ndjson-react/README.md
  66. 0 31
      vendor/clue/ndjson-react/composer.json
  67. 0 166
      vendor/clue/ndjson-react/src/Decoder.php
  68. 0 144
      vendor/clue/ndjson-react/src/Encoder.php
  69. 0 39
      vendor/composer/autoload_files.php
  70. 0 133
      vendor/composer/autoload_psr4.php
  71. 0 11064
      vendor/composer/installed.json
  72. 0 19
      vendor/doctrine/annotations/LICENSE
  73. 0 24
      vendor/doctrine/annotations/README.md
  74. 0 18
      vendor/doctrine/annotations/UPGRADE.md
  75. 0 72
      vendor/doctrine/annotations/composer.json
  76. 0 189
      vendor/doctrine/annotations/docs/en/annotations.rst
  77. 0 443
      vendor/doctrine/annotations/docs/en/custom.rst
  78. 0 102
      vendor/doctrine/annotations/docs/en/index.rst
  79. 0 6
      vendor/doctrine/annotations/docs/en/sidebar.rst
  80. 0 54
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php
  81. 0 21
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php
  82. 0 15
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php
  83. 0 69
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php
  84. 0 43
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php
  85. 0 13
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/NamedArgumentConstructor.php
  86. 0 13
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php
  87. 0 101
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php
  88. 0 158
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php
  89. 0 385
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php
  90. 0 43
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php
  91. 0 131
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php
  92. 0 1494
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
  93. 0 178
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/ImplicitlyIgnoredAnnotationNames.php
  94. 0 99
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php
  95. 0 78
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php
  96. 0 232
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PsrCachedReader.php
  97. 0 80
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php
  98. 0 205
      vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php
  99. 0 15
      vendor/doctrine/annotations/psalm.xml
  100. 0 19
      vendor/doctrine/inflector/LICENSE

+ 1 - 1
.gitignore

@@ -18,7 +18,7 @@ runtime/logs/hyperf.log
 *.air
 *.ipa
 *.apk
-
+.env
 # Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
 # should NOT be excluded as they contain compiler settings and other important
 # information for Eclipse / Flash Builder.

+ 23 - 23
.watcher.php

@@ -1,23 +1,23 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-use Hyperf\Watcher\Driver\ScanFileDriver;
-
-return [
-    'driver' => ScanFileDriver::class,
-    'bin' => PHP_BINARY,
-    'watch' => [
-        'dir' => ['app', 'config'],
-        'file' => ['.env'],
-        'scan_interval' => 2000,
-    ],
-    'ext' => ['.php', '.env'],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\Watcher\Driver\ScanFileDriver;
+
+return [
+    'driver' => ScanFileDriver::class,
+    'bin' => PHP_BINARY,
+    'watch' => [
+        'dir' => ['app', 'config'],
+        'file' => ['.env'],
+        'scan_interval' => 2000,
+    ],
+    'ext' => ['.php', '.env'],
+];

+ 54 - 54
Dockerfile

@@ -1,54 +1,54 @@
-# Default Dockerfile
-#
-# @link     https://www.hyperf.io
-# @document https://hyperf.wiki
-# @contact  group@hyperf.io
-# @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
-
-FROM hyperf/hyperf:8.3-alpine-v3.19-swoole
-LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"
-
-##
-# ---------- env settings ----------
-##
-# --build-arg timezone=Asia/Shanghai
-ARG timezone
-
-ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \
-    APP_ENV=prod \
-    SCAN_CACHEABLE=(true)
-
-# update
-RUN set -ex \
-    # show php version and extensions
-    && php -v \
-    && php -m \
-    && php --ri swoole \
-    #  ---------- some config ----------
-    && cd /etc/php* \
-    # - config PHP
-    && { \
-        echo "upload_max_filesize=128M"; \
-        echo "post_max_size=128M"; \
-        echo "memory_limit=1G"; \
-        echo "date.timezone=${TIMEZONE}"; \
-    } | tee conf.d/99_overrides.ini \
-    # - config timezone
-    && ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
-    && echo "${TIMEZONE}" > /etc/timezone \
-    # ---------- clear works ----------
-    && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \
-    && echo -e "\033[42;37m Build Completed :).\033[0m\n"
-
-WORKDIR /opt/www
-
-# Composer Cache
-# COPY ./composer.* /opt/www/
-# RUN composer install --no-dev --no-scripts
-
-COPY . /opt/www
-RUN composer install --no-dev -o && php bin/hyperf.php
-
-EXPOSE 9501
-
-ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"]
+# Default Dockerfile
+#
+# @link     https://www.hyperf.io
+# @document https://hyperf.wiki
+# @contact  group@hyperf.io
+# @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+
+FROM hyperf/hyperf:8.3-alpine-v3.19-swoole
+LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"
+
+##
+# ---------- env settings ----------
+##
+# --build-arg timezone=Asia/Shanghai
+ARG timezone
+
+ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \
+    APP_ENV=prod \
+    SCAN_CACHEABLE=(true)
+
+# update
+RUN set -ex \
+    # show php version and extensions
+    && php -v \
+    && php -m \
+    && php --ri swoole \
+    #  ---------- some config ----------
+    && cd /etc/php* \
+    # - config PHP
+    && { \
+        echo "upload_max_filesize=128M"; \
+        echo "post_max_size=128M"; \
+        echo "memory_limit=1G"; \
+        echo "date.timezone=${TIMEZONE}"; \
+    } | tee conf.d/99_overrides.ini \
+    # - config timezone
+    && ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
+    && echo "${TIMEZONE}" > /etc/timezone \
+    # ---------- clear works ----------
+    && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \
+    && echo -e "\033[42;37m Build Completed :).\033[0m\n"
+
+WORKDIR /opt/www
+
+# Composer Cache
+# COPY ./composer.* /opt/www/
+# RUN composer install --no-dev --no-scripts
+
+COPY . /opt/www
+RUN composer install --no-dev -o && php bin/hyperf.php
+
+EXPOSE 9501
+
+ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"]

+ 21 - 21
LICENSE

@@ -1,21 +1,21 @@
-The MIT License (MIT)
-
-Copyright (c) Hyperf
-
-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.
+The MIT License (MIT)
+
+Copyright (c) Hyperf
+
+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.

+ 63 - 63
README.md

@@ -1,63 +1,63 @@
-# Introduction
-
-This is a skeleton application using the Hyperf framework. This application is meant to be used as a starting place for those looking to get their feet wet with Hyperf Framework.
-
-# Requirements
-
-Hyperf has some requirements for the system environment, it can only run under Linux and Mac environment, but due to the development of Docker virtualization technology, Docker for Windows can also be used as the running environment under Windows.
-
-The various versions of Dockerfile have been prepared for you in the [hyperf/hyperf-docker](https://github.com/hyperf/hyperf-docker) project, or directly based on the already built [hyperf/hyperf](https://hub.docker.com/r/hyperf/hyperf) Image to run.
-
-When you don't want to use Docker as the basis for your running environment, you need to make sure that your operating environment meets the following requirements:  
-
- - PHP >= 8.1
- - Any of the following network engines
-   - Swoole PHP extension >= 5.0,with `swoole.use_shortname` set to `Off` in your `php.ini`
-   - Swow PHP extension >= 1.3
- - JSON PHP extension
- - Pcntl PHP extension
- - OpenSSL PHP extension (If you need to use the HTTPS)
- - PDO PHP extension (If you need to use the MySQL Client)
- - Redis PHP extension (If you need to use the Redis Client)
- - Protobuf PHP extension (If you need to use the gRPC Server or Client)
-
-# Installation using Composer
-
-The easiest way to create a new Hyperf project is to use [Composer](https://getcomposer.org/). If you don't have it already installed, then please install as per [the documentation](https://getcomposer.org/download/).
-
-To create your new Hyperf project:
-
-```bash
-composer create-project hyperf/hyperf-skeleton path/to/install
-```
-
-If your development environment is based on Docker you can use the official Composer image to create a new Hyperf project:
-
-```bash
-docker run --rm -it -v $(pwd):/app composer create-project --ignore-platform-reqs hyperf/hyperf-skeleton path/to/install
-```
-
-# Getting started
-
-Once installed, you can run the server immediately using the command below.
-
-```bash
-cd path/to/install
-php bin/hyperf.php start
-```
-
-Or if in a Docker based environment you can use the `docker-compose.yml` provided by the template:
-
-```bash
-cd path/to/install
-docker-compose up
-```
-
-This will start the cli-server on port `9501`, and bind it to all network interfaces. You can then visit the site at `http://localhost:9501/` which will bring up Hyperf default home page.
-
-## Hints
-
-- A nice tip is to rename `hyperf-skeleton` of files like `composer.json` and `docker-compose.yml` to your actual project name.
-- Take a look at `config/routes.php` and `app/Controller/IndexController.php` to see an example of a HTTP entrypoint.
-
-**Remember:** you can always replace the contents of this README.md file to something that fits your project description.
+# Introduction
+
+This is a skeleton application using the Hyperf framework. This application is meant to be used as a starting place for those looking to get their feet wet with Hyperf Framework.
+
+# Requirements
+
+Hyperf has some requirements for the system environment, it can only run under Linux and Mac environment, but due to the development of Docker virtualization technology, Docker for Windows can also be used as the running environment under Windows.
+
+The various versions of Dockerfile have been prepared for you in the [hyperf/hyperf-docker](https://github.com/hyperf/hyperf-docker) project, or directly based on the already built [hyperf/hyperf](https://hub.docker.com/r/hyperf/hyperf) Image to run.
+
+When you don't want to use Docker as the basis for your running environment, you need to make sure that your operating environment meets the following requirements:  
+
+ - PHP >= 8.1
+ - Any of the following network engines
+   - Swoole PHP extension >= 5.0,with `swoole.use_shortname` set to `Off` in your `php.ini`
+   - Swow PHP extension >= 1.3
+ - JSON PHP extension
+ - Pcntl PHP extension
+ - OpenSSL PHP extension (If you need to use the HTTPS)
+ - PDO PHP extension (If you need to use the MySQL Client)
+ - Redis PHP extension (If you need to use the Redis Client)
+ - Protobuf PHP extension (If you need to use the gRPC Server or Client)
+
+# Installation using Composer
+
+The easiest way to create a new Hyperf project is to use [Composer](https://getcomposer.org/). If you don't have it already installed, then please install as per [the documentation](https://getcomposer.org/download/).
+
+To create your new Hyperf project:
+
+```bash
+composer create-project hyperf/hyperf-skeleton path/to/install
+```
+
+If your development environment is based on Docker you can use the official Composer image to create a new Hyperf project:
+
+```bash
+docker run --rm -it -v $(pwd):/app composer create-project --ignore-platform-reqs hyperf/hyperf-skeleton path/to/install
+```
+
+# Getting started
+
+Once installed, you can run the server immediately using the command below.
+
+```bash
+cd path/to/install
+php bin/hyperf.php start
+```
+
+Or if in a Docker based environment you can use the `docker-compose.yml` provided by the template:
+
+```bash
+cd path/to/install
+docker-compose up
+```
+
+This will start the cli-server on port `9501`, and bind it to all network interfaces. You can then visit the site at `http://localhost:9501/` which will bring up Hyperf default home page.
+
+## Hints
+
+- A nice tip is to rename `hyperf-skeleton` of files like `composer.json` and `docker-compose.yml` to your actual project name.
+- Take a look at `config/routes.php` and `app/Controller/IndexController.php` to see an example of a HTTP entrypoint.
+
+**Remember:** you can always replace the contents of this README.md file to something that fits your project description.

+ 23 - 23
app/Constants/ErrorCode.php

@@ -1,24 +1,24 @@
-<?php
-declare(strict_types=1);
-namespace App\Constants;
-use Hyperf\Constants\AbstractConstants;
-use Hyperf\Constants\Annotation\Constants;
-/**
- * @Constants
- */
-#[Constants]
-class ErrorCode extends AbstractConstants
-{
-    /**
-     * @Message("Server Error!")
-     */
-    const SERVER_ERROR = 500;
-    /**
-     * @Message("success")
-     */
-    public const SUCCESS = 200;
-    /**
-     * @Message("error")
-     */
-    public const ERROR = 0;
+<?php
+declare(strict_types=1);
+namespace App\Constants;
+use Hyperf\Constants\AbstractConstants;
+use Hyperf\Constants\Annotation\Constants;
+/**
+ * @Constants
+ */
+#[Constants]
+class ErrorCode extends AbstractConstants
+{
+    /**
+     * @Message("Server Error!")
+     */
+    const SERVER_ERROR = 500;
+    /**
+     * @Message("success")
+     */
+    public const SUCCESS = 200;
+    /**
+     * @Message("error")
+     */
+    public const ERROR = 0;
 }

+ 30 - 30
app/Controller/AbstractController.php

@@ -1,30 +1,30 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-
-namespace App\Controller;
-
-use Hyperf\Di\Annotation\Inject;
-use Hyperf\HttpServer\Contract\RequestInterface;
-use Hyperf\HttpServer\Contract\ResponseInterface;
-use Psr\Container\ContainerInterface;
-
-abstract class AbstractController
-{
-    #[Inject]
-    protected ContainerInterface $container;
-
-    #[Inject]
-    protected RequestInterface $request;
-
-    #[Inject]
-    protected ResponseInterface $response;
-}
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+
+namespace App\Controller;
+
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\HttpServer\Contract\RequestInterface;
+use Hyperf\HttpServer\Contract\ResponseInterface;
+use Psr\Container\ContainerInterface;
+
+abstract class AbstractController
+{
+    #[Inject]
+    protected ContainerInterface $container;
+
+    #[Inject]
+    protected RequestInterface $request;
+
+    #[Inject]
+    protected ResponseInterface $response;
+}

+ 38 - 38
app/Controller/IndexController.php

@@ -1,38 +1,38 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-
-namespace App\Exception\Handler;
-
-use Hyperf\Contract\StdoutLoggerInterface;
-use Hyperf\ExceptionHandler\ExceptionHandler;
-use Hyperf\HttpMessage\Stream\SwooleStream;
-use Psr\Http\Message\ResponseInterface;
-use Throwable;
-
-class AppExceptionHandler extends ExceptionHandler
-{
-    public function __construct(protected StdoutLoggerInterface $logger)
-    {
-    }
-
-    public function handle(Throwable $throwable, ResponseInterface $response)
-    {
-        $this->logger->error(sprintf('%s[%s] in %s', $throwable->getMessage(), $throwable->getLine(), $throwable->getFile()));
-        $this->logger->error($throwable->getTraceAsString());
-        return $response->withHeader('Server', 'Hyperf')->withStatus(500)->withBody(new SwooleStream('Internal Server Error.'));
-    }
-
-    public function isValid(Throwable $throwable): bool
-    {
-        return true;
-    }
-}
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+
+namespace App\Exception\Handler;
+
+use Hyperf\Contract\StdoutLoggerInterface;
+use Hyperf\ExceptionHandler\ExceptionHandler;
+use Hyperf\HttpMessage\Stream\SwooleStream;
+use Psr\Http\Message\ResponseInterface;
+use Throwable;
+
+class AppExceptionHandler extends ExceptionHandler
+{
+    public function __construct(protected StdoutLoggerInterface $logger)
+    {
+    }
+
+    public function handle(Throwable $throwable, ResponseInterface $response)
+    {
+        $this->logger->error(sprintf('%s[%s] in %s', $throwable->getMessage(), $throwable->getLine(), $throwable->getFile()));
+        $this->logger->error($throwable->getTraceAsString());
+        return $response->withHeader('Server', 'Hyperf')->withStatus(500)->withBody(new SwooleStream('Internal Server Error.'));
+    }
+
+    public function isValid(Throwable $throwable): bool
+    {
+        return true;
+    }
+}

+ 42 - 42
app/Exception/Handler/JsonRpcExceptionHandler.php

@@ -1,43 +1,43 @@
-<?php
-declare(strict_types=1);
-namespace App\Exception\Handler;
-use http\Env;
-use Hyperf\Config\Annotation\Value;
-use Hyperf\Contract\ConfigInterface;
-use Hyperf\ExceptionHandler\ExceptionHandler;
-use Hyperf\HttpMessage\Stream\SwooleStream;
-use Hyperf\Context\ApplicationContext;
-use Psr\Http\Message\ResponseInterface;
-use Throwable;
-use function Hyperf\Support\env;
-class JsonRpcExceptionHandler extends ExceptionHandler
-{
-    /**
-     * @Value("app_name")
-     * @var $appName
-     */
-    public function handle(Throwable $throwable, ResponseInterface $response)
-    {
-        $responseContents = $response->getBody()->getContents();
-        $responseContents = json_decode($responseContents, true);
-        if (!empty($responseContents['error'])) {
-            $port = null;
-            $config = ApplicationContext::getContainer()->get(ConfigInterface::class);
-            $servers = $config->get('server.servers');
-            foreach ($servers as $k => $server) {
-                if ($server['name'] == 'jsonrpc-http') {
-                    $port = $server['port'];
-                    break;
-                }
-            }
-            $app_name = env("APP_NAME");
-            $responseContents['error']['message'] .= " - {$app_name}:{$port}";
-        }
-        $data = json_encode($responseContents, JSON_UNESCAPED_UNICODE);
-        return $response->withStatus(200)->withBody(new SwooleStream($data));
-    }
-    public function isValid(Throwable $throwable): bool
-    {
-        return true;
-    }
+<?php
+declare(strict_types=1);
+namespace App\Exception\Handler;
+use http\Env;
+use Hyperf\Config\Annotation\Value;
+use Hyperf\Contract\ConfigInterface;
+use Hyperf\ExceptionHandler\ExceptionHandler;
+use Hyperf\HttpMessage\Stream\SwooleStream;
+use Hyperf\Context\ApplicationContext;
+use Psr\Http\Message\ResponseInterface;
+use Throwable;
+use function Hyperf\Support\env;
+class JsonRpcExceptionHandler extends ExceptionHandler
+{
+    /**
+     * @Value("app_name")
+     * @var $appName
+     */
+    public function handle(Throwable $throwable, ResponseInterface $response)
+    {
+        $responseContents = $response->getBody()->getContents();
+        $responseContents = json_decode($responseContents, true);
+        if (!empty($responseContents['error'])) {
+            $port = null;
+            $config = ApplicationContext::getContainer()->get(ConfigInterface::class);
+            $servers = $config->get('server.servers');
+            foreach ($servers as $k => $server) {
+                if ($server['name'] == 'jsonrpc-http') {
+                    $port = $server['port'];
+                    break;
+                }
+            }
+            $app_name = env("APP_NAME");
+            $responseContents['error']['message'] .= " - {$app_name}:{$port}";
+        }
+        $data = json_encode($responseContents, JSON_UNESCAPED_UNICODE);
+        return $response->withStatus(200)->withBody(new SwooleStream($data));
+    }
+    public function isValid(Throwable $throwable): bool
+    {
+        return true;
+    }
 }

+ 66 - 66
app/JsonRpc/LinkService.php

@@ -1,66 +1,66 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-
-namespace App\Listener;
-
-use Hyperf\Collection\Arr;
-use Hyperf\Database\Events\QueryExecuted;
-use Hyperf\Event\Annotation\Listener;
-use Hyperf\Event\Contract\ListenerInterface;
-use Hyperf\Logger\LoggerFactory;
-use Psr\Container\ContainerInterface;
-use Psr\Log\LoggerInterface;
-
-#[Listener]
-class DbQueryExecutedListener implements ListenerInterface
-{
-    /**
-     * @var LoggerInterface
-     */
-    private $logger;
-
-    public function __construct(ContainerInterface $container)
-    {
-        $this->logger = $container->get(LoggerFactory::class)->get('sql');
-    }
-
-    public function listen(): array
-    {
-        return [
-            QueryExecuted::class,
-        ];
-    }
-
-    /**
-     * @param QueryExecuted $event
-     */
-    public function process(object $event): void
-    {
-        if ($event instanceof QueryExecuted) {
-            $sql = $event->sql;
-            if (! Arr::isAssoc($event->bindings)) {
-                $position = 0;
-                foreach ($event->bindings as $value) {
-                    $position = strpos($sql, '?', $position);
-                    if ($position === false) {
-                        break;
-                    }
-                    $value = "'{$value}'";
-                    $sql = substr_replace($sql, $value, $position, 1);
-                    $position += strlen($value);
-                }
-            }
-
-            $this->logger->info(sprintf('[%s] %s', $event->time, $sql));
-        }
-    }
-}
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+
+namespace App\Listener;
+
+use Hyperf\Collection\Arr;
+use Hyperf\Database\Events\QueryExecuted;
+use Hyperf\Event\Annotation\Listener;
+use Hyperf\Event\Contract\ListenerInterface;
+use Hyperf\Logger\LoggerFactory;
+use Psr\Container\ContainerInterface;
+use Psr\Log\LoggerInterface;
+
+#[Listener]
+class DbQueryExecutedListener implements ListenerInterface
+{
+    /**
+     * @var LoggerInterface
+     */
+    private $logger;
+
+    public function __construct(ContainerInterface $container)
+    {
+        $this->logger = $container->get(LoggerFactory::class)->get('sql');
+    }
+
+    public function listen(): array
+    {
+        return [
+            QueryExecuted::class,
+        ];
+    }
+
+    /**
+     * @param QueryExecuted $event
+     */
+    public function process(object $event): void
+    {
+        if ($event instanceof QueryExecuted) {
+            $sql = $event->sql;
+            if (! Arr::isAssoc($event->bindings)) {
+                $position = 0;
+                foreach ($event->bindings as $value) {
+                    $position = strpos($sql, '?', $position);
+                    if ($position === false) {
+                        break;
+                    }
+                    $value = "'{$value}'";
+                    $sql = substr_replace($sql, $value, $position, 1);
+                    $position += strlen($value);
+                }
+            }
+
+            $this->logger->info(sprintf('[%s] %s', $event->time, $sql));
+        }
+    }
+}

+ 35 - 35
app/Listener/ResumeExitCoordinatorListener.php

@@ -1,35 +1,35 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-
-namespace App\Listener;
-
-use Hyperf\Command\Event\AfterExecute;
-use Hyperf\Coordinator\Constants;
-use Hyperf\Coordinator\CoordinatorManager;
-use Hyperf\Event\Annotation\Listener;
-use Hyperf\Event\Contract\ListenerInterface;
-
-#[Listener]
-class ResumeExitCoordinatorListener implements ListenerInterface
-{
-    public function listen(): array
-    {
-        return [
-            AfterExecute::class,
-        ];
-    }
-
-    public function process(object $event): void
-    {
-        CoordinatorManager::until(Constants::WORKER_EXIT)->resume();
-    }
-}
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+
+namespace App\Listener;
+
+use Hyperf\Command\Event\AfterExecute;
+use Hyperf\Coordinator\Constants;
+use Hyperf\Coordinator\CoordinatorManager;
+use Hyperf\Event\Annotation\Listener;
+use Hyperf\Event\Contract\ListenerInterface;
+
+#[Listener]
+class ResumeExitCoordinatorListener implements ListenerInterface
+{
+    public function listen(): array
+    {
+        return [
+            AfterExecute::class,
+        ];
+    }
+
+    public function process(object $event): void
+    {
+        CoordinatorManager::until(Constants::WORKER_EXIT)->resume();
+    }
+}

+ 27 - 27
app/Model/Article.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class Article extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'article';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class Article extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'article';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/ArticleData.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class ArticleData extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'article_data';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class ArticleData extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'article_data';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/Category.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class Category extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'category';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class Category extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'category';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/District.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class District extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'district';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class District extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'district';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/LetterOfComplaint.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class LetterOfComplaint extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'letter_of_complaint';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class LetterOfComplaint extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'letter_of_complaint';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/LetterType.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class LetterType extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'letter_type';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class LetterType extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'letter_type';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/Link.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class Link extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'link';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class Link extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'link';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 19 - 19
app/Model/Model.php

@@ -1,19 +1,19 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model as BaseModel;
-
-abstract class Model extends BaseModel
-{
-}
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model as BaseModel;
+
+abstract class Model extends BaseModel
+{
+}

+ 27 - 27
app/Model/TemplateClass.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class TemplateClass extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'template_class';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class TemplateClass extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'template_class';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/UserLevel.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class UserLevel extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'user_level';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class UserLevel extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'user_level';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/WebsiteCategory.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class WebsiteCategory extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'website_category';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class WebsiteCategory extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'website_category';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/WebsiteColumn.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class WebsiteColumn extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'website_column';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class WebsiteColumn extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'website_column';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/WebsiteRole.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class WebsiteRole extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'website_role';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class WebsiteRole extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'website_role';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 27 - 27
app/Model/WebsiteRoleUser.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Model;
-
-use Hyperf\DbConnection\Model\Model;
-
-/**
- */
-class WebsiteRoleUser extends Model
-{
-    /**
-     * The table associated with the model.
-     */
-    protected ?string $table = 'website_role_user';
-
-    /**
-     * The attributes that are mass assignable.
-     */
-    protected array $fillable = [];
-
-    /**
-     * The attributes that should be cast to native types.
-     */
-    protected array $casts = [];
-}
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class WebsiteRoleUser extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'website_role_user';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 4 - 1
app/Service/MinioService.php

@@ -53,8 +53,10 @@ class MinioService
             $buckets = array_column($result['Buckets'], 'Name');
             return  Result::success($buckets);
         } catch (\Aws\Exception\AwsException $e) {
+            var_dump($e->getMessage());
             return  Result::error("报错了");
         } catch (\Exception $e) {
+            var_dump($e->getMessage());
             return  Result::error("报错了");
         }
     }
@@ -73,7 +75,7 @@ class MinioService
             $fileName = time().mt_rand(1, 1000000) . '.' . $data['ext'];
             $finalPath =  DIRECTORY_SEPARATOR.date('Ymd').DIRECTORY_SEPARATOR  . $fileName;
             $key = $data['contentType'].$finalPath;
-            var_dump("key:",$key);
+            var_dump("===key:",$key);
             $result = $this->s3Client->putObject([
                 'Bucket' => env("BUCKET"),
                 'Key' => $key,
@@ -81,6 +83,7 @@ class MinioService
                 'ACL' => 'public-read',
                 'ContentType' => $data['contentType'],
             ]);
+            var_dump("返回值:",$result);
             $rep = [
                 'imgUrl'=>$result['ObjectURL'],
                 'id'=>uniqid(),

+ 25 - 25
app/Tools/Result.php

@@ -1,26 +1,26 @@
-<?php
-namespace App\Tools;
-use App\Constants\ErrorCode;
-class Result
-{
-    public static function success($data = [])
-    {
-        return static::result(ErrorCode::SUCCESS, ErrorCode::getMessage(ErrorCode::SUCCESS), $data);
-    }
-    public static function error($message = '', $code = ErrorCode::ERROR, $data = [])
-    {
-        if (empty($message)) {
-            return static::result($code, ErrorCode::getMessage($code), $data);
-        } else {
-            return static::result($code, $message, $data);
-        }
-    }
-    protected static function result($code, $message, $data)
-    {
-        return [
-            'code' => $code,
-            'message' => $message,
-            'data' => $data,
-        ];
-    }
+<?php
+namespace App\Tools;
+use App\Constants\ErrorCode;
+class Result
+{
+    public static function success($data = [])
+    {
+        return static::result(ErrorCode::SUCCESS, ErrorCode::getMessage(ErrorCode::SUCCESS), $data);
+    }
+    public static function error($message = '', $code = ErrorCode::ERROR, $data = [])
+    {
+        if (empty($message)) {
+            return static::result($code, ErrorCode::getMessage($code), $data);
+        } else {
+            return static::result($code, $message, $data);
+        }
+    }
+    protected static function result($code, $message, $data)
+    {
+        return [
+            'code' => $code,
+            'message' => $message,
+            'data' => $data,
+        ];
+    }
 }

+ 21 - 21
composer.json

@@ -1,21 +1,21 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-    'scan' => [
-        'paths' => [
-            BASE_PATH . '/app',
-        ],
-        'ignore_annotations' => [
-            'mixin',
-        ],
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+    'scan' => [
+        'paths' => [
+            BASE_PATH . '/app',
+        ],
+        'ignore_annotations' => [
+            'mixin',
+        ],
+    ],
+];

+ 13 - 13
config/autoload/aspects.php

@@ -1,13 +1,13 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];

+ 19 - 19
config/autoload/cache.php

@@ -1,19 +1,19 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-    'default' => [
-        'driver' => Hyperf\Cache\Driver\RedisDriver::class,
-        'packer' => Hyperf\Codec\Packer\PhpSerializerPacker::class,
-        'prefix' => 'c:',
-        'skip_cache_results' => [],
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+    'default' => [
+        'driver' => Hyperf\Cache\Driver\RedisDriver::class,
+        'packer' => Hyperf\Codec\Packer\PhpSerializerPacker::class,
+        'prefix' => 'c:',
+        'skip_cache_results' => [],
+    ],
+];

+ 13 - 13
config/autoload/commands.php

@@ -1,13 +1,13 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];

+ 28 - 28
config/autoload/config_center.php

@@ -1,28 +1,28 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-use Hyperf\ConfigCenter\Mode;
-
-use function Hyperf\Support\env;
-
-return [
-//    'enable' => (bool) env('CONFIG_CENTER_ENABLE', true),
-//    'driver' => env('CONFIG_CENTER_DRIVER', 'nacos'),
-//    'mode' => env('CONFIG_CENTER_MODE', Mode::PROCESS),
-//    'drivers' => [
-//
-//    ],
-    'server' => [
-        'settings' => [
-            'timezone' => 'Asia/Shanghai',
-        ],
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\ConfigCenter\Mode;
+
+use function Hyperf\Support\env;
+
+return [
+//    'enable' => (bool) env('CONFIG_CENTER_ENABLE', true),
+//    'driver' => env('CONFIG_CENTER_DRIVER', 'nacos'),
+//    'mode' => env('CONFIG_CENTER_MODE', Mode::PROCESS),
+//    'drivers' => [
+//
+//    ],
+    'server' => [
+        'settings' => [
+            'timezone' => 'Asia/Shanghai',
+        ],
+    ],
+];

+ 13 - 13
config/autoload/databases.php

@@ -1,13 +1,13 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];

+ 44 - 44
config/autoload/devtool.php

@@ -1,44 +1,44 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-    'generator' => [
-        'amqp' => [
-            'consumer' => [
-                'namespace' => 'App\\Amqp\\Consumer',
-            ],
-            'producer' => [
-                'namespace' => 'App\\Amqp\\Producer',
-            ],
-        ],
-        'aspect' => [
-            'namespace' => 'App\\Aspect',
-        ],
-        'command' => [
-            'namespace' => 'App\\Command',
-        ],
-        'controller' => [
-            'namespace' => 'App\\Controller',
-        ],
-        'job' => [
-            'namespace' => 'App\\Job',
-        ],
-        'listener' => [
-            'namespace' => 'App\\Listener',
-        ],
-        'middleware' => [
-            'namespace' => 'App\\Middleware',
-        ],
-        'Process' => [
-            'namespace' => 'App\\Processes',
-        ],
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+    'generator' => [
+        'amqp' => [
+            'consumer' => [
+                'namespace' => 'App\\Amqp\\Consumer',
+            ],
+            'producer' => [
+                'namespace' => 'App\\Amqp\\Producer',
+            ],
+        ],
+        'aspect' => [
+            'namespace' => 'App\\Aspect',
+        ],
+        'command' => [
+            'namespace' => 'App\\Command',
+        ],
+        'controller' => [
+            'namespace' => 'App\\Controller',
+        ],
+        'job' => [
+            'namespace' => 'App\\Job',
+        ],
+        'listener' => [
+            'namespace' => 'App\\Listener',
+        ],
+        'middleware' => [
+            'namespace' => 'App\\Middleware',
+        ],
+        'Process' => [
+            'namespace' => 'App\\Processes',
+        ],
+    ],
+];

+ 22 - 22
config/autoload/exceptions.php

@@ -1,22 +1,22 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-    'handler' => [
-        'http' => [
-            Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler::class,
-            App\Exception\Handler\AppExceptionHandler::class,
-        ],
-        'jsonrpc-http' => [
-            App\Exception\Handler\JsonRpcExceptionHandler::class,
-        ],
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+    'handler' => [
+        'http' => [
+            Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler::class,
+            App\Exception\Handler\AppExceptionHandler::class,
+        ],
+        'jsonrpc-http' => [
+            App\Exception\Handler\JsonRpcExceptionHandler::class,
+        ],
+    ],
+];

+ 15 - 15
config/autoload/listeners.php

@@ -1,15 +1,15 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-    Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler::class,
-    Hyperf\Command\Listener\FailToHandleListener::class,
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+    Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler::class,
+    Hyperf\Command\Listener\FailToHandleListener::class,
+];

+ 21 - 21
config/autoload/logger.php

@@ -1,21 +1,21 @@
-<?php
-
-return [
-    'default' => [
-        'handler' => [
-            'class' => \Monolog\Handler\StreamHandler::class,
-            'constructor' => [
-                'stream' => BASE_PATH . '/runtime/logs/hyperf.log',
-                'level' => \Monolog\Logger::DEBUG,
-            ],
-        ],
-        'formatter' => [
-            'class' => \Monolog\Formatter\LineFormatter::class,
-            'constructor' => [
-                'format' => null,
-                'dateFormat' => null,
-                'allowInlineLineBreaks' => true,
-            ]
-        ],
-    ],
-];
+<?php
+
+return [
+    'default' => [
+        'handler' => [
+            'class' => \Monolog\Handler\StreamHandler::class,
+            'constructor' => [
+                'stream' => BASE_PATH . '/runtime/logs/hyperf.log',
+                'level' => \Monolog\Logger::DEBUG,
+            ],
+        ],
+        'formatter' => [
+            'class' => \Monolog\Formatter\LineFormatter::class,
+            'constructor' => [
+                'format' => null,
+                'dateFormat' => null,
+                'allowInlineLineBreaks' => true,
+            ]
+        ],
+    ],
+];

+ 15 - 15
config/autoload/middlewares.php

@@ -1,15 +1,15 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-    'http' => [
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+    'http' => [
+    ],
+];

+ 13 - 13
config/autoload/processes.php

@@ -1,13 +1,13 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-return [
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];

+ 29 - 29
config/autoload/redis.php

@@ -1,29 +1,29 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-use function Hyperf\Support\env;
-
-return [
-    'default' => [
-        'host' => env('REDIS_HOST', 'localhost'),
-        'auth' => env('REDIS_AUTH', null),
-        'port' => (int) env('REDIS_PORT', 6379),
-        'db' => (int) env('REDIS_DB', 0),
-        'pool' => [
-            'min_connections' => 1,
-            'max_connections' => 10,
-            'connect_timeout' => 10.0,
-            'wait_timeout' => 3.0,
-            'heartbeat' => -1,
-            'max_idle_time' => (float) env('REDIS_MAX_IDLE_TIME', 60),
-        ],
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use function Hyperf\Support\env;
+
+return [
+    'default' => [
+        'host' => env('REDIS_HOST', 'localhost'),
+        'auth' => env('REDIS_AUTH', null),
+        'port' => (int) env('REDIS_PORT', 6379),
+        'db' => (int) env('REDIS_DB', 0),
+        'pool' => [
+            'min_connections' => 1,
+            'max_connections' => 10,
+            'connect_timeout' => 10.0,
+            'wait_timeout' => 3.0,
+            'heartbeat' => -1,
+            'max_idle_time' => (float) env('REDIS_MAX_IDLE_TIME', 60),
+        ],
+    ],
+];

+ 33 - 33
config/autoload/server.php

@@ -1,33 +1,33 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-use Hyperf\Contract\StdoutLoggerInterface;
-use Psr\Log\LogLevel;
-
-use function Hyperf\Support\env;
-
-return [
-    'app_name' => env('APP_NAME', 'skeleton'),
-    'app_env' => env('APP_ENV', 'dev'),
-    'scan_cacheable' => env('SCAN_CACHEABLE', false),
-    StdoutLoggerInterface::class => [
-        'log_level' => [
-            LogLevel::ALERT,
-            LogLevel::CRITICAL,
-            LogLevel::DEBUG,
-            LogLevel::EMERGENCY,
-            LogLevel::ERROR,
-            LogLevel::INFO,
-            LogLevel::NOTICE,
-            LogLevel::WARNING,
-        ],
-    ],
-];
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\Contract\StdoutLoggerInterface;
+use Psr\Log\LogLevel;
+
+use function Hyperf\Support\env;
+
+return [
+    'app_name' => env('APP_NAME', 'skeleton'),
+    'app_env' => env('APP_ENV', 'dev'),
+    'scan_cacheable' => env('SCAN_CACHEABLE', false),
+    StdoutLoggerInterface::class => [
+        'log_level' => [
+            LogLevel::ALERT,
+            LogLevel::CRITICAL,
+            LogLevel::DEBUG,
+            LogLevel::EMERGENCY,
+            LogLevel::ERROR,
+            LogLevel::INFO,
+            LogLevel::NOTICE,
+            LogLevel::WARNING,
+        ],
+    ],
+];

+ 21 - 21
config/container.php

@@ -1,21 +1,21 @@
-<?php
-/**
- * Initialize a dependency injection container that implemented PSR-11 and return the container.
- */
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-use Hyperf\Context\ApplicationContext;
-use Hyperf\Di\Container;
-use Hyperf\Di\Definition\DefinitionSourceFactory;
-
-$container = new Container((new DefinitionSourceFactory())());
-
-return ApplicationContext::setContainer($container);
+<?php
+/**
+ * Initialize a dependency injection container that implemented PSR-11 and return the container.
+ */
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\Context\ApplicationContext;
+use Hyperf\Di\Container;
+use Hyperf\Di\Definition\DefinitionSourceFactory;
+
+$container = new Container((new DefinitionSourceFactory())());
+
+return ApplicationContext::setContainer($container);

+ 18 - 18
config/routes.php

@@ -1,18 +1,18 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-use Hyperf\HttpServer\Router\Router;
-
-Router::addRoute(['GET', 'POST', 'HEAD'], '/', 'App\Controller\IndexController@index');
-
-Router::get('/favicon.ico', function () {
-    return '';
-});
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\HttpServer\Router\Router;
+
+Router::addRoute(['GET', 'POST', 'HEAD'], '/', 'App\Controller\IndexController@index');
+
+Router::get('/favicon.ico', function () {
+    return '';
+});

+ 30 - 30
deploy.test.yml

@@ -1,30 +1,30 @@
-version: '3.7'
-services:
-  hyperf:
-    image: $REGISTRY_URL/$PROJECT_NAME:test
-    environment:
-      - "APP_PROJECT=hyperf"
-      - "APP_ENV=testing"
-    ports:
-      - "9501:9501"
-    deploy:
-      replicas: 1
-      restart_policy:
-        condition: on-failure
-        delay: 5s
-        max_attempts: 5
-      update_config:
-        parallelism: 2
-        delay: 5s
-        order: start-first
-    networks:
-      - hyperf_net
-    configs:
-      - source: hyperf_v1.0
-        target: /opt/www/.env
-configs:
-  hyperf_v1.0:
-    external: true
-networks:
-  hyperf_net:
-    external: true
+version: '3.7'
+services:
+  hyperf:
+    image: $REGISTRY_URL/$PROJECT_NAME:test
+    environment:
+      - "APP_PROJECT=hyperf"
+      - "APP_ENV=testing"
+    ports:
+      - "9501:9501"
+    deploy:
+      replicas: 1
+      restart_policy:
+        condition: on-failure
+        delay: 5s
+        max_attempts: 5
+      update_config:
+        parallelism: 2
+        delay: 5s
+        order: start-first
+    networks:
+      - hyperf_net
+    configs:
+      - source: hyperf_v1.0
+        target: /opt/www/.env
+configs:
+  hyperf_v1.0:
+    external: true
+networks:
+  hyperf_net:
+    external: true

+ 18 - 18
docker-compose.yml

@@ -1,18 +1,18 @@
-version: '3'
-services:
-  hyperf-skeleton:
-    container_name: hyperf-skeleton
-    image: hyperf-skeleton
-    build:
-      context: .
-    volumes:
-      - ./:/opt/www
-    ports:
-      - 9501:9501
-    environment:
-      - APP_ENV=dev
-      - SCAN_CACHEABLE=false
-
-networks:
-  default:
-    name: hyperf-skeleton
+version: '3'
+services:
+  hyperf-skeleton:
+    container_name: hyperf-skeleton
+    image: hyperf-skeleton
+    build:
+      context: .
+    volumes:
+      - ./:/opt/www
+    ports:
+      - 9501:9501
+    environment:
+      - APP_ENV=dev
+      - SCAN_CACHEABLE=false
+
+networks:
+  default:
+    name: hyperf-skeleton

+ 14 - 14
phpstan.neon.dist

@@ -1,14 +1,14 @@
-# Magic behaviour with __get, __set, __call and __callStatic is not exactly static analyser-friendly :)
-# Fortunately, You can ignore it by the following config.
-#
-# vendor/bin/phpstan analyse app --memory-limit 200M -l 0
-#
-parameters:
-  level: 0
-  paths:
-    - ./app
-    - ./config
-  reportUnmatchedIgnoredErrors: false
-  ignoreErrors:
-    - '#Static call to instance method Hyperf\\HttpServer\\Router\\Router::[a-zA-Z0-9\\_]+\(\)#'
-    - '#Static call to instance method Hyperf\\DbConnection\\Db::[a-zA-Z0-9\\_]+\(\)#'
+# Magic behaviour with __get, __set, __call and __callStatic is not exactly static analyser-friendly :)
+# Fortunately, You can ignore it by the following config.
+#
+# vendor/bin/phpstan analyse app --memory-limit 200M -l 0
+#
+parameters:
+  level: 0
+  paths:
+    - ./app
+    - ./config
+  reportUnmatchedIgnoredErrors: false
+  ignoreErrors:
+    - '#Static call to instance method Hyperf\\HttpServer\\Router\\Router::[a-zA-Z0-9\\_]+\(\)#'
+    - '#Static call to instance method Hyperf\\DbConnection\\Db::[a-zA-Z0-9\\_]+\(\)#'

+ 16 - 16
phpunit.xml.dist

@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="false" bootstrap="./test/bootstrap.php" colors="true" processIsolation="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" cacheDirectory=".phpunit.cache" backupStaticProperties="false">
-  <testsuites>
-    <testsuite name="Tests">
-      <directory suffix="Test.php">./test</directory>
-    </testsuite>
-  </testsuites>
-  <php>
-    <env name="APP_ENV" value="testing" force="true"/>
-  </php>
-  <source>
-    <include>
-      <directory suffix=".php">./app</directory>
-    </include>
-  </source>
-</phpunit>
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="false" bootstrap="./test/bootstrap.php" colors="true" processIsolation="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" cacheDirectory=".phpunit.cache" backupStaticProperties="false">
+  <testsuites>
+    <testsuite name="Tests">
+      <directory suffix="Test.php">./test</directory>
+    </testsuite>
+  </testsuites>
+  <php>
+    <env name="APP_ENV" value="testing" force="true"/>
+  </php>
+  <source>
+    <include>
+      <directory suffix=".php">./app</directory>
+    </include>
+  </source>
+</phpunit>

+ 27 - 27
test/Cases/ExampleTest.php

@@ -1,27 +1,27 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-
-namespace HyperfTest\Cases;
-
-use Hyperf\Testing\TestCase;
-
-/**
- * @internal
- * @coversNothing
- */
-class ExampleTest extends TestCase
-{
-    public function testExample()
-    {
-        $this->get('/')->assertOk()->assertSee('Hyperf');
-    }
-}
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+
+namespace HyperfTest\Cases;
+
+use Hyperf\Testing\TestCase;
+
+/**
+ * @internal
+ * @coversNothing
+ */
+class ExampleTest extends TestCase
+{
+    public function testExample()
+    {
+        $this->get('/')->assertOk()->assertSee('Hyperf');
+    }
+}

+ 45 - 45
test/HttpTestCase.php

@@ -1,45 +1,45 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-
-namespace HyperfTest;
-
-use Hyperf\Testing\Client;
-use PHPUnit\Framework\TestCase;
-
-use function Hyperf\Support\make;
-
-/**
- * Class HttpTestCase.
- * @method get($uri, $data = [], $headers = [])
- * @method post($uri, $data = [], $headers = [])
- * @method json($uri, $data = [], $headers = [])
- * @method file($uri, $data = [], $headers = [])
- * @method request($method, $path, $options = [])
- */
-abstract class HttpTestCase extends TestCase
-{
-    /**
-     * @var Client
-     */
-    protected $client;
-
-    public function __construct($name = null, array $data = [], $dataName = '')
-    {
-        parent::__construct($name, $data, $dataName);
-        $this->client = make(Client::class);
-    }
-
-    public function __call($name, $arguments)
-    {
-        return $this->client->{$name}(...$arguments);
-    }
-}
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+
+namespace HyperfTest;
+
+use Hyperf\Testing\Client;
+use PHPUnit\Framework\TestCase;
+
+use function Hyperf\Support\make;
+
+/**
+ * Class HttpTestCase.
+ * @method get($uri, $data = [], $headers = [])
+ * @method post($uri, $data = [], $headers = [])
+ * @method json($uri, $data = [], $headers = [])
+ * @method file($uri, $data = [], $headers = [])
+ * @method request($method, $path, $options = [])
+ */
+abstract class HttpTestCase extends TestCase
+{
+    /**
+     * @var Client
+     */
+    protected $client;
+
+    public function __construct($name = null, array $data = [], $dataName = '')
+    {
+        parent::__construct($name, $data, $dataName);
+        $this->client = make(Client::class);
+    }
+
+    public function __call($name, $arguments)
+    {
+        return $this->client->{$name}(...$arguments);
+    }
+}

+ 30 - 30
test/bootstrap.php

@@ -1,30 +1,30 @@
-<?php
-
-declare(strict_types=1);
-/**
- * This file is part of Hyperf.
- *
- * @link     https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact  group@hyperf.io
- * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
-ini_set('display_errors', 'on');
-ini_set('display_startup_errors', 'on');
-
-error_reporting(E_ALL);
-date_default_timezone_set('Asia/Shanghai');
-
-Swoole\Runtime::enableCoroutine(true);
-
-! defined('BASE_PATH') && define('BASE_PATH', dirname(__DIR__, 1));
-
-require BASE_PATH . '/vendor/autoload.php';
-
-! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', Hyperf\Engine\DefaultOption::hookFlags());
-
-Hyperf\Di\ClassLoader::init();
-
-$container = require BASE_PATH . '/config/container.php';
-
-$container->get(Hyperf\Contract\ApplicationInterface::class);
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link     https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact  group@hyperf.io
+ * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+ini_set('display_errors', 'on');
+ini_set('display_startup_errors', 'on');
+
+error_reporting(E_ALL);
+date_default_timezone_set('Asia/Shanghai');
+
+Swoole\Runtime::enableCoroutine(true);
+
+! defined('BASE_PATH') && define('BASE_PATH', dirname(__DIR__, 1));
+
+require BASE_PATH . '/vendor/autoload.php';
+
+! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', Hyperf\Engine\DefaultOption::hookFlags());
+
+Hyperf\Di\ClassLoader::init();
+
+$container = require BASE_PATH . '/config/container.php';
+
+$container->get(Hyperf\Contract\ApplicationInterface::class);

+ 0 - 25
vendor/autoload.php

@@ -1,25 +0,0 @@
-<?php
-
-// autoload.php @generated by Composer
-
-if (PHP_VERSION_ID < 50600) {
-    if (!headers_sent()) {
-        header('HTTP/1.1 500 Internal Server Error');
-    }
-    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
-    if (!ini_get('display_errors')) {
-        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
-            fwrite(STDERR, $err);
-        } elseif (!headers_sent()) {
-            echo $err;
-        }
-    }
-    trigger_error(
-        $err,
-        E_USER_ERROR
-    );
-}
-
-require_once __DIR__ . '/composer/autoload_real.php';
-
-return ComposerAutoloaderInit88f2a4d4a4e81dc7d415bcdf39930654::getLoader();

+ 0 - 21
vendor/carbonphp/carbon-doctrine-types/LICENSE

@@ -1,21 +0,0 @@
-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.

+ 0 - 14
vendor/carbonphp/carbon-doctrine-types/README.md

@@ -1,14 +0,0 @@
-# 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.

+ 0 - 36
vendor/carbonphp/carbon-doctrine-types/composer.json

@@ -1,36 +0,0 @@
-{
-    "name": "carbonphp/carbon-doctrine-types",
-    "description": "Types to use Carbon in Doctrine",
-    "type": "library",
-    "keywords": [
-        "date",
-        "time",
-        "DateTime",
-        "Carbon",
-        "Doctrine"
-    ],
-    "require": {
-        "php": "^8.1"
-    },
-    "require-dev": {
-        "doctrine/dbal": "^4.0.0",
-        "nesbot/carbon": "^2.71.0 || ^3.0.0",
-        "phpunit/phpunit": "^10.3"
-    },
-    "conflict": {
-        "doctrine/dbal": "<4.0.0 || >=5.0.0"
-    },
-    "license": "MIT",
-    "autoload": {
-        "psr-4": {
-            "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
-        }
-    },
-    "authors": [
-        {
-            "name": "KyleKatarn",
-            "email": "kylekatarnls@gmail.com"
-        }
-    ],
-    "minimum-stability": "dev"
-}

+ 0 - 16
vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php

@@ -1,16 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Carbon\Doctrine;
-
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-
-interface CarbonDoctrineType
-{
-    public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform);
-
-    public function convertToPHPValue(mixed $value, AbstractPlatform $platform);
-
-    public function convertToDatabaseValue($value, AbstractPlatform $platform);
-}

+ 0 - 9
vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonImmutableType.php

@@ -1,9 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Carbon\Doctrine;
-
-class CarbonImmutableType extends DateTimeImmutableType implements CarbonDoctrineType
-{
-}

+ 0 - 9
vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonType.php

@@ -1,9 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Carbon\Doctrine;
-
-class CarbonType extends DateTimeType implements CarbonDoctrineType
-{
-}

+ 0 - 131
vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonTypeConverter.php

@@ -1,131 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Carbon\Doctrine;
-
-use Carbon\Carbon;
-use Carbon\CarbonInterface;
-use DateTimeInterface;
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-use Doctrine\DBAL\Platforms\DB2Platform;
-use Doctrine\DBAL\Platforms\OraclePlatform;
-use Doctrine\DBAL\Platforms\SQLitePlatform;
-use Doctrine\DBAL\Platforms\SQLServerPlatform;
-use Doctrine\DBAL\Types\Exception\InvalidType;
-use Doctrine\DBAL\Types\Exception\ValueNotConvertible;
-use Exception;
-
-/**
- * @template T of CarbonInterface
- */
-trait CarbonTypeConverter
-{
-    /**
-     * This property differentiates types installed by carbonphp/carbon-doctrine-types
-     * from the ones embedded previously in nesbot/carbon source directly.
-     *
-     * @readonly
-     */
-    public bool $external = true;
-
-    /**
-     * @return class-string<T>
-     */
-    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)
-     */
-    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 InvalidType::new(
-            $value,
-            static::class,
-            ['null', 'DateTime', 'Carbon']
-        );
-    }
-
-    private function doConvertToPHPValue(mixed $value)
-    {
-        $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 ValueNotConvertible::new(
-                $value,
-                static::class,
-                'Y-m-d H:i:s.u or any format supported by '.$class.'::parse()',
-                $error
-            );
-        }
-
-        return $date;
-    }
-
-    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;
-    }
-}

+ 0 - 30
vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php

@@ -1,30 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Carbon\Doctrine;
-
-class DateTimeDefaultPrecision
-{
-    private static $precision = 6;
-
-    /**
-     * Change the default Doctrine datetime and datetime_immutable precision.
-     *
-     * @param int $precision
-     */
-    public static function set(int $precision): void
-    {
-        self::$precision = $precision;
-    }
-
-    /**
-     * Get the default Doctrine datetime and datetime_immutable precision.
-     *
-     * @return int
-     */
-    public static function get(): int
-    {
-        return self::$precision;
-    }
-}

+ 0 - 32
vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeImmutableType.php

@@ -1,32 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Carbon\Doctrine;
-
-use Carbon\CarbonImmutable;
-use DateTimeImmutable;
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-use Doctrine\DBAL\Types\VarDateTimeImmutableType;
-
-class DateTimeImmutableType extends VarDateTimeImmutableType implements CarbonDoctrineType
-{
-    /** @use CarbonTypeConverter<CarbonImmutable> */
-    use CarbonTypeConverter;
-
-    /**
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
-     */
-    public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?CarbonImmutable
-    {
-        return $this->doConvertToPHPValue($value);
-    }
-
-    /**
-     * @return class-string<CarbonImmutable>
-     */
-    protected function getCarbonClassName(): string
-    {
-        return CarbonImmutable::class;
-    }
-}

+ 0 - 24
vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php

@@ -1,24 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Carbon\Doctrine;
-
-use Carbon\Carbon;
-use DateTime;
-use Doctrine\DBAL\Platforms\AbstractPlatform;
-use Doctrine\DBAL\Types\VarDateTimeType;
-
-class DateTimeType extends VarDateTimeType implements CarbonDoctrineType
-{
-    /** @use CarbonTypeConverter<Carbon> */
-    use CarbonTypeConverter;
-
-    /**
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
-     */
-    public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?Carbon
-    {
-        return $this->doConvertToPHPValue($value);
-    }
-}

+ 0 - 2
vendor/clue/ndjson-react/.github/FUNDING.yml

@@ -1,2 +0,0 @@
-github: clue
-custom: https://clue.engineering/support

+ 0 - 75
vendor/clue/ndjson-react/CHANGELOG.md

@@ -1,75 +0,0 @@
-# Changelog
-
-## 1.3.0 (2022-12-23)
-
-*   Feature: Add support for PHP 8.1 and PHP 8.2.
-    (#31 by @clue and #30 by @SimonFring)
-
-*   Feature: Check type of incoming `data` before trying to decode NDJSON.
-    (#29 by @SimonFrings)
-
-*   Improve documentation and examples and update to new [default loop](https://reactphp.org/event-loop/#loop).
-    (#26 by @clue, #27 by @SimonFrings and #25 by @PaulRotmann)
-
-*   Improve test suite, report failed assertions and ensure 100% code coverage.
-    (#32 and #33 by @clue and #28 by @SimonFrings)
-
-## 1.2.0 (2020-12-09)
-
-*   Improve test suite and add `.gitattributes` to exclude dev files from exports.
-    Add PHP 8 support, update to PHPUnit 9 and simplify test setup.
-    (#18 by @clue and #19, #22 and #23 by @SimonFrings)
-
-## 1.1.0 (2020-02-04)
-
-*   Feature: Improve error reporting and add parsing error message to Exception and
-    ignore `JSON_THROW_ON_ERROR` option (available as of PHP 7.3).
-    (#14 by @clue)
-
-*   Feature: Add bechmarking script and import all global function references.
-    (#16 by @clue)
-
-*   Improve documentation and add NDJSON format description and
-    add support / sponsorship info.
-    (#12 and #17 by @clue)
-
-*   Improve test suite to run tests on PHP 7.4 and simplify test matrix and
-    apply minor code style adjustments to make phpstan happy.
-    (#13 and #15 by @clue)
-
-## 1.0.0 (2018-05-17)
-
-*   First stable release, now following SemVer
-
-*   Improve documentation and usage examples
-
-> Contains no other changes, so it's actually fully compatible with the v0.1.2 release.
-
-## 0.1.2 (2018-05-11)
-
-*   Feature: Limit buffer size to 64 KiB by default.
-    (#10 by @clue)
-
-*   Feature: Forward compatiblity with EventLoop v0.5 and upcoming v1.0.
-    (#8 by @clue)
-
-*   Fix: Return bool `false` if encoding fails due to invalid value to pause source.
-    (#9 by @clue)
-
-*   Improve test suite by supporting PHPUnit v6 and test against legacy PHP 5.3 through PHP 7.2.
-    (#7 by @clue)
-
-*   Update project homepage.
-    (#11 by @clue)
-
-## 0.1.1 (2017-05-22)
-
-*   Feature: Forward compatibility with Stream v0.7, v0.6, v0.5 and upcoming v1.0 (while keeping BC)
-    (#6 by @thklein)
-
-*   Improved test suite by adding PHPUnit to `require-dev`
-    (#5 by @thklein)
-
-## 0.1.0 (2016-11-24)
-
-*   First tagged release

+ 0 - 21
vendor/clue/ndjson-react/LICENSE

@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Christian Lück
-
-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.

+ 0 - 365
vendor/clue/ndjson-react/README.md

@@ -1,365 +0,0 @@
-# clue/reactphp-ndjson
-
-[![CI status](https://github.com/clue/reactphp-ndjson/actions/workflows/ci.yml/badge.svg)](https://github.com/clue/reactphp-ndjson/actions)
-[![installs on Packagist](https://img.shields.io/packagist/dt/clue/ndjson-react?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/clue/ndjson-react)
-[![code coverage](https://img.shields.io/badge/code%20coverage-100%25-success)](#tests)
-
-Streaming newline-delimited JSON ([NDJSON](http://ndjson.org/)) parser and encoder for [ReactPHP](https://reactphp.org/).
-
-[NDJSON](http://ndjson.org/) can be used to store multiple JSON records in a
-file to store any kind of (uniform) structured data, such as a list of user
-objects or log entries. It uses a simple newline character between each
-individual record and as such can be both used for efficient persistence and
-simple append-style operations. This also allows it to be used in a streaming
-context, such as a simple inter-process communication (IPC) protocol or for a
-remote procedure call (RPC) mechanism. This library provides a simple
-streaming API to process very large NDJSON files with thousands or even millions
-of rows efficiently without having to load the whole file into memory at once.
-
-* **Standard interfaces** -
-  Allows easy integration with existing higher-level components by implementing
-  ReactPHP's standard streaming interfaces.
-* **Lightweight, SOLID design** -
-  Provides a thin abstraction that is [*just good enough*](https://en.wikipedia.org/wiki/Principle_of_good_enough)
-  and does not get in your way.
-  Builds on top of well-tested components and well-established concepts instead of reinventing the wheel.
-* **Good test coverage** -
-  Comes with an [automated tests suite](#tests) and is regularly tested in the *real world*.
-
-**Table of contents**
-
-* [Support us](#support-us)
-* [NDJSON format](#ndjson-format)
-* [Usage](#usage)
-    * [Decoder](#decoder)
-    * [Encoder](#encoder)
-* [Install](#install)
-* [Tests](#tests)
-* [License](#license)
-* [More](#more)
-
-## Support us
-
-We invest a lot of time developing, maintaining, and updating our awesome
-open-source projects. You can help us sustain this high-quality of our work by
-[becoming a sponsor on GitHub](https://github.com/sponsors/clue). Sponsors get
-numerous benefits in return, see our [sponsoring page](https://github.com/sponsors/clue)
-for details.
-
-Let's take these projects to the next level together! 🚀
-
-## NDJSON format
-
-NDJSON ("Newline-Delimited JSON" or sometimes referred to as "JSON lines") is a
-very simple text-based format for storing a large number of records, such as a
-list of user records or log entries.
-
-```JSON
-{"name":"Alice","age":30,"comment":"Yes, I like cheese"}
-{"name":"Bob","age":50,"comment":"Hello\nWorld!"}
-```
-
-If you understand JSON and you're now looking at this newline-delimited JSON for
-the first time, you should already know everything you need to know to
-understand NDJSON: As the name implies, this format essentially consists of
-individual lines where each individual line is any valid JSON text and each line
-is delimited with a newline character.
-
-This example uses a list of user objects where each user has some arbitrary
-properties. This can easily be adjusted for many different use cases, such as
-storing for example products instead of users, assigning additional properties
-or having a significantly larger number of records. You can edit NDJSON files in
-any text editor or use them in a streaming context where individual records
-should be processed. Unlike normal JSON files, adding a new log entry to this
-NDJSON file does not require modification of this file's structure (note there's
-no "outer array" to be modified). This makes it a perfect fit for a streaming
-context, for line-oriented CLI tools (such as `grep` and others) or for a logging
-context where you want to append records at a later time. Additionally, this
-also allows it to be used in a streaming context, such as a simple inter-process
-communication (IPC) protocol or for a remote procedure call (RPC) mechanism.
-
-The newline character at the end of each line allows for some really simple
-*framing* (detecting individual records). While each individual line is valid
-JSON, the complete file as a whole is technically no longer valid JSON, because
-it contains multiple JSON texts. This implies that for example calling PHP's
-`json_decode()` on this complete input would fail because it would try to parse
-multiple records at once. Likewise, using "pretty printing" JSON
-(`JSON_PRETTY_PRINT`) is not allowed because each JSON text is limited to exactly
-one line. On the other hand, values containing newline characters (such as the
-`comment` property in the above example) do not cause issues because each newline
-within a JSON string will be represented by a `\n` instead.
-
-One common alternative to NDJSON would be Comma-Separated Values (CSV).
-If you want to process CSV files, you may want to take a look at the related
-project [clue/reactphp-csv](https://github.com/clue/reactphp-csv) instead:
-
-```
-name,age,comment
-Alice,30,"Yes, I like cheese"
-Bob,50,"Hello
-World!"
-```
-
-CSV may look slightly simpler, but this simplicity comes at a price. CSV is
-limited to untyped, two-dimensional data, so there's no standard way of storing
-any nested structures or to differentiate a boolean value from a string or
-integer. Field names are sometimes used, sometimes they're not
-(application-dependant). Inconsistent handling for fields that contain
-separators such as `,` or spaces or line breaks (see the `comment` field above)
-introduce additional complexity and its text encoding is usually undefined,
-Unicode (or UTF-8) is unlikely to be supported and CSV files often use ISO
-8859-1 encoding or some variant (again application-dependant).
-
-While NDJSON helps avoiding many of CSV's shortcomings, it is still a
-(relatively) young format while CSV files have been used in production systems
-for decades. This means that if you want to interface with an existing system,
-you may have to rely on the format that's already supported. If you're building
-a new system, using NDJSON is an excellent choice as it provides a flexible way
-to process individual records using a common text-based format that can include
-any kind of structured data.
-
-## Usage
-
-### Decoder
-
-The `Decoder` (parser) class can be used to make sure you only get back
-complete, valid JSON elements when reading from a stream.
-It wraps a given
-[`ReadableStreamInterface`](https://github.com/reactphp/stream#readablestreaminterface)
-and exposes its data through the same interface, but emits the JSON elements
-as parsed values instead of just chunks of strings:
-
-```
-{"name":"test","active":true}
-{"name":"hello w\u00f6rld","active":true}
-```
-
-```php
-$stdin = new React\Stream\ReadableResourceStream(STDIN);
-
-$ndjson = new Clue\React\NDJson\Decoder($stdin);
-
-$ndjson->on('data', function ($data) {
-    // $data is a parsed element from the JSON stream
-    // line 1: $data = (object)array('name' => 'test', 'active' => true);
-    // line 2: $data = (object)array('name' => 'hello wörld', 'active' => true);
-    var_dump($data);
-});
-```
-
-ReactPHP's streams emit chunks of data strings and make no assumption about their lengths.
-These chunks do not necessarily represent complete JSON elements, as an
-element may be broken up into multiple chunks.
-This class reassembles these elements by buffering incomplete ones.
-
-The `Decoder` supports the same optional parameters as the underlying
-[`json_decode()`](https://www.php.net/manual/en/function.json-decode.php) function.
-This means that, by default, JSON objects will be emitted as a `stdClass`.
-This behavior can be controlled through the optional constructor parameters:
-
-```php
-$ndjson = new Clue\React\NDJson\Decoder($stdin, true);
-
-$ndjson->on('data', function ($data) {
-    // JSON objects will be emitted as assoc arrays now
-});
-```
-
-Additionally, the `Decoder` limits the maximum buffer size (maximum line
-length) to avoid buffer overflows due to malformed user input. Usually, there
-should be no need to change this value, unless you know you're dealing with some
-unreasonably long lines. It accepts an additional argument if you want to change
-this from the default of 64 KiB:
-
-```php
-$ndjson = new Clue\React\NDJson\Decoder($stdin, false, 512, 0, 64 * 1024);
-```
-
-If the underlying stream emits an `error` event or the plain stream contains
-any data that does not represent a valid NDJson stream,
-it will emit an `error` event and then `close` the input stream:
-
-```php
-$ndjson->on('error', function (Exception $error) {
-    // an error occured, stream will close next
-});
-```
-
-If the underlying stream emits an `end` event, it will flush any incomplete
-data from the buffer, thus either possibly emitting a final `data` event
-followed by an `end` event on success or an `error` event for
-incomplete/invalid JSON data as above:
-
-```php
-$ndjson->on('end', function () {
-    // stream successfully ended, stream will close next
-});
-```
-
-If either the underlying stream or the `Decoder` is closed, it will forward
-the `close` event:
-
-```php
-$ndjson->on('close', function () {
-    // stream closed
-    // possibly after an "end" event or due to an "error" event
-});
-```
-
-The `close(): void` method can be used to explicitly close the `Decoder` and
-its underlying stream:
-
-```php
-$ndjson->close();
-```
-
-The `pipe(WritableStreamInterface $dest, array $options = array(): WritableStreamInterface`
-method can be used to forward all data to the given destination stream.
-Please note that the `Decoder` emits decoded/parsed data events, while many
-(most?) writable streams expect only data chunks:
-
-```php
-$ndjson->pipe($logger);
-```
-
-For more details, see ReactPHP's
-[`ReadableStreamInterface`](https://github.com/reactphp/stream#readablestreaminterface).
-
-### Encoder
-
-The `Encoder` (serializer) class can be used to make sure anything you write to
-a stream ends up as valid JSON elements in the resulting NDJSON stream.
-It wraps a given
-[`WritableStreamInterface`](https://github.com/reactphp/stream#writablestreaminterface)
-and accepts its data through the same interface, but handles any data as complete
-JSON elements instead of just chunks of strings:
-
-```php
-$stdout = new React\Stream\WritableResourceStream(STDOUT);
-
-$ndjson = new Clue\React\NDJson\Encoder($stdout);
-
-$ndjson->write(array('name' => 'test', 'active' => true));
-$ndjson->write(array('name' => 'hello wörld', 'active' => true));
-```
-```
-{"name":"test","active":true}
-{"name":"hello w\u00f6rld","active":true}
-```
-
-The `Encoder` supports the same parameters as the underlying
-[`json_encode()`](https://www.php.net/manual/en/function.json-encode.php) function.
-This means that, by default, Unicode characters will be escaped in the output.
-This behavior can be controlled through the optional constructor parameters:
-
-```php
-$ndjson = new Clue\React\NDJson\Encoder($stdout, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
-
-$ndjson->write('hello wörld');
-```
-```
-"hello wörld"
-```
-
-Note that trying to pass the `JSON_PRETTY_PRINT` option will yield an
-`InvalidArgumentException` because it is not compatible with NDJSON.
-
-If the underlying stream emits an `error` event or the given data contains
-any data that can not be represented as a valid NDJSON stream,
-it will emit an `error` event and then `close` the input stream:
-
-```php
-$ndjson->on('error', function (Exception $error) {
-    // an error occured, stream will close next
-});
-```
-
-If either the underlying stream or the `Encoder` is closed, it will forward
-the `close` event:
-
-```php
-$ndjson->on('close', function () {
-    // stream closed
-    // possibly after an "end" event or due to an "error" event
-});
-```
-
-The `end(mixed $data = null): void` method can be used to optionally emit
-any final data and then soft-close the `Encoder` and its underlying stream:
-
-```php
-$ndjson->end();
-```
-
-The `close(): void` method can be used to explicitly close the `Encoder` and
-its underlying stream:
-
-```php
-$ndjson->close();
-```
-
-For more details, see ReactPHP's
-[`WritableStreamInterface`](https://github.com/reactphp/stream#writablestreaminterface).
-
-## Install
-
-The recommended way to install this library is [through Composer](https://getcomposer.org/).
-[New to Composer?](https://getcomposer.org/doc/00-intro.md)
-
-This project follows [SemVer](https://semver.org/).
-This will install the latest supported version:
-
-```bash
-composer require clue/ndjson-react:^1.3
-```
-
-See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades.
-
-This project aims to run on any platform and thus does not require any PHP
-extensions and supports running on legacy PHP 5.3 through current PHP 8+ and
-HHVM.
-It's *highly recommended to use the latest supported PHP version* for this project.
-
-## Tests
-
-To run the test suite, you first need to clone this repo and then install all
-dependencies [through Composer](https://getcomposer.org/):
-
-```bash
-composer install
-```
-
-To run the test suite, go to the project root and run:
-
-```bash
-vendor/bin/phpunit
-```
-
-## License
-
-This project is released under the permissive [MIT license](LICENSE).
-
-> Did you know that I offer custom development services and issuing invoices for
-  sponsorships of releases and for contributions? Contact me (@clue) for details.
-
-## More
-
-* If you want to learn more about processing streams of data, refer to the documentation of
-  the underlying [react/stream](https://github.com/reactphp/stream) component.
-
-* If you want to process compressed NDJSON files (`.ndjson.gz` file extension),
-  you may want to use [clue/reactphp-zlib](https://github.com/clue/reactphp-zlib)
-  on the compressed input stream before passing the decompressed stream to the NDJSON decoder.
-
-* If you want to create compressed NDJSON files (`.ndjson.gz` file extension),
-  you may want to use [clue/reactphp-zlib](https://github.com/clue/reactphp-zlib)
-  on the resulting NDJSON encoder output stream before passing the compressed
-  stream to the file output stream.
-
-* If you want to concurrently process the records from your NDJSON stream,
-  you may want to use [clue/reactphp-flux](https://github.com/clue/reactphp-flux)
-  to concurrently process many (but not too many) records at once.
-
-* If you want to process structured data in the more common text-based format,
-  you may want to use [clue/reactphp-csv](https://github.com/clue/reactphp-csv)
-  to process Comma-Separated-Values (CSV) files (`.csv` file extension).

+ 0 - 31
vendor/clue/ndjson-react/composer.json

@@ -1,31 +0,0 @@
-{
-    "name": "clue/ndjson-react",
-    "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.",
-    "keywords": ["NDJSON", "newline", "JSON", "jsonlines", "streaming", "ReactPHP"],
-    "homepage": "https://github.com/clue/reactphp-ndjson",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Christian Lück",
-            "email": "christian@clue.engineering"
-        }
-    ],
-    "require": {
-        "php": ">=5.3",
-        "react/stream": "^1.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35",
-        "react/event-loop": "^1.2"
-    },
-    "autoload": {
-        "psr-4": {
-            "Clue\\React\\NDJson\\": "src/"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "Clue\\Tests\\React\\NDJson\\": "tests/"
-        }
-    }
-}

+ 0 - 166
vendor/clue/ndjson-react/src/Decoder.php

@@ -1,166 +0,0 @@
-<?php
-
-namespace Clue\React\NDJson;
-
-use Evenement\EventEmitter;
-use React\Stream\ReadableStreamInterface;
-use React\Stream\Util;
-use React\Stream\WritableStreamInterface;
-
-/**
- * The Decoder / Parser reads from a plain stream and emits data objects for each JSON element
- */
-class Decoder extends EventEmitter implements ReadableStreamInterface
-{
-    private $input;
-    private $assoc;
-    private $depth;
-    private $options;
-    /** @var int */
-    private $maxlength;
-
-    private $buffer = '';
-    private $closed = false;
-
-    /**
-     * @param ReadableStreamInterface $input
-     * @param bool $assoc
-     * @param int $depth
-     * @param int $options (requires PHP 5.4+)
-     * @param int $maxlength
-     * @throws \BadMethodCallException
-     */
-    public function __construct(ReadableStreamInterface $input, $assoc = false, $depth = 512, $options = 0, $maxlength = 65536)
-    {
-        // @codeCoverageIgnoreStart
-        if ($options !== 0 && \PHP_VERSION < 5.4) {
-            throw new \BadMethodCallException('Options parameter is only supported on PHP 5.4+');
-        }
-        if (\defined('JSON_THROW_ON_ERROR')) {
-            $options = $options & ~\JSON_THROW_ON_ERROR;
-        }
-        // @codeCoverageIgnoreEnd
-
-        $this->input = $input;
-
-        if (!$input->isReadable()) {
-            $this->close();
-            return;
-        }
-
-        $this->assoc = $assoc;
-        $this->depth = $depth;
-        $this->options = $options;
-        $this->maxlength = $maxlength;
-
-        $this->input->on('data', array($this, 'handleData'));
-        $this->input->on('end', array($this, 'handleEnd'));
-        $this->input->on('error', array($this, 'handleError'));
-        $this->input->on('close', array($this, 'close'));
-    }
-
-    public function isReadable()
-    {
-        return !$this->closed;
-    }
-
-    public function close()
-    {
-        if ($this->closed) {
-            return;
-        }
-
-        $this->closed = true;
-        $this->buffer = '';
-
-        $this->input->close();
-
-        $this->emit('close');
-        $this->removeAllListeners();
-    }
-
-    public function pause()
-    {
-        $this->input->pause();
-    }
-
-    public function resume()
-    {
-        $this->input->resume();
-    }
-
-    public function pipe(WritableStreamInterface $dest, array $options = array())
-    {
-        Util::pipe($this, $dest, $options);
-
-        return $dest;
-    }
-
-    /** @internal */
-    public function handleData($data)
-    {
-        if (!\is_string($data)) {
-            $this->handleError(new \UnexpectedValueException('Expected stream to emit string, but got ' . \gettype($data)));
-            return;
-        }
-
-        $this->buffer .= $data;
-
-        // keep parsing while a newline has been found
-        while (($newline = \strpos($this->buffer, "\n")) !== false && $newline <= $this->maxlength) {
-            // read data up until newline and remove from buffer
-            $data = (string)\substr($this->buffer, 0, $newline);
-            $this->buffer = (string)\substr($this->buffer, $newline + 1);
-
-            // decode data with options given in ctor
-            // @codeCoverageIgnoreStart
-            if ($this->options === 0) {
-                $data = \json_decode($data, $this->assoc, $this->depth);
-            } else {
-                assert(\PHP_VERSION_ID >= 50400);
-                $data = \json_decode($data, $this->assoc, $this->depth, $this->options);
-            }
-            // @codeCoverageIgnoreEnd
-
-            // abort stream if decoding failed
-            if ($data === null && \json_last_error() !== \JSON_ERROR_NONE) {
-                // @codeCoverageIgnoreStart
-                if (\PHP_VERSION_ID > 50500) {
-                    $errstr = \json_last_error_msg();
-                } elseif (\json_last_error() === \JSON_ERROR_SYNTAX) {
-                    $errstr = 'Syntax error';
-                } else {
-                    $errstr = 'Unknown error';
-                }
-                // @codeCoverageIgnoreEnd
-                return $this->handleError(new \RuntimeException('Unable to decode JSON: ' . $errstr, \json_last_error()));
-            }
-
-            $this->emit('data', array($data));
-        }
-
-        if (isset($this->buffer[$this->maxlength])) {
-            $this->handleError(new \OverflowException('Buffer size exceeded'));
-        }
-    }
-
-    /** @internal */
-    public function handleEnd()
-    {
-        if ($this->buffer !== '') {
-            $this->handleData("\n");
-        }
-
-        if (!$this->closed) {
-            $this->emit('end');
-            $this->close();
-        }
-    }
-
-    /** @internal */
-    public function handleError(\Exception $error)
-    {
-        $this->emit('error', array($error));
-        $this->close();
-    }
-}

+ 0 - 144
vendor/clue/ndjson-react/src/Encoder.php

@@ -1,144 +0,0 @@
-<?php
-
-namespace Clue\React\NDJson;
-
-use Evenement\EventEmitter;
-use React\Stream\WritableStreamInterface;
-
-/**
- * The Encoder / Serializer can be used to write any value, encode it as a JSON text and forward it to an output stream
- */
-class Encoder extends EventEmitter implements WritableStreamInterface
-{
-    private $output;
-    private $options;
-    private $depth;
-
-    private $closed = false;
-
-    /**
-     * @param WritableStreamInterface $output
-     * @param int $options
-     * @param int $depth (requires PHP 5.5+)
-     * @throws \InvalidArgumentException
-     * @throws \BadMethodCallException
-     */
-    public function __construct(WritableStreamInterface $output, $options = 0, $depth = 512)
-    {
-        // @codeCoverageIgnoreStart
-        if (\defined('JSON_PRETTY_PRINT') && $options & \JSON_PRETTY_PRINT) {
-            throw new \InvalidArgumentException('Pretty printing not available for NDJSON');
-        }
-        if ($depth !== 512 && \PHP_VERSION < 5.5) {
-            throw new \BadMethodCallException('Depth parameter is only supported on PHP 5.5+');
-        }
-        if (\defined('JSON_THROW_ON_ERROR')) {
-            $options = $options & ~\JSON_THROW_ON_ERROR;
-        }
-        // @codeCoverageIgnoreEnd
-
-        $this->output = $output;
-
-        if (!$output->isWritable()) {
-            $this->close();
-            return;
-        }
-
-        $this->options = $options;
-        $this->depth = $depth;
-
-        $this->output->on('drain', array($this, 'handleDrain'));
-        $this->output->on('error', array($this, 'handleError'));
-        $this->output->on('close', array($this, 'close'));
-    }
-
-    public function write($data)
-    {
-        if ($this->closed) {
-            return false;
-        }
-
-        // we have to handle PHP warnings for legacy PHP < 5.5
-        // certain values (such as INF etc.) emit a warning, but still encode successfully
-        // @codeCoverageIgnoreStart
-        if (\PHP_VERSION_ID < 50500) {
-            $errstr = null;
-            \set_error_handler(function ($_, $error) use (&$errstr) {
-                $errstr = $error;
-            });
-
-            // encode data with options given in ctor (depth not supported)
-            $data = \json_encode($data, $this->options);
-
-            // always check error code and match missing error messages
-            \restore_error_handler();
-            $errno = \json_last_error();
-            if (\defined('JSON_ERROR_UTF8') && $errno === \JSON_ERROR_UTF8) {
-                // const JSON_ERROR_UTF8 added in PHP 5.3.3, but no error message assigned in legacy PHP < 5.5
-                // this overrides PHP 5.3.14 only: https://3v4l.org/IGP8Z#v5314
-                $errstr = 'Malformed UTF-8 characters, possibly incorrectly encoded';
-            } elseif ($errno !== \JSON_ERROR_NONE && $errstr === null) {
-                // error number present, but no error message applicable
-                $errstr = 'Unknown error';
-            }
-
-            // abort stream if encoding fails
-            if ($errno !== \JSON_ERROR_NONE || $errstr !== null) {
-                $this->handleError(new \RuntimeException('Unable to encode JSON: ' . $errstr, $errno));
-                return false;
-            }
-        } else {
-            // encode data with options given in ctor
-            $data = \json_encode($data, $this->options, $this->depth);
-
-            // abort stream if encoding fails
-            if ($data === false && \json_last_error() !== \JSON_ERROR_NONE) {
-                $this->handleError(new \RuntimeException('Unable to encode JSON: ' . \json_last_error_msg(), \json_last_error()));
-                return false;
-            }
-        }
-        // @codeCoverageIgnoreEnd
-
-        return $this->output->write($data . "\n");
-    }
-
-    public function end($data = null)
-    {
-        if ($data !== null) {
-            $this->write($data);
-        }
-
-        $this->output->end();
-    }
-
-    public function isWritable()
-    {
-        return !$this->closed;
-    }
-
-    public function close()
-    {
-        if ($this->closed) {
-            return;
-        }
-
-        $this->closed = true;
-        $this->output->close();
-
-        $this->emit('close');
-        $this->removeAllListeners();
-    }
-
-    /** @internal */
-    public function handleDrain()
-    {
-        $this->emit('drain');
-    }
-
-    /** @internal */
-    public function handleError(\Exception $error)
-    {
-        $this->emit('error', array($error));
-        $this->close();
-    }
-}

+ 0 - 39
vendor/composer/autoload_files.php

@@ -1,39 +0,0 @@
-<?php
-
-// autoload_files.php @generated by Composer
-
-$vendorDir = dirname(__DIR__);
-$baseDir = dirname($vendorDir);
-
-return array(
-    '9c7a683baffd24f5595c1dc5f5273030' => $vendorDir . '/hyperf/engine/src/Functions.php',
-    'f0334cce41da231af374e1df9dc548c9' => $vendorDir . '/hyperf/collection/src/Functions.php',
-    '3ac0459b8c20ccf3a7319b7cba59c914' => $vendorDir . '/hyperf/tappable/src/Functions.php',
-    'e45471c4161dad9820dfacbc5735c3f5' => $vendorDir . '/hyperf/stringable/src/Functions.php',
-    '6c17036e92b20070dc14f563311a06a3' => $vendorDir . '/hyperf/coroutine/src/Functions.php',
-    'ffe5873ab2256a6c3a4c92b3488528cb' => $vendorDir . '/hyperf/support/src/Functions.php',
-    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
-    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
-    '3ef245790d3389cf1f32f98f11abff00' => $vendorDir . '/hyperf/coordinator/src/Functions.php',
-    '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
-    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
-    '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
-    'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php',
-    '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php',
-    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
-    'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php',
-    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
-    'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
-    '253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
-    '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
-    '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php',
-    'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php',
-    'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
-    '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
-    '8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php',
-    'fdea4480df6c5882835d3b60a113de4d' => $vendorDir . '/hyperf/config/src/Functions.php',
-    'ae66016dcf8c35ea526fcf705881b4ed' => $vendorDir . '/hyperf/watcher/src/Functions.php',
-    'c72349b1fe8d0deeedd3a52e8aa814d8' => $vendorDir . '/mockery/mockery/library/helpers.php',
-    'ce9671a430e4846b44e1c68c7611f9f5' => $vendorDir . '/mockery/mockery/library/Mockery.php',
-    '9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php',
-);

+ 0 - 133
vendor/composer/autoload_psr4.php

@@ -1,133 +0,0 @@
-<?php
-
-// autoload_psr4.php @generated by Composer
-
-$vendorDir = dirname(__DIR__);
-$baseDir = dirname($vendorDir);
-
-return array(
-    'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'),
-    'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'),
-    'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
-    'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
-    'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
-    '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\\Translation\\' => array($vendorDir . '/symfony/translation'),
-    'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'),
-    'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'),
-    'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
-    'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'),
-    'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
-    'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
-    'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'),
-    'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
-    'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
-    'Swow\\Psr7\\Message\\' => array($vendorDir . '/swow/psr7-plus/src/Message'),
-    'React\\Stream\\' => array($vendorDir . '/react/stream/src'),
-    'React\\Socket\\' => array($vendorDir . '/react/socket/src'),
-    'React\\Promise\\' => array($vendorDir . '/react/promise/src'),
-    'React\\EventLoop\\' => array($vendorDir . '/react/event-loop/src'),
-    'React\\Dns\\' => array($vendorDir . '/react/dns/src'),
-    'React\\ChildProcess\\' => array($vendorDir . '/react/child-process/src'),
-    'React\\Cache\\' => array($vendorDir . '/react/cache/src'),
-    'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
-    'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
-    'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-handler/src', $vendorDir . '/psr/http-server-middleware/src'),
-    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
-    'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/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'),
-    'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
-    'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
-    'PhpDocReader\\' => array($vendorDir . '/php-di/phpdoc-reader/src/PhpDocReader'),
-    'PhpCsFixer\\' => array($vendorDir . '/friendsofphp/php-cs-fixer/src'),
-    'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
-    'Mockery\\' => array($vendorDir . '/mockery/mockery/library/Mockery'),
-    'MathPHP\\' => array($vendorDir . '/markrogoyski/math-php/src'),
-    'Laminas\\Stdlib\\' => array($vendorDir . '/laminas/laminas-stdlib/src'),
-    'Laminas\\Mime\\' => array($vendorDir . '/laminas/laminas-mime/src'),
-    'JmesPath\\' => array($vendorDir . '/mtdowling/jmespath.php/src'),
-    'JetBrains\\PhpStorm\\' => array($vendorDir . '/jetbrains/phpstorm-attributes/src'),
-    'Hyperf\\Watcher\\' => array($vendorDir . '/hyperf/watcher/src'),
-    'Hyperf\\Testing\\' => array($vendorDir . '/hyperf/testing/src'),
-    'Hyperf\\Tappable\\' => array($vendorDir . '/hyperf/tappable/src'),
-    'Hyperf\\Support\\' => array($vendorDir . '/hyperf/support/src'),
-    'Hyperf\\Stringable\\' => array($vendorDir . '/hyperf/stringable/src'),
-    'Hyperf\\Stdlib\\' => array($vendorDir . '/hyperf/stdlib/src'),
-    'Hyperf\\ServiceGovernance\\' => array($vendorDir . '/hyperf/service-governance/src'),
-    'Hyperf\\ServiceGovernanceNacos\\' => array($vendorDir . '/hyperf/service-governance-nacos/src'),
-    'Hyperf\\ServiceGovernanceConsul\\' => array($vendorDir . '/hyperf/service-governance-consul/src'),
-    'Hyperf\\Server\\' => array($vendorDir . '/hyperf/server/src'),
-    'Hyperf\\Serializer\\' => array($vendorDir . '/hyperf/serializer/src'),
-    'Hyperf\\Rpc\\' => array($vendorDir . '/hyperf/rpc/src'),
-    'Hyperf\\RpcServer\\' => array($vendorDir . '/hyperf/rpc-server/src'),
-    'Hyperf\\Redis\\' => array($vendorDir . '/hyperf/redis/src'),
-    'Hyperf\\Process\\' => array($vendorDir . '/hyperf/process/src'),
-    'Hyperf\\Pool\\' => array($vendorDir . '/hyperf/pool/src'),
-    'Hyperf\\Pipeline\\' => array($vendorDir . '/hyperf/pipeline/src'),
-    'Hyperf\\Paginator\\' => array($vendorDir . '/hyperf/paginator/src'),
-    'Hyperf\\Nacos\\' => array($vendorDir . '/hyperf/nacos/src'),
-    'Hyperf\\ModelListener\\' => array($vendorDir . '/hyperf/model-listener/src'),
-    'Hyperf\\Memory\\' => array($vendorDir . '/hyperf/memory/src'),
-    'Hyperf\\Macroable\\' => array($vendorDir . '/hyperf/macroable/src'),
-    'Hyperf\\Logger\\' => array($vendorDir . '/hyperf/logger/src'),
-    'Hyperf\\LoadBalancer\\' => array($vendorDir . '/hyperf/load-balancer/src'),
-    'Hyperf\\JsonRpc\\' => array($vendorDir . '/hyperf/json-rpc/src'),
-    'Hyperf\\HttpServer\\' => array($vendorDir . '/hyperf/http-server/src'),
-    'Hyperf\\HttpMessage\\' => array($vendorDir . '/hyperf/http-message/src'),
-    'Hyperf\\Guzzle\\' => array($vendorDir . '/hyperf/guzzle/src'),
-    'Hyperf\\Framework\\' => array($vendorDir . '/hyperf/framework/src'),
-    'Hyperf\\ExceptionHandler\\' => array($vendorDir . '/hyperf/exception-handler/src'),
-    'Hyperf\\Event\\' => array($vendorDir . '/hyperf/event/src'),
-    'Hyperf\\Engine\\Contract\\' => array($vendorDir . '/hyperf/engine-contract/src'),
-    'Hyperf\\Engine\\' => array($vendorDir . '/hyperf/engine/src'),
-    'Hyperf\\Dispatcher\\' => array($vendorDir . '/hyperf/dispatcher/src'),
-    'Hyperf\\Di\\' => array($vendorDir . '/hyperf/di/src'),
-    'Hyperf\\Devtool\\' => array($vendorDir . '/hyperf/devtool/src'),
-    'Hyperf\\DbConnection\\' => array($vendorDir . '/hyperf/db-connection/src'),
-    'Hyperf\\Database\\' => array($vendorDir . '/hyperf/database/src'),
-    'Hyperf\\Coroutine\\' => array($vendorDir . '/hyperf/coroutine/src'),
-    'Hyperf\\Coordinator\\' => array($vendorDir . '/hyperf/coordinator/src'),
-    'Hyperf\\Contract\\' => array($vendorDir . '/hyperf/contract/src'),
-    'Hyperf\\Context\\' => array($vendorDir . '/hyperf/context/src'),
-    'Hyperf\\Consul\\' => array($vendorDir . '/hyperf/consul/src'),
-    'Hyperf\\Constants\\' => array($vendorDir . '/hyperf/constants/src'),
-    'Hyperf\\Config\\' => array($vendorDir . '/hyperf/config/src'),
-    'Hyperf\\ConfigNacos\\' => array($vendorDir . '/hyperf/config-nacos/src'),
-    'Hyperf\\ConfigCenter\\' => array($vendorDir . '/hyperf/config-center/src'),
-    'Hyperf\\Conditionable\\' => array($vendorDir . '/hyperf/conditionable/src'),
-    'Hyperf\\Command\\' => array($vendorDir . '/hyperf/command/src'),
-    'Hyperf\\Collection\\' => array($vendorDir . '/hyperf/collection/src'),
-    'Hyperf\\Codec\\' => array($vendorDir . '/hyperf/codec/src'),
-    'Hyperf\\CodeParser\\' => array($vendorDir . '/hyperf/code-parser/src'),
-    'Hyperf\\Cache\\' => array($vendorDir . '/hyperf/cache/src'),
-    'HyperfTest\\' => array($baseDir . '/test'),
-    'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
-    'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
-    'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
-    'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'),
-    'Fig\\Http\\Message\\' => array($vendorDir . '/fig/http-message-util/src'),
-    'Fidry\\CpuCoreCounter\\' => array($vendorDir . '/fidry/cpu-core-counter/src'),
-    'FastRoute\\' => array($vendorDir . '/nikic/fast-route/src'),
-    'Evenement\\' => array($vendorDir . '/evenement/evenement/src'),
-    'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'),
-    'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
-    'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'),
-    'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/src'),
-    'Doctrine\\Common\\Annotations\\' => array($vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations'),
-    'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
-    'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'),
-    'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
-    'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'),
-    'Clue\\React\\NDJson\\' => array($vendorDir . '/clue/ndjson-react/src'),
-    'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'),
-    'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
-    'Aws\\' => array($vendorDir . '/aws/aws-sdk-php/src'),
-    'App\\' => array($baseDir . '/app'),
-);

+ 0 - 11064
vendor/composer/installed.json

@@ -1,11064 +0,0 @@
-{
-    "packages": [
-        {
-            "name": "aws/aws-crt-php",
-            "version": "v1.2.7",
-            "version_normalized": "1.2.7.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/awslabs/aws-crt-php.git",
-                "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/d71d9906c7bb63a28295447ba12e74723bd3730e",
-                "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5",
-                "yoast/phpunit-polyfills": "^1.0"
-            },
-            "suggest": {
-                "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality."
-            },
-            "time": "2024-10-18T22:15:13+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "Apache-2.0"
-            ],
-            "authors": [
-                {
-                    "name": "AWS SDK Common Runtime Team",
-                    "email": "aws-sdk-common-runtime@amazon.com"
-                }
-            ],
-            "description": "AWS Common Runtime for PHP",
-            "homepage": "https://github.com/awslabs/aws-crt-php",
-            "keywords": [
-                "amazon",
-                "aws",
-                "crt",
-                "sdk"
-            ],
-            "support": {
-                "issues": "https://github.com/awslabs/aws-crt-php/issues",
-                "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.7"
-            },
-            "install-path": "../aws/aws-crt-php"
-        },
-        {
-            "name": "aws/aws-sdk-php",
-            "version": "3.336.6",
-            "version_normalized": "3.336.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/aws/aws-sdk-php.git",
-                "reference": "0a99dab427f0a1c082775301141aeac3558691ad"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0a99dab427f0a1c082775301141aeac3558691ad",
-                "reference": "0a99dab427f0a1c082775301141aeac3558691ad",
-                "shasum": ""
-            },
-            "require": {
-                "aws/aws-crt-php": "^1.2.3",
-                "ext-json": "*",
-                "ext-pcre": "*",
-                "ext-simplexml": "*",
-                "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5",
-                "guzzlehttp/promises": "^1.4.0 || ^2.0",
-                "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
-                "mtdowling/jmespath.php": "^2.6",
-                "php": ">=7.2.5",
-                "psr/http-message": "^1.0 || ^2.0"
-            },
-            "require-dev": {
-                "andrewsville/php-token-reflection": "^1.4",
-                "aws/aws-php-sns-message-validator": "~1.0",
-                "behat/behat": "~3.0",
-                "composer/composer": "^1.10.22",
-                "dms/phpunit-arraysubset-asserts": "^0.4.0",
-                "doctrine/cache": "~1.4",
-                "ext-dom": "*",
-                "ext-openssl": "*",
-                "ext-pcntl": "*",
-                "ext-sockets": "*",
-                "nette/neon": "^2.3",
-                "paragonie/random_compat": ">= 2",
-                "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5",
-                "psr/cache": "^1.0 || ^2.0 || ^3.0",
-                "psr/simple-cache": "^1.0 || ^2.0 || ^3.0",
-                "sebastian/comparator": "^1.2.3 || ^4.0",
-                "yoast/phpunit-polyfills": "^1.0"
-            },
-            "suggest": {
-                "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications",
-                "doctrine/cache": "To use the DoctrineCacheAdapter",
-                "ext-curl": "To send requests using cURL",
-                "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
-                "ext-sockets": "To use client-side monitoring"
-            },
-            "time": "2024-12-28T04:16:13+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/functions.php"
-                ],
-                "psr-4": {
-                    "Aws\\": "src/"
-                },
-                "exclude-from-classmap": [
-                    "src/data/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "Apache-2.0"
-            ],
-            "authors": [
-                {
-                    "name": "Amazon Web Services",
-                    "homepage": "http://aws.amazon.com"
-                }
-            ],
-            "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project",
-            "homepage": "http://aws.amazon.com/sdkforphp",
-            "keywords": [
-                "amazon",
-                "aws",
-                "cloud",
-                "dynamodb",
-                "ec2",
-                "glacier",
-                "s3",
-                "sdk"
-            ],
-            "support": {
-                "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
-                "issues": "https://github.com/aws/aws-sdk-php/issues",
-                "source": "https://github.com/aws/aws-sdk-php/tree/3.336.6"
-            },
-            "install-path": "../aws/aws-sdk-php"
-        },
-        {
-            "name": "carbonphp/carbon-doctrine-types",
-            "version": "3.2.0",
-            "version_normalized": "3.2.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
-                "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
-                "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^8.1"
-            },
-            "conflict": {
-                "doctrine/dbal": "<4.0.0 || >=5.0.0"
-            },
-            "require-dev": {
-                "doctrine/dbal": "^4.0.0",
-                "nesbot/carbon": "^2.71.0 || ^3.0.0",
-                "phpunit/phpunit": "^10.3"
-            },
-            "time": "2024-02-09T16:56:22+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/3.2.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": "clue/ndjson-react",
-            "version": "v1.3.0",
-            "version_normalized": "1.3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/clue/reactphp-ndjson.git",
-                "reference": "392dc165fce93b5bb5c637b67e59619223c931b0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0",
-                "reference": "392dc165fce93b5bb5c637b67e59619223c931b0",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3",
-                "react/stream": "^1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35",
-                "react/event-loop": "^1.2"
-            },
-            "time": "2022-12-23T10:58:28+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Clue\\React\\NDJson\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering"
-                }
-            ],
-            "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.",
-            "homepage": "https://github.com/clue/reactphp-ndjson",
-            "keywords": [
-                "NDJSON",
-                "json",
-                "jsonlines",
-                "newline",
-                "reactphp",
-                "streaming"
-            ],
-            "support": {
-                "issues": "https://github.com/clue/reactphp-ndjson/issues",
-                "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0"
-            },
-            "funding": [
-                {
-                    "url": "https://clue.engineering/support",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/clue",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../clue/ndjson-react"
-        },
-        {
-            "name": "composer/pcre",
-            "version": "3.1.4",
-            "version_normalized": "3.1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/pcre.git",
-                "reference": "04229f163664973f68f38f6f73d917799168ef24"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24",
-                "reference": "04229f163664973f68f38f6f73d917799168ef24",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.4 || ^8.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^1.3",
-                "phpstan/phpstan-strict-rules": "^1.1",
-                "symfony/phpunit-bridge": "^5"
-            },
-            "time": "2024-05-27T13:40:54+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Pcre\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
-            "keywords": [
-                "PCRE",
-                "preg",
-                "regex",
-                "regular expression"
-            ],
-            "support": {
-                "issues": "https://github.com/composer/pcre/issues",
-                "source": "https://github.com/composer/pcre/tree/3.1.4"
-            },
-            "funding": [
-                {
-                    "url": "https://packagist.com",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/composer",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "./pcre"
-        },
-        {
-            "name": "composer/semver",
-            "version": "3.4.0",
-            "version_normalized": "3.4.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/semver.git",
-                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
-                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0 || ^8.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^1.4",
-                "symfony/phpunit-bridge": "^4.2 || ^5"
-            },
-            "time": "2023-08-31T09:50:34+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Semver\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                },
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com",
-                    "homepage": "http://robbast.nl"
-                }
-            ],
-            "description": "Semver library that offers utilities, version constraint parsing and validation.",
-            "keywords": [
-                "semantic",
-                "semver",
-                "validation",
-                "versioning"
-            ],
-            "support": {
-                "irc": "ircs://irc.libera.chat:6697/composer",
-                "issues": "https://github.com/composer/semver/issues",
-                "source": "https://github.com/composer/semver/tree/3.4.0"
-            },
-            "funding": [
-                {
-                    "url": "https://packagist.com",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/composer",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "./semver"
-        },
-        {
-            "name": "composer/xdebug-handler",
-            "version": "3.0.5",
-            "version_normalized": "3.0.5.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef",
-                "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef",
-                "shasum": ""
-            },
-            "require": {
-                "composer/pcre": "^1 || ^2 || ^3",
-                "php": "^7.2.5 || ^8.0",
-                "psr/log": "^1 || ^2 || ^3"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^1.0",
-                "phpstan/phpstan-strict-rules": "^1.1",
-                "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5"
-            },
-            "time": "2024-05-06T16:37:16+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Composer\\XdebugHandler\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "John Stevenson",
-                    "email": "john-stevenson@blueyonder.co.uk"
-                }
-            ],
-            "description": "Restarts a process without Xdebug.",
-            "keywords": [
-                "Xdebug",
-                "performance"
-            ],
-            "support": {
-                "irc": "ircs://irc.libera.chat:6697/composer",
-                "issues": "https://github.com/composer/xdebug-handler/issues",
-                "source": "https://github.com/composer/xdebug-handler/tree/3.0.5"
-            },
-            "funding": [
-                {
-                    "url": "https://packagist.com",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/composer",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "./xdebug-handler"
-        },
-        {
-            "name": "doctrine/annotations",
-            "version": "2.0.1",
-            "version_normalized": "2.0.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/annotations.git",
-                "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
-                "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/lexer": "^2 || ^3",
-                "ext-tokenizer": "*",
-                "php": "^7.2 || ^8.0",
-                "psr/cache": "^1 || ^2 || ^3"
-            },
-            "require-dev": {
-                "doctrine/cache": "^2.0",
-                "doctrine/coding-standard": "^10",
-                "phpstan/phpstan": "^1.8.0",
-                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
-                "symfony/cache": "^5.4 || ^6",
-                "vimeo/psalm": "^4.10"
-            },
-            "suggest": {
-                "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
-            },
-            "time": "2023-02-02T22:02:53+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
-                }
-            },
-            "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": "Docblock Annotations Parser",
-            "homepage": "https://www.doctrine-project.org/projects/annotations.html",
-            "keywords": [
-                "annotations",
-                "docblock",
-                "parser"
-            ],
-            "support": {
-                "issues": "https://github.com/doctrine/annotations/issues",
-                "source": "https://github.com/doctrine/annotations/tree/2.0.1"
-            },
-            "install-path": "../doctrine/annotations"
-        },
-        {
-            "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": ""
-            },
-            "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/instantiator",
-            "version": "1.5.0",
-            "version_normalized": "1.5.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
-                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "^9 || ^11",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpbench/phpbench": "^0.16 || ^1",
-                "phpstan/phpstan": "^1.4",
-                "phpstan/phpstan-phpunit": "^1",
-                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
-                "vimeo/psalm": "^4.30 || ^5.4"
-            },
-            "time": "2022-12-30T00:15:36+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "https://ocramius.github.io/"
-                }
-            ],
-            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
-            "keywords": [
-                "constructor",
-                "instantiate"
-            ],
-            "support": {
-                "issues": "https://github.com/doctrine/instantiator/issues",
-                "source": "https://github.com/doctrine/instantiator/tree/1.5.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%2Finstantiator",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../doctrine/instantiator"
-        },
-        {
-            "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": ""
-            },
-            "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": "evenement/evenement",
-            "version": "v3.0.2",
-            "version_normalized": "3.0.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/igorw/evenement.git",
-                "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc",
-                "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9 || ^6"
-            },
-            "time": "2023-08-08T05:53:35+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Evenement\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch"
-                }
-            ],
-            "description": "Événement is a very simple event dispatching library for PHP",
-            "keywords": [
-                "event-dispatcher",
-                "event-emitter"
-            ],
-            "support": {
-                "issues": "https://github.com/igorw/evenement/issues",
-                "source": "https://github.com/igorw/evenement/tree/v3.0.2"
-            },
-            "install-path": "../evenement/evenement"
-        },
-        {
-            "name": "fidry/cpu-core-counter",
-            "version": "1.1.0",
-            "version_normalized": "1.1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/theofidry/cpu-core-counter.git",
-                "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
-                "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0"
-            },
-            "require-dev": {
-                "fidry/makefile": "^0.2.0",
-                "fidry/php-cs-fixer-config": "^1.1.2",
-                "phpstan/extension-installer": "^1.2.0",
-                "phpstan/phpstan": "^1.9.2",
-                "phpstan/phpstan-deprecation-rules": "^1.0.0",
-                "phpstan/phpstan-phpunit": "^1.2.2",
-                "phpstan/phpstan-strict-rules": "^1.4.4",
-                "phpunit/phpunit": "^8.5.31 || ^9.5.26",
-                "webmozarts/strict-phpunit": "^7.5"
-            },
-            "time": "2024-02-07T09:43:46+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Fidry\\CpuCoreCounter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Théo FIDRY",
-                    "email": "theo.fidry@gmail.com"
-                }
-            ],
-            "description": "Tiny utility to get the number of CPU cores.",
-            "keywords": [
-                "CPU",
-                "core"
-            ],
-            "support": {
-                "issues": "https://github.com/theofidry/cpu-core-counter/issues",
-                "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/theofidry",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../fidry/cpu-core-counter"
-        },
-        {
-            "name": "fig/http-message-util",
-            "version": "1.1.5",
-            "version_normalized": "1.1.5.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-message-util.git",
-                "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765",
-                "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3 || ^7.0 || ^8.0"
-            },
-            "suggest": {
-                "psr/http-message": "The package containing the PSR-7 interfaces"
-            },
-            "time": "2020-11-24T22:02:12+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Fig\\Http\\Message\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "https://www.php-fig.org/"
-                }
-            ],
-            "description": "Utility classes and constants for use with PSR-7 (psr/http-message)",
-            "keywords": [
-                "http",
-                "http-message",
-                "psr",
-                "psr-7",
-                "request",
-                "response"
-            ],
-            "support": {
-                "issues": "https://github.com/php-fig/http-message-util/issues",
-                "source": "https://github.com/php-fig/http-message-util/tree/1.1.5"
-            },
-            "install-path": "../fig/http-message-util"
-        },
-        {
-            "name": "friendsofphp/php-cs-fixer",
-            "version": "v3.58.1",
-            "version_normalized": "3.58.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
-                "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/04e9424025677a86914b9a4944dbbf4060bb0aff",
-                "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff",
-                "shasum": ""
-            },
-            "require": {
-                "clue/ndjson-react": "^1.0",
-                "composer/semver": "^3.4",
-                "composer/xdebug-handler": "^3.0.3",
-                "ext-filter": "*",
-                "ext-json": "*",
-                "ext-tokenizer": "*",
-                "fidry/cpu-core-counter": "^1.0",
-                "php": "^7.4 || ^8.0",
-                "react/child-process": "^0.6.5",
-                "react/event-loop": "^1.0",
-                "react/promise": "^2.0 || ^3.0",
-                "react/socket": "^1.0",
-                "react/stream": "^1.0",
-                "sebastian/diff": "^4.0 || ^5.0 || ^6.0",
-                "symfony/console": "^5.4 || ^6.0 || ^7.0",
-                "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
-                "symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
-                "symfony/finder": "^5.4 || ^6.0 || ^7.0",
-                "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0",
-                "symfony/polyfill-mbstring": "^1.28",
-                "symfony/polyfill-php80": "^1.28",
-                "symfony/polyfill-php81": "^1.28",
-                "symfony/process": "^5.4 || ^6.0 || ^7.0",
-                "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0"
-            },
-            "require-dev": {
-                "facile-it/paraunit": "^1.3 || ^2.0",
-                "infection/infection": "^0.27.11",
-                "justinrainbow/json-schema": "^5.2",
-                "keradus/cli-executor": "^2.1",
-                "mikey179/vfsstream": "^1.6.11",
-                "php-coveralls/php-coveralls": "^2.7",
-                "php-cs-fixer/accessible-object": "^1.1",
-                "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4",
-                "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4",
-                "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2",
-                "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0",
-                "symfony/yaml": "^5.4 || ^6.0 || ^7.0"
-            },
-            "suggest": {
-                "ext-dom": "For handling output formats in XML",
-                "ext-mbstring": "For handling non-UTF8 characters."
-            },
-            "time": "2024-05-29T16:39:07+00:00",
-            "bin": [
-                "php-cs-fixer"
-            ],
-            "type": "application",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "PhpCsFixer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Dariusz Rumiński",
-                    "email": "dariusz.ruminski@gmail.com"
-                }
-            ],
-            "description": "A tool to automatically fix PHP code style",
-            "keywords": [
-                "Static code analysis",
-                "fixer",
-                "standards",
-                "static analysis"
-            ],
-            "support": {
-                "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
-                "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.58.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/keradus",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../friendsofphp/php-cs-fixer"
-        },
-        {
-            "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": ""
-            },
-            "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/guzzle",
-            "version": "7.8.1",
-            "version_normalized": "7.8.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "41042bc7ab002487b876a0683fc8dce04ddce104"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104",
-                "reference": "41042bc7ab002487b876a0683fc8dce04ddce104",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
-                "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
-                "php": "^7.2.5 || ^8.0",
-                "psr/http-client": "^1.0",
-                "symfony/deprecation-contracts": "^2.2 || ^3.0"
-            },
-            "provide": {
-                "psr/http-client-implementation": "1.0"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.8.2",
-                "ext-curl": "*",
-                "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
-                "php-http/message-factory": "^1.1",
-                "phpunit/phpunit": "^8.5.36 || ^9.6.15",
-                "psr/log": "^1.1 || ^2.0 || ^3.0"
-            },
-            "suggest": {
-                "ext-curl": "Required for CURL handler support",
-                "ext-intl": "Required for Internationalized Domain Name (IDN) support",
-                "psr/log": "Required for using the Log middleware"
-            },
-            "time": "2023-12-03T20:35:24+00:00",
-            "type": "library",
-            "extra": {
-                "bamarni-bin": {
-                    "bin-links": true,
-                    "forward-command": false
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
-                "psr-4": {
-                    "GuzzleHttp\\": "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": "Jeremy Lindblom",
-                    "email": "jeremeamia@gmail.com",
-                    "homepage": "https://github.com/jeremeamia"
-                },
-                {
-                    "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"
-                },
-                {
-                    "name": "Márk Sági-Kazár",
-                    "email": "mark.sagikazar@gmail.com",
-                    "homepage": "https://github.com/sagikazarmark"
-                },
-                {
-                    "name": "Tobias Schultze",
-                    "email": "webmaster@tubo-world.de",
-                    "homepage": "https://github.com/Tobion"
-                }
-            ],
-            "description": "Guzzle is a PHP HTTP client library",
-            "keywords": [
-                "client",
-                "curl",
-                "framework",
-                "http",
-                "http client",
-                "psr-18",
-                "psr-7",
-                "rest",
-                "web service"
-            ],
-            "support": {
-                "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/7.8.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/GrahamCampbell",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/Nyholm",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../guzzlehttp/guzzle"
-        },
-        {
-            "name": "guzzlehttp/promises",
-            "version": "2.0.2",
-            "version_normalized": "2.0.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/promises.git",
-                "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
-                "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2.5 || ^8.0"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.8.2",
-                "phpunit/phpunit": "^8.5.36 || ^9.6.15"
-            },
-            "time": "2023-12-03T20:19:20+00:00",
-            "type": "library",
-            "extra": {
-                "bamarni-bin": {
-                    "bin-links": true,
-                    "forward-command": false
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "GuzzleHttp\\Promise\\": "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": "Tobias Nyholm",
-                    "email": "tobias.nyholm@gmail.com",
-                    "homepage": "https://github.com/Nyholm"
-                },
-                {
-                    "name": "Tobias Schultze",
-                    "email": "webmaster@tubo-world.de",
-                    "homepage": "https://github.com/Tobion"
-                }
-            ],
-            "description": "Guzzle promises library",
-            "keywords": [
-                "promise"
-            ],
-            "support": {
-                "issues": "https://github.com/guzzle/promises/issues",
-                "source": "https://github.com/guzzle/promises/tree/2.0.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/GrahamCampbell",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/Nyholm",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../guzzlehttp/promises"
-        },
-        {
-            "name": "guzzlehttp/psr7",
-            "version": "2.6.2",
-            "version_normalized": "2.6.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/psr7.git",
-                "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221",
-                "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2.5 || ^8.0",
-                "psr/http-factory": "^1.0",
-                "psr/http-message": "^1.1 || ^2.0",
-                "ralouphie/getallheaders": "^3.0"
-            },
-            "provide": {
-                "psr/http-factory-implementation": "1.0",
-                "psr/http-message-implementation": "1.0"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.8.2",
-                "http-interop/http-factory-tests": "^0.9",
-                "phpunit/phpunit": "^8.5.36 || ^9.6.15"
-            },
-            "suggest": {
-                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
-            },
-            "time": "2023-12-03T20:05:35+00:00",
-            "type": "library",
-            "extra": {
-                "bamarni-bin": {
-                    "bin-links": true,
-                    "forward-command": false
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "GuzzleHttp\\Psr7\\": "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"
-                },
-                {
-                    "name": "Márk Sági-Kazár",
-                    "email": "mark.sagikazar@gmail.com",
-                    "homepage": "https://github.com/sagikazarmark"
-                },
-                {
-                    "name": "Tobias Schultze",
-                    "email": "webmaster@tubo-world.de",
-                    "homepage": "https://github.com/Tobion"
-                },
-                {
-                    "name": "Márk Sági-Kazár",
-                    "email": "mark.sagikazar@gmail.com",
-                    "homepage": "https://sagikazarmark.hu"
-                }
-            ],
-            "description": "PSR-7 message implementation that also provides common utility methods",
-            "keywords": [
-                "http",
-                "message",
-                "psr-7",
-                "request",
-                "response",
-                "stream",
-                "uri",
-                "url"
-            ],
-            "support": {
-                "issues": "https://github.com/guzzle/psr7/issues",
-                "source": "https://github.com/guzzle/psr7/tree/2.6.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/GrahamCampbell",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/Nyholm",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../guzzlehttp/psr7"
-        },
-        {
-            "name": "hamcrest/hamcrest-php",
-            "version": "v2.0.1",
-            "version_normalized": "2.0.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hamcrest/hamcrest-php.git",
-                "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
-                "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3|^7.0|^8.0"
-            },
-            "replace": {
-                "cordoval/hamcrest-php": "*",
-                "davedevelopment/hamcrest-php": "*",
-                "kodova/hamcrest-php": "*"
-            },
-            "require-dev": {
-                "phpunit/php-file-iterator": "^1.4 || ^2.0",
-                "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
-            },
-            "time": "2020-07-09T08:09:16+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "hamcrest"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "This is the PHP port of Hamcrest Matchers",
-            "keywords": [
-                "test"
-            ],
-            "support": {
-                "issues": "https://github.com/hamcrest/hamcrest-php/issues",
-                "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
-            },
-            "install-path": "../hamcrest/hamcrest-php"
-        },
-        {
-            "name": "hyperf/cache",
-            "version": "v3.1.23",
-            "version_normalized": "3.1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/cache.git",
-                "reference": "7783e220b984b26409d621da49b853340f788a6d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/cache/zipball/7783e220b984b26409d621da49b853340f788a6d",
-                "reference": "7783e220b984b26409d621da49b853340f788a6d",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/collection": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/simple-cache": "^1.0|^2.0|^3.0"
-            },
-            "suggest": {
-                "hyperf/di": "Use cache annotations.",
-                "hyperf/event": "Use listener to delete annotation cache."
-            },
-            "time": "2024-05-23T03:43:58+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Cache\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Cache\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A cache component for hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "cache",
-                "hyperf",
-                "php"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/cache"
-        },
-        {
-            "name": "hyperf/code-parser",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/code-parser.git",
-                "reference": "820e8e6680f0d04e4187a3037a2a3eaf7141913d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/code-parser/zipball/820e8e6680f0d04e4187a3037a2a3eaf7141913d",
-                "reference": "820e8e6680f0d04e4187a3037a2a3eaf7141913d",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/collection": "~3.1.0",
-                "hyperf/stringable": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "jean85/pretty-package-versions": "Required to use PrettyVersions. (^1.2|^2.0)",
-                "nikic/php-parser": "Required to use PhpParser. (^4.0)"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\CodeParser\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A code parser component for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "code-parser",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/code-parser"
-        },
-        {
-            "name": "hyperf/codec",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/codec.git",
-                "reference": "198c364ad8eadda13f1a0decdbb9221ac9c4c260"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/codec/zipball/198c364ad8eadda13f1a0decdbb9221ac9c4c260",
-                "reference": "198c364ad8eadda13f1a0decdbb9221ac9c4c260",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "ext-xml": "*",
-                "hyperf/contract": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "ext-igbinary": "Required to use IgbinarySerializerPacker."
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Codec\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A codec component for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "codec",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/codec"
-        },
-        {
-            "name": "hyperf/collection",
-            "version": "v3.1.23.2",
-            "version_normalized": "3.1.23.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/collection.git",
-                "reference": "8d10ca88228ee47c9cee578ac3699e795f468ada"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/collection/zipball/8d10ca88228ee47c9cee578ac3699e795f468ada",
-                "reference": "8d10ca88228ee47c9cee578ac3699e795f468ada",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/conditionable": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/macroable": "~3.1.0",
-                "hyperf/stringable": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-05-24T08:33:42+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Collection\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Collection package which come from illuminate/collections",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "collection",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/collection"
-        },
-        {
-            "name": "hyperf/command",
-            "version": "v3.1.24",
-            "version_normalized": "3.1.24.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/command.git",
-                "reference": "b1ca85876f35f85fe3f52b0cc75bcc3da418769d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/command/zipball/b1ca85876f35f85fe3f52b0cc75bcc3da418769d",
-                "reference": "b1ca85876f35f85fe3f52b0cc75bcc3da418769d",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/collection": "~3.1.0",
-                "hyperf/context": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/coroutine": "~3.1.0",
-                "hyperf/di": "~3.1.0",
-                "hyperf/stringable": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/tappable": "~3.1.0",
-                "php": ">=8.1",
-                "psr/event-dispatcher": "^1.0",
-                "symfony/console": "^5.0|^6.0|^7.0"
-            },
-            "suggest": {
-                "hyperf/di": "Required to use annotations.",
-                "hyperf/event": "Required to use listeners."
-            },
-            "time": "2024-05-27T12:37:07+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Command\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Command\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Command for hyperf",
-            "keywords": [
-                "command",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "issues": "https://github.com/hyperf/command/issues",
-                "source": "https://github.com/hyperf/command/tree/v3.1.24"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/command"
-        },
-        {
-            "name": "hyperf/conditionable",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/conditionable.git",
-                "reference": "2c1555891d136904b890ba6d812d9ff50ca13ae3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/conditionable/zipball/2c1555891d136904b890ba6d812d9ff50ca13ae3",
-                "reference": "2c1555891d136904b890ba6d812d9ff50ca13ae3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Conditionable\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Macroable package which come from illuminate/conditionable",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "conditionable",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/conditionable"
-        },
-        {
-            "name": "hyperf/config",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/config.git",
-                "reference": "5a92774d6db6bc02fc511c005c01f99d922aa292"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/config/zipball/5a92774d6db6bc02fc511c005c01f99d922aa292",
-                "reference": "5a92774d6db6bc02fc511c005c01f99d922aa292",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/collection": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "symfony/finder": "^5.0|^6.0|^7.0"
-            },
-            "suggest": {
-                "hyperf/context": "Required to use config()",
-                "hyperf/di": "Allows using @Value annotation",
-                "hyperf/event": "Allows using @Value annotation",
-                "hyperf/framework": "Allows using @Value annotation",
-                "vlucas/phpdotenv": "Allows using enviroment value to override the config"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Config\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "./src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Config\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "An independent component that provides configuration container.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "config",
-                "configuration",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/config"
-        },
-        {
-            "name": "hyperf/config-center",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/config-center.git",
-                "reference": "a47acc3279ca173fa393b81175b6807859cd144e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/config-center/zipball/a47acc3279ca173fa393b81175b6807859cd144e",
-                "reference": "a47acc3279ca173fa393b81175b6807859cd144e",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/support": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "hyperf/process": "^2.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\ConfigCenter\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\ConfigCenter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "The abstraction component of config center",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "config-center",
-                "hyperf",
-                "php"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/config-center"
-        },
-        {
-            "name": "hyperf/config-nacos",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/config-nacos.git",
-                "reference": "e66bd614a5bc789f6ca28152a206218f77bc8dd2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/config-nacos/zipball/e66bd614a5bc789f6ca28152a206218f77bc8dd2",
-                "reference": "e66bd614a5bc789f6ca28152a206218f77bc8dd2",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/config-center": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/guzzle": "~3.1.0",
-                "hyperf/nacos": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "jetbrains/phpstorm-attributes": "^1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "ext-json": "*",
-                "ext-simplexml": "*",
-                "ext-yaml": "*",
-                "hyperf/event": "Required to use listeners. (~2.2.0)",
-                "hyperf/framework": "Required to use listeners. (~2.2.0)",
-                "hyperf/process": "Required to use processes. (~2.2.0)"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\ConfigNacos\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\ConfigNacos\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A nacos adapter for config center component.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "nacos",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/config-nacos"
-        },
-        {
-            "name": "hyperf/constants",
-            "version": "v3.1.16",
-            "version_normalized": "3.1.16.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/constants.git",
-                "reference": "55d46901660e4540195145d0e4066296cf0dc130"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/constants/zipball/55d46901660e4540195145d0e4066296cf0dc130",
-                "reference": "55d46901660e4540195145d0e4066296cf0dc130",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/di": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "hyperf/translation": "Required to use translation."
-            },
-            "time": "2024-03-31T11:35:28+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Constants\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Constants\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A constants component for hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "constants",
-                "hyperf",
-                "php"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/constants"
-        },
-        {
-            "name": "hyperf/consul",
-            "version": "v3.1.22",
-            "version_normalized": "3.1.22.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/consul.git",
-                "reference": "6e5e6936513c76812d6c1a066530543b15aec5e8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/consul/zipball/6e5e6936513c76812d6c1a066530543b15aec5e8",
-                "reference": "6e5e6936513c76812d6c1a066530543b15aec5e8",
-                "shasum": ""
-            },
-            "require": {
-                "guzzlehttp/guzzle": "^6.3|^7.0",
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "hyperf/guzzle": "~3.1.0"
-            },
-            "time": "2024-05-15T06:42:24+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Consul\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Consul\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A Consul Client for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "consul",
-                "consul-client",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/consul"
-        },
-        {
-            "name": "hyperf/context",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/context.git",
-                "reference": "ad913fd50eb5f738c038e172c120bc6956c0da69"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/context/zipball/ad913fd50eb5f738c038e172c120bc6956c0da69",
-                "reference": "ad913fd50eb5f738c038e172c120bc6956c0da69",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/engine": "^2.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "swow/psr7-plus": "Required to use RequestContext and ResponseContext"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Context\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A coroutine/application context library.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "Context",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/context"
-        },
-        {
-            "name": "hyperf/contract",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/contract.git",
-                "reference": "9950abe963cc6b30c6d3506fa5b3adbd58cb1945"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/contract/zipball/9950abe963cc6b30c6d3506fa5b3adbd58cb1945",
-                "reference": "9950abe963cc6b30c6d3506fa5b3adbd58cb1945",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Contract\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "The contracts of Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/contract"
-        },
-        {
-            "name": "hyperf/coordinator",
-            "version": "v3.1.21",
-            "version_normalized": "3.1.21.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/coordinator.git",
-                "reference": "caf5a70f96b7f22950e1caa3ba74f72c8382493c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/coordinator/zipball/caf5a70f96b7f22950e1caa3ba74f72c8382493c",
-                "reference": "caf5a70f96b7f22950e1caa3ba74f72c8382493c",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/engine": "^2.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-05-09T02:35:08+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Coordinator\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Coordinator",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "Coordinator",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/coordinator"
-        },
-        {
-            "name": "hyperf/coroutine",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/coroutine.git",
-                "reference": "8f4c573a9457646db3e629dacabe064eebaf8cc1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/coroutine/zipball/8f4c573a9457646db3e629dacabe064eebaf8cc1",
-                "reference": "8f4c573a9457646db3e629dacabe064eebaf8cc1",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/context": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/engine": "^2.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Coroutine\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Coroutine",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "coroutine",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/coroutine"
-        },
-        {
-            "name": "hyperf/database",
-            "version": "v3.1.24",
-            "version_normalized": "3.1.24.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/database.git",
-                "reference": "9897c211ada78b0603f4249466f0c1b3e2d6d938"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/database/zipball/9897c211ada78b0603f4249466f0c1b3e2d6d938",
-                "reference": "9897c211ada78b0603f4249466f0c1b3e2d6d938",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/code-parser": "~3.1.0",
-                "hyperf/collection": "~3.1.0",
-                "hyperf/macroable": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/tappable": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "nesbot/carbon": "^2.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/event-dispatcher": "^1.0"
-            },
-            "suggest": {
-                "doctrine/dbal": "Required to rename columns (^3.0).",
-                "nikic/php-parser": "Required to use ModelCommand. (^4.0)",
-                "php-di/phpdoc-reader": "Required to use ModelCommand. (^2.2)"
-            },
-            "time": "2024-05-24T06:14:27+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Database\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A flexible database library.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "database",
-                "hyperf",
-                "php"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/database"
-        },
-        {
-            "name": "hyperf/db-connection",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/db-connection.git",
-                "reference": "bfe44b0365a555fb4b947df37b662fce26b905c0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/db-connection/zipball/bfe44b0365a555fb4b947df37b662fce26b905c0",
-                "reference": "bfe44b0365a555fb4b947df37b662fce26b905c0",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/database": "~3.1.0",
-                "hyperf/di": "~3.1.0",
-                "hyperf/framework": "~3.1.0",
-                "hyperf/model-listener": "~3.1.0",
-                "hyperf/pool": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\DbConnection\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\DbConnection\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A hyperf db connection handler for hyperf/database.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "Connection",
-                "database",
-                "hyperf",
-                "php"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/db-connection"
-        },
-        {
-            "name": "hyperf/devtool",
-            "version": "v3.1.19",
-            "version_normalized": "3.1.19.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/devtool.git",
-                "reference": "cdce9f26c3a18d5d0302acdf83d26d4686223476"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/devtool/zipball/cdce9f26c3a18d5d0302acdf83d26d4686223476",
-                "reference": "cdce9f26c3a18d5d0302acdf83d26d4686223476",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/code-parser": "~3.1.0",
-                "hyperf/command": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/di": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-04-13T06:53:08+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Devtool\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Devtool\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A Devtool for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "dev",
-                "devtool",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/devtool"
-        },
-        {
-            "name": "hyperf/di",
-            "version": "v3.1.28",
-            "version_normalized": "3.1.28.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/di.git",
-                "reference": "6ffef4c7ff0d59380fa1d894ec278054b87c17cb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/di/zipball/6ffef4c7ff0d59380fa1d894ec278054b87c17cb",
-                "reference": "6ffef4c7ff0d59380fa1d894ec278054b87c17cb",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0",
-                "hyperf/code-parser": "~3.1.0",
-                "hyperf/pipeline": "~3.1.0",
-                "hyperf/stdlib": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "nikic/php-parser": "^4.1",
-                "php": ">=8.1",
-                "php-di/phpdoc-reader": "^2.2",
-                "psr/container": "^1.0 || ^2.0",
-                "symfony/finder": "^5.0 || ^6.0 || ^7.0",
-                "vlucas/phpdotenv": "^5.0"
-            },
-            "suggest": {
-                "ext-pcntl": "Required to scan annotations.",
-                "hyperf/config": "Require this component for annotation scan progress to retrieve the scan path."
-            },
-            "time": "2024-06-26T03:31:21+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Di\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Di\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A DI for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "annotation",
-                "di",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/di"
-        },
-        {
-            "name": "hyperf/dispatcher",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/dispatcher.git",
-                "reference": "6a6f0f149081291664ff14bf34aecf2c01f89328"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/dispatcher/zipball/6a6f0f149081291664ff14bf34aecf2c01f89328",
-                "reference": "6a6f0f149081291664ff14bf34aecf2c01f89328",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/http-message": "^1.0|^2.0",
-                "psr/http-server-middleware": "^1.0"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Dispatcher\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Dispatcher\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A HTTP Server for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "dispatcher",
-                "filter",
-                "hyperf",
-                "middleware",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/dispatcher"
-        },
-        {
-            "name": "hyperf/engine",
-            "version": "v2.11.0",
-            "version_normalized": "2.11.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/engine.git",
-                "reference": "26e0b65fc2a63a00266e7124e221c6f3fb2c8e95"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/engine/zipball/26e0b65fc2a63a00266e7124e221c6f3fb2c8e95",
-                "reference": "26e0b65fc2a63a00266e7124e221c6f3fb2c8e95",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/engine-contract": "~1.10.0",
-                "php": ">=8.0"
-            },
-            "conflict": {
-                "ext-swoole": "<5.0"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^3.0",
-                "hyperf/guzzle": "^3.0",
-                "hyperf/http-message": "^3.0",
-                "mockery/mockery": "^1.5",
-                "phpstan/phpstan": "^1.0",
-                "phpunit/phpunit": "^9.4",
-                "swoole/ide-helper": "5.*"
-            },
-            "suggest": {
-                "ext-sockets": "*",
-                "ext-swoole": ">=5.0",
-                "hyperf/http-message": "Required to use ResponseEmitter.",
-                "psr/http-message": "Required to use WebSocket Frame."
-            },
-            "time": "2024-04-17T13:36:28+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.11-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Engine\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Engine\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Coroutine engine provided by swoole.",
-            "keywords": [
-                "engine",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "issues": "https://github.com/hyperf/engine/issues",
-                "source": "https://github.com/hyperf/engine/tree/v2.11.0"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/engine"
-        },
-        {
-            "name": "hyperf/engine-contract",
-            "version": "v1.10.1",
-            "version_normalized": "1.10.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/engine-contract.git",
-                "reference": "2714a8ba6d6b916e5bd373ff680df9569a4c9eef"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/engine-contract/zipball/2714a8ba6d6b916e5bd373ff680df9569a4c9eef",
-                "reference": "2714a8ba6d6b916e5bd373ff680df9569a4c9eef",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.0"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^3.0",
-                "mockery/mockery": "^1.0",
-                "phpstan/phpstan": "^1.0",
-                "phpunit/phpunit": ">=7.0",
-                "psr/http-message": "^1.0",
-                "swoole/ide-helper": "^4.5"
-            },
-            "suggest": {
-                "psr/http-message": "Required to use WebSocket Frame."
-            },
-            "time": "2024-04-17T13:34:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.9-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Engine\\Contract\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Contract for Coroutine Engine",
-            "keywords": [
-                "contract",
-                "coroutine",
-                "engine",
-                "hyperf",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/hyperf/engine-contract/issues",
-                "source": "https://github.com/hyperf/engine-contract/tree/v1.10.1"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/engine-contract"
-        },
-        {
-            "name": "hyperf/event",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/event.git",
-                "reference": "8d008682c028e958197589e90232bb2a1d3c77d9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/event/zipball/8d008682c028e958197589e90232bb2a1d3c77d9",
-                "reference": "8d008682c028e958197589e90232bb2a1d3c77d9",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/stdlib": "~3.1.0",
-                "php": ">=8.1",
-                "psr/event-dispatcher": "^1.0"
-            },
-            "suggest": {
-                "hyperf/di": "Required to use annotatioins."
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Event\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Event\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "an event manager that implements PSR-14.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "event",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/event"
-        },
-        {
-            "name": "hyperf/exception-handler",
-            "version": "v3.1.22",
-            "version_normalized": "3.1.22.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/exception-handler.git",
-                "reference": "6eefe07081ffaa0d6534273caa96722c606da6a8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/exception-handler/zipball/6eefe07081ffaa0d6534273caa96722c606da6a8",
-                "reference": "6eefe07081ffaa0d6534273caa96722c606da6a8",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/context": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/dispatcher": "~3.1.0",
-                "hyperf/http-message": "~3.1.0",
-                "hyperf/stdlib": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/http-message": "^1.0|^2.0",
-                "swow/psr7-plus": "^1.0"
-            },
-            "suggest": {
-                "hyperf/di": "Required to use #[ExceptionHandler]",
-                "hyperf/event": "Required to use listeners",
-                "hyperf/framework": "Required to use listeners",
-                "hyperf/stringable": "Required to use WhoopsExceptionHandler"
-            },
-            "time": "2024-05-15T07:12:41+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\ExceptionHandler\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\ExceptionHandler\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Exception handler for hyperf",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "exception-handler",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/exception-handler"
-        },
-        {
-            "name": "hyperf/framework",
-            "version": "v3.1.23",
-            "version_normalized": "3.1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/framework.git",
-                "reference": "c40d529fafc197c67a64e9ca918498d417d4102c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/framework/zipball/c40d529fafc197c67a64e9ca918498d417d4102c",
-                "reference": "c40d529fafc197c67a64e9ca918498d417d4102c",
-                "shasum": ""
-            },
-            "require": {
-                "fig/http-message-util": "^1.1.2",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/coordinator": "~3.1.0",
-                "hyperf/coroutine": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/event-dispatcher": "^1.0",
-                "psr/log": "^1.0|^2.0|^3.0"
-            },
-            "suggest": {
-                "ext-swoole": "Required to use swoole engine.",
-                "hyperf/command": "Required to use Command annotation.",
-                "hyperf/di": "Required to use Command annotation.",
-                "hyperf/dispatcher": "Required to use BootApplication event.",
-                "symfony/event-dispatcher": "Required to use symfony event dispatcher (^5.0|^6.0)."
-            },
-            "time": "2024-05-21T05:43:48+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Framework\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Framework\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A coroutine framework that focuses on hyperspeed and flexible, specifically use for build microservices and middlewares.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "Microservice",
-                "framework",
-                "hyperf",
-                "middleware",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/framework"
-        },
-        {
-            "name": "hyperf/guzzle",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/guzzle.git",
-                "reference": "1281abe876925b8ef64a7372d53701fdb9a519cf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/guzzle/zipball/1281abe876925b8ef64a7372d53701fdb9a519cf",
-                "reference": "1281abe876925b8ef64a7372d53701fdb9a519cf",
-                "shasum": ""
-            },
-            "require": {
-                "guzzlehttp/guzzle": "^6.3|^7.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/http-message": "^1.0|^2.0"
-            },
-            "suggest": {
-                "ext-curl": "Required for CURL handler support",
-                "hyperf/pool": "Required to use pool handler."
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Guzzle\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Guzzle\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Swoole coroutine handler for guzzle",
-            "keywords": [
-                "Guzzle",
-                "handler",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "issues": "https://github.com/hyperf/guzzle/issues",
-                "source": "https://github.com/hyperf/guzzle/tree/v3.1.15"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/guzzle"
-        },
-        {
-            "name": "hyperf/http-message",
-            "version": "v3.1.19",
-            "version_normalized": "3.1.19.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/http-message.git",
-                "reference": "f96e372203bd6109bc1f6c15ee8eee3a76c8f92e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/http-message/zipball/f96e372203bd6109bc1f6c15ee8eee3a76c8f92e",
-                "reference": "f96e372203bd6109bc1f6c15ee8eee3a76c8f92e",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/engine": "^2.11",
-                "hyperf/support": "~3.1.0",
-                "laminas/laminas-mime": "^2.7",
-                "php": ">=8.1",
-                "psr/http-message": "^1.0|^2.0",
-                "swow/psr7-plus": "^1.0"
-            },
-            "suggest": {
-                "psr/container": "Required to replace RequestParserInterface."
-            },
-            "time": "2024-04-17T13:55:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\HttpMessage\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\HttpMessage\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "microservice framework base on swoole",
-            "keywords": [
-                "http-message",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "issues": "https://github.com/hyperf/http-message/issues",
-                "source": "https://github.com/hyperf/http-message/tree/v3.1.19"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/http-message"
-        },
-        {
-            "name": "hyperf/http-server",
-            "version": "v3.1.17",
-            "version_normalized": "3.1.17.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/http-server.git",
-                "reference": "d2c633123dd8e7d5b2bcd1b24b7047fe3adc6424"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/http-server/zipball/d2c633123dd8e7d5b2bcd1b24b7047fe3adc6424",
-                "reference": "d2c633123dd8e7d5b2bcd1b24b7047fe3adc6424",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/collection": "~3.1.0",
-                "hyperf/context": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/coroutine": "~3.1.0",
-                "hyperf/dispatcher": "~3.1.0",
-                "hyperf/event": "~3.1.0",
-                "hyperf/exception-handler": "~3.1.0",
-                "hyperf/http-message": "~3.1.0",
-                "hyperf/macroable": "~3.1.0",
-                "hyperf/serializer": "~3.1.0",
-                "hyperf/server": "~3.1.0",
-                "hyperf/stdlib": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "nikic/fast-route": "^1.3",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "swow/psr7-plus": "^1.0"
-            },
-            "suggest": {
-                "hyperf/di": "Required to use annotations."
-            },
-            "time": "2024-04-08T07:53:54+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\HttpServer\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\HttpServer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A HTTP Server for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "http",
-                "http-server",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/http-server"
-        },
-        {
-            "name": "hyperf/json-rpc",
-            "version": "v3.1.23",
-            "version_normalized": "3.1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/json-rpc.git",
-                "reference": "234a3d8f9873a3d391cf9229fc5033638c5c9a93"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/json-rpc/zipball/234a3d8f9873a3d391cf9229fc5033638c5c9a93",
-                "reference": "234a3d8f9873a3d391cf9229fc5033638c5c9a93",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/context": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/engine": "^2.0",
-                "hyperf/http-message": "~3.1.0",
-                "hyperf/load-balancer": "~3.1.0",
-                "hyperf/rpc": "~3.1.0",
-                "hyperf/serializer": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "swow/psr7-plus": "^1.0"
-            },
-            "suggest": {
-                "hyperf/event": "Register the objects to ProtocolManager automatically.",
-                "hyperf/framework": "Register the objects to ProtocolManager automatically.",
-                "hyperf/guzzle": "Required to use JSON RPC with HTTP protocol.",
-                "hyperf/rpc-client": "Reqiured to use JSON RPC in hyperf rpc client.",
-                "hyperf/rpc-server": "Reqiured to use JSON RPC in hyperf rpc server."
-            },
-            "time": "2024-05-23T03:43:58+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\JsonRpc\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\JsonRpc\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A JSON RPC component for Hyperf RPC Server or Client.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "json-rpc",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/json-rpc"
-        },
-        {
-            "name": "hyperf/load-balancer",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/load-balancer.git",
-                "reference": "f4bfecb7e6ef7c7cca008c90510a9e2c7f0c8f5a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/load-balancer/zipball/f4bfecb7e6ef7c7cca008c90510a9e2c7f0c8f5a",
-                "reference": "f4bfecb7e6ef7c7cca008c90510a9e2c7f0c8f5a",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/coordinator": "~3.1.0",
-                "hyperf/coroutine": "~3.1.0",
-                "markrogoyski/math-php": "^2.0",
-                "php": ">=8.1",
-                "psr/log": "^1.0|^2.0|^3.0"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\LoadBalancer\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\LoadBalancer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A load balancer library for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "load-balancer",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/load-balancer"
-        },
-        {
-            "name": "hyperf/logger",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/logger.git",
-                "reference": "014f511449f84f6dea0cf368531ac07f31408496"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/logger/zipball/014f511449f84f6dea0cf368531ac07f31408496",
-                "reference": "014f511449f84f6dea0cf368531ac07f31408496",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "monolog/monolog": "^2.7|^3.1",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/log": "^1.0|^2.0|^3.0"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Logger\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Logger\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A logger component for hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "logger",
-                "php"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/logger"
-        },
-        {
-            "name": "hyperf/macroable",
-            "version": "v3.1.23",
-            "version_normalized": "3.1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/macroable.git",
-                "reference": "5f555c40bfec6aaab46f1bb1cac9ef556fbfbe72"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/macroable/zipball/5f555c40bfec6aaab46f1bb1cac9ef556fbfbe72",
-                "reference": "5f555c40bfec6aaab46f1bb1cac9ef556fbfbe72",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-05-20T09:55:40+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Macroable\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Macroable package which come from illuminate/macroable",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "macroable",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/macroable"
-        },
-        {
-            "name": "hyperf/memory",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/memory.git",
-                "reference": "1ad9df27b0817e74bb31b000735072c75fb41943"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/memory/zipball/1ad9df27b0817e74bb31b000735072c75fb41943",
-                "reference": "1ad9df27b0817e74bb31b000735072c75fb41943",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Memory\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Memory\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "An independent component that use to operate and manage memory.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "memory",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/memory"
-        },
-        {
-            "name": "hyperf/model-listener",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/model-listener.git",
-                "reference": "a65804ea8cac4e383d275a1fff7f79cd6f387da6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/model-listener/zipball/a65804ea8cac4e383d275a1fff7f79cd6f387da6",
-                "reference": "a65804ea8cac4e383d275a1fff7f79cd6f387da6",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/database": "~3.1.0",
-                "hyperf/di": "~3.1.0",
-                "hyperf/event": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\ModelListener\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\ModelListener\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A model listener for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "model-listener",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/model-listener"
-        },
-        {
-            "name": "hyperf/nacos",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/nacos.git",
-                "reference": "b0dbfdf67f12740faab73a9496269f230c7459be"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/nacos/zipball/b0dbfdf67f12740faab73a9496269f230c7459be",
-                "reference": "b0dbfdf67f12740faab73a9496269f230c7459be",
-                "shasum": ""
-            },
-            "require": {
-                "guzzlehttp/guzzle": "^6.5|^7.0",
-                "hyperf/codec": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "jetbrains/phpstorm-attributes": "^1.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Nacos\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Nacos\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Nacos SDK",
-            "keywords": [
-                "hyperf",
-                "nacos",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/hyperf/nacos/issues",
-                "source": "https://github.com/hyperf/nacos/tree/v3.1.15"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/nacos"
-        },
-        {
-            "name": "hyperf/paginator",
-            "version": "v3.1.42",
-            "version_normalized": "3.1.42.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/paginator.git",
-                "reference": "b637a3deeee69f4a3e5a6d62ab8214244b98412a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/paginator/zipball/b637a3deeee69f4a3e5a6d62ab8214244b98412a",
-                "reference": "b637a3deeee69f4a3e5a6d62ab8214244b98412a",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "hyperf/event": "Reqiured to use PageResolverListener.",
-                "hyperf/framework": "Reqiured to use PageResolverListener.",
-                "hyperf/http-server": "Reqiured to use PageResolverListener."
-            },
-            "time": "2024-09-25T02:54:12+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Paginator\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Paginator\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A paginator component for hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "paginator",
-                "php"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/paginator"
-        },
-        {
-            "name": "hyperf/pipeline",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/pipeline.git",
-                "reference": "ad4dbaeea2dc1166bb02e3ac5572f4eb773315a8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/pipeline/zipball/ad4dbaeea2dc1166bb02e3ac5572f4eb773315a8",
-                "reference": "ad4dbaeea2dc1166bb02e3ac5572f4eb773315a8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Pipeline\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Macroable package which come from illuminate/pipeline",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "pipeline",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/pipeline"
-        },
-        {
-            "name": "hyperf/pool",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/pool.git",
-                "reference": "34d907adf5bb2727160bfcdeafe0e98cab00d6c7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/pool/zipball/34d907adf5bb2727160bfcdeafe0e98cab00d6c7",
-                "reference": "34d907adf5bb2727160bfcdeafe0e98cab00d6c7",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0"
-            },
-            "suggest": {
-                "psr/event-dispatcher": "Required to use events."
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Pool\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Pool\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "An independent universal connection pool component.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "connection-pool",
-                "hyperf",
-                "php",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/pool"
-        },
-        {
-            "name": "hyperf/process",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/process.git",
-                "reference": "2d45d4002a64f23406e3c36d3edf5da42147156b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/process/zipball/2d45d4002a64f23406e3c36d3edf5da42147156b",
-                "reference": "2d45d4002a64f23406e3c36d3edf5da42147156b",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/event-dispatcher": "^1.0"
-            },
-            "suggest": {
-                "hyperf/di": "Required to use annotations.",
-                "hyperf/event": "Required to dump the message before and after process.",
-                "hyperf/framework": "Required to use BootProcessListener."
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Process\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Process\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A process component for hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "process"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/process"
-        },
-        {
-            "name": "hyperf/redis",
-            "version": "v3.1.18",
-            "version_normalized": "3.1.18.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/redis.git",
-                "reference": "85bea22b580bc32dd1d8e8750936b1d386e8deca"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/redis/zipball/85bea22b580bc32dd1d8e8750936b1d386e8deca",
-                "reference": "85bea22b580bc32dd1d8e8750936b1d386e8deca",
-                "shasum": ""
-            },
-            "require": {
-                "ext-redis": "^5.0|^6.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/pool": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/tappable": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0"
-            },
-            "suggest": {
-                "ext-redis": "Required to use sentinel mode (>=5.2).",
-                "hyperf/di": "Create the RedisPool via dependency injection."
-            },
-            "time": "2024-04-11T10:18:35+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Redis\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Redis\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A redis component for hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "pool",
-                "redis"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/redis"
-        },
-        {
-            "name": "hyperf/rpc",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/rpc.git",
-                "reference": "f5b0109aec760272357270662ad0914c4848b8c0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/rpc/zipball/f5b0109aec760272357270662ad0914c4848b8c0",
-                "reference": "f5b0109aec760272357270662ad0914c4848b8c0",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "jetbrains/phpstorm-attributes": "^1.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": []
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Rpc\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A rpc basic library for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "rpc",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/rpc"
-        },
-        {
-            "name": "hyperf/rpc-server",
-            "version": "v3.1.20",
-            "version_normalized": "3.1.20.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/rpc-server.git",
-                "reference": "9c820dc51893c6443c01fd0f2f534fc4bcc8a4f1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/rpc-server/zipball/9c820dc51893c6443c01fd0f2f534fc4bcc8a4f1",
-                "reference": "9c820dc51893c6443c01fd0f2f534fc4bcc8a4f1",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/http-server": "~3.1.0",
-                "hyperf/rpc": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "hyperf/di": "Required to use annotations."
-            },
-            "time": "2024-04-22T01:46:29+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\RpcServer\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\RpcServer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "An abstract rpc server component for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "rpc",
-                "rpc-server",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/rpc-server"
-        },
-        {
-            "name": "hyperf/serializer",
-            "version": "v3.1.23",
-            "version_normalized": "3.1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/serializer.git",
-                "reference": "d9b4f012565c90176c7cc117043c5907ea3795bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/serializer/zipball/d9b4f012565c90176c7cc117043c5907ea3795bb",
-                "reference": "d9b4f012565c90176c7cc117043c5907ea3795bb",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "hyperf/di": "Required to use ExceptionNormalizer",
-                "symfony/property-access": "Required to use SymfonyNormalizer (^5.0|^6.0)",
-                "symfony/serializer": "Required to use SymfonyNormalizer (^5.0|^6.0)"
-            },
-            "time": "2024-05-23T03:43:58+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Serializer\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Serializer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A serializer component for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "swoole",
-                "tappable"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/serializer"
-        },
-        {
-            "name": "hyperf/server",
-            "version": "v3.1.23",
-            "version_normalized": "3.1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/server.git",
-                "reference": "56c34b808df8f1e85991c26ee47c17025a29581c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/server/zipball/56c34b808df8f1e85991c26ee47c17025a29581c",
-                "reference": "56c34b808df8f1e85991c26ee47c17025a29581c",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/coordinator": "~3.1.0",
-                "hyperf/engine": "^2.8",
-                "hyperf/support": "~3.1.0",
-                "hyperf/tappable": "~3.1.0",
-                "php": ">=8.1",
-                "psr/container": "^1.0|^2.0",
-                "psr/event-dispatcher": "^1.0",
-                "psr/log": "^1.0|^2.0|^3.0",
-                "symfony/console": "^5.0|^6.0|^7.0"
-            },
-            "suggest": {
-                "hyperf/event": "Dump the info after server start.",
-                "hyperf/framework": "Dump the info after server start."
-            },
-            "time": "2024-05-23T03:43:58+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Server\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Server\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A base server library for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "server",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/server"
-        },
-        {
-            "name": "hyperf/service-governance",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/service-governance.git",
-                "reference": "e2d11bc91cc0ac5c32bf0ffa3a8c95ef3987b06a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/service-governance/zipball/e2d11bc91cc0ac5c32bf0ffa3a8c95ef3987b06a",
-                "reference": "e2d11bc91cc0ac5c32bf0ffa3a8c95ef3987b06a",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/contract": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "jetbrains/phpstorm-attributes": "^1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "hyperf/event": "Required to use RegisterServiceListener.",
-                "hyperf/framework": "Required to use RegisterServiceListener.",
-                "hyperf/service-governance-consul": "Required to use consul adapter.",
-                "hyperf/service-governance-nacos": "Required to use nacos adapter."
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\ServiceGovernance\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\ServiceGovernance\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A service governance component for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "service-governance",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/service-governance"
-        },
-        {
-            "name": "hyperf/service-governance-consul",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/service-governance-consul.git",
-                "reference": "fba1aa56a3298559ff290de9640e6eb5cfcf9ce4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/service-governance-consul/zipball/fba1aa56a3298559ff290de9640e6eb5cfcf9ce4",
-                "reference": "fba1aa56a3298559ff290de9640e6eb5cfcf9ce4",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/consul": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/service-governance": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\ServiceGovernanceConsul\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\ServiceGovernanceConsul\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A consul adapter for service governance.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "consul-adapter",
-                "hyperf",
-                "php",
-                "service-governance",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/service-governance-consul"
-        },
-        {
-            "name": "hyperf/service-governance-nacos",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/service-governance-nacos.git",
-                "reference": "8f27ed823c17f55c88aa81ff31003f8995fa87cf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/service-governance-nacos/zipball/8f27ed823c17f55c88aa81ff31003f8995fa87cf",
-                "reference": "8f27ed823c17f55c88aa81ff31003f8995fa87cf",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/nacos": "~3.1.0",
-                "hyperf/service-governance": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\ServiceGovernanceNacos\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\ServiceGovernanceNacos\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A nacos adapter for service governance.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "nacos-adapter",
-                "php",
-                "service-governance",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/service-governance-nacos"
-        },
-        {
-            "name": "hyperf/stdlib",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/stdlib.git",
-                "reference": "636fdc1f15d9357b4747fa649874725f2276b118"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/stdlib/zipball/636fdc1f15d9357b4747fa649874725f2276b118",
-                "reference": "636fdc1f15d9357b4747fa649874725f2276b118",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Stdlib\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A stdlib component for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "stdlib",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/stdlib"
-        },
-        {
-            "name": "hyperf/stringable",
-            "version": "v3.1.24",
-            "version_normalized": "3.1.24.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/stringable.git",
-                "reference": "ee6b1788489ddb0c06c8f12ed5ccfa70dfa7efbc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/stringable/zipball/ee6b1788489ddb0c06c8f12ed5ccfa70dfa7efbc",
-                "reference": "ee6b1788489ddb0c06c8f12ed5ccfa70dfa7efbc",
-                "shasum": ""
-            },
-            "require": {
-                "ext-mbstring": "*",
-                "hyperf/collection": "~3.1.0",
-                "hyperf/conditionable": "~3.1.0",
-                "hyperf/macroable": "~3.1.0",
-                "hyperf/tappable": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "doctrine/inflector": "Required to use plural and singular methods.(^2.0|^3.0)",
-                "ramsey/uuid": "Required to use uuid and orderedUuid methods.(^4.7|^5.0)",
-                "symfony/uid": "Required to use ulid method.(^5.0|^6.0)"
-            },
-            "time": "2024-05-27T03:20:24+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Stringable\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Stringable package which come from illuminate/support",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "stringable",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/stringable"
-        },
-        {
-            "name": "hyperf/support",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/support.git",
-                "reference": "3fb5c6c5a4f795cb0304a032f6f5b85f62a5f872"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/support/zipball/3fb5c6c5a4f795cb0304a032f6f5b85f62a5f872",
-                "reference": "3fb5c6c5a4f795cb0304a032f6f5b85f62a5f872",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/collection": "~3.1.0",
-                "hyperf/context": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/coroutine": "~3.1.0",
-                "hyperf/macroable": "~3.1.0",
-                "hyperf/stringable": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "suggest": {
-                "nesbot/carbon": "Use Carbon as DateTime object.(^2.0)"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Support\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A support component for Hyperf.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "support",
-                "swoole"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/support"
-        },
-        {
-            "name": "hyperf/tappable",
-            "version": "v3.1.15",
-            "version_normalized": "3.1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/tappable.git",
-                "reference": "69f22bbc8ecb5b930cc95a49ae9bf0ca0efbfdf1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/tappable/zipball/69f22bbc8ecb5b930cc95a49ae9bf0ca0efbfdf1",
-                "reference": "69f22bbc8ecb5b930cc95a49ae9bf0ca0efbfdf1",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-03-23T11:28:51+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Tappable\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hyperf Macroable package which come from illuminate/tappable",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "swoole",
-                "tappable"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/tappable"
-        },
-        {
-            "name": "hyperf/testing",
-            "version": "v3.1.21",
-            "version_normalized": "3.1.21.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/testing.git",
-                "reference": "923e862f9ccd5947baac4d4d1e09383c8ac75dc8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/testing/zipball/923e862f9ccd5947baac4d4d1e09383c8ac75dc8",
-                "reference": "923e862f9ccd5947baac4d4d1e09383c8ac75dc8",
-                "shasum": ""
-            },
-            "require": {
-                "hyperf/codec": "~3.1.0",
-                "hyperf/collection": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/coroutine": "~3.1.0",
-                "hyperf/http-message": "~3.1.0",
-                "hyperf/http-server": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "hyperf/utils": "~3.1.0",
-                "php": ">=8.1",
-                "phpunit/phpunit": "^10.0",
-                "psr/container": "^1.0|^2.0",
-                "symfony/http-foundation": "^5.4|^6.0"
-            },
-            "suggest": {
-                "fakerphp/faker": "Required to use Faker feature.(^1.23)"
-            },
-            "time": "2024-05-07T05:34:51+00:00",
-            "bin": [
-                "co-phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Hyperf\\Testing\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Testing for hyperf",
-            "keywords": [
-                "dev",
-                "php",
-                "swoole",
-                "testing"
-            ],
-            "support": {
-                "source": "https://github.com/hyperf/testing/tree/v3.1.21"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/testing"
-        },
-        {
-            "name": "hyperf/utils",
-            "version": "v3.1.0",
-            "version_normalized": "3.1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/utils.git",
-                "reference": "10522904195eb5af9090bbd072589fb387c91041"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/utils/zipball/10522904195eb5af9090bbd072589fb387c91041",
-                "reference": "10522904195eb5af9090bbd072589fb387c91041",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/inflector": "^2.0",
-                "hyperf/code-parser": "~3.1.0",
-                "hyperf/codec": "~3.1.0",
-                "hyperf/collection": "~3.1.0",
-                "hyperf/context": "~3.1.0",
-                "hyperf/contract": "~3.1.0",
-                "hyperf/coordinator": "~3.1.0",
-                "hyperf/coroutine": "~3.1.0",
-                "hyperf/engine": "^2.0",
-                "hyperf/macroable": "~3.1.0",
-                "hyperf/serializer": "~3.1.0",
-                "hyperf/stringable": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "time": "2023-11-24T03:10:53+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "A tools package that could help developer solved the problem quickly.",
-            "homepage": "https://hyperf.io",
-            "keywords": [
-                "hyperf",
-                "php",
-                "swoole",
-                "utils"
-            ],
-            "support": {
-                "docs": "https://hyperf.wiki",
-                "issues": "https://github.com/hyperf/hyperf/issues",
-                "pull-request": "https://github.com/hyperf/hyperf/pulls",
-                "source": "https://github.com/hyperf/hyperf"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/utils"
-        },
-        {
-            "name": "hyperf/watcher",
-            "version": "v3.1.21",
-            "version_normalized": "3.1.21.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/hyperf/watcher.git",
-                "reference": "e95490f91a95ec9c7f52255aba563f59fd9b396c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/hyperf/watcher/zipball/e95490f91a95ec9c7f52255aba563f59fd9b396c",
-                "reference": "e95490f91a95ec9c7f52255aba563f59fd9b396c",
-                "shasum": ""
-            },
-            "require": {
-                "ext-posix": "*",
-                "hyperf/codec": "~3.1.0",
-                "hyperf/command": "~3.1.0",
-                "hyperf/di": "~3.1.0",
-                "hyperf/framework": "~3.1.0",
-                "hyperf/support": "~3.1.0",
-                "php": ">=8.1"
-            },
-            "time": "2024-05-09T13:40:44+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                },
-                "hyperf": {
-                    "config": "Hyperf\\Watcher\\ConfigProvider"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Functions.php"
-                ],
-                "psr-4": {
-                    "Hyperf\\Watcher\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Hot reload watcher for Hyperf",
-            "keywords": [
-                "dev",
-                "hyperf",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/hyperf/watcher/issues",
-                "source": "https://github.com/hyperf/watcher/tree/v3.1.21"
-            },
-            "funding": [
-                {
-                    "url": "https://hyperf.wiki/#/zh-cn/donate",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://opencollective.com/hyperf",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../hyperf/watcher"
-        },
-        {
-            "name": "jetbrains/phpstorm-attributes",
-            "version": "1.1",
-            "version_normalized": "1.1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/JetBrains/phpstorm-attributes.git",
-                "reference": "22fb28d679deceedba8366dbae65cc8ebfc17e26"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/JetBrains/phpstorm-attributes/zipball/22fb28d679deceedba8366dbae65cc8ebfc17e26",
-                "reference": "22fb28d679deceedba8366dbae65cc8ebfc17e26",
-                "shasum": ""
-            },
-            "time": "2023-09-01T08:50:25+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "JetBrains\\PhpStorm\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "Apache-2.0"
-            ],
-            "authors": [
-                {
-                    "name": "JetBrains",
-                    "homepage": "https://www.jetbrains.com"
-                }
-            ],
-            "description": "PhpStorm specific attributes",
-            "keywords": [
-                "attributes",
-                "jetbrains",
-                "phpstorm"
-            ],
-            "support": {
-                "issues": "https://youtrack.jetbrains.com/newIssue?project=WI",
-                "source": "https://github.com/JetBrains/phpstorm-attributes/tree/1.1"
-            },
-            "install-path": "../jetbrains/phpstorm-attributes"
-        },
-        {
-            "name": "laminas/laminas-mime",
-            "version": "2.12.0",
-            "version_normalized": "2.12.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-mime.git",
-                "reference": "08cc544778829b7d68d27a097885bd6e7130135e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e",
-                "reference": "08cc544778829b7d68d27a097885bd6e7130135e",
-                "shasum": ""
-            },
-            "require": {
-                "laminas/laminas-stdlib": "^2.7 || ^3.0",
-                "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
-            },
-            "conflict": {
-                "zendframework/zend-mime": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "~2.4.0",
-                "laminas/laminas-mail": "^2.19.0",
-                "phpunit/phpunit": "~9.5.25"
-            },
-            "suggest": {
-                "laminas/laminas-mail": "Laminas\\Mail component"
-            },
-            "time": "2023-11-02T16:47:19+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Mime\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Create and parse MIME messages and parts",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "laminas",
-                "mime"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-mime/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-mime/issues",
-                "rss": "https://github.com/laminas/laminas-mime/releases.atom",
-                "source": "https://github.com/laminas/laminas-mime"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "install-path": "../laminas/laminas-mime"
-        },
-        {
-            "name": "laminas/laminas-stdlib",
-            "version": "3.19.0",
-            "version_normalized": "3.19.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-stdlib.git",
-                "reference": "6a192dd0882b514e45506f533b833b623b78fff3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3",
-                "reference": "6a192dd0882b514e45506f533b833b623b78fff3",
-                "shasum": ""
-            },
-            "require": {
-                "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
-            },
-            "conflict": {
-                "zendframework/zend-stdlib": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "^2.5",
-                "phpbench/phpbench": "^1.2.15",
-                "phpunit/phpunit": "^10.5.8",
-                "psalm/plugin-phpunit": "^0.18.4",
-                "vimeo/psalm": "^5.20.0"
-            },
-            "time": "2024-01-19T12:39:49+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Stdlib\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "SPL extensions, array utilities, error handlers, and more",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "laminas",
-                "stdlib"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-stdlib/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-stdlib/issues",
-                "rss": "https://github.com/laminas/laminas-stdlib/releases.atom",
-                "source": "https://github.com/laminas/laminas-stdlib"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "install-path": "../laminas/laminas-stdlib"
-        },
-        {
-            "name": "markrogoyski/math-php",
-            "version": "v2.10.0",
-            "version_normalized": "2.10.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/markrogoyski/math-php.git",
-                "reference": "e587bfe3aadddfba0f3a40f49d2ed91132f30c5a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/markrogoyski/math-php/zipball/e587bfe3aadddfba0f3a40f49d2ed91132f30c5a",
-                "reference": "e587bfe3aadddfba0f3a40f49d2ed91132f30c5a",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "php": ">=7.2.0"
-            },
-            "require-dev": {
-                "php-coveralls/php-coveralls": "^2.0",
-                "php-parallel-lint/php-parallel-lint": "^1.2",
-                "phploc/phploc": "*",
-                "phpmd/phpmd": "^2.6",
-                "phpstan/phpstan": "^1.10",
-                "phpunit/phpunit": "^8.5",
-                "squizlabs/php_codesniffer": "3.*"
-            },
-            "time": "2024-04-17T00:09:51+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "MathPHP\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mark Rogoyski",
-                    "email": "mark@rogoyski.com",
-                    "homepage": "https://github.com/markrogoyski",
-                    "role": "Lead developer"
-                },
-                {
-                    "name": "Kevin Nowaczyk",
-                    "homepage": "https://github.com/Beakerboy",
-                    "role": "Developer"
-                },
-                {
-                    "name": "MathPHP Community of Contributors",
-                    "homepage": "https://github.com/markrogoyski/math-php/graphs/contributors"
-                }
-            ],
-            "description": "Math Library for PHP. Features descriptive statistics and regressions; Continuous and discrete probability distributions; Linear algebra with matrices and vectors, Numerical analysis; special mathematical functions; Algebra",
-            "homepage": "https://github.com/markrogoyski/math-php/",
-            "keywords": [
-                "algebra",
-                "combinatorics",
-                "distributions",
-                "linear algebra",
-                "math",
-                "mathematics",
-                "matrix",
-                "numerical analysis",
-                "probability",
-                "regressions",
-                "statistics"
-            ],
-            "support": {
-                "issues": "https://github.com/markrogoyski/math-php/issues",
-                "source": "https://github.com/markrogoyski/math-php/tree/v2.10.0"
-            },
-            "install-path": "../markrogoyski/math-php"
-        },
-        {
-            "name": "mockery/mockery",
-            "version": "1.6.12",
-            "version_normalized": "1.6.12.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/mockery/mockery.git",
-                "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
-                "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
-                "shasum": ""
-            },
-            "require": {
-                "hamcrest/hamcrest-php": "^2.0.1",
-                "lib-pcre": ">=7.0",
-                "php": ">=7.3"
-            },
-            "conflict": {
-                "phpunit/phpunit": "<8.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^8.5 || ^9.6.17",
-                "symplify/easy-coding-standard": "^12.1.14"
-            },
-            "time": "2024-05-16T03:13:13+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "library/helpers.php",
-                    "library/Mockery.php"
-                ],
-                "psr-4": {
-                    "Mockery\\": "library/Mockery"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Pádraic Brady",
-                    "email": "padraic.brady@gmail.com",
-                    "homepage": "https://github.com/padraic",
-                    "role": "Author"
-                },
-                {
-                    "name": "Dave Marshall",
-                    "email": "dave.marshall@atstsolutions.co.uk",
-                    "homepage": "https://davedevelopment.co.uk",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Nathanael Esayeas",
-                    "email": "nathanael.esayeas@protonmail.com",
-                    "homepage": "https://github.com/ghostwriter",
-                    "role": "Lead Developer"
-                }
-            ],
-            "description": "Mockery is a simple yet flexible PHP mock object framework",
-            "homepage": "https://github.com/mockery/mockery",
-            "keywords": [
-                "BDD",
-                "TDD",
-                "library",
-                "mock",
-                "mock objects",
-                "mockery",
-                "stub",
-                "test",
-                "test double",
-                "testing"
-            ],
-            "support": {
-                "docs": "https://docs.mockery.io/",
-                "issues": "https://github.com/mockery/mockery/issues",
-                "rss": "https://github.com/mockery/mockery/releases.atom",
-                "security": "https://github.com/mockery/mockery/security/advisories",
-                "source": "https://github.com/mockery/mockery"
-            },
-            "install-path": "../mockery/mockery"
-        },
-        {
-            "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": ""
-            },
-            "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": "mtdowling/jmespath.php",
-            "version": "2.8.0",
-            "version_normalized": "2.8.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/jmespath/jmespath.php.git",
-                "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc",
-                "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2.5 || ^8.0",
-                "symfony/polyfill-mbstring": "^1.17"
-            },
-            "require-dev": {
-                "composer/xdebug-handler": "^3.0.3",
-                "phpunit/phpunit": "^8.5.33"
-            },
-            "time": "2024-09-04T18:46:31+00:00",
-            "bin": [
-                "bin/jp.php"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.8-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/JmesPath.php"
-                ],
-                "psr-4": {
-                    "JmesPath\\": "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"
-                }
-            ],
-            "description": "Declaratively specify how to extract elements from a JSON document",
-            "keywords": [
-                "json",
-                "jsonpath"
-            ],
-            "support": {
-                "issues": "https://github.com/jmespath/jmespath.php/issues",
-                "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0"
-            },
-            "install-path": "../mtdowling/jmespath.php"
-        },
-        {
-            "name": "myclabs/deep-copy",
-            "version": "1.11.1",
-            "version_normalized": "1.11.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
-                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "conflict": {
-                "doctrine/collections": "<1.6.8",
-                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
-            },
-            "require-dev": {
-                "doctrine/collections": "^1.6.8",
-                "doctrine/common": "^2.13.3 || ^3.2.2",
-                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
-            },
-            "time": "2023-03-08T13:26:56+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/DeepCopy/deep_copy.php"
-                ],
-                "psr-4": {
-                    "DeepCopy\\": "src/DeepCopy/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Create deep copies (clones) of your objects",
-            "keywords": [
-                "clone",
-                "copy",
-                "duplicate",
-                "object",
-                "object graph"
-            ],
-            "support": {
-                "issues": "https://github.com/myclabs/DeepCopy/issues",
-                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
-            },
-            "funding": [
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../myclabs/deep-copy"
-        },
-        {
-            "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": ""
-            },
-            "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": "nikic/fast-route",
-            "version": "v1.3.0",
-            "version_normalized": "1.3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nikic/FastRoute.git",
-                "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
-                "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35|~5.7"
-            },
-            "time": "2018-02-13T20:26:39+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/functions.php"
-                ],
-                "psr-4": {
-                    "FastRoute\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Nikita Popov",
-                    "email": "nikic@php.net"
-                }
-            ],
-            "description": "Fast request router for PHP",
-            "keywords": [
-                "router",
-                "routing"
-            ],
-            "support": {
-                "issues": "https://github.com/nikic/FastRoute/issues",
-                "source": "https://github.com/nikic/FastRoute/tree/master"
-            },
-            "install-path": "../nikic/fast-route"
-        },
-        {
-            "name": "nikic/php-parser",
-            "version": "v4.19.1",
-            "version_normalized": "4.19.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
-                "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "ircmaxell/php-yacc": "^0.0.7",
-                "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
-            },
-            "time": "2024-03-17T08:10:35+00:00",
-            "bin": [
-                "bin/php-parse"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.9-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "PhpParser\\": "lib/PhpParser"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Nikita Popov"
-                }
-            ],
-            "description": "A PHP parser written in PHP",
-            "keywords": [
-                "parser",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/nikic/PHP-Parser/issues",
-                "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
-            },
-            "install-path": "../nikic/php-parser"
-        },
-        {
-            "name": "phar-io/manifest",
-            "version": "2.0.4",
-            "version_normalized": "2.0.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/manifest.git",
-                "reference": "54750ef60c58e43759730615a392c31c80e23176"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
-                "reference": "54750ef60c58e43759730615a392c31c80e23176",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-libxml": "*",
-                "ext-phar": "*",
-                "ext-xmlwriter": "*",
-                "phar-io/version": "^3.0.1",
-                "php": "^7.2 || ^8.0"
-            },
-            "time": "2024-03-03T12:33:53+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Arne Blankerts",
-                    "email": "arne@blankerts.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Heuer",
-                    "email": "sebastian@phpeople.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "Developer"
-                }
-            ],
-            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
-            "support": {
-                "issues": "https://github.com/phar-io/manifest/issues",
-                "source": "https://github.com/phar-io/manifest/tree/2.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/theseer",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../phar-io/manifest"
-        },
-        {
-            "name": "phar-io/version",
-            "version": "3.2.1",
-            "version_normalized": "3.2.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/version.git",
-                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
-                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0"
-            },
-            "time": "2022-02-21T01:04:05+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Arne Blankerts",
-                    "email": "arne@blankerts.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Heuer",
-                    "email": "sebastian@phpeople.de",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "Developer"
-                }
-            ],
-            "description": "Library for handling version information and constraints",
-            "support": {
-                "issues": "https://github.com/phar-io/version/issues",
-                "source": "https://github.com/phar-io/version/tree/3.2.1"
-            },
-            "install-path": "../phar-io/version"
-        },
-        {
-            "name": "php-di/phpdoc-reader",
-            "version": "2.2.1",
-            "version_normalized": "2.2.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/PHP-DI/PhpDocReader.git",
-                "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c",
-                "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.0"
-            },
-            "require-dev": {
-                "mnapoli/hard-mode": "~0.3.0",
-                "phpunit/phpunit": "^8.5|^9.0"
-            },
-            "time": "2020-10-12T12:39:22+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "PhpDocReader\\": "src/PhpDocReader"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)",
-            "keywords": [
-                "phpdoc",
-                "reflection"
-            ],
-            "support": {
-                "issues": "https://github.com/PHP-DI/PhpDocReader/issues",
-                "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1"
-            },
-            "install-path": "../php-di/phpdoc-reader"
-        },
-        {
-            "name": "phpoption/phpoption",
-            "version": "1.9.2",
-            "version_normalized": "1.9.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/schmittjoh/php-option.git",
-                "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820",
-                "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2.5 || ^8.0"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.8.2",
-                "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
-            },
-            "time": "2023-11-12T21:59:55+00:00",
-            "type": "library",
-            "extra": {
-                "bamarni-bin": {
-                    "bin-links": true,
-                    "forward-command": true
-                },
-                "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.2"
-            },
-            "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/phpstan",
-            "version": "1.11.3",
-            "version_normalized": "1.11.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpstan/phpstan.git",
-                "reference": "e64220a05c1209fc856d58e789c3b7a32c0bb9a5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e64220a05c1209fc856d58e789c3b7a32c0bb9a5",
-                "reference": "e64220a05c1209fc856d58e789c3b7a32c0bb9a5",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2|^8.0"
-            },
-            "conflict": {
-                "phpstan/phpstan-shim": "*"
-            },
-            "time": "2024-05-31T13:53:37+00:00",
-            "bin": [
-                "phpstan",
-                "phpstan.phar"
-            ],
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "PHPStan - PHP Static Analysis Tool",
-            "keywords": [
-                "dev",
-                "static analysis"
-            ],
-            "support": {
-                "docs": "https://phpstan.org/user-guide/getting-started",
-                "forum": "https://github.com/phpstan/phpstan/discussions",
-                "issues": "https://github.com/phpstan/phpstan/issues",
-                "security": "https://github.com/phpstan/phpstan/security/policy",
-                "source": "https://github.com/phpstan/phpstan-src"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/ondrejmirtes",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/phpstan",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../phpstan/phpstan"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "10.1.14",
-            "version_normalized": "10.1.14.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b",
-                "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-libxml": "*",
-                "ext-xmlwriter": "*",
-                "nikic/php-parser": "^4.18 || ^5.0",
-                "php": ">=8.1",
-                "phpunit/php-file-iterator": "^4.0",
-                "phpunit/php-text-template": "^3.0",
-                "sebastian/code-unit-reverse-lookup": "^3.0",
-                "sebastian/complexity": "^3.0",
-                "sebastian/environment": "^6.0",
-                "sebastian/lines-of-code": "^2.0",
-                "sebastian/version": "^4.0",
-                "theseer/tokenizer": "^1.2.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.1"
-            },
-            "suggest": {
-                "ext-pcov": "PHP extension that provides line coverage",
-                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
-            },
-            "time": "2024-03-12T15:33:41+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "10.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-            "keywords": [
-                "coverage",
-                "testing",
-                "xunit"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
-                "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../phpunit/php-code-coverage"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "4.1.0",
-            "version_normalized": "4.1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c",
-                "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-08-31T06:24:48+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "4.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-            "keywords": [
-                "filesystem",
-                "iterator"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
-                "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
-                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../phpunit/php-file-iterator"
-        },
-        {
-            "name": "phpunit/php-invoker",
-            "version": "4.0.0",
-            "version_normalized": "4.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-invoker.git",
-                "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
-                "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "ext-pcntl": "*",
-                "phpunit/phpunit": "^10.0"
-            },
-            "suggest": {
-                "ext-pcntl": "*"
-            },
-            "time": "2023-02-03T06:56:09+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "4.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Invoke callables with a timeout",
-            "homepage": "https://github.com/sebastianbergmann/php-invoker/",
-            "keywords": [
-                "process"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
-                "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../phpunit/php-invoker"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "3.0.1",
-            "version_normalized": "3.0.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748",
-                "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-08-31T14:07:24+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Simple template engine.",
-            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-            "keywords": [
-                "template"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
-                "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
-                "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../phpunit/php-text-template"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "6.0.0",
-            "version_normalized": "6.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d",
-                "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-02-03T06:57:52+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "6.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Utility class for timing",
-            "homepage": "https://github.com/sebastianbergmann/php-timer/",
-            "keywords": [
-                "timer"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/php-timer/issues",
-                "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../phpunit/php-timer"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "10.5.20",
-            "version_normalized": "10.5.20.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3",
-                "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-libxml": "*",
-                "ext-mbstring": "*",
-                "ext-xml": "*",
-                "ext-xmlwriter": "*",
-                "myclabs/deep-copy": "^1.10.1",
-                "phar-io/manifest": "^2.0.3",
-                "phar-io/version": "^3.0.2",
-                "php": ">=8.1",
-                "phpunit/php-code-coverage": "^10.1.5",
-                "phpunit/php-file-iterator": "^4.0",
-                "phpunit/php-invoker": "^4.0",
-                "phpunit/php-text-template": "^3.0",
-                "phpunit/php-timer": "^6.0",
-                "sebastian/cli-parser": "^2.0",
-                "sebastian/code-unit": "^2.0",
-                "sebastian/comparator": "^5.0",
-                "sebastian/diff": "^5.0",
-                "sebastian/environment": "^6.0",
-                "sebastian/exporter": "^5.1",
-                "sebastian/global-state": "^6.0.1",
-                "sebastian/object-enumerator": "^5.0",
-                "sebastian/recursion-context": "^5.0",
-                "sebastian/type": "^4.0",
-                "sebastian/version": "^4.0"
-            },
-            "suggest": {
-                "ext-soap": "To be able to generate mocks based on WSDL files"
-            },
-            "time": "2024-04-24T06:32:35+00:00",
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "10.5-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/Framework/Assert/Functions.php"
-                ],
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "The PHP Unit Testing framework.",
-            "homepage": "https://phpunit.de/",
-            "keywords": [
-                "phpunit",
-                "testing",
-                "xunit"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
-                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20"
-            },
-            "funding": [
-                {
-                    "url": "https://phpunit.de/sponsors.html",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../phpunit/phpunit"
-        },
-        {
-            "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": ""
-            },
-            "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": ""
-            },
-            "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": ""
-            },
-            "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": ""
-            },
-            "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-client",
-            "version": "1.0.3",
-            "version_normalized": "1.0.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-client.git",
-                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
-                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0 || ^8.0",
-                "psr/http-message": "^1.0 || ^2.0"
-            },
-            "time": "2023-09-23T14:17:50+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Http\\Client\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "https://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for HTTP clients",
-            "homepage": "https://github.com/php-fig/http-client",
-            "keywords": [
-                "http",
-                "http-client",
-                "psr",
-                "psr-18"
-            ],
-            "support": {
-                "source": "https://github.com/php-fig/http-client"
-            },
-            "install-path": "../psr/http-client"
-        },
-        {
-            "name": "psr/http-factory",
-            "version": "1.1.0",
-            "version_normalized": "1.1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-factory.git",
-                "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
-                "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "psr/http-message": "^1.0 || ^2.0"
-            },
-            "time": "2024-04-15T12:06:14+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": "PSR-17: 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"
-            },
-            "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": ""
-            },
-            "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/http-server-handler",
-            "version": "1.0.2",
-            "version_normalized": "1.0.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-server-handler.git",
-                "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4",
-                "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.0",
-                "psr/http-message": "^1.0 || ^2.0"
-            },
-            "time": "2023-04-10T20:06:20+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Http\\Server\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "https://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for HTTP server-side request handler",
-            "keywords": [
-                "handler",
-                "http",
-                "http-interop",
-                "psr",
-                "psr-15",
-                "psr-7",
-                "request",
-                "response",
-                "server"
-            ],
-            "support": {
-                "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2"
-            },
-            "install-path": "../psr/http-server-handler"
-        },
-        {
-            "name": "psr/http-server-middleware",
-            "version": "1.0.2",
-            "version_normalized": "1.0.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-server-middleware.git",
-                "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
-                "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.0",
-                "psr/http-message": "^1.0 || ^2.0",
-                "psr/http-server-handler": "^1.0"
-            },
-            "time": "2023-04-11T06:14:47+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Http\\Server\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "https://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for HTTP server-side middleware",
-            "keywords": [
-                "http",
-                "http-interop",
-                "middleware",
-                "psr",
-                "psr-15",
-                "psr-7",
-                "request",
-                "response"
-            ],
-            "support": {
-                "issues": "https://github.com/php-fig/http-server-middleware/issues",
-                "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2"
-            },
-            "install-path": "../psr/http-server-middleware"
-        },
-        {
-            "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": ""
-            },
-            "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": ""
-            },
-            "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": "ralouphie/getallheaders",
-            "version": "3.0.3",
-            "version_normalized": "3.0.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/ralouphie/getallheaders.git",
-                "reference": "120b605dfeb996808c31b6477290a714d356e822"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
-                "reference": "120b605dfeb996808c31b6477290a714d356e822",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.6"
-            },
-            "require-dev": {
-                "php-coveralls/php-coveralls": "^2.1",
-                "phpunit/phpunit": "^5 || ^6.5"
-            },
-            "time": "2019-03-08T08:55:37+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/getallheaders.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ralph Khattar",
-                    "email": "ralph.khattar@gmail.com"
-                }
-            ],
-            "description": "A polyfill for getallheaders.",
-            "support": {
-                "issues": "https://github.com/ralouphie/getallheaders/issues",
-                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
-            },
-            "install-path": "../ralouphie/getallheaders"
-        },
-        {
-            "name": "react/cache",
-            "version": "v1.2.0",
-            "version_normalized": "1.2.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/reactphp/cache.git",
-                "reference": "d47c472b64aa5608225f47965a484b75c7817d5b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b",
-                "reference": "d47c472b64aa5608225f47965a484b75c7817d5b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0",
-                "react/promise": "^3.0 || ^2.0 || ^1.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35"
-            },
-            "time": "2022-11-30T15:59:55+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "React\\Cache\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering",
-                    "homepage": "https://clue.engineering/"
-                },
-                {
-                    "name": "Cees-Jan Kiewiet",
-                    "email": "reactphp@ceesjankiewiet.nl",
-                    "homepage": "https://wyrihaximus.net/"
-                },
-                {
-                    "name": "Jan Sorgalla",
-                    "email": "jsorgalla@gmail.com",
-                    "homepage": "https://sorgalla.com/"
-                },
-                {
-                    "name": "Chris Boden",
-                    "email": "cboden@gmail.com",
-                    "homepage": "https://cboden.dev/"
-                }
-            ],
-            "description": "Async, Promise-based cache interface for ReactPHP",
-            "keywords": [
-                "cache",
-                "caching",
-                "promise",
-                "reactphp"
-            ],
-            "support": {
-                "issues": "https://github.com/reactphp/cache/issues",
-                "source": "https://github.com/reactphp/cache/tree/v1.2.0"
-            },
-            "funding": [
-                {
-                    "url": "https://opencollective.com/reactphp",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../react/cache"
-        },
-        {
-            "name": "react/child-process",
-            "version": "v0.6.5",
-            "version_normalized": "0.6.5.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/reactphp/child-process.git",
-                "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43",
-                "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43",
-                "shasum": ""
-            },
-            "require": {
-                "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
-                "php": ">=5.3.0",
-                "react/event-loop": "^1.2",
-                "react/stream": "^1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
-                "react/socket": "^1.8",
-                "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0"
-            },
-            "time": "2022-09-16T13:41:56+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "React\\ChildProcess\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering",
-                    "homepage": "https://clue.engineering/"
-                },
-                {
-                    "name": "Cees-Jan Kiewiet",
-                    "email": "reactphp@ceesjankiewiet.nl",
-                    "homepage": "https://wyrihaximus.net/"
-                },
-                {
-                    "name": "Jan Sorgalla",
-                    "email": "jsorgalla@gmail.com",
-                    "homepage": "https://sorgalla.com/"
-                },
-                {
-                    "name": "Chris Boden",
-                    "email": "cboden@gmail.com",
-                    "homepage": "https://cboden.dev/"
-                }
-            ],
-            "description": "Event-driven library for executing child processes with ReactPHP.",
-            "keywords": [
-                "event-driven",
-                "process",
-                "reactphp"
-            ],
-            "support": {
-                "issues": "https://github.com/reactphp/child-process/issues",
-                "source": "https://github.com/reactphp/child-process/tree/v0.6.5"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/WyriHaximus",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/clue",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../react/child-process"
-        },
-        {
-            "name": "react/dns",
-            "version": "v1.12.0",
-            "version_normalized": "1.12.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/reactphp/dns.git",
-                "reference": "c134600642fa615b46b41237ef243daa65bb64ec"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/reactphp/dns/zipball/c134600642fa615b46b41237ef243daa65bb64ec",
-                "reference": "c134600642fa615b46b41237ef243daa65bb64ec",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0",
-                "react/cache": "^1.0 || ^0.6 || ^0.5",
-                "react/event-loop": "^1.2",
-                "react/promise": "^3.0 || ^2.7 || ^1.2.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36",
-                "react/async": "^4 || ^3 || ^2",
-                "react/promise-timer": "^1.9"
-            },
-            "time": "2023-11-29T12:41:06+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "React\\Dns\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering",
-                    "homepage": "https://clue.engineering/"
-                },
-                {
-                    "name": "Cees-Jan Kiewiet",
-                    "email": "reactphp@ceesjankiewiet.nl",
-                    "homepage": "https://wyrihaximus.net/"
-                },
-                {
-                    "name": "Jan Sorgalla",
-                    "email": "jsorgalla@gmail.com",
-                    "homepage": "https://sorgalla.com/"
-                },
-                {
-                    "name": "Chris Boden",
-                    "email": "cboden@gmail.com",
-                    "homepage": "https://cboden.dev/"
-                }
-            ],
-            "description": "Async DNS resolver for ReactPHP",
-            "keywords": [
-                "async",
-                "dns",
-                "dns-resolver",
-                "reactphp"
-            ],
-            "support": {
-                "issues": "https://github.com/reactphp/dns/issues",
-                "source": "https://github.com/reactphp/dns/tree/v1.12.0"
-            },
-            "funding": [
-                {
-                    "url": "https://opencollective.com/reactphp",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../react/dns"
-        },
-        {
-            "name": "react/event-loop",
-            "version": "v1.5.0",
-            "version_normalized": "1.5.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/reactphp/event-loop.git",
-                "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354",
-                "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
-            },
-            "suggest": {
-                "ext-pcntl": "For signal handling support when using the StreamSelectLoop"
-            },
-            "time": "2023-11-13T13:48:05+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "React\\EventLoop\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering",
-                    "homepage": "https://clue.engineering/"
-                },
-                {
-                    "name": "Cees-Jan Kiewiet",
-                    "email": "reactphp@ceesjankiewiet.nl",
-                    "homepage": "https://wyrihaximus.net/"
-                },
-                {
-                    "name": "Jan Sorgalla",
-                    "email": "jsorgalla@gmail.com",
-                    "homepage": "https://sorgalla.com/"
-                },
-                {
-                    "name": "Chris Boden",
-                    "email": "cboden@gmail.com",
-                    "homepage": "https://cboden.dev/"
-                }
-            ],
-            "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
-            "keywords": [
-                "asynchronous",
-                "event-loop"
-            ],
-            "support": {
-                "issues": "https://github.com/reactphp/event-loop/issues",
-                "source": "https://github.com/reactphp/event-loop/tree/v1.5.0"
-            },
-            "funding": [
-                {
-                    "url": "https://opencollective.com/reactphp",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../react/event-loop"
-        },
-        {
-            "name": "react/promise",
-            "version": "v3.2.0",
-            "version_normalized": "3.2.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/reactphp/promise.git",
-                "reference": "8a164643313c71354582dc850b42b33fa12a4b63"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63",
-                "reference": "8a164643313c71354582dc850b42b33fa12a4b63",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "1.10.39 || 1.4.10",
-                "phpunit/phpunit": "^9.6 || ^7.5"
-            },
-            "time": "2024-05-24T10:39:05+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
-                "psr-4": {
-                    "React\\Promise\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jan Sorgalla",
-                    "email": "jsorgalla@gmail.com",
-                    "homepage": "https://sorgalla.com/"
-                },
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering",
-                    "homepage": "https://clue.engineering/"
-                },
-                {
-                    "name": "Cees-Jan Kiewiet",
-                    "email": "reactphp@ceesjankiewiet.nl",
-                    "homepage": "https://wyrihaximus.net/"
-                },
-                {
-                    "name": "Chris Boden",
-                    "email": "cboden@gmail.com",
-                    "homepage": "https://cboden.dev/"
-                }
-            ],
-            "description": "A lightweight implementation of CommonJS Promises/A for PHP",
-            "keywords": [
-                "promise",
-                "promises"
-            ],
-            "support": {
-                "issues": "https://github.com/reactphp/promise/issues",
-                "source": "https://github.com/reactphp/promise/tree/v3.2.0"
-            },
-            "funding": [
-                {
-                    "url": "https://opencollective.com/reactphp",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../react/promise"
-        },
-        {
-            "name": "react/socket",
-            "version": "v1.15.0",
-            "version_normalized": "1.15.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/reactphp/socket.git",
-                "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038",
-                "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038",
-                "shasum": ""
-            },
-            "require": {
-                "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
-                "php": ">=5.3.0",
-                "react/dns": "^1.11",
-                "react/event-loop": "^1.2",
-                "react/promise": "^3 || ^2.6 || ^1.2.1",
-                "react/stream": "^1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36",
-                "react/async": "^4 || ^3 || ^2",
-                "react/promise-stream": "^1.4",
-                "react/promise-timer": "^1.10"
-            },
-            "time": "2023-12-15T11:02:10+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "React\\Socket\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering",
-                    "homepage": "https://clue.engineering/"
-                },
-                {
-                    "name": "Cees-Jan Kiewiet",
-                    "email": "reactphp@ceesjankiewiet.nl",
-                    "homepage": "https://wyrihaximus.net/"
-                },
-                {
-                    "name": "Jan Sorgalla",
-                    "email": "jsorgalla@gmail.com",
-                    "homepage": "https://sorgalla.com/"
-                },
-                {
-                    "name": "Chris Boden",
-                    "email": "cboden@gmail.com",
-                    "homepage": "https://cboden.dev/"
-                }
-            ],
-            "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
-            "keywords": [
-                "Connection",
-                "Socket",
-                "async",
-                "reactphp",
-                "stream"
-            ],
-            "support": {
-                "issues": "https://github.com/reactphp/socket/issues",
-                "source": "https://github.com/reactphp/socket/tree/v1.15.0"
-            },
-            "funding": [
-                {
-                    "url": "https://opencollective.com/reactphp",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../react/socket"
-        },
-        {
-            "name": "react/stream",
-            "version": "v1.3.0",
-            "version_normalized": "1.3.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/reactphp/stream.git",
-                "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/reactphp/stream/zipball/6fbc9672905c7d5a885f2da2fc696f65840f4a66",
-                "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66",
-                "shasum": ""
-            },
-            "require": {
-                "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
-                "php": ">=5.3.8",
-                "react/event-loop": "^1.2"
-            },
-            "require-dev": {
-                "clue/stream-filter": "~1.2",
-                "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35"
-            },
-            "time": "2023-06-16T10:52:11+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "React\\Stream\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Lück",
-                    "email": "christian@clue.engineering",
-                    "homepage": "https://clue.engineering/"
-                },
-                {
-                    "name": "Cees-Jan Kiewiet",
-                    "email": "reactphp@ceesjankiewiet.nl",
-                    "homepage": "https://wyrihaximus.net/"
-                },
-                {
-                    "name": "Jan Sorgalla",
-                    "email": "jsorgalla@gmail.com",
-                    "homepage": "https://sorgalla.com/"
-                },
-                {
-                    "name": "Chris Boden",
-                    "email": "cboden@gmail.com",
-                    "homepage": "https://cboden.dev/"
-                }
-            ],
-            "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
-            "keywords": [
-                "event-driven",
-                "io",
-                "non-blocking",
-                "pipe",
-                "reactphp",
-                "readable",
-                "stream",
-                "writable"
-            ],
-            "support": {
-                "issues": "https://github.com/reactphp/stream/issues",
-                "source": "https://github.com/reactphp/stream/tree/v1.3.0"
-            },
-            "funding": [
-                {
-                    "url": "https://opencollective.com/reactphp",
-                    "type": "open_collective"
-                }
-            ],
-            "install-path": "../react/stream"
-        },
-        {
-            "name": "sebastian/cli-parser",
-            "version": "2.0.1",
-            "version_normalized": "2.0.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/cli-parser.git",
-                "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084",
-                "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2024-03-02T07:12:49+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library for parsing CLI options",
-            "homepage": "https://github.com/sebastianbergmann/cli-parser",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
-                "security": "https://github.com/sebastianbergmann/cli-parser/security/policy",
-                "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/cli-parser"
-        },
-        {
-            "name": "sebastian/code-unit",
-            "version": "2.0.0",
-            "version_normalized": "2.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/code-unit.git",
-                "reference": "a81fee9eef0b7a76af11d121767abc44c104e503"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503",
-                "reference": "a81fee9eef0b7a76af11d121767abc44c104e503",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-02-03T06:58:43+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Collection of value objects that represent the PHP code units",
-            "homepage": "https://github.com/sebastianbergmann/code-unit",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/code-unit/issues",
-                "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/code-unit"
-        },
-        {
-            "name": "sebastian/code-unit-reverse-lookup",
-            "version": "3.0.0",
-            "version_normalized": "3.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
-                "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
-                "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-02-03T06:59:15+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Looks up which function or method a line of code belongs to",
-            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
-                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/code-unit-reverse-lookup"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "5.0.1",
-            "version_normalized": "5.0.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "2db5010a484d53ebf536087a70b4a5423c102372"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372",
-                "reference": "2db5010a484d53ebf536087a70b4a5423c102372",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-mbstring": "*",
-                "php": ">=8.1",
-                "sebastian/diff": "^5.0",
-                "sebastian/exporter": "^5.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.3"
-            },
-            "time": "2023-08-14T13:18:12+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "5.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                }
-            ],
-            "description": "Provides the functionality to compare PHP values for equality",
-            "homepage": "https://github.com/sebastianbergmann/comparator",
-            "keywords": [
-                "comparator",
-                "compare",
-                "equality"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/comparator/issues",
-                "security": "https://github.com/sebastianbergmann/comparator/security/policy",
-                "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/comparator"
-        },
-        {
-            "name": "sebastian/complexity",
-            "version": "3.2.0",
-            "version_normalized": "3.2.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/complexity.git",
-                "reference": "68ff824baeae169ec9f2137158ee529584553799"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799",
-                "reference": "68ff824baeae169ec9f2137158ee529584553799",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^4.18 || ^5.0",
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-12-21T08:37:17+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.2-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library for calculating the complexity of PHP code units",
-            "homepage": "https://github.com/sebastianbergmann/complexity",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/complexity/issues",
-                "security": "https://github.com/sebastianbergmann/complexity/security/policy",
-                "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/complexity"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "5.1.1",
-            "version_normalized": "5.1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e",
-                "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0",
-                "symfony/process": "^6.4"
-            },
-            "time": "2024-03-02T07:15:17+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "5.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                }
-            ],
-            "description": "Diff implementation",
-            "homepage": "https://github.com/sebastianbergmann/diff",
-            "keywords": [
-                "diff",
-                "udiff",
-                "unidiff",
-                "unified diff"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/diff/issues",
-                "security": "https://github.com/sebastianbergmann/diff/security/policy",
-                "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/diff"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "6.1.0",
-            "version_normalized": "6.1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "8074dbcd93529b357029f5cc5058fd3e43666984"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984",
-                "reference": "8074dbcd93529b357029f5cc5058fd3e43666984",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "suggest": {
-                "ext-posix": "*"
-            },
-            "time": "2024-03-23T08:47:14+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "6.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides functionality to handle HHVM/PHP environments",
-            "homepage": "https://github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/environment/issues",
-                "security": "https://github.com/sebastianbergmann/environment/security/policy",
-                "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/environment"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "5.1.2",
-            "version_normalized": "5.1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "955288482d97c19a372d3f31006ab3f37da47adf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf",
-                "reference": "955288482d97c19a372d3f31006ab3f37da47adf",
-                "shasum": ""
-            },
-            "require": {
-                "ext-mbstring": "*",
-                "php": ">=8.1",
-                "sebastian/recursion-context": "^5.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2024-03-02T07:17:12+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "5.1-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "Provides the functionality to export PHP variables for visualization",
-            "homepage": "https://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/exporter/issues",
-                "security": "https://github.com/sebastianbergmann/exporter/security/policy",
-                "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/exporter"
-        },
-        {
-            "name": "sebastian/global-state",
-            "version": "6.0.2",
-            "version_normalized": "6.0.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9",
-                "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "sebastian/object-reflector": "^3.0",
-                "sebastian/recursion-context": "^5.0"
-            },
-            "require-dev": {
-                "ext-dom": "*",
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2024-03-02T07:19:19+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "6.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Snapshotting of global state",
-            "homepage": "https://www.github.com/sebastianbergmann/global-state",
-            "keywords": [
-                "global state"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/global-state/issues",
-                "security": "https://github.com/sebastianbergmann/global-state/security/policy",
-                "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/global-state"
-        },
-        {
-            "name": "sebastian/lines-of-code",
-            "version": "2.0.2",
-            "version_normalized": "2.0.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/lines-of-code.git",
-                "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0",
-                "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^4.18 || ^5.0",
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-12-21T08:38:20+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library for counting the lines of code in PHP source code",
-            "homepage": "https://github.com/sebastianbergmann/lines-of-code",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
-                "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
-                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/lines-of-code"
-        },
-        {
-            "name": "sebastian/object-enumerator",
-            "version": "5.0.0",
-            "version_normalized": "5.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
-                "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906",
-                "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "sebastian/object-reflector": "^3.0",
-                "sebastian/recursion-context": "^5.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-02-03T07:08:32+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "5.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
-            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
-                "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/object-enumerator"
-        },
-        {
-            "name": "sebastian/object-reflector",
-            "version": "3.0.0",
-            "version_normalized": "3.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-reflector.git",
-                "reference": "24ed13d98130f0e7122df55d06c5c4942a577957"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957",
-                "reference": "24ed13d98130f0e7122df55d06c5c4942a577957",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-02-03T07:06:18+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Allows reflection of object attributes, including inherited and non-public ones",
-            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
-                "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/object-reflector"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "5.0.0",
-            "version_normalized": "5.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "05909fb5bc7df4c52992396d0116aed689f93712"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712",
-                "reference": "05909fb5bc7df4c52992396d0116aed689f93712",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-02-03T07:05:40+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "5.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides functionality to recursively process PHP variables",
-            "homepage": "https://github.com/sebastianbergmann/recursion-context",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
-                "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/recursion-context"
-        },
-        {
-            "name": "sebastian/type",
-            "version": "4.0.0",
-            "version_normalized": "4.0.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/type.git",
-                "reference": "462699a16464c3944eefc02ebdd77882bd3925bf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf",
-                "reference": "462699a16464c3944eefc02ebdd77882bd3925bf",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^10.0"
-            },
-            "time": "2023-02-03T07:10:45+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "4.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Collection of value objects that represent the types of the PHP type system",
-            "homepage": "https://github.com/sebastianbergmann/type",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/type/issues",
-                "source": "https://github.com/sebastianbergmann/type/tree/4.0.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/type"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "4.0.1",
-            "version_normalized": "4.0.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17",
-                "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2023-02-07T11:34:05+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "4.0-dev"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-            "homepage": "https://github.com/sebastianbergmann/version",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/version/issues",
-                "source": "https://github.com/sebastianbergmann/version/tree/4.0.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../sebastian/version"
-        },
-        {
-            "name": "swoole/ide-helper",
-            "version": "5.1.2",
-            "version_normalized": "5.1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/swoole/ide-helper.git",
-                "reference": "33ec7af9111b76d06a70dd31191cc74793551112"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/swoole/ide-helper/zipball/33ec7af9111b76d06a70dd31191cc74793551112",
-                "reference": "33ec7af9111b76d06a70dd31191cc74793551112",
-                "shasum": ""
-            },
-            "time": "2024-02-01T22:28:11+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "Apache-2.0"
-            ],
-            "authors": [
-                {
-                    "name": "Team Swoole",
-                    "email": "team@swoole.com"
-                }
-            ],
-            "description": "IDE help files for Swoole.",
-            "support": {
-                "issues": "https://github.com/swoole/ide-helper/issues",
-                "source": "https://github.com/swoole/ide-helper/tree/5.1.2"
-            },
-            "install-path": "../swoole/ide-helper"
-        },
-        {
-            "name": "swow/psr7-plus",
-            "version": "v1.1.2",
-            "version_normalized": "1.1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/swow/psr7-plus.git",
-                "reference": "7acc4924be907d2ff64edee5a2bd116620e56364"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/swow/psr7-plus/zipball/7acc4924be907d2ff64edee5a2bd116620e56364",
-                "reference": "7acc4924be907d2ff64edee5a2bd116620e56364",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.0",
-                "psr/http-client": "^1.0",
-                "psr/http-factory": "^1.0",
-                "psr/http-message": "^1.1|^2.0"
-            },
-            "time": "2023-06-15T09:18:11+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Swow\\Psr7\\Message\\": "src/Message/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "Apache-2.0"
-            ],
-            "authors": [
-                {
-                    "name": "twose",
-                    "email": "twosee@php.net"
-                }
-            ],
-            "description": "Modern strong-typed interfaces for Psr7, not only HTTP but also WebSocket",
-            "keywords": [
-                "http",
-                "psr17",
-                "psr7",
-                "swow",
-                "websocket"
-            ],
-            "support": {
-                "issues": "https://github.com/swow/swow",
-                "source": "https://github.com/swow/psr7-plus/tree/v1.1.2"
-            },
-            "install-path": "../swow/psr7-plus"
-        },
-        {
-            "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": ""
-            },
-            "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/deprecation-contracts",
-            "version": "v3.5.0",
-            "version_normalized": "3.5.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
-                "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-04-18T09:32:20+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.5-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.5.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/event-dispatcher",
-            "version": "v6.4.8",
-            "version_normalized": "6.4.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b",
-                "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "symfony/event-dispatcher-contracts": "^2.5|^3"
-            },
-            "conflict": {
-                "symfony/dependency-injection": "<5.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": "^5.4|^6.0|^7.0",
-                "symfony/dependency-injection": "^5.4|^6.0|^7.0",
-                "symfony/error-handler": "^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/service-contracts": "^2.5|^3",
-                "symfony/stopwatch": "^5.4|^6.0|^7.0"
-            },
-            "time": "2024-05-31T14:49:08+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/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/event-dispatcher"
-        },
-        {
-            "name": "symfony/event-dispatcher-contracts",
-            "version": "v3.5.0",
-            "version_normalized": "3.5.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-                "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50",
-                "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "psr/event-dispatcher": "^1"
-            },
-            "time": "2024-04-18T09:32:20+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.5-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.5.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/filesystem",
-            "version": "v6.4.8",
-            "version_normalized": "6.4.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/filesystem.git",
-                "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3",
-                "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-mbstring": "~1.8"
-            },
-            "require-dev": {
-                "symfony/process": "^5.4|^6.4|^7.0"
-            },
-            "time": "2024-05-31T14:49:08+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Filesystem\\": ""
-                },
-                "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 basic utilities for the filesystem",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/filesystem/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/filesystem"
-        },
-        {
-            "name": "symfony/finder",
-            "version": "v6.4.8",
-            "version_normalized": "6.4.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/finder.git",
-                "reference": "3ef977a43883215d560a2cecb82ec8e62131471c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c",
-                "reference": "3ef977a43883215d560a2cecb82ec8e62131471c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "require-dev": {
-                "symfony/filesystem": "^6.0|^7.0"
-            },
-            "time": "2024-05-31T14:49:08+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.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/finder"
-        },
-        {
-            "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": ""
-            },
-            "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/options-resolver",
-            "version": "v6.4.8",
-            "version_normalized": "6.4.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/options-resolver.git",
-                "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22ab9e9101ab18de37839074f8a1197f55590c1b",
-                "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "symfony/deprecation-contracts": "^2.5|^3"
-            },
-            "time": "2024-05-31T14:49:08+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\OptionsResolver\\": ""
-                },
-                "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 an improved replacement for the array_replace PHP function",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "config",
-                "configuration",
-                "options"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/options-resolver/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/options-resolver"
-        },
-        {
-            "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": ""
-            },
-            "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.29.0",
-            "version_normalized": "1.29.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
-                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
-                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
-                "shasum": ""
-            },
-            "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\\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.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-grapheme"
-        },
-        {
-            "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": ""
-            },
-            "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": ""
-            },
-            "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-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": ""
-            },
-            "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-php81",
-            "version": "v1.29.0",
-            "version_normalized": "1.29.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php81.git",
-                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
-                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
-                "shasum": ""
-            },
-            "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\\Php81\\": ""
-                },
-                "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.1+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php81/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-php81"
-        },
-        {
-            "name": "symfony/polyfill-php83",
-            "version": "v1.29.0",
-            "version_normalized": "1.29.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php83.git",
-                "reference": "86fcae159633351e5fd145d1c47de6c528f8caff"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff",
-                "reference": "86fcae159633351e5fd145d1c47de6c528f8caff",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-php80": "^1.14"
-            },
-            "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\\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.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-php83"
-        },
-        {
-            "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": ""
-            },
-            "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/service-contracts",
-            "version": "v3.5.0",
-            "version_normalized": "3.5.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
-                "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "psr/container": "^1.1|^2.0",
-                "symfony/deprecation-contracts": "^2.5|^3"
-            },
-            "conflict": {
-                "ext-psr": "<1.1|>=2"
-            },
-            "time": "2024-04-18T09:32:20+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.5-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.5.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/stopwatch",
-            "version": "v6.4.8",
-            "version_normalized": "6.4.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "63e069eb616049632cde9674c46957819454b8aa"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/63e069eb616049632cde9674c46957819454b8aa",
-                "reference": "63e069eb616049632cde9674c46957819454b8aa",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "symfony/service-contracts": "^2.5|^3"
-            },
-            "time": "2024-05-31T14:49:08+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Stopwatch\\": ""
-                },
-                "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 way to profile code",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/stopwatch/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/stopwatch"
-        },
-        {
-            "name": "symfony/string",
-            "version": "v6.4.8",
-            "version_normalized": "6.4.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/string.git",
-                "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d",
-                "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1",
-                "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/error-handler": "^5.4|^6.0|^7.0",
-                "symfony/http-client": "^5.4|^6.0|^7.0",
-                "symfony/intl": "^6.2|^7.0",
-                "symfony/translation-contracts": "^2.5|^3.0",
-                "symfony/var-exporter": "^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\\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/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/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": ""
-            },
-            "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.5.0",
-            "version_normalized": "3.5.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/translation-contracts.git",
-                "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
-                "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "time": "2024-04-18T09:32:20+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.5-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.5.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/translation-contracts"
-        },
-        {
-            "name": "theseer/tokenizer",
-            "version": "1.2.3",
-            "version_normalized": "1.2.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
-                "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": "^7.2 || ^8.0"
-            },
-            "time": "2024-03-03T12:36:25+00:00",
-            "type": "library",
-            "installation-source": "dist",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Arne Blankerts",
-                    "email": "arne@blankerts.de",
-                    "role": "Developer"
-                }
-            ],
-            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "support": {
-                "issues": "https://github.com/theseer/tokenizer/issues",
-                "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/theseer",
-                    "type": "github"
-                }
-            ],
-            "install-path": "../theseer/tokenizer"
-        },
-        {
-            "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": ""
-            },
-            "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"
-        }
-    ],
-    "dev": true,
-    "dev-package-names": [
-        "clue/ndjson-react",
-        "composer/pcre",
-        "composer/semver",
-        "composer/xdebug-handler",
-        "evenement/evenement",
-        "fidry/cpu-core-counter",
-        "friendsofphp/php-cs-fixer",
-        "hamcrest/hamcrest-php",
-        "hyperf/devtool",
-        "hyperf/testing",
-        "hyperf/watcher",
-        "mockery/mockery",
-        "myclabs/deep-copy",
-        "phar-io/manifest",
-        "phar-io/version",
-        "phpstan/phpstan",
-        "phpunit/php-code-coverage",
-        "phpunit/php-file-iterator",
-        "phpunit/php-invoker",
-        "phpunit/php-text-template",
-        "phpunit/php-timer",
-        "phpunit/phpunit",
-        "react/cache",
-        "react/child-process",
-        "react/dns",
-        "react/event-loop",
-        "react/promise",
-        "react/socket",
-        "react/stream",
-        "sebastian/cli-parser",
-        "sebastian/code-unit",
-        "sebastian/code-unit-reverse-lookup",
-        "sebastian/comparator",
-        "sebastian/complexity",
-        "sebastian/diff",
-        "sebastian/environment",
-        "sebastian/exporter",
-        "sebastian/global-state",
-        "sebastian/lines-of-code",
-        "sebastian/object-enumerator",
-        "sebastian/object-reflector",
-        "sebastian/recursion-context",
-        "sebastian/type",
-        "sebastian/version",
-        "swoole/ide-helper",
-        "symfony/event-dispatcher",
-        "symfony/event-dispatcher-contracts",
-        "symfony/filesystem",
-        "symfony/http-foundation",
-        "symfony/options-resolver",
-        "symfony/polyfill-php81",
-        "symfony/polyfill-php83",
-        "symfony/process",
-        "symfony/stopwatch",
-        "theseer/tokenizer"
-    ]
-}

+ 0 - 19
vendor/doctrine/annotations/LICENSE

@@ -1,19 +0,0 @@
-Copyright (c) 2006-2013 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.

+ 0 - 24
vendor/doctrine/annotations/README.md

@@ -1,24 +0,0 @@
-⚠️ PHP 8 introduced
-[attributes](https://www.php.net/manual/en/language.attributes.overview.php),
-which are a native replacement for annotations. As such, this library is
-considered feature complete, and should receive exclusively bugfixes and
-security fixes.
-
-# Doctrine Annotations
-
-[![Build Status](https://github.com/doctrine/annotations/workflows/Continuous%20Integration/badge.svg?label=build)](https://github.com/doctrine/persistence/actions)
-[![Dependency Status](https://www.versioneye.com/package/php--doctrine--annotations/badge.png)](https://www.versioneye.com/package/php--doctrine--annotations)
-[![Reference Status](https://www.versioneye.com/php/doctrine:annotations/reference_badge.svg)](https://www.versioneye.com/php/doctrine:annotations/references)
-[![Total Downloads](https://poser.pugx.org/doctrine/annotations/downloads.png)](https://packagist.org/packages/doctrine/annotations)
-[![Latest Stable Version](https://img.shields.io/packagist/v/doctrine/annotations.svg?label=stable)](https://packagist.org/packages/doctrine/annotations)
-
-Docblock Annotations Parser library (extracted from [Doctrine Common](https://github.com/doctrine/common)).
-
-## Documentation
-
-See the [doctrine-project website](https://www.doctrine-project.org/projects/doctrine-annotations/en/latest/index.html).
-
-## Contributing
-
-When making a pull request, make sure your changes follow the
-[Coding Standard Guidelines](https://www.doctrine-project.org/projects/doctrine-coding-standard/en/current/reference/index.html#introduction).

+ 0 - 18
vendor/doctrine/annotations/UPGRADE.md

@@ -1,18 +0,0 @@
-# Upgrade from 1.0.x to 2.0.x
-
-- The `NamedArgumentConstructorAnnotation` has been removed. Use the `@NamedArgumentConstructor`
-  annotation instead.
-- `SimpleAnnotationReader` has been removed.
-- `DocLexer::peek()` and `DocLexer::glimpse` now return
-`Doctrine\Common\Lexer\Token` objects. When using `doctrine/lexer` 2, these
-implement `ArrayAccess` as a way for you to still be able to treat them as
-arrays in some ways.
-- `CachedReader` and `FileCacheReader` have been removed.
-- `AnnotationRegistry` methods related to registering annotations instead of
-  using autoloading have been removed.
-- Parameter type declarations have been added to all methods of all classes. If
-you have classes inheriting from classes inside this package, you should add
-parameter and return type declarations.
-- Support for PHP < 7.2 has been removed
-- `PhpParser::parseClass()` has been removed. Use
-  `PhpParser::parseUseStatements()` instead.

+ 0 - 72
vendor/doctrine/annotations/composer.json

@@ -1,72 +0,0 @@
-{
-    "name": "doctrine/annotations",
-    "description": "Docblock Annotations Parser",
-    "license": "MIT",
-    "type": "library",
-    "keywords": [
-        "annotations",
-        "docblock",
-        "parser"
-    ],
-    "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"
-        }
-    ],
-    "homepage": "https://www.doctrine-project.org/projects/annotations.html",
-    "require": {
-        "php": "^7.2 || ^8.0",
-        "ext-tokenizer": "*",
-        "doctrine/lexer": "^2 || ^3",
-        "psr/cache": "^1 || ^2 || ^3"
-    },
-    "require-dev": {
-        "doctrine/cache": "^2.0",
-        "doctrine/coding-standard": "^10",
-        "phpstan/phpstan": "^1.8.0",
-        "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
-        "symfony/cache": "^5.4 || ^6",
-        "vimeo/psalm": "^4.10"
-    },
-    "suggest": {
-        "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
-    },
-    "autoload": {
-        "psr-4": {
-            "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "Doctrine\\Performance\\Common\\Annotations\\": "tests/Doctrine/Performance/Common/Annotations",
-            "Doctrine\\Tests\\Common\\Annotations\\": "tests/Doctrine/Tests/Common/Annotations"
-        },
-        "files": [
-            "tests/Doctrine/Tests/Common/Annotations/Fixtures/functions.php",
-            "tests/Doctrine/Tests/Common/Annotations/Fixtures/SingleClassLOC1000.php"
-        ]
-    },
-    "config": {
-        "allow-plugins": {
-            "dealerdirect/phpcodesniffer-composer-installer": true
-        },
-        "sort-packages": true
-    }
-}

+ 0 - 189
vendor/doctrine/annotations/docs/en/annotations.rst

@@ -1,189 +0,0 @@
-Handling Annotations
-====================
-
-There are several different approaches to handling annotations in PHP.
-Doctrine Annotations maps docblock annotations to PHP classes. Because
-not all docblock annotations are used for metadata purposes a filter is
-applied to ignore or skip classes that are not Doctrine annotations.
-
-Take a look at the following code snippet:
-
-.. code-block:: php
-
-    namespace MyProject\Entities;
-
-    use Doctrine\ORM\Mapping AS ORM;
-    use Symfony\Component\Validator\Constraints AS Assert;
-
-    /**
-     * @author Benjamin Eberlei
-     * @ORM\Entity
-     * @MyProject\Annotations\Foobarable
-     */
-    class User
-    {
-        /**
-         * @ORM\Id @ORM\Column @ORM\GeneratedValue
-         * @dummy
-         * @var int
-         */
-        private $id;
-
-        /**
-         * @ORM\Column(type="string")
-         * @Assert\NotEmpty
-         * @Assert\Email
-         * @var string
-         */
-        private $email;
-    }
-
-In this snippet you can see a variety of different docblock annotations:
-
-- Documentation annotations such as ``@var`` and ``@author``. These
-  annotations are ignored and never considered for throwing an
-  exception due to wrongly used annotations.
-- Annotations imported through use statements. The statement ``use
-  Doctrine\ORM\Mapping AS ORM`` makes all classes under that namespace
-  available as ``@ORM\ClassName``. Same goes for the import of
-  ``@Assert``.
-- The ``@dummy`` annotation. It is not a documentation annotation and
-  not ignored. For Doctrine Annotations it is not entirely clear how
-  to handle this annotation. Depending on the configuration an exception
-  (unknown annotation) will be thrown when parsing this annotation.
-- The fully qualified annotation ``@MyProject\Annotations\Foobarable``.
-  This is transformed directly into the given class name.
-
-How are these annotations loaded? From looking at the code you could
-guess that the ORM Mapping, Assert Validation and the fully qualified
-annotation can just be loaded using
-the defined PHP autoloaders. This is not the case however: For error
-handling reasons every check for class existence inside the
-``AnnotationReader`` sets the second parameter $autoload
-of ``class_exists($name, $autoload)`` to false. To work flawlessly the
-``AnnotationReader`` requires silent autoloaders which many autoloaders are
-not. Silent autoloading is NOT part of the `PSR-0 specification
-<https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md>`_
-for autoloading.
-
-This is why Doctrine Annotations uses its own autoloading mechanism
-through a global registry. If you are wondering about the annotation
-registry being global, there is no other way to solve the architectural
-problems of autoloading annotation classes in a straightforward fashion.
-Additionally if you think about PHP autoloading then you recognize it is
-a global as well.
-
-To anticipate the configuration section, making the above PHP class work
-with Doctrine Annotations requires this setup:
-
-.. code-block:: php
-
-    use Doctrine\Common\Annotations\AnnotationReader;
-
-    $reader = new AnnotationReader();
-    AnnotationReader::addGlobalIgnoredName('dummy');
-
-We create the actual ``AnnotationReader`` instance.
-Note that we also add ``dummy`` to the global list of ignored
-annotations for which we do not throw exceptions. Setting this is
-necessary in our example case, otherwise ``@dummy`` would trigger an
-exception to be thrown during the parsing of the docblock of
-``MyProject\Entities\User#id``.
-
-Setup and Configuration
------------------------
-
-To use the annotations library is simple, you just need to create a new
-``AnnotationReader`` instance:
-
-.. code-block:: php
-
-    $reader = new \Doctrine\Common\Annotations\AnnotationReader();
-
-This creates a simple annotation reader with no caching other than in
-memory (in php arrays). Since parsing docblocks can be expensive you
-should cache this process by using a caching reader.
-
-To cache annotations, you can create a ``Doctrine\Common\Annotations\PsrCachedReader``.
-This reader decorates the original reader and stores all annotations in a PSR-6
-cache:
-
-.. code-block:: php
-
-    use Doctrine\Common\Annotations\AnnotationReader;
-    use Doctrine\Common\Annotations\PsrCachedReader;
-
-    $cache = ... // instantiate a PSR-6 Cache pool
-
-    $reader = new PsrCachedReader(
-        new AnnotationReader(),
-        $cache,
-        $debug = true
-    );
-
-The ``debug`` flag is used here as well to invalidate the cache files
-when the PHP class with annotations changed and should be used during
-development.
-
-.. warning ::
-
-    The ``AnnotationReader`` works and caches under the
-    assumption that all annotations of a doc-block are processed at
-    once. That means that annotation classes that do not exist and
-    aren't loaded and cannot be autoloaded (using the
-    AnnotationRegistry) would never be visible and not accessible if a
-    cache is used unless the cache is cleared and the annotations
-    requested again, this time with all annotations defined.
-
-By default the annotation reader returns a list of annotations with
-numeric indexes. If you want your annotations to be indexed by their
-class name you can wrap the reader in an ``IndexedReader``:
-
-.. code-block:: php
-
-    use Doctrine\Common\Annotations\AnnotationReader;
-    use Doctrine\Common\Annotations\IndexedReader;
-
-    $reader = new IndexedReader(new AnnotationReader());
-
-.. warning::
-
-    You should never wrap the indexed reader inside a cached reader,
-    only the other way around. This way you can re-use the cache with
-    indexed or numeric keys, otherwise your code may experience failures
-    due to caching in a numerical or indexed format.
-
-Ignoring missing exceptions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default an exception is thrown from the ``AnnotationReader`` if an
-annotation was found that:
-
-- is not part of the list of ignored "documentation annotations";
-- was not imported through a use statement;
-- is not a fully qualified class that exists.
-
-You can disable this behavior for specific names if your docblocks do
-not follow strict requirements:
-
-.. code-block:: php
-
-    $reader = new \Doctrine\Common\Annotations\AnnotationReader();
-    AnnotationReader::addGlobalIgnoredName('foo');
-
-PHP Imports
-~~~~~~~~~~~
-
-By default the annotation reader parses the use-statement of a php file
-to gain access to the import rules and register them for the annotation
-processing. Only if you are using PHP Imports can you validate the
-correct usage of annotations and throw exceptions if you misspelled an
-annotation. This mechanism is enabled by default.
-
-To ease the upgrade path, we still allow you to disable this mechanism.
-Note however that we will remove this in future versions:
-
-.. code-block:: php
-
-    $reader = new \Doctrine\Common\Annotations\AnnotationReader();
-    $reader->setEnabledPhpImports(false);

+ 0 - 443
vendor/doctrine/annotations/docs/en/custom.rst

@@ -1,443 +0,0 @@
-Custom Annotation Classes
-=========================
-
-If you want to define your own annotations, you just have to group them
-in a namespace.
-Annotation classes have to contain a class-level docblock with the text
-``@Annotation``:
-
-.. code-block:: php
-
-    namespace MyCompany\Annotations;
-
-    /** @Annotation */
-    class Bar
-    {
-        // some code
-    }
-
-Inject annotation values
-------------------------
-
-The annotation parser checks if the annotation constructor has arguments,
-if so then it will pass the value array, otherwise it will try to inject
-values into public properties directly:
-
-
-.. code-block:: php
-
-    namespace MyCompany\Annotations;
-
-    /**
-     * @Annotation
-     *
-     * Some Annotation using a constructor
-     */
-    class Bar
-    {
-        private $foo;
-
-        public function __construct(array $values)
-        {
-            $this->foo = $values['foo'];
-        }
-    }
-
-    /**
-     * @Annotation
-     *
-     * Some Annotation without a constructor
-     */
-    class Foo
-    {
-        public $bar;
-    }
-
-Optional: Constructors with Named Parameters
---------------------------------------------
-
-Starting with Annotations v1.11 a new annotation instantiation strategy
-is available that aims at compatibility of Annotation classes with the PHP 8
-attribute feature. You need to declare a constructor with regular parameter
-names that match the named arguments in the annotation syntax.
-
-To enable this feature, you can tag your annotation class with
-``@NamedArgumentConstructor`` (available from v1.12) or implement the
-``Doctrine\Common\Annotations\NamedArgumentConstructorAnnotation`` interface
-(available from v1.11 and deprecated as of v1.12).
-When using the ``@NamedArgumentConstructor`` tag, the first argument of the
-constructor is considered as the default one.
-
-
-Usage with the ``@NamedArgumentConstructor`` tag
-
-.. code-block:: php
-
-    namespace MyCompany\Annotations;
-
-    /**
-     * @Annotation
-     * @NamedArgumentConstructor
-     */
-    class Bar implements NamedArgumentConstructorAnnotation
-    {
-        private $foo;
-
-        public function __construct(string $foo)
-        {
-            $this->foo = $foo;
-        }
-    }
-
-    /** Usable with @Bar(foo="baz") */
-    /** Usable with @Bar("baz") */
-
-In combination with PHP 8's constructor property promotion feature
-you can simplify this to:
-
-.. code-block:: php
-
-    namespace MyCompany\Annotations;
-
-    /**
-     * @Annotation
-     * @NamedArgumentConstructor
-     */
-    class Bar implements NamedArgumentConstructorAnnotation
-    {
-        public function __construct(private string $foo) {}
-    }
-
-
-Usage with the
-``Doctrine\Common\Annotations\NamedArgumentConstructorAnnotation``
-interface (v1.11, deprecated as of v1.12):
-.. code-block:: php
-
-    namespace MyCompany\Annotations;
-
-    use Doctrine\Common\Annotations\NamedArgumentConstructorAnnotation;
-
-    /** @Annotation */
-    class Bar implements NamedArgumentConstructorAnnotation
-    {
-        private $foo;
-
-        public function __construct(private string $foo) {}
-    }
-
-    /** Usable with @Bar(foo="baz") */
-
-Annotation Target
------------------
-
-``@Target`` indicates the kinds of class elements to which an annotation
-type is applicable. Then you could define one or more targets:
-
--  ``CLASS`` Allowed in class docblocks
--  ``PROPERTY`` Allowed in property docblocks
--  ``METHOD`` Allowed in the method docblocks
--  ``FUNCTION`` Allowed in function dockblocks
--  ``ALL`` Allowed in class, property, method and function docblocks
--  ``ANNOTATION`` Allowed inside other annotations
-
-If the annotations is not allowed in the current context, an
-``AnnotationException`` is thrown.
-
-.. code-block:: php
-
-    namespace MyCompany\Annotations;
-
-    /**
-     * @Annotation
-     * @Target({"METHOD","PROPERTY"})
-     */
-    class Bar
-    {
-        // some code
-    }
-
-    /**
-     * @Annotation
-     * @Target("CLASS")
-     */
-    class Foo
-    {
-        // some code
-    }
-
-Attribute types
----------------
-
-The annotation parser checks the given parameters using the phpdoc
-annotation ``@var``, The data type could be validated using the ``@var``
-annotation on the annotation properties or using the ``@Attributes`` and
-``@Attribute`` annotations.
-
-If the data type does not match you get an ``AnnotationException``
-
-.. code-block:: php
-
-    namespace MyCompany\Annotations;
-
-    /**
-     * @Annotation
-     * @Target({"METHOD","PROPERTY"})
-     */
-    class Bar
-    {
-        /** @var mixed */
-        public $mixed;
-
-        /** @var boolean */
-        public $boolean;
-
-        /** @var bool */
-        public $bool;
-
-        /** @var float */
-        public $float;
-
-        /** @var string */
-        public $string;
-
-        /** @var integer */
-        public $integer;
-
-        /** @var array */
-        public $array;
-
-        /** @var SomeAnnotationClass */
-        public $annotation;
-
-        /** @var array<integer> */
-        public $arrayOfIntegers;
-
-        /** @var array<SomeAnnotationClass> */
-        public $arrayOfAnnotations;
-    }
-
-    /**
-     * @Annotation
-     * @Target({"METHOD","PROPERTY"})
-     * @Attributes({
-     *   @Attribute("stringProperty", type = "string"),
-     *   @Attribute("annotProperty",  type = "SomeAnnotationClass"),
-     * })
-     */
-    class Foo
-    {
-        public function __construct(array $values)
-        {
-            $this->stringProperty = $values['stringProperty'];
-            $this->annotProperty = $values['annotProperty'];
-        }
-
-        // some code
-    }
-
-Annotation Required
--------------------
-
-``@Required`` indicates that the field must be specified when the
-annotation is used. If it is not used you get an ``AnnotationException``
-stating that this value can not be null.
-
-Declaring a required field:
-
-.. code-block:: php
-
-    /**
-     * @Annotation
-     * @Target("ALL")
-     */
-    class Foo
-    {
-        /** @Required */
-        public $requiredField;
-    }
-
-Usage:
-
-.. code-block:: php
-
-    /** @Foo(requiredField="value") */
-    public $direction;                  // Valid
-
-     /** @Foo */
-    public $direction;                  // Required field missing, throws an AnnotationException
-
-
-Enumerated values
------------------
-
-- An annotation property marked with ``@Enum`` is a field that accepts a
-  fixed set of scalar values.
-- You should use ``@Enum`` fields any time you need to represent fixed
-  values.
-- The annotation parser checks the given value and throws an
-  ``AnnotationException`` if the value does not match.
-
-
-Declaring an enumerated property:
-
-.. code-block:: php
-
-    /**
-     * @Annotation
-     * @Target("ALL")
-     */
-    class Direction
-    {
-        /**
-         * @Enum({"NORTH", "SOUTH", "EAST", "WEST"})
-         */
-        public $value;
-    }
-
-Annotation usage:
-
-.. code-block:: php
-
-    /** @Direction("NORTH") */
-    public $direction;                  // Valid value
-
-     /** @Direction("NORTHEAST") */
-    public $direction;                  // Invalid value, throws an AnnotationException
-
-
-Constants
----------
-
-The use of constants and class constants is available on the annotations
-parser.
-
-The following usages are allowed:
-
-.. code-block:: php
-
-    namespace MyCompany\Entity;
-
-    use MyCompany\Annotations\Foo;
-    use MyCompany\Annotations\Bar;
-    use MyCompany\Entity\SomeClass;
-
-    /**
-     * @Foo(PHP_EOL)
-     * @Bar(Bar::FOO)
-     * @Foo({SomeClass::FOO, SomeClass::BAR})
-     * @Bar({SomeClass::FOO_KEY = SomeClass::BAR_VALUE})
-     */
-    class User
-    {
-    }
-
-
-Be careful with constants and the cache !
-
-.. note::
-
-    The cached reader will not re-evaluate each time an annotation is
-    loaded from cache. When a constant is changed the cache must be
-    cleaned.
-
-
-Usage
------
-
-Using the library API is simple. Using the annotations described in the
-previous section, you can now annotate other classes with your
-annotations:
-
-.. code-block:: php
-
-    namespace MyCompany\Entity;
-
-    use MyCompany\Annotations\Foo;
-    use MyCompany\Annotations\Bar;
-
-    /**
-     * @Foo(bar="foo")
-     * @Bar(foo="bar")
-     */
-    class User
-    {
-    }
-
-Now we can write a script to get the annotations above:
-
-.. code-block:: php
-
-    $reflClass = new ReflectionClass('MyCompany\Entity\User');
-    $classAnnotations = $reader->getClassAnnotations($reflClass);
-
-    foreach ($classAnnotations AS $annot) {
-        if ($annot instanceof \MyCompany\Annotations\Foo) {
-            echo $annot->bar; // prints "foo";
-        } else if ($annot instanceof \MyCompany\Annotations\Bar) {
-            echo $annot->foo; // prints "bar";
-        }
-    }
-
-You have a complete API for retrieving annotation class instances from a
-class, property or method docblock:
-
-
-Reader API
-~~~~~~~~~~
-
-Access all annotations of a class
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getClassAnnotations(\ReflectionClass $class);
-
-Access one annotation of a class
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getClassAnnotation(\ReflectionClass $class, $annotationName);
-
-Access all annotations of a method
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getMethodAnnotations(\ReflectionMethod $method);
-
-Access one annotation of a method
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getMethodAnnotation(\ReflectionMethod $method, $annotationName);
-
-Access all annotations of a property
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getPropertyAnnotations(\ReflectionProperty $property);
-
-Access one annotation of a property
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName);
-
-Access all annotations of a function
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getFunctionAnnotations(\ReflectionFunction $property);
-
-Access one annotation of a function
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: php
-
-    public function getFunctionAnnotation(\ReflectionFunction $property, $annotationName);

+ 0 - 102
vendor/doctrine/annotations/docs/en/index.rst

@@ -1,102 +0,0 @@
-Deprecation notice
-==================
-
-PHP 8 introduced `attributes
-<https://www.php.net/manual/en/language.attributes.overview.php>`_,
-which are a native replacement for annotations. As such, this library is
-considered feature complete, and should receive exclusively bugfixes and
-security fixes.
-
-Introduction
-============
-
-Doctrine Annotations allows to implement custom annotation
-functionality for PHP classes and functions.
-
-.. code-block:: php
-
-    class Foo
-    {
-        /**
-         * @MyAnnotation(myProperty="value")
-         */
-        private $bar;
-    }
-
-Annotations aren't implemented in PHP itself which is why this component
-offers a way to use the PHP doc-blocks as a place for the well known
-annotation syntax using the ``@`` char.
-
-Annotations in Doctrine are used for the ORM configuration to build the
-class mapping, but it can be used in other projects for other purposes
-too.
-
-Installation
-============
-
-You can install the Annotation component with composer:
-
-.. code-block::
-
-    $ composer require doctrine/annotations
-
-Create an annotation class
-==========================
-
-An annotation class is a representation of the later used annotation
-configuration in classes. The annotation class of the previous example
-looks like this:
-
-.. code-block:: php
-
-    /**
-     * @Annotation
-     */
-    final class MyAnnotation
-    {
-        public $myProperty;
-    }
-
-The annotation class is declared as an annotation by ``@Annotation``.
-
-:ref:`Read more about custom annotations. <custom>`
-
-Reading annotations
-===================
-
-The access to the annotations happens by reflection of the class or function
-containing them. There are multiple reader-classes implementing the
-``Doctrine\Common\Annotations\Reader`` interface, that can access the
-annotations of a class. A common one is
-``Doctrine\Common\Annotations\AnnotationReader``:
-
-.. code-block:: php
-
-    use Doctrine\Common\Annotations\AnnotationReader;
-
-    $reflectionClass = new ReflectionClass(Foo::class);
-    $property = $reflectionClass->getProperty('bar');
-
-    $reader = new AnnotationReader();
-    $myAnnotation = $reader->getPropertyAnnotation(
-        $property,
-        MyAnnotation::class
-    );
-
-    echo $myAnnotation->myProperty; // result: "value"
-
-A reader has multiple methods to access the annotations of a class or
-function.
-
-:ref:`Read more about handling annotations. <annotations>`
-
-IDE Support
------------
-
-Some IDEs already provide support for annotations:
-
-- Eclipse via the `Symfony2 Plugin <https://github.com/pulse00/Symfony-2-Eclipse-Plugin>`_
-- PhpStorm via the `PHP Annotations Plugin <https://plugins.jetbrains.com/plugin/7320-php-annotations>`_ or the `Symfony Plugin <https://plugins.jetbrains.com/plugin/7219-symfony-support>`_
-
-.. _Read more about handling annotations.: annotations
-.. _Read more about custom annotations.: custom

+ 0 - 6
vendor/doctrine/annotations/docs/en/sidebar.rst

@@ -1,6 +0,0 @@
-.. toctree::
-    :depth: 3
-
-    index
-    annotations
-    custom

+ 0 - 54
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php

@@ -1,54 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use BadMethodCallException;
-
-use function sprintf;
-
-/**
- * Annotations class.
- */
-class Annotation
-{
-    /**
-     * Value property. Common among all derived classes.
-     *
-     * @var mixed
-     */
-    public $value;
-
-    /** @param array<string, mixed> $data Key-value for properties to be defined in this class. */
-    final public function __construct(array $data)
-    {
-        foreach ($data as $key => $value) {
-            $this->$key = $value;
-        }
-    }
-
-    /**
-     * Error handler for unknown property accessor in Annotation class.
-     *
-     * @throws BadMethodCallException
-     */
-    public function __get(string $name)
-    {
-        throw new BadMethodCallException(
-            sprintf("Unknown property '%s' on annotation '%s'.", $name, static::class)
-        );
-    }
-
-    /**
-     * Error handler for unknown property mutator in Annotation class.
-     *
-     * @param mixed $value Property value.
-     *
-     * @throws BadMethodCallException
-     */
-    public function __set(string $name, $value)
-    {
-        throw new BadMethodCallException(
-            sprintf("Unknown property '%s' on annotation '%s'.", $name, static::class)
-        );
-    }
-}

+ 0 - 21
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php

@@ -1,21 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the attribute type during the parsing process.
- *
- * @Annotation
- */
-final class Attribute
-{
-    /** @var string */
-    public $name;
-
-    /** @var string */
-    public $type;
-
-    /** @var bool */
-    public $required = false;
-}

+ 0 - 15
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php

@@ -1,15 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the types of all declared attributes during the parsing process.
- *
- * @Annotation
- */
-final class Attributes
-{
-    /** @var array<Attribute> */
-    public $value;
-}

+ 0 - 69
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php

@@ -1,69 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-use InvalidArgumentException;
-
-use function get_class;
-use function gettype;
-use function in_array;
-use function is_object;
-use function is_scalar;
-use function sprintf;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the available values during the parsing process.
- *
- * @Annotation
- * @Attributes({
- *    @Attribute("value",   required = true,  type = "array"),
- *    @Attribute("literal", required = false, type = "array")
- * })
- */
-final class Enum
-{
-    /** @phpstan-var list<scalar> */
-    public $value;
-
-    /**
-     * Literal target declaration.
-     *
-     * @var mixed[]
-     */
-    public $literal;
-
-    /**
-     * @phpstan-param array{literal?: mixed[], value: list<scalar>} $values
-     *
-     * @throws InvalidArgumentException
-     */
-    public function __construct(array $values)
-    {
-        if (! isset($values['literal'])) {
-            $values['literal'] = [];
-        }
-
-        foreach ($values['value'] as $var) {
-            if (! is_scalar($var)) {
-                throw new InvalidArgumentException(sprintf(
-                    '@Enum supports only scalar values "%s" given.',
-                    is_object($var) ? get_class($var) : gettype($var)
-                ));
-            }
-        }
-
-        foreach ($values['literal'] as $key => $var) {
-            if (! in_array($key, $values['value'])) {
-                throw new InvalidArgumentException(sprintf(
-                    'Undefined enumerator value "%s" for literal "%s".',
-                    $key,
-                    $var
-                ));
-            }
-        }
-
-        $this->value   = $values['value'];
-        $this->literal = $values['literal'];
-    }
-}

+ 0 - 43
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php

@@ -1,43 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-use RuntimeException;
-
-use function is_array;
-use function is_string;
-use function json_encode;
-use function sprintf;
-
-/**
- * Annotation that can be used to signal to the parser to ignore specific
- * annotations during the parsing process.
- *
- * @Annotation
- */
-final class IgnoreAnnotation
-{
-    /** @phpstan-var list<string> */
-    public $names;
-
-    /**
-     * @phpstan-param array{value: string|list<string>} $values
-     *
-     * @throws RuntimeException
-     */
-    public function __construct(array $values)
-    {
-        if (is_string($values['value'])) {
-            $values['value'] = [$values['value']];
-        }
-
-        if (! is_array($values['value'])) {
-            throw new RuntimeException(sprintf(
-                '@IgnoreAnnotation expects either a string name, or an array of strings, but got %s.',
-                json_encode($values['value'])
-            ));
-        }
-
-        $this->names = $values['value'];
-    }
-}

+ 0 - 13
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/NamedArgumentConstructor.php

@@ -1,13 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that indicates that the annotated class should be constructed with a named argument call.
- *
- * @Annotation
- * @Target("CLASS")
- */
-final class NamedArgumentConstructor
-{
-}

+ 0 - 13
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php

@@ -1,13 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check if that attribute is required during the parsing process.
- *
- * @Annotation
- */
-final class Required
-{
-}

+ 0 - 101
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php

@@ -1,101 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-use InvalidArgumentException;
-
-use function array_keys;
-use function get_class;
-use function gettype;
-use function implode;
-use function is_array;
-use function is_object;
-use function is_string;
-use function sprintf;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the annotation target during the parsing process.
- *
- * @Annotation
- */
-final class Target
-{
-    public const TARGET_CLASS      = 1;
-    public const TARGET_METHOD     = 2;
-    public const TARGET_PROPERTY   = 4;
-    public const TARGET_ANNOTATION = 8;
-    public const TARGET_FUNCTION   = 16;
-    public const TARGET_ALL        = 31;
-
-    /** @var array<string, int> */
-    private static $map = [
-        'ALL'        => self::TARGET_ALL,
-        'CLASS'      => self::TARGET_CLASS,
-        'METHOD'     => self::TARGET_METHOD,
-        'PROPERTY'   => self::TARGET_PROPERTY,
-        'FUNCTION'   => self::TARGET_FUNCTION,
-        'ANNOTATION' => self::TARGET_ANNOTATION,
-    ];
-
-    /** @phpstan-var list<string> */
-    public $value;
-
-    /**
-     * Targets as bitmask.
-     *
-     * @var int
-     */
-    public $targets;
-
-    /**
-     * Literal target declaration.
-     *
-     * @var string
-     */
-    public $literal;
-
-    /**
-     * @phpstan-param array{value?: string|list<string>} $values
-     *
-     * @throws InvalidArgumentException
-     */
-    public function __construct(array $values)
-    {
-        if (! isset($values['value'])) {
-            $values['value'] = null;
-        }
-
-        if (is_string($values['value'])) {
-            $values['value'] = [$values['value']];
-        }
-
-        if (! is_array($values['value'])) {
-            throw new InvalidArgumentException(
-                sprintf(
-                    '@Target expects either a string value, or an array of strings, "%s" given.',
-                    is_object($values['value']) ? get_class($values['value']) : gettype($values['value'])
-                )
-            );
-        }
-
-        $bitmask = 0;
-        foreach ($values['value'] as $literal) {
-            if (! isset(self::$map[$literal])) {
-                throw new InvalidArgumentException(
-                    sprintf(
-                        'Invalid Target "%s". Available targets: [%s]',
-                        $literal,
-                        implode(', ', array_keys(self::$map))
-                    )
-                );
-            }
-
-            $bitmask |= self::$map[$literal];
-        }
-
-        $this->targets = $bitmask;
-        $this->value   = $values['value'];
-        $this->literal = implode(', ', $this->value);
-    }
-}

+ 0 - 158
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php

@@ -1,158 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use Exception;
-use Throwable;
-
-use function get_class;
-use function gettype;
-use function implode;
-use function is_object;
-use function sprintf;
-
-/**
- * Description of AnnotationException
- */
-class AnnotationException extends Exception
-{
-    /**
-     * Creates a new AnnotationException describing a Syntax error.
-     *
-     * @return AnnotationException
-     */
-    public static function syntaxError(string $message)
-    {
-        return new self('[Syntax Error] ' . $message);
-    }
-
-    /**
-     * Creates a new AnnotationException describing a Semantical error.
-     *
-     * @return AnnotationException
-     */
-    public static function semanticalError(string $message)
-    {
-        return new self('[Semantical Error] ' . $message);
-    }
-
-    /**
-     * Creates a new AnnotationException describing an error which occurred during
-     * the creation of the annotation.
-     *
-     * @return AnnotationException
-     */
-    public static function creationError(string $message, ?Throwable $previous = null)
-    {
-        return new self('[Creation Error] ' . $message, 0, $previous);
-    }
-
-    /**
-     * Creates a new AnnotationException describing a type error.
-     *
-     * @return AnnotationException
-     */
-    public static function typeError(string $message)
-    {
-        return new self('[Type Error] ' . $message);
-    }
-
-    /**
-     * Creates a new AnnotationException describing a constant semantical error.
-     *
-     * @return AnnotationException
-     */
-    public static function semanticalErrorConstants(string $identifier, ?string $context = null)
-    {
-        return self::semanticalError(sprintf(
-            "Couldn't find constant %s%s.",
-            $identifier,
-            $context ? ', ' . $context : ''
-        ));
-    }
-
-    /**
-     * Creates a new AnnotationException describing an type error of an attribute.
-     *
-     * @param mixed $actual
-     *
-     * @return AnnotationException
-     */
-    public static function attributeTypeError(
-        string $attributeName,
-        string $annotationName,
-        string $context,
-        string $expected,
-        $actual
-    ) {
-        return self::typeError(sprintf(
-            'Attribute "%s" of @%s declared on %s expects %s, but got %s.',
-            $attributeName,
-            $annotationName,
-            $context,
-            $expected,
-            is_object($actual) ? 'an instance of ' . get_class($actual) : gettype($actual)
-        ));
-    }
-
-    /**
-     * Creates a new AnnotationException describing an required error of an attribute.
-     *
-     * @return AnnotationException
-     */
-    public static function requiredError(
-        string $attributeName,
-        string $annotationName,
-        string $context,
-        string $expected
-    ) {
-        return self::typeError(sprintf(
-            'Attribute "%s" of @%s declared on %s expects %s. This value should not be null.',
-            $attributeName,
-            $annotationName,
-            $context,
-            $expected
-        ));
-    }
-
-    /**
-     * Creates a new AnnotationException describing a invalid enummerator.
-     *
-     * @param mixed $given
-     * @phpstan-param list<string> $available
-     *
-     * @return AnnotationException
-     */
-    public static function enumeratorError(
-        string $attributeName,
-        string $annotationName,
-        string $context,
-        array $available,
-        $given
-    ) {
-        return new self(sprintf(
-            '[Enum Error] Attribute "%s" of @%s declared on %s accepts only [%s], but got %s.',
-            $attributeName,
-            $annotationName,
-            $context,
-            implode(', ', $available),
-            is_object($given) ? get_class($given) : $given
-        ));
-    }
-
-    /** @return AnnotationException */
-    public static function optimizerPlusSaveComments()
-    {
-        return new self(
-            'You have to enable opcache.save_comments=1 or zend_optimizerplus.save_comments=1.'
-        );
-    }
-
-    /** @return AnnotationException */
-    public static function optimizerPlusLoadComments()
-    {
-        return new self(
-            'You have to enable opcache.load_comments=1 or zend_optimizerplus.load_comments=1.'
-        );
-    }
-}

+ 0 - 385
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php

@@ -1,385 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use Doctrine\Common\Annotations\Annotation\IgnoreAnnotation;
-use Doctrine\Common\Annotations\Annotation\Target;
-use ReflectionClass;
-use ReflectionFunction;
-use ReflectionMethod;
-use ReflectionProperty;
-
-use function array_merge;
-use function class_exists;
-use function extension_loaded;
-use function ini_get;
-
-/**
- * A reader for docblock annotations.
- */
-class AnnotationReader implements Reader
-{
-    /**
-     * Global map for imports.
-     *
-     * @var array<string, class-string>
-     */
-    private static $globalImports = [
-        'ignoreannotation' => Annotation\IgnoreAnnotation::class,
-    ];
-
-    /**
-     * A list with annotations that are not causing exceptions when not resolved to an annotation class.
-     *
-     * The names are case sensitive.
-     *
-     * @var array<string, true>
-     */
-    private static $globalIgnoredNames = ImplicitlyIgnoredAnnotationNames::LIST;
-
-    /**
-     * A list with annotations that are not causing exceptions when not resolved to an annotation class.
-     *
-     * The names are case sensitive.
-     *
-     * @var array<string, true>
-     */
-    private static $globalIgnoredNamespaces = [];
-
-    /**
-     * Add a new annotation to the globally ignored annotation names with regard to exception handling.
-     */
-    public static function addGlobalIgnoredName(string $name)
-    {
-        self::$globalIgnoredNames[$name] = true;
-    }
-
-    /**
-     * Add a new annotation to the globally ignored annotation namespaces with regard to exception handling.
-     */
-    public static function addGlobalIgnoredNamespace(string $namespace)
-    {
-        self::$globalIgnoredNamespaces[$namespace] = true;
-    }
-
-    /**
-     * Annotations parser.
-     *
-     * @var DocParser
-     */
-    private $parser;
-
-    /**
-     * Annotations parser used to collect parsing metadata.
-     *
-     * @var DocParser
-     */
-    private $preParser;
-
-    /**
-     * PHP parser used to collect imports.
-     *
-     * @var PhpParser
-     */
-    private $phpParser;
-
-    /**
-     * In-memory cache mechanism to store imported annotations per class.
-     *
-     * @psalm-var array<'class'|'function', array<string, array<string, class-string>>>
-     */
-    private $imports = [];
-
-    /**
-     * In-memory cache mechanism to store ignored annotations per class.
-     *
-     * @psalm-var array<'class'|'function', array<string, array<string, true>>>
-     */
-    private $ignoredAnnotationNames = [];
-
-    /**
-     * Initializes a new AnnotationReader.
-     *
-     * @throws AnnotationException
-     */
-    public function __construct(?DocParser $parser = null)
-    {
-        if (
-            extension_loaded('Zend Optimizer+') && (ini_get('zend_optimizerplus.save_comments') === '0' ||
-            ini_get('opcache.save_comments') === '0')
-        ) {
-            throw AnnotationException::optimizerPlusSaveComments();
-        }
-
-        if (extension_loaded('Zend OPcache') && ini_get('opcache.save_comments') === 0) {
-            throw AnnotationException::optimizerPlusSaveComments();
-        }
-
-        // Make sure that the IgnoreAnnotation annotation is loaded
-        class_exists(IgnoreAnnotation::class);
-
-        $this->parser = $parser ?: new DocParser();
-
-        $this->preParser = new DocParser();
-
-        $this->preParser->setImports(self::$globalImports);
-        $this->preParser->setIgnoreNotImportedAnnotations(true);
-        $this->preParser->setIgnoredAnnotationNames(self::$globalIgnoredNames);
-
-        $this->phpParser = new PhpParser();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(ReflectionClass $class)
-    {
-        $this->parser->setTarget(Target::TARGET_CLASS);
-        $this->parser->setImports($this->getImports($class));
-        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
-        $this->parser->setIgnoredAnnotationNamespaces(self::$globalIgnoredNamespaces);
-
-        return $this->parser->parse($class->getDocComment(), 'class ' . $class->getName());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(ReflectionClass $class, $annotationName)
-    {
-        $annotations = $this->getClassAnnotations($class);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(ReflectionProperty $property)
-    {
-        $class   = $property->getDeclaringClass();
-        $context = 'property ' . $class->getName() . '::$' . $property->getName();
-
-        $this->parser->setTarget(Target::TARGET_PROPERTY);
-        $this->parser->setImports($this->getPropertyImports($property));
-        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
-        $this->parser->setIgnoredAnnotationNamespaces(self::$globalIgnoredNamespaces);
-
-        return $this->parser->parse($property->getDocComment(), $context);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(ReflectionProperty $property, $annotationName)
-    {
-        $annotations = $this->getPropertyAnnotations($property);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(ReflectionMethod $method)
-    {
-        $class   = $method->getDeclaringClass();
-        $context = 'method ' . $class->getName() . '::' . $method->getName() . '()';
-
-        $this->parser->setTarget(Target::TARGET_METHOD);
-        $this->parser->setImports($this->getMethodImports($method));
-        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
-        $this->parser->setIgnoredAnnotationNamespaces(self::$globalIgnoredNamespaces);
-
-        return $this->parser->parse($method->getDocComment(), $context);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(ReflectionMethod $method, $annotationName)
-    {
-        $annotations = $this->getMethodAnnotations($method);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Gets the annotations applied to a function.
-     *
-     * @phpstan-return list<object> An array of Annotations.
-     */
-    public function getFunctionAnnotations(ReflectionFunction $function): array
-    {
-        $context = 'function ' . $function->getName();
-
-        $this->parser->setTarget(Target::TARGET_FUNCTION);
-        $this->parser->setImports($this->getImports($function));
-        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($function));
-        $this->parser->setIgnoredAnnotationNamespaces(self::$globalIgnoredNamespaces);
-
-        return $this->parser->parse($function->getDocComment(), $context);
-    }
-
-    /**
-     * Gets a function annotation.
-     *
-     * @return object|null The Annotation or NULL, if the requested annotation does not exist.
-     */
-    public function getFunctionAnnotation(ReflectionFunction $function, string $annotationName)
-    {
-        $annotations = $this->getFunctionAnnotations($function);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the ignored annotations for the given class or function.
-     *
-     * @param ReflectionClass|ReflectionFunction $reflection
-     *
-     * @return array<string, true>
-     */
-    private function getIgnoredAnnotationNames($reflection): array
-    {
-        $type = $reflection instanceof ReflectionClass ? 'class' : 'function';
-        $name = $reflection->getName();
-
-        if (isset($this->ignoredAnnotationNames[$type][$name])) {
-            return $this->ignoredAnnotationNames[$type][$name];
-        }
-
-        $this->collectParsingMetadata($reflection);
-
-        return $this->ignoredAnnotationNames[$type][$name];
-    }
-
-    /**
-     * Retrieves imports for a class or a function.
-     *
-     * @param ReflectionClass|ReflectionFunction $reflection
-     *
-     * @return array<string, class-string>
-     */
-    private function getImports($reflection): array
-    {
-        $type = $reflection instanceof ReflectionClass ? 'class' : 'function';
-        $name = $reflection->getName();
-
-        if (isset($this->imports[$type][$name])) {
-            return $this->imports[$type][$name];
-        }
-
-        $this->collectParsingMetadata($reflection);
-
-        return $this->imports[$type][$name];
-    }
-
-    /**
-     * Retrieves imports for methods.
-     *
-     * @return array<string, class-string>
-     */
-    private function getMethodImports(ReflectionMethod $method)
-    {
-        $class        = $method->getDeclaringClass();
-        $classImports = $this->getImports($class);
-
-        $traitImports = [];
-
-        foreach ($class->getTraits() as $trait) {
-            if (
-                ! $trait->hasMethod($method->getName())
-                || $trait->getFileName() !== $method->getFileName()
-            ) {
-                continue;
-            }
-
-            $traitImports = array_merge($traitImports, $this->phpParser->parseUseStatements($trait));
-        }
-
-        return array_merge($classImports, $traitImports);
-    }
-
-    /**
-     * Retrieves imports for properties.
-     *
-     * @return array<string, class-string>
-     */
-    private function getPropertyImports(ReflectionProperty $property)
-    {
-        $class        = $property->getDeclaringClass();
-        $classImports = $this->getImports($class);
-
-        $traitImports = [];
-
-        foreach ($class->getTraits() as $trait) {
-            if (! $trait->hasProperty($property->getName())) {
-                continue;
-            }
-
-            $traitImports = array_merge($traitImports, $this->phpParser->parseUseStatements($trait));
-        }
-
-        return array_merge($classImports, $traitImports);
-    }
-
-    /**
-     * Collects parsing metadata for a given class or function.
-     *
-     * @param ReflectionClass|ReflectionFunction $reflection
-     */
-    private function collectParsingMetadata($reflection): void
-    {
-        $type = $reflection instanceof ReflectionClass ? 'class' : 'function';
-        $name = $reflection->getName();
-
-        $ignoredAnnotationNames = self::$globalIgnoredNames;
-        $annotations            = $this->preParser->parse($reflection->getDocComment(), $type . ' ' . $name);
-
-        foreach ($annotations as $annotation) {
-            if (! ($annotation instanceof IgnoreAnnotation)) {
-                continue;
-            }
-
-            foreach ($annotation->names as $annot) {
-                $ignoredAnnotationNames[$annot] = true;
-            }
-        }
-
-        $this->imports[$type][$name] = array_merge(
-            self::$globalImports,
-            $this->phpParser->parseUseStatements($reflection),
-            [
-                '__NAMESPACE__' => $reflection->getNamespaceName(),
-                'self' => $name,
-            ]
-        );
-
-        $this->ignoredAnnotationNames[$type][$name] = $ignoredAnnotationNames;
-    }
-}

+ 0 - 43
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php

@@ -1,43 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use function array_key_exists;
-use function class_exists;
-
-final class AnnotationRegistry
-{
-    /**
-     * An array of classes which cannot be found
-     *
-     * @var null[] indexed by class name
-     */
-    private static $failedToAutoload = [];
-
-    public static function reset(): void
-    {
-        self::$failedToAutoload = [];
-    }
-
-    /**
-     * Autoloads an annotation class silently.
-     */
-    public static function loadAnnotationClass(string $class): bool
-    {
-        if (class_exists($class, false)) {
-            return true;
-        }
-
-        if (array_key_exists($class, self::$failedToAutoload)) {
-            return false;
-        }
-
-        if (class_exists($class)) {
-            return true;
-        }
-
-        self::$failedToAutoload[$class] = null;
-
-        return false;
-    }
-}

+ 0 - 131
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php

@@ -1,131 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use Doctrine\Common\Lexer\AbstractLexer;
-
-use function ctype_alpha;
-use function is_numeric;
-use function str_replace;
-use function stripos;
-use function strlen;
-use function strpos;
-use function strtolower;
-use function substr;
-
-/**
- * Simple lexer for docblock annotations.
- *
- * @template-extends AbstractLexer<DocLexer::T_*, string>
- */
-final class DocLexer extends AbstractLexer
-{
-    public const T_NONE    = 1;
-    public const T_INTEGER = 2;
-    public const T_STRING  = 3;
-    public const T_FLOAT   = 4;
-
-    // All tokens that are also identifiers should be >= 100
-    public const T_IDENTIFIER          = 100;
-    public const T_AT                  = 101;
-    public const T_CLOSE_CURLY_BRACES  = 102;
-    public const T_CLOSE_PARENTHESIS   = 103;
-    public const T_COMMA               = 104;
-    public const T_EQUALS              = 105;
-    public const T_FALSE               = 106;
-    public const T_NAMESPACE_SEPARATOR = 107;
-    public const T_OPEN_CURLY_BRACES   = 108;
-    public const T_OPEN_PARENTHESIS    = 109;
-    public const T_TRUE                = 110;
-    public const T_NULL                = 111;
-    public const T_COLON               = 112;
-    public const T_MINUS               = 113;
-
-    /** @var array<string, self::T*> */
-    protected $noCase = [
-        '@'  => self::T_AT,
-        ','  => self::T_COMMA,
-        '('  => self::T_OPEN_PARENTHESIS,
-        ')'  => self::T_CLOSE_PARENTHESIS,
-        '{'  => self::T_OPEN_CURLY_BRACES,
-        '}'  => self::T_CLOSE_CURLY_BRACES,
-        '='  => self::T_EQUALS,
-        ':'  => self::T_COLON,
-        '-'  => self::T_MINUS,
-        '\\' => self::T_NAMESPACE_SEPARATOR,
-    ];
-
-    /** @var array<string, self::T*> */
-    protected $withCase = [
-        'true'  => self::T_TRUE,
-        'false' => self::T_FALSE,
-        'null'  => self::T_NULL,
-    ];
-
-    /**
-     * Whether the next token starts immediately, or if there were
-     * non-captured symbols before that
-     */
-    public function nextTokenIsAdjacent(): bool
-    {
-        return $this->token === null
-            || ($this->lookahead !== null
-                && ($this->lookahead->position - $this->token->position) === strlen($this->token->value));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getCatchablePatterns()
-    {
-        return [
-            '[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*',
-            '(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?',
-            '"(?:""|[^"])*+"',
-        ];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getNonCatchablePatterns()
-    {
-        return ['\s+', '\*+', '(.)'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getType(&$value)
-    {
-        $type = self::T_NONE;
-
-        if ($value[0] === '"') {
-            $value = str_replace('""', '"', substr($value, 1, strlen($value) - 2));
-
-            return self::T_STRING;
-        }
-
-        if (isset($this->noCase[$value])) {
-            return $this->noCase[$value];
-        }
-
-        if ($value[0] === '_' || $value[0] === '\\' || ctype_alpha($value[0])) {
-            return self::T_IDENTIFIER;
-        }
-
-        $lowerValue = strtolower($value);
-
-        if (isset($this->withCase[$lowerValue])) {
-            return $this->withCase[$lowerValue];
-        }
-
-        // Checking numeric value
-        if (is_numeric($value)) {
-            return strpos($value, '.') !== false || stripos($value, 'e') !== false
-                ? self::T_FLOAT : self::T_INTEGER;
-        }
-
-        return $type;
-    }
-}

+ 0 - 1494
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php

@@ -1,1494 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use Doctrine\Common\Annotations\Annotation\Attribute;
-use Doctrine\Common\Annotations\Annotation\Attributes;
-use Doctrine\Common\Annotations\Annotation\Enum;
-use Doctrine\Common\Annotations\Annotation\NamedArgumentConstructor;
-use Doctrine\Common\Annotations\Annotation\Target;
-use ReflectionClass;
-use ReflectionException;
-use ReflectionProperty;
-use RuntimeException;
-use stdClass;
-use Throwable;
-
-use function array_keys;
-use function array_map;
-use function array_pop;
-use function array_values;
-use function class_exists;
-use function constant;
-use function count;
-use function defined;
-use function explode;
-use function gettype;
-use function implode;
-use function in_array;
-use function interface_exists;
-use function is_array;
-use function is_object;
-use function json_encode;
-use function ltrim;
-use function preg_match;
-use function reset;
-use function rtrim;
-use function sprintf;
-use function stripos;
-use function strlen;
-use function strpos;
-use function strrpos;
-use function strtolower;
-use function substr;
-use function trim;
-
-use const PHP_VERSION_ID;
-
-/**
- * A parser for docblock annotations.
- *
- * It is strongly discouraged to change the default annotation parsing process.
- */
-final class DocParser
-{
-    /**
-     * An array of all valid tokens for a class name.
-     *
-     * @phpstan-var list<int>
-     */
-    private static $classIdentifiers = [
-        DocLexer::T_IDENTIFIER,
-        DocLexer::T_TRUE,
-        DocLexer::T_FALSE,
-        DocLexer::T_NULL,
-    ];
-
-    /**
-     * The lexer.
-     *
-     * @var DocLexer
-     */
-    private $lexer;
-
-    /**
-     * Current target context.
-     *
-     * @var int
-     */
-    private $target;
-
-    /**
-     * Doc parser used to collect annotation target.
-     *
-     * @var DocParser
-     */
-    private static $metadataParser;
-
-    /**
-     * Flag to control if the current annotation is nested or not.
-     *
-     * @var bool
-     */
-    private $isNestedAnnotation = false;
-
-    /**
-     * Hashmap containing all use-statements that are to be used when parsing
-     * the given doc block.
-     *
-     * @var array<string, class-string>
-     */
-    private $imports = [];
-
-    /**
-     * This hashmap is used internally to cache results of class_exists()
-     * look-ups.
-     *
-     * @var array<class-string, bool>
-     */
-    private $classExists = [];
-
-    /**
-     * Whether annotations that have not been imported should be ignored.
-     *
-     * @var bool
-     */
-    private $ignoreNotImportedAnnotations = false;
-
-    /**
-     * An array of default namespaces if operating in simple mode.
-     *
-     * @var string[]
-     */
-    private $namespaces = [];
-
-    /**
-     * A list with annotations that are not causing exceptions when not resolved to an annotation class.
-     *
-     * The names must be the raw names as used in the class, not the fully qualified
-     *
-     * @var bool[] indexed by annotation name
-     */
-    private $ignoredAnnotationNames = [];
-
-    /**
-     * A list with annotations in namespaced format
-     * that are not causing exceptions when not resolved to an annotation class.
-     *
-     * @var bool[] indexed by namespace name
-     */
-    private $ignoredAnnotationNamespaces = [];
-
-    /** @var string */
-    private $context = '';
-
-    /**
-     * Hash-map for caching annotation metadata.
-     *
-     * @var array<class-string, mixed[]>
-     */
-    private static $annotationMetadata = [
-        Annotation\Target::class => [
-            'is_annotation'                  => true,
-            'has_constructor'                => true,
-            'has_named_argument_constructor' => false,
-            'properties'                     => [],
-            'targets_literal'                => 'ANNOTATION_CLASS',
-            'targets'                        => Target::TARGET_CLASS,
-            'default_property'               => 'value',
-            'attribute_types'                => [
-                'value'  => [
-                    'required'   => false,
-                    'type'       => 'array',
-                    'array_type' => 'string',
-                    'value'      => 'array<string>',
-                ],
-            ],
-        ],
-        Annotation\Attribute::class => [
-            'is_annotation'                  => true,
-            'has_constructor'                => false,
-            'has_named_argument_constructor' => false,
-            'targets_literal'                => 'ANNOTATION_ANNOTATION',
-            'targets'                        => Target::TARGET_ANNOTATION,
-            'default_property'               => 'name',
-            'properties'                     => [
-                'name'      => 'name',
-                'type'      => 'type',
-                'required'  => 'required',
-            ],
-            'attribute_types'                => [
-                'value'  => [
-                    'required'  => true,
-                    'type'      => 'string',
-                    'value'     => 'string',
-                ],
-                'type'  => [
-                    'required'  => true,
-                    'type'      => 'string',
-                    'value'     => 'string',
-                ],
-                'required'  => [
-                    'required'  => false,
-                    'type'      => 'boolean',
-                    'value'     => 'boolean',
-                ],
-            ],
-        ],
-        Annotation\Attributes::class => [
-            'is_annotation'                  => true,
-            'has_constructor'                => false,
-            'has_named_argument_constructor' => false,
-            'targets_literal'                => 'ANNOTATION_CLASS',
-            'targets'                        => Target::TARGET_CLASS,
-            'default_property'               => 'value',
-            'properties'                     => ['value' => 'value'],
-            'attribute_types'                => [
-                'value' => [
-                    'type'      => 'array',
-                    'required'  => true,
-                    'array_type' => Annotation\Attribute::class,
-                    'value'     => 'array<' . Annotation\Attribute::class . '>',
-                ],
-            ],
-        ],
-        Annotation\Enum::class => [
-            'is_annotation'                  => true,
-            'has_constructor'                => true,
-            'has_named_argument_constructor' => false,
-            'targets_literal'                => 'ANNOTATION_PROPERTY',
-            'targets'                        => Target::TARGET_PROPERTY,
-            'default_property'               => 'value',
-            'properties'                     => ['value' => 'value'],
-            'attribute_types'                => [
-                'value' => [
-                    'type'      => 'array',
-                    'required'  => true,
-                ],
-                'literal' => [
-                    'type'      => 'array',
-                    'required'  => false,
-                ],
-            ],
-        ],
-        Annotation\NamedArgumentConstructor::class => [
-            'is_annotation'                  => true,
-            'has_constructor'                => false,
-            'has_named_argument_constructor' => false,
-            'targets_literal'                => 'ANNOTATION_CLASS',
-            'targets'                        => Target::TARGET_CLASS,
-            'default_property'               => null,
-            'properties'                     => [],
-            'attribute_types'                => [],
-        ],
-    ];
-
-    /**
-     * Hash-map for handle types declaration.
-     *
-     * @var array<string, string>
-     */
-    private static $typeMap = [
-        'float'     => 'double',
-        'bool'      => 'boolean',
-        // allow uppercase Boolean in honor of George Boole
-        'Boolean'   => 'boolean',
-        'int'       => 'integer',
-    ];
-
-    /**
-     * Constructs a new DocParser.
-     */
-    public function __construct()
-    {
-        $this->lexer = new DocLexer();
-    }
-
-    /**
-     * Sets the annotation names that are ignored during the parsing process.
-     *
-     * The names are supposed to be the raw names as used in the class, not the
-     * fully qualified class names.
-     *
-     * @param bool[] $names indexed by annotation name
-     *
-     * @return void
-     */
-    public function setIgnoredAnnotationNames(array $names)
-    {
-        $this->ignoredAnnotationNames = $names;
-    }
-
-    /**
-     * Sets the annotation namespaces that are ignored during the parsing process.
-     *
-     * @param bool[] $ignoredAnnotationNamespaces indexed by annotation namespace name
-     *
-     * @return void
-     */
-    public function setIgnoredAnnotationNamespaces(array $ignoredAnnotationNamespaces)
-    {
-        $this->ignoredAnnotationNamespaces = $ignoredAnnotationNamespaces;
-    }
-
-    /**
-     * Sets ignore on not-imported annotations.
-     *
-     * @return void
-     */
-    public function setIgnoreNotImportedAnnotations(bool $bool)
-    {
-        $this->ignoreNotImportedAnnotations = $bool;
-    }
-
-    /**
-     * Sets the default namespaces.
-     *
-     * @return void
-     *
-     * @throws RuntimeException
-     */
-    public function addNamespace(string $namespace)
-    {
-        if ($this->imports) {
-            throw new RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
-        }
-
-        $this->namespaces[] = $namespace;
-    }
-
-    /**
-     * Sets the imports.
-     *
-     * @param array<string, class-string> $imports
-     *
-     * @return void
-     *
-     * @throws RuntimeException
-     */
-    public function setImports(array $imports)
-    {
-        if ($this->namespaces) {
-            throw new RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
-        }
-
-        $this->imports = $imports;
-    }
-
-    /**
-     * Sets current target context as bitmask.
-     *
-     * @return void
-     */
-    public function setTarget(int $target)
-    {
-        $this->target = $target;
-    }
-
-    /**
-     * Parses the given docblock string for annotations.
-     *
-     * @phpstan-return list<object> Array of annotations. If no annotations are found, an empty array is returned.
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    public function parse(string $input, string $context = '')
-    {
-        $pos = $this->findInitialTokenPosition($input);
-        if ($pos === null) {
-            return [];
-        }
-
-        $this->context = $context;
-
-        $this->lexer->setInput(trim(substr($input, $pos), '* /'));
-        $this->lexer->moveNext();
-
-        return $this->Annotations();
-    }
-
-    /**
-     * Finds the first valid annotation
-     */
-    private function findInitialTokenPosition(string $input): ?int
-    {
-        $pos = 0;
-
-        // search for first valid annotation
-        while (($pos = strpos($input, '@', $pos)) !== false) {
-            $preceding = substr($input, $pos - 1, 1);
-
-            // if the @ is preceded by a space, a tab or * it is valid
-            if ($pos === 0 || $preceding === ' ' || $preceding === '*' || $preceding === "\t") {
-                return $pos;
-            }
-
-            $pos++;
-        }
-
-        return null;
-    }
-
-    /**
-     * Attempts to match the given token with the current lookahead token.
-     * If they match, updates the lookahead token; otherwise raises a syntax error.
-     *
-     * @param int $token Type of token.
-     *
-     * @return bool True if tokens match; false otherwise.
-     *
-     * @throws AnnotationException
-     */
-    private function match(int $token): bool
-    {
-        if (! $this->lexer->isNextToken($token)) {
-            throw $this->syntaxError($this->lexer->getLiteral($token));
-        }
-
-        return $this->lexer->moveNext();
-    }
-
-    /**
-     * Attempts to match the current lookahead token with any of the given tokens.
-     *
-     * If any of them matches, this method updates the lookahead token; otherwise
-     * a syntax error is raised.
-     *
-     * @phpstan-param list<mixed[]> $tokens
-     *
-     * @throws AnnotationException
-     */
-    private function matchAny(array $tokens): bool
-    {
-        if (! $this->lexer->isNextTokenAny($tokens)) {
-            throw $this->syntaxError(implode(' or ', array_map([$this->lexer, 'getLiteral'], $tokens)));
-        }
-
-        return $this->lexer->moveNext();
-    }
-
-    /**
-     * Generates a new syntax error.
-     *
-     * @param string       $expected Expected string.
-     * @param mixed[]|null $token    Optional token.
-     */
-    private function syntaxError(string $expected, ?array $token = null): AnnotationException
-    {
-        if ($token === null) {
-            $token = $this->lexer->lookahead;
-        }
-
-        $message  = sprintf('Expected %s, got ', $expected);
-        $message .= $this->lexer->lookahead === null
-            ? 'end of string'
-            : sprintf("'%s' at position %s", $token->value, $token->position);
-
-        if (strlen($this->context)) {
-            $message .= ' in ' . $this->context;
-        }
-
-        $message .= '.';
-
-        return AnnotationException::syntaxError($message);
-    }
-
-    /**
-     * Attempts to check if a class exists or not. This never goes through the PHP autoloading mechanism
-     * but uses the {@link AnnotationRegistry} to load classes.
-     *
-     * @param class-string $fqcn
-     */
-    private function classExists(string $fqcn): bool
-    {
-        if (isset($this->classExists[$fqcn])) {
-            return $this->classExists[$fqcn];
-        }
-
-        // first check if the class already exists, maybe loaded through another AnnotationReader
-        if (class_exists($fqcn, false)) {
-            return $this->classExists[$fqcn] = true;
-        }
-
-        // final check, does this class exist?
-        return $this->classExists[$fqcn] = AnnotationRegistry::loadAnnotationClass($fqcn);
-    }
-
-    /**
-     * Collects parsing metadata for a given annotation class
-     *
-     * @param class-string $name The annotation name
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function collectAnnotationMetadata(string $name): void
-    {
-        if (self::$metadataParser === null) {
-            self::$metadataParser = new self();
-
-            self::$metadataParser->setIgnoreNotImportedAnnotations(true);
-            self::$metadataParser->setIgnoredAnnotationNames($this->ignoredAnnotationNames);
-            self::$metadataParser->setImports([
-                'enum'                     => Enum::class,
-                'target'                   => Target::class,
-                'attribute'                => Attribute::class,
-                'attributes'               => Attributes::class,
-                'namedargumentconstructor' => NamedArgumentConstructor::class,
-            ]);
-
-            // Make sure that annotations from metadata are loaded
-            class_exists(Enum::class);
-            class_exists(Target::class);
-            class_exists(Attribute::class);
-            class_exists(Attributes::class);
-            class_exists(NamedArgumentConstructor::class);
-        }
-
-        $class      = new ReflectionClass($name);
-        $docComment = $class->getDocComment();
-
-        // Sets default values for annotation metadata
-        $constructor = $class->getConstructor();
-        $metadata    = [
-            'default_property' => null,
-            'has_constructor'  => $constructor !== null && $constructor->getNumberOfParameters() > 0,
-            'constructor_args' => [],
-            'properties'       => [],
-            'property_types'   => [],
-            'attribute_types'  => [],
-            'targets_literal'  => null,
-            'targets'          => Target::TARGET_ALL,
-            'is_annotation'    => strpos($docComment, '@Annotation') !== false,
-        ];
-
-        $metadata['has_named_argument_constructor'] = false;
-
-        // verify that the class is really meant to be an annotation
-        if ($metadata['is_annotation']) {
-            self::$metadataParser->setTarget(Target::TARGET_CLASS);
-
-            foreach (self::$metadataParser->parse($docComment, 'class @' . $name) as $annotation) {
-                if ($annotation instanceof Target) {
-                    $metadata['targets']         = $annotation->targets;
-                    $metadata['targets_literal'] = $annotation->literal;
-
-                    continue;
-                }
-
-                if ($annotation instanceof NamedArgumentConstructor) {
-                    $metadata['has_named_argument_constructor'] = $metadata['has_constructor'];
-                    if ($metadata['has_named_argument_constructor']) {
-                        // choose the first argument as the default property
-                        $metadata['default_property'] = $constructor->getParameters()[0]->getName();
-                    }
-                }
-
-                if (! ($annotation instanceof Attributes)) {
-                    continue;
-                }
-
-                foreach ($annotation->value as $attribute) {
-                    $this->collectAttributeTypeMetadata($metadata, $attribute);
-                }
-            }
-
-            // if not has a constructor will inject values into public properties
-            if ($metadata['has_constructor'] === false) {
-                // collect all public properties
-                foreach ($class->getProperties(ReflectionProperty::IS_PUBLIC) as $property) {
-                    $metadata['properties'][$property->name] = $property->name;
-
-                    $propertyComment = $property->getDocComment();
-                    if ($propertyComment === false) {
-                        continue;
-                    }
-
-                    $attribute = new Attribute();
-
-                    $attribute->required = (strpos($propertyComment, '@Required') !== false);
-                    $attribute->name     = $property->name;
-                    $attribute->type     = (strpos($propertyComment, '@var') !== false &&
-                        preg_match('/@var\s+([^\s]+)/', $propertyComment, $matches))
-                        ? $matches[1]
-                        : 'mixed';
-
-                    $this->collectAttributeTypeMetadata($metadata, $attribute);
-
-                    // checks if the property has @Enum
-                    if (strpos($propertyComment, '@Enum') === false) {
-                        continue;
-                    }
-
-                    $context = 'property ' . $class->name . '::$' . $property->name;
-
-                    self::$metadataParser->setTarget(Target::TARGET_PROPERTY);
-
-                    foreach (self::$metadataParser->parse($propertyComment, $context) as $annotation) {
-                        if (! $annotation instanceof Enum) {
-                            continue;
-                        }
-
-                        $metadata['enum'][$property->name]['value']   = $annotation->value;
-                        $metadata['enum'][$property->name]['literal'] = (! empty($annotation->literal))
-                            ? $annotation->literal
-                            : $annotation->value;
-                    }
-                }
-
-                // choose the first property as default property
-                $metadata['default_property'] = reset($metadata['properties']);
-            } elseif ($metadata['has_named_argument_constructor']) {
-                foreach ($constructor->getParameters() as $parameter) {
-                    if ($parameter->isVariadic()) {
-                        break;
-                    }
-
-                    $metadata['constructor_args'][$parameter->getName()] = [
-                        'position' => $parameter->getPosition(),
-                        'default' => $parameter->isOptional() ? $parameter->getDefaultValue() : null,
-                    ];
-                }
-            }
-        }
-
-        self::$annotationMetadata[$name] = $metadata;
-    }
-
-    /**
-     * Collects parsing metadata for a given attribute.
-     *
-     * @param mixed[] $metadata
-     */
-    private function collectAttributeTypeMetadata(array &$metadata, Attribute $attribute): void
-    {
-        // handle internal type declaration
-        $type = self::$typeMap[$attribute->type] ?? $attribute->type;
-
-        // handle the case if the property type is mixed
-        if ($type === 'mixed') {
-            return;
-        }
-
-        // Evaluate type
-        $pos = strpos($type, '<');
-        if ($pos !== false) {
-            // Checks if the property has array<type>
-            $arrayType = substr($type, $pos + 1, -1);
-            $type      = 'array';
-
-            if (isset(self::$typeMap[$arrayType])) {
-                $arrayType = self::$typeMap[$arrayType];
-            }
-
-            $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
-        } else {
-            // Checks if the property has type[]
-            $pos = strrpos($type, '[');
-            if ($pos !== false) {
-                $arrayType = substr($type, 0, $pos);
-                $type      = 'array';
-
-                if (isset(self::$typeMap[$arrayType])) {
-                    $arrayType = self::$typeMap[$arrayType];
-                }
-
-                $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
-            }
-        }
-
-        $metadata['attribute_types'][$attribute->name]['type']     = $type;
-        $metadata['attribute_types'][$attribute->name]['value']    = $attribute->type;
-        $metadata['attribute_types'][$attribute->name]['required'] = $attribute->required;
-    }
-
-    /**
-     * Annotations ::= Annotation {[ "*" ]* [Annotation]}*
-     *
-     * @phpstan-return list<object>
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function Annotations(): array
-    {
-        $annotations = [];
-
-        while ($this->lexer->lookahead !== null) {
-            if ($this->lexer->lookahead->type !== DocLexer::T_AT) {
-                $this->lexer->moveNext();
-                continue;
-            }
-
-            // make sure the @ is preceded by non-catchable pattern
-            if (
-                $this->lexer->token !== null &&
-                $this->lexer->lookahead->position === $this->lexer->token->position + strlen(
-                    $this->lexer->token->value
-                )
-            ) {
-                $this->lexer->moveNext();
-                continue;
-            }
-
-            // make sure the @ is followed by either a namespace separator, or
-            // an identifier token
-            $peek = $this->lexer->glimpse();
-            if (
-                ($peek === null)
-                || ($peek->type !== DocLexer::T_NAMESPACE_SEPARATOR && ! in_array(
-                    $peek->type,
-                    self::$classIdentifiers,
-                    true
-                ))
-                || $peek->position !== $this->lexer->lookahead->position + 1
-            ) {
-                $this->lexer->moveNext();
-                continue;
-            }
-
-            $this->isNestedAnnotation = false;
-            $annot                    = $this->Annotation();
-            if ($annot === false) {
-                continue;
-            }
-
-            $annotations[] = $annot;
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * Annotation     ::= "@" AnnotationName MethodCall
-     * AnnotationName ::= QualifiedName | SimpleName
-     * QualifiedName  ::= NameSpacePart "\" {NameSpacePart "\"}* SimpleName
-     * NameSpacePart  ::= identifier | null | false | true
-     * SimpleName     ::= identifier | null | false | true
-     *
-     * @return object|false False if it is not a valid annotation.
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function Annotation()
-    {
-        $this->match(DocLexer::T_AT);
-
-        // check if we have an annotation
-        $name = $this->Identifier();
-
-        if (
-            $this->lexer->isNextToken(DocLexer::T_MINUS)
-            && $this->lexer->nextTokenIsAdjacent()
-        ) {
-            // Annotations with dashes, such as "@foo-" or "@foo-bar", are to be discarded
-            return false;
-        }
-
-        // only process names which are not fully qualified, yet
-        // fully qualified names must start with a \
-        $originalName = $name;
-
-        if ($name[0] !== '\\') {
-            $pos          = strpos($name, '\\');
-            $alias        = ($pos === false) ? $name : substr($name, 0, $pos);
-            $found        = false;
-            $loweredAlias = strtolower($alias);
-
-            if ($this->namespaces) {
-                foreach ($this->namespaces as $namespace) {
-                    if ($this->classExists($namespace . '\\' . $name)) {
-                        $name  = $namespace . '\\' . $name;
-                        $found = true;
-                        break;
-                    }
-                }
-            } elseif (isset($this->imports[$loweredAlias])) {
-                $namespace = ltrim($this->imports[$loweredAlias], '\\');
-                $name      = ($pos !== false)
-                    ? $namespace . substr($name, $pos)
-                    : $namespace;
-                $found     = $this->classExists($name);
-            } elseif (
-                ! isset($this->ignoredAnnotationNames[$name])
-                && isset($this->imports['__NAMESPACE__'])
-                && $this->classExists($this->imports['__NAMESPACE__'] . '\\' . $name)
-            ) {
-                $name  = $this->imports['__NAMESPACE__'] . '\\' . $name;
-                $found = true;
-            } elseif (! isset($this->ignoredAnnotationNames[$name]) && $this->classExists($name)) {
-                $found = true;
-            }
-
-            if (! $found) {
-                if ($this->isIgnoredAnnotation($name)) {
-                    return false;
-                }
-
-                throw AnnotationException::semanticalError(sprintf(
-                    <<<'EXCEPTION'
-The annotation "@%s" in %s was never imported. Did you maybe forget to add a "use" statement for this annotation?
-EXCEPTION
-                    ,
-                    $name,
-                    $this->context
-                ));
-            }
-        }
-
-        $name = ltrim($name, '\\');
-
-        if (! $this->classExists($name)) {
-            throw AnnotationException::semanticalError(sprintf(
-                'The annotation "@%s" in %s does not exist, or could not be auto-loaded.',
-                $name,
-                $this->context
-            ));
-        }
-
-        // at this point, $name contains the fully qualified class name of the
-        // annotation, and it is also guaranteed that this class exists, and
-        // that it is loaded
-
-        // collects the metadata annotation only if there is not yet
-        if (! isset(self::$annotationMetadata[$name])) {
-            $this->collectAnnotationMetadata($name);
-        }
-
-        // verify that the class is really meant to be an annotation and not just any ordinary class
-        if (self::$annotationMetadata[$name]['is_annotation'] === false) {
-            if ($this->isIgnoredAnnotation($originalName) || $this->isIgnoredAnnotation($name)) {
-                return false;
-            }
-
-            throw AnnotationException::semanticalError(sprintf(
-                <<<'EXCEPTION'
-The class "%s" is not annotated with @Annotation.
-Are you sure this class can be used as annotation?
-If so, then you need to add @Annotation to the _class_ doc comment of "%s".
-If it is indeed no annotation, then you need to add @IgnoreAnnotation("%s") to the _class_ doc comment of %s.
-EXCEPTION
-                ,
-                $name,
-                $name,
-                $originalName,
-                $this->context
-            ));
-        }
-
-        //if target is nested annotation
-        $target = $this->isNestedAnnotation ? Target::TARGET_ANNOTATION : $this->target;
-
-        // Next will be nested
-        $this->isNestedAnnotation = true;
-
-        //if annotation does not support current target
-        if ((self::$annotationMetadata[$name]['targets'] & $target) === 0 && $target) {
-            throw AnnotationException::semanticalError(
-                sprintf(
-                    <<<'EXCEPTION'
-Annotation @%s is not allowed to be declared on %s. You may only use this annotation on these code elements: %s.
-EXCEPTION
-                    ,
-                    $originalName,
-                    $this->context,
-                    self::$annotationMetadata[$name]['targets_literal']
-                )
-            );
-        }
-
-        $arguments = $this->MethodCall();
-        $values    = $this->resolvePositionalValues($arguments, $name);
-
-        if (isset(self::$annotationMetadata[$name]['enum'])) {
-            // checks all declared attributes
-            foreach (self::$annotationMetadata[$name]['enum'] as $property => $enum) {
-                // checks if the attribute is a valid enumerator
-                if (isset($values[$property]) && ! in_array($values[$property], $enum['value'])) {
-                    throw AnnotationException::enumeratorError(
-                        $property,
-                        $name,
-                        $this->context,
-                        $enum['literal'],
-                        $values[$property]
-                    );
-                }
-            }
-        }
-
-        // checks all declared attributes
-        foreach (self::$annotationMetadata[$name]['attribute_types'] as $property => $type) {
-            if (
-                $property === self::$annotationMetadata[$name]['default_property']
-                && ! isset($values[$property]) && isset($values['value'])
-            ) {
-                $property = 'value';
-            }
-
-            // handle a not given attribute or null value
-            if (! isset($values[$property])) {
-                if ($type['required']) {
-                    throw AnnotationException::requiredError(
-                        $property,
-                        $originalName,
-                        $this->context,
-                        'a(n) ' . $type['value']
-                    );
-                }
-
-                continue;
-            }
-
-            if ($type['type'] === 'array') {
-                // handle the case of a single value
-                if (! is_array($values[$property])) {
-                    $values[$property] = [$values[$property]];
-                }
-
-                // checks if the attribute has array type declaration, such as "array<string>"
-                if (isset($type['array_type'])) {
-                    foreach ($values[$property] as $item) {
-                        if (gettype($item) !== $type['array_type'] && ! $item instanceof $type['array_type']) {
-                            throw AnnotationException::attributeTypeError(
-                                $property,
-                                $originalName,
-                                $this->context,
-                                'either a(n) ' . $type['array_type'] . ', or an array of ' . $type['array_type'] . 's',
-                                $item
-                            );
-                        }
-                    }
-                }
-            } elseif (gettype($values[$property]) !== $type['type'] && ! $values[$property] instanceof $type['type']) {
-                throw AnnotationException::attributeTypeError(
-                    $property,
-                    $originalName,
-                    $this->context,
-                    'a(n) ' . $type['value'],
-                    $values[$property]
-                );
-            }
-        }
-
-        if (self::$annotationMetadata[$name]['has_named_argument_constructor']) {
-            if (PHP_VERSION_ID >= 80000) {
-                foreach ($values as $property => $value) {
-                    if (! isset(self::$annotationMetadata[$name]['constructor_args'][$property])) {
-                        throw AnnotationException::creationError(sprintf(
-                            <<<'EXCEPTION'
-The annotation @%s declared on %s does not have a property named "%s"
-that can be set through its named arguments constructor.
-Available named arguments: %s
-EXCEPTION
-                            ,
-                            $originalName,
-                            $this->context,
-                            $property,
-                            implode(', ', array_keys(self::$annotationMetadata[$name]['constructor_args']))
-                        ));
-                    }
-                }
-
-                return $this->instantiateAnnotiation($originalName, $this->context, $name, $values);
-            }
-
-            $positionalValues = [];
-            foreach (self::$annotationMetadata[$name]['constructor_args'] as $property => $parameter) {
-                $positionalValues[$parameter['position']] = $parameter['default'];
-            }
-
-            foreach ($values as $property => $value) {
-                if (! isset(self::$annotationMetadata[$name]['constructor_args'][$property])) {
-                    throw AnnotationException::creationError(sprintf(
-                        <<<'EXCEPTION'
-The annotation @%s declared on %s does not have a property named "%s"
-that can be set through its named arguments constructor.
-Available named arguments: %s
-EXCEPTION
-                        ,
-                        $originalName,
-                        $this->context,
-                        $property,
-                        implode(', ', array_keys(self::$annotationMetadata[$name]['constructor_args']))
-                    ));
-                }
-
-                $positionalValues[self::$annotationMetadata[$name]['constructor_args'][$property]['position']] = $value;
-            }
-
-            return $this->instantiateAnnotiation($originalName, $this->context, $name, $positionalValues);
-        }
-
-        // check if the annotation expects values via the constructor,
-        // or directly injected into public properties
-        if (self::$annotationMetadata[$name]['has_constructor'] === true) {
-            return $this->instantiateAnnotiation($originalName, $this->context, $name, [$values]);
-        }
-
-        $instance = $this->instantiateAnnotiation($originalName, $this->context, $name, []);
-
-        foreach ($values as $property => $value) {
-            if (! isset(self::$annotationMetadata[$name]['properties'][$property])) {
-                if ($property !== 'value') {
-                    throw AnnotationException::creationError(sprintf(
-                        <<<'EXCEPTION'
-The annotation @%s declared on %s does not have a property named "%s".
-Available properties: %s
-EXCEPTION
-                        ,
-                        $originalName,
-                        $this->context,
-                        $property,
-                        implode(', ', self::$annotationMetadata[$name]['properties'])
-                    ));
-                }
-
-                // handle the case if the property has no annotations
-                $property = self::$annotationMetadata[$name]['default_property'];
-                if (! $property) {
-                    throw AnnotationException::creationError(sprintf(
-                        'The annotation @%s declared on %s does not accept any values, but got %s.',
-                        $originalName,
-                        $this->context,
-                        json_encode($values)
-                    ));
-                }
-            }
-
-            $instance->{$property} = $value;
-        }
-
-        return $instance;
-    }
-
-    /**
-     * MethodCall ::= ["(" [Values] ")"]
-     *
-     * @return mixed[]
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function MethodCall(): array
-    {
-        $values = [];
-
-        if (! $this->lexer->isNextToken(DocLexer::T_OPEN_PARENTHESIS)) {
-            return $values;
-        }
-
-        $this->match(DocLexer::T_OPEN_PARENTHESIS);
-
-        if (! $this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
-            $values = $this->Values();
-        }
-
-        $this->match(DocLexer::T_CLOSE_PARENTHESIS);
-
-        return $values;
-    }
-
-    /**
-     * Values ::= Array | Value {"," Value}* [","]
-     *
-     * @return mixed[]
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function Values(): array
-    {
-        $values = [$this->Value()];
-
-        while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
-            $this->match(DocLexer::T_COMMA);
-
-            if ($this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
-                break;
-            }
-
-            $token = $this->lexer->lookahead;
-            $value = $this->Value();
-
-            $values[] = $value;
-        }
-
-        $namedArguments      = [];
-        $positionalArguments = [];
-        foreach ($values as $k => $value) {
-            if (is_object($value) && $value instanceof stdClass) {
-                $namedArguments[$value->name] = $value->value;
-            } else {
-                $positionalArguments[$k] = $value;
-            }
-        }
-
-        return ['named_arguments' => $namedArguments, 'positional_arguments' => $positionalArguments];
-    }
-
-    /**
-     * Constant ::= integer | string | float | boolean
-     *
-     * @return mixed
-     *
-     * @throws AnnotationException
-     */
-    private function Constant()
-    {
-        $identifier = $this->Identifier();
-
-        if (! defined($identifier) && strpos($identifier, '::') !== false && $identifier[0] !== '\\') {
-            [$className, $const] = explode('::', $identifier);
-
-            $pos          = strpos($className, '\\');
-            $alias        = ($pos === false) ? $className : substr($className, 0, $pos);
-            $found        = false;
-            $loweredAlias = strtolower($alias);
-
-            switch (true) {
-                case ! empty($this->namespaces):
-                    foreach ($this->namespaces as $ns) {
-                        if (class_exists($ns . '\\' . $className) || interface_exists($ns . '\\' . $className)) {
-                            $className = $ns . '\\' . $className;
-                            $found     = true;
-                            break;
-                        }
-                    }
-
-                    break;
-
-                case isset($this->imports[$loweredAlias]):
-                    $found     = true;
-                    $className = ($pos !== false)
-                        ? $this->imports[$loweredAlias] . substr($className, $pos)
-                        : $this->imports[$loweredAlias];
-                    break;
-
-                default:
-                    if (isset($this->imports['__NAMESPACE__'])) {
-                        $ns = $this->imports['__NAMESPACE__'];
-
-                        if (class_exists($ns . '\\' . $className) || interface_exists($ns . '\\' . $className)) {
-                            $className = $ns . '\\' . $className;
-                            $found     = true;
-                        }
-                    }
-
-                    break;
-            }
-
-            if ($found) {
-                $identifier = $className . '::' . $const;
-            }
-        }
-
-        /**
-         * Checks if identifier ends with ::class and remove the leading backslash if it exists.
-         */
-        if (
-            $this->identifierEndsWithClassConstant($identifier) &&
-            ! $this->identifierStartsWithBackslash($identifier)
-        ) {
-            return substr($identifier, 0, $this->getClassConstantPositionInIdentifier($identifier));
-        }
-
-        if ($this->identifierEndsWithClassConstant($identifier) && $this->identifierStartsWithBackslash($identifier)) {
-            return substr($identifier, 1, $this->getClassConstantPositionInIdentifier($identifier) - 1);
-        }
-
-        if (! defined($identifier)) {
-            throw AnnotationException::semanticalErrorConstants($identifier, $this->context);
-        }
-
-        return constant($identifier);
-    }
-
-    private function identifierStartsWithBackslash(string $identifier): bool
-    {
-        return $identifier[0] === '\\';
-    }
-
-    private function identifierEndsWithClassConstant(string $identifier): bool
-    {
-        return $this->getClassConstantPositionInIdentifier($identifier) === strlen($identifier) - strlen('::class');
-    }
-
-    /** @return int|false */
-    private function getClassConstantPositionInIdentifier(string $identifier)
-    {
-        return stripos($identifier, '::class');
-    }
-
-    /**
-     * Identifier ::= string
-     *
-     * @throws AnnotationException
-     */
-    private function Identifier(): string
-    {
-        // check if we have an annotation
-        if (! $this->lexer->isNextTokenAny(self::$classIdentifiers)) {
-            throw $this->syntaxError('namespace separator or identifier');
-        }
-
-        $this->lexer->moveNext();
-
-        $className = $this->lexer->token->value;
-
-        while (
-            $this->lexer->lookahead !== null &&
-            $this->lexer->lookahead->position === ($this->lexer->token->position +
-            strlen($this->lexer->token->value)) &&
-            $this->lexer->isNextToken(DocLexer::T_NAMESPACE_SEPARATOR)
-        ) {
-            $this->match(DocLexer::T_NAMESPACE_SEPARATOR);
-            $this->matchAny(self::$classIdentifiers);
-
-            $className .= '\\' . $this->lexer->token->value;
-        }
-
-        return $className;
-    }
-
-    /**
-     * Value ::= PlainValue | FieldAssignment
-     *
-     * @return mixed
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function Value()
-    {
-        $peek = $this->lexer->glimpse();
-
-        if ($peek->type === DocLexer::T_EQUALS) {
-            return $this->FieldAssignment();
-        }
-
-        return $this->PlainValue();
-    }
-
-    /**
-     * PlainValue ::= integer | string | float | boolean | Array | Annotation
-     *
-     * @return mixed
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function PlainValue()
-    {
-        if ($this->lexer->isNextToken(DocLexer::T_OPEN_CURLY_BRACES)) {
-            return $this->Arrayx();
-        }
-
-        if ($this->lexer->isNextToken(DocLexer::T_AT)) {
-            return $this->Annotation();
-        }
-
-        if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
-            return $this->Constant();
-        }
-
-        switch ($this->lexer->lookahead->type) {
-            case DocLexer::T_STRING:
-                $this->match(DocLexer::T_STRING);
-
-                return $this->lexer->token->value;
-
-            case DocLexer::T_INTEGER:
-                $this->match(DocLexer::T_INTEGER);
-
-                return (int) $this->lexer->token->value;
-
-            case DocLexer::T_FLOAT:
-                $this->match(DocLexer::T_FLOAT);
-
-                return (float) $this->lexer->token->value;
-
-            case DocLexer::T_TRUE:
-                $this->match(DocLexer::T_TRUE);
-
-                return true;
-
-            case DocLexer::T_FALSE:
-                $this->match(DocLexer::T_FALSE);
-
-                return false;
-
-            case DocLexer::T_NULL:
-                $this->match(DocLexer::T_NULL);
-
-                return null;
-
-            default:
-                throw $this->syntaxError('PlainValue');
-        }
-    }
-
-    /**
-     * FieldAssignment ::= FieldName "=" PlainValue
-     * FieldName ::= identifier
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function FieldAssignment(): stdClass
-    {
-        $this->match(DocLexer::T_IDENTIFIER);
-        $fieldName = $this->lexer->token->value;
-
-        $this->match(DocLexer::T_EQUALS);
-
-        $item        = new stdClass();
-        $item->name  = $fieldName;
-        $item->value = $this->PlainValue();
-
-        return $item;
-    }
-
-    /**
-     * Array ::= "{" ArrayEntry {"," ArrayEntry}* [","] "}"
-     *
-     * @return mixed[]
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function Arrayx(): array
-    {
-        $array = $values = [];
-
-        $this->match(DocLexer::T_OPEN_CURLY_BRACES);
-
-        // If the array is empty, stop parsing and return.
-        if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
-            $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
-
-            return $array;
-        }
-
-        $values[] = $this->ArrayEntry();
-
-        while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
-            $this->match(DocLexer::T_COMMA);
-
-            // optional trailing comma
-            if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
-                break;
-            }
-
-            $values[] = $this->ArrayEntry();
-        }
-
-        $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
-
-        foreach ($values as $value) {
-            [$key, $val] = $value;
-
-            if ($key !== null) {
-                $array[$key] = $val;
-            } else {
-                $array[] = $val;
-            }
-        }
-
-        return $array;
-    }
-
-    /**
-     * ArrayEntry ::= Value | KeyValuePair
-     * KeyValuePair ::= Key ("=" | ":") PlainValue | Constant
-     * Key ::= string | integer | Constant
-     *
-     * @phpstan-return array{mixed, mixed}
-     *
-     * @throws AnnotationException
-     * @throws ReflectionException
-     */
-    private function ArrayEntry(): array
-    {
-        $peek = $this->lexer->glimpse();
-
-        if (
-            $peek->type === DocLexer::T_EQUALS
-                || $peek->type === DocLexer::T_COLON
-        ) {
-            if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
-                $key = $this->Constant();
-            } else {
-                $this->matchAny([DocLexer::T_INTEGER, DocLexer::T_STRING]);
-                $key = $this->lexer->token->value;
-            }
-
-            $this->matchAny([DocLexer::T_EQUALS, DocLexer::T_COLON]);
-
-            return [$key, $this->PlainValue()];
-        }
-
-        return [null, $this->Value()];
-    }
-
-    /**
-     * Checks whether the given $name matches any ignored annotation name or namespace
-     */
-    private function isIgnoredAnnotation(string $name): bool
-    {
-        if ($this->ignoreNotImportedAnnotations || isset($this->ignoredAnnotationNames[$name])) {
-            return true;
-        }
-
-        foreach (array_keys($this->ignoredAnnotationNamespaces) as $ignoredAnnotationNamespace) {
-            $ignoredAnnotationNamespace = rtrim($ignoredAnnotationNamespace, '\\') . '\\';
-
-            if (stripos(rtrim($name, '\\') . '\\', $ignoredAnnotationNamespace) === 0) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Resolve positional arguments (without name) to named ones
-     *
-     * @param array<string,mixed> $arguments
-     *
-     * @return array<string,mixed>
-     */
-    private function resolvePositionalValues(array $arguments, string $name): array
-    {
-        $positionalArguments = $arguments['positional_arguments'] ?? [];
-        $values              = $arguments['named_arguments'] ?? [];
-
-        if (
-            self::$annotationMetadata[$name]['has_named_argument_constructor']
-            && self::$annotationMetadata[$name]['default_property'] !== null
-        ) {
-            // We must ensure that we don't have positional arguments after named ones
-            $positions    = array_keys($positionalArguments);
-            $lastPosition = null;
-            foreach ($positions as $position) {
-                if (
-                    ($lastPosition === null && $position !== 0) ||
-                    ($lastPosition !== null && $position !== $lastPosition + 1)
-                ) {
-                    throw $this->syntaxError('Positional arguments after named arguments is not allowed');
-                }
-
-                $lastPosition = $position;
-            }
-
-            foreach (self::$annotationMetadata[$name]['constructor_args'] as $property => $parameter) {
-                $position = $parameter['position'];
-                if (isset($values[$property]) || ! isset($positionalArguments[$position])) {
-                    continue;
-                }
-
-                $values[$property] = $positionalArguments[$position];
-            }
-        } else {
-            if (count($positionalArguments) > 0 && ! isset($values['value'])) {
-                if (count($positionalArguments) === 1) {
-                    $value = array_pop($positionalArguments);
-                } else {
-                    $value = array_values($positionalArguments);
-                }
-
-                $values['value'] = $value;
-            }
-        }
-
-        return $values;
-    }
-
-    /**
-     * Try to instantiate the annotation and catch and process any exceptions related to failure
-     *
-     * @param class-string        $name
-     * @param array<string,mixed> $arguments
-     *
-     * @return object
-     *
-     * @throws AnnotationException
-     */
-    private function instantiateAnnotiation(string $originalName, string $context, string $name, array $arguments)
-    {
-        try {
-            return new $name(...$arguments);
-        } catch (Throwable $exception) {
-            throw AnnotationException::creationError(
-                sprintf(
-                    'An error occurred while instantiating the annotation @%s declared on %s: "%s".',
-                    $originalName,
-                    $context,
-                    $exception->getMessage()
-                ),
-                $exception
-            );
-        }
-    }
-}

+ 0 - 178
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/ImplicitlyIgnoredAnnotationNames.php

@@ -1,178 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Doctrine\Common\Annotations;
-
-/**
- *  A list of annotations that are implicitly ignored during the parsing process.
- *
- *  All names are case sensitive.
- */
-final class ImplicitlyIgnoredAnnotationNames
-{
-    private const Reserved = [
-        'Annotation'               => true,
-        'Attribute'                => true,
-        'Attributes'               => true,
-        /* Can we enable this? 'Enum' => true, */
-        'Required'                 => true,
-        'Target'                   => true,
-        'NamedArgumentConstructor' => true,
-    ];
-
-    private const WidelyUsedNonStandard = [
-        'fix'      => true,
-        'fixme'    => true,
-        'override' => true,
-    ];
-
-    private const PhpDocumentor1 = [
-        'abstract'   => true,
-        'access'     => true,
-        'code'       => true,
-        'deprec'     => true,
-        'endcode'    => true,
-        'exception'  => true,
-        'final'      => true,
-        'ingroup'    => true,
-        'inheritdoc' => true,
-        'inheritDoc' => true,
-        'magic'      => true,
-        'name'       => true,
-        'private'    => true,
-        'static'     => true,
-        'staticvar'  => true,
-        'staticVar'  => true,
-        'toc'        => true,
-        'tutorial'   => true,
-        'throw'      => true,
-    ];
-
-    private const PhpDocumentor2 = [
-        'api'            => true,
-        'author'         => true,
-        'category'       => true,
-        'copyright'      => true,
-        'deprecated'     => true,
-        'example'        => true,
-        'filesource'     => true,
-        'global'         => true,
-        'ignore'         => true,
-        /* Can we enable this? 'index' => true, */
-        'internal'       => true,
-        'license'        => true,
-        'link'           => true,
-        'method'         => true,
-        'package'        => true,
-        'param'          => true,
-        'property'       => true,
-        'property-read'  => true,
-        'property-write' => true,
-        'return'         => true,
-        'see'            => true,
-        'since'          => true,
-        'source'         => true,
-        'subpackage'     => true,
-        'throws'         => true,
-        'todo'           => true,
-        'TODO'           => true,
-        'usedby'         => true,
-        'uses'           => true,
-        'var'            => true,
-        'version'        => true,
-    ];
-
-    private const PHPUnit = [
-        'author'                         => true,
-        'after'                          => true,
-        'afterClass'                     => true,
-        'backupGlobals'                  => true,
-        'backupStaticAttributes'         => true,
-        'before'                         => true,
-        'beforeClass'                    => true,
-        'codeCoverageIgnore'             => true,
-        'codeCoverageIgnoreStart'        => true,
-        'codeCoverageIgnoreEnd'          => true,
-        'covers'                         => true,
-        'coversDefaultClass'             => true,
-        'coversNothing'                  => true,
-        'dataProvider'                   => true,
-        'depends'                        => true,
-        'doesNotPerformAssertions'       => true,
-        'expectedException'              => true,
-        'expectedExceptionCode'          => true,
-        'expectedExceptionMessage'       => true,
-        'expectedExceptionMessageRegExp' => true,
-        'group'                          => true,
-        'large'                          => true,
-        'medium'                         => true,
-        'preserveGlobalState'            => true,
-        'requires'                       => true,
-        'runTestsInSeparateProcesses'    => true,
-        'runInSeparateProcess'           => true,
-        'small'                          => true,
-        'test'                           => true,
-        'testdox'                        => true,
-        'testWith'                       => true,
-        'ticket'                         => true,
-        'uses'                           => true,
-    ];
-
-    private const PhpCheckStyle = ['SuppressWarnings' => true];
-
-    private const PhpStorm = ['noinspection' => true];
-
-    private const PEAR = ['package_version' => true];
-
-    private const PlainUML = [
-        'startuml' => true,
-        'enduml'   => true,
-    ];
-
-    private const Symfony = ['experimental' => true];
-
-    private const PhpCodeSniffer = [
-        'codingStandardsIgnoreStart' => true,
-        'codingStandardsIgnoreEnd'   => true,
-    ];
-
-    private const SlevomatCodingStandard = ['phpcsSuppress' => true];
-
-    private const Phan = ['suppress' => true];
-
-    private const Rector = ['noRector' => true];
-
-    private const StaticAnalysis = [
-        // PHPStan, Psalm
-        'extends' => true,
-        'implements' => true,
-        'readonly' => true,
-        'template' => true,
-        'use' => true,
-
-        // Psalm
-        'pure' => true,
-        'immutable' => true,
-    ];
-
-    public const LIST = self::Reserved
-        + self::WidelyUsedNonStandard
-        + self::PhpDocumentor1
-        + self::PhpDocumentor2
-        + self::PHPUnit
-        + self::PhpCheckStyle
-        + self::PhpStorm
-        + self::PEAR
-        + self::PlainUML
-        + self::Symfony
-        + self::SlevomatCodingStandard
-        + self::PhpCodeSniffer
-        + self::Phan
-        + self::Rector
-        + self::StaticAnalysis;
-
-    private function __construct()
-    {
-    }
-}

+ 0 - 99
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php

@@ -1,99 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use ReflectionClass;
-use ReflectionMethod;
-use ReflectionProperty;
-
-use function call_user_func_array;
-use function get_class;
-
-/**
- * Allows the reader to be used in-place of Doctrine's reader.
- */
-class IndexedReader implements Reader
-{
-    /** @var Reader */
-    private $delegate;
-
-    public function __construct(Reader $reader)
-    {
-        $this->delegate = $reader;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(ReflectionClass $class)
-    {
-        $annotations = [];
-        foreach ($this->delegate->getClassAnnotations($class) as $annot) {
-            $annotations[get_class($annot)] = $annot;
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(ReflectionClass $class, $annotationName)
-    {
-        return $this->delegate->getClassAnnotation($class, $annotationName);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(ReflectionMethod $method)
-    {
-        $annotations = [];
-        foreach ($this->delegate->getMethodAnnotations($method) as $annot) {
-            $annotations[get_class($annot)] = $annot;
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(ReflectionMethod $method, $annotationName)
-    {
-        return $this->delegate->getMethodAnnotation($method, $annotationName);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(ReflectionProperty $property)
-    {
-        $annotations = [];
-        foreach ($this->delegate->getPropertyAnnotations($property) as $annot) {
-            $annotations[get_class($annot)] = $annot;
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(ReflectionProperty $property, $annotationName)
-    {
-        return $this->delegate->getPropertyAnnotation($property, $annotationName);
-    }
-
-    /**
-     * Proxies all methods to the delegate.
-     *
-     * @param mixed[] $args
-     *
-     * @return mixed
-     */
-    public function __call(string $method, array $args)
-    {
-        return call_user_func_array([$this->delegate, $method], $args);
-    }
-}

+ 0 - 78
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php

@@ -1,78 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use ReflectionClass;
-use ReflectionFunction;
-use SplFileObject;
-
-use function is_file;
-use function method_exists;
-use function preg_quote;
-use function preg_replace;
-
-/**
- * Parses a file for namespaces/use/class declarations.
- */
-final class PhpParser
-{
-    /**
-     * Parse a class or function for use statements.
-     *
-     * @param ReflectionClass|ReflectionFunction $reflection
-     *
-     * @psalm-return array<string, string> a list with use statements in the form (Alias => FQN).
-     */
-    public function parseUseStatements($reflection): array
-    {
-        if (method_exists($reflection, 'getUseStatements')) {
-            return $reflection->getUseStatements();
-        }
-
-        $filename = $reflection->getFileName();
-
-        if ($filename === false) {
-            return [];
-        }
-
-        $content = $this->getFileContent($filename, $reflection->getStartLine());
-
-        if ($content === null) {
-            return [];
-        }
-
-        $namespace = preg_quote($reflection->getNamespaceName());
-        $content   = preg_replace('/^.*?(\bnamespace\s+' . $namespace . '\s*[;{].*)$/s', '\\1', $content);
-        $tokenizer = new TokenParser('<?php ' . $content);
-
-        return $tokenizer->parseUseStatements($reflection->getNamespaceName());
-    }
-
-    /**
-     * Gets the content of the file right up to the given line number.
-     *
-     * @param string $filename   The name of the file to load.
-     * @param int    $lineNumber The number of lines to read from file.
-     *
-     * @return string|null The content of the file or null if the file does not exist.
-     */
-    private function getFileContent(string $filename, $lineNumber)
-    {
-        if (! is_file($filename)) {
-            return null;
-        }
-
-        $content = '';
-        $lineCnt = 0;
-        $file    = new SplFileObject($filename);
-        while (! $file->eof()) {
-            if ($lineCnt++ === $lineNumber) {
-                break;
-            }
-
-            $content .= $file->fgets();
-        }
-
-        return $content;
-    }
-}

+ 0 - 232
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PsrCachedReader.php

@@ -1,232 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use Psr\Cache\CacheItemPoolInterface;
-use ReflectionClass;
-use ReflectionMethod;
-use ReflectionProperty;
-use Reflector;
-
-use function array_map;
-use function array_merge;
-use function assert;
-use function filemtime;
-use function max;
-use function rawurlencode;
-use function time;
-
-/**
- * A cache aware annotation reader.
- */
-final class PsrCachedReader implements Reader
-{
-    /** @var Reader */
-    private $delegate;
-
-    /** @var CacheItemPoolInterface */
-    private $cache;
-
-    /** @var bool */
-    private $debug;
-
-    /** @var array<string, array<object>> */
-    private $loadedAnnotations = [];
-
-    /** @var int[] */
-    private $loadedFilemtimes = [];
-
-    public function __construct(Reader $reader, CacheItemPoolInterface $cache, bool $debug = false)
-    {
-        $this->delegate = $reader;
-        $this->cache    = $cache;
-        $this->debug    = (bool) $debug;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(ReflectionClass $class)
-    {
-        $cacheKey = $class->getName();
-
-        if (isset($this->loadedAnnotations[$cacheKey])) {
-            return $this->loadedAnnotations[$cacheKey];
-        }
-
-        $annots = $this->fetchFromCache($cacheKey, $class, 'getClassAnnotations', $class);
-
-        return $this->loadedAnnotations[$cacheKey] = $annots;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(ReflectionClass $class, $annotationName)
-    {
-        foreach ($this->getClassAnnotations($class) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(ReflectionProperty $property)
-    {
-        $class    = $property->getDeclaringClass();
-        $cacheKey = $class->getName() . '$' . $property->getName();
-
-        if (isset($this->loadedAnnotations[$cacheKey])) {
-            return $this->loadedAnnotations[$cacheKey];
-        }
-
-        $annots = $this->fetchFromCache($cacheKey, $class, 'getPropertyAnnotations', $property);
-
-        return $this->loadedAnnotations[$cacheKey] = $annots;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(ReflectionProperty $property, $annotationName)
-    {
-        foreach ($this->getPropertyAnnotations($property) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(ReflectionMethod $method)
-    {
-        $class    = $method->getDeclaringClass();
-        $cacheKey = $class->getName() . '#' . $method->getName();
-
-        if (isset($this->loadedAnnotations[$cacheKey])) {
-            return $this->loadedAnnotations[$cacheKey];
-        }
-
-        $annots = $this->fetchFromCache($cacheKey, $class, 'getMethodAnnotations', $method);
-
-        return $this->loadedAnnotations[$cacheKey] = $annots;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(ReflectionMethod $method, $annotationName)
-    {
-        foreach ($this->getMethodAnnotations($method) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    public function clearLoadedAnnotations(): void
-    {
-        $this->loadedAnnotations = [];
-        $this->loadedFilemtimes  = [];
-    }
-
-    /** @return mixed[] */
-    private function fetchFromCache(
-        string $cacheKey,
-        ReflectionClass $class,
-        string $method,
-        Reflector $reflector
-    ): array {
-        $cacheKey = rawurlencode($cacheKey);
-
-        $item = $this->cache->getItem($cacheKey);
-        if (($this->debug && ! $this->refresh($cacheKey, $class)) || ! $item->isHit()) {
-            $this->cache->save($item->set($this->delegate->{$method}($reflector)));
-        }
-
-        return $item->get();
-    }
-
-    /**
-     * Used in debug mode to check if the cache is fresh.
-     *
-     * @return bool Returns true if the cache was fresh, or false if the class
-     * being read was modified since writing to the cache.
-     */
-    private function refresh(string $cacheKey, ReflectionClass $class): bool
-    {
-        $lastModification = $this->getLastModification($class);
-        if ($lastModification === 0) {
-            return true;
-        }
-
-        $item = $this->cache->getItem('[C]' . $cacheKey);
-        if ($item->isHit() && $item->get() >= $lastModification) {
-            return true;
-        }
-
-        $this->cache->save($item->set(time()));
-
-        return false;
-    }
-
-    /**
-     * Returns the time the class was last modified, testing traits and parents
-     */
-    private function getLastModification(ReflectionClass $class): int
-    {
-        $filename = $class->getFileName();
-
-        if (isset($this->loadedFilemtimes[$filename])) {
-            return $this->loadedFilemtimes[$filename];
-        }
-
-        $parent = $class->getParentClass();
-
-        $lastModification =  max(array_merge(
-            [$filename ? filemtime($filename) : 0],
-            array_map(function (ReflectionClass $reflectionTrait): int {
-                return $this->getTraitLastModificationTime($reflectionTrait);
-            }, $class->getTraits()),
-            array_map(function (ReflectionClass $class): int {
-                return $this->getLastModification($class);
-            }, $class->getInterfaces()),
-            $parent ? [$this->getLastModification($parent)] : []
-        ));
-
-        assert($lastModification !== false);
-
-        return $this->loadedFilemtimes[$filename] = $lastModification;
-    }
-
-    private function getTraitLastModificationTime(ReflectionClass $reflectionTrait): int
-    {
-        $fileName = $reflectionTrait->getFileName();
-
-        if (isset($this->loadedFilemtimes[$fileName])) {
-            return $this->loadedFilemtimes[$fileName];
-        }
-
-        $lastModificationTime = max(array_merge(
-            [$fileName ? filemtime($fileName) : 0],
-            array_map(function (ReflectionClass $reflectionTrait): int {
-                return $this->getTraitLastModificationTime($reflectionTrait);
-            }, $reflectionTrait->getTraits())
-        ));
-
-        assert($lastModificationTime !== false);
-
-        return $this->loadedFilemtimes[$fileName] = $lastModificationTime;
-    }
-}

+ 0 - 80
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php

@@ -1,80 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use ReflectionClass;
-use ReflectionMethod;
-use ReflectionProperty;
-
-/**
- * Interface for annotation readers.
- */
-interface Reader
-{
-    /**
-     * Gets the annotations applied to a class.
-     *
-     * @param ReflectionClass $class The ReflectionClass of the class from which
-     * the class annotations should be read.
-     *
-     * @return array<object> An array of Annotations.
-     */
-    public function getClassAnnotations(ReflectionClass $class);
-
-    /**
-     * Gets a class annotation.
-     *
-     * @param ReflectionClass $class          The ReflectionClass of the class from which
-     *          the class annotations should be read.
-     * @param class-string<T> $annotationName The name of the annotation.
-     *
-     * @return T|null The Annotation or NULL, if the requested annotation does not exist.
-     *
-     * @template T
-     */
-    public function getClassAnnotation(ReflectionClass $class, $annotationName);
-
-    /**
-     * Gets the annotations applied to a method.
-     *
-     * @param ReflectionMethod $method The ReflectionMethod of the method from which
-     * the annotations should be read.
-     *
-     * @return array<object> An array of Annotations.
-     */
-    public function getMethodAnnotations(ReflectionMethod $method);
-
-    /**
-     * Gets a method annotation.
-     *
-     * @param ReflectionMethod $method         The ReflectionMethod to read the annotations from.
-     * @param class-string<T>  $annotationName The name of the annotation.
-     *
-     * @return T|null The Annotation or NULL, if the requested annotation does not exist.
-     *
-     * @template T
-     */
-    public function getMethodAnnotation(ReflectionMethod $method, $annotationName);
-
-    /**
-     * Gets the annotations applied to a property.
-     *
-     * @param ReflectionProperty $property The ReflectionProperty of the property
-     * from which the annotations should be read.
-     *
-     * @return array<object> An array of Annotations.
-     */
-    public function getPropertyAnnotations(ReflectionProperty $property);
-
-    /**
-     * Gets a property annotation.
-     *
-     * @param ReflectionProperty $property       The ReflectionProperty to read the annotations from.
-     * @param class-string<T>    $annotationName The name of the annotation.
-     *
-     * @return T|null The Annotation or NULL, if the requested annotation does not exist.
-     *
-     * @template T
-     */
-    public function getPropertyAnnotation(ReflectionProperty $property, $annotationName);
-}

+ 0 - 205
vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php

@@ -1,205 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Annotations;
-
-use function array_merge;
-use function count;
-use function explode;
-use function strtolower;
-use function token_get_all;
-
-use const PHP_VERSION_ID;
-use const T_AS;
-use const T_COMMENT;
-use const T_DOC_COMMENT;
-use const T_NAME_FULLY_QUALIFIED;
-use const T_NAME_QUALIFIED;
-use const T_NAMESPACE;
-use const T_NS_SEPARATOR;
-use const T_STRING;
-use const T_USE;
-use const T_WHITESPACE;
-
-/**
- * Parses a file for namespaces/use/class declarations.
- */
-class TokenParser
-{
-    /**
-     * The token list.
-     *
-     * @phpstan-var list<mixed[]>
-     */
-    private $tokens;
-
-    /**
-     * The number of tokens.
-     *
-     * @var int
-     */
-    private $numTokens;
-
-    /**
-     * The current array pointer.
-     *
-     * @var int
-     */
-    private $pointer = 0;
-
-    public function __construct(string $contents)
-    {
-        $this->tokens = token_get_all($contents);
-
-        // The PHP parser sets internal compiler globals for certain things. Annoyingly, the last docblock comment it
-        // saw gets stored in doc_comment. When it comes to compile the next thing to be include()d this stored
-        // doc_comment becomes owned by the first thing the compiler sees in the file that it considers might have a
-        // docblock. If the first thing in the file is a class without a doc block this would cause calls to
-        // getDocBlock() on said class to return our long lost doc_comment. Argh.
-        // To workaround, cause the parser to parse an empty docblock. Sure getDocBlock() will return this, but at least
-        // it's harmless to us.
-        token_get_all("<?php\n/**\n *\n */");
-
-        $this->numTokens = count($this->tokens);
-    }
-
-    /**
-     * Gets the next non whitespace and non comment token.
-     *
-     * @param bool $docCommentIsComment If TRUE then a doc comment is considered a comment and skipped.
-     * If FALSE then only whitespace and normal comments are skipped.
-     *
-     * @return mixed[]|string|null The token if exists, null otherwise.
-     */
-    public function next(bool $docCommentIsComment = true)
-    {
-        for ($i = $this->pointer; $i < $this->numTokens; $i++) {
-            $this->pointer++;
-            if (
-                $this->tokens[$i][0] === T_WHITESPACE ||
-                $this->tokens[$i][0] === T_COMMENT ||
-                ($docCommentIsComment && $this->tokens[$i][0] === T_DOC_COMMENT)
-            ) {
-                continue;
-            }
-
-            return $this->tokens[$i];
-        }
-
-        return null;
-    }
-
-    /**
-     * Parses a single use statement.
-     *
-     * @return array<string, string> A list with all found class names for a use statement.
-     */
-    public function parseUseStatement()
-    {
-        $groupRoot     = '';
-        $class         = '';
-        $alias         = '';
-        $statements    = [];
-        $explicitAlias = false;
-        while (($token = $this->next())) {
-            if (! $explicitAlias && $token[0] === T_STRING) {
-                $class .= $token[1];
-                $alias  = $token[1];
-            } elseif ($explicitAlias && $token[0] === T_STRING) {
-                $alias = $token[1];
-            } elseif (
-                PHP_VERSION_ID >= 80000 &&
-                ($token[0] === T_NAME_QUALIFIED || $token[0] === T_NAME_FULLY_QUALIFIED)
-            ) {
-                $class .= $token[1];
-
-                $classSplit = explode('\\', $token[1]);
-                $alias      = $classSplit[count($classSplit) - 1];
-            } elseif ($token[0] === T_NS_SEPARATOR) {
-                $class .= '\\';
-                $alias  = '';
-            } elseif ($token[0] === T_AS) {
-                $explicitAlias = true;
-                $alias         = '';
-            } elseif ($token === ',') {
-                $statements[strtolower($alias)] = $groupRoot . $class;
-                $class                          = '';
-                $alias                          = '';
-                $explicitAlias                  = false;
-            } elseif ($token === ';') {
-                $statements[strtolower($alias)] = $groupRoot . $class;
-                break;
-            } elseif ($token === '{') {
-                $groupRoot = $class;
-                $class     = '';
-            } elseif ($token === '}') {
-                continue;
-            } else {
-                break;
-            }
-        }
-
-        return $statements;
-    }
-
-    /**
-     * Gets all use statements.
-     *
-     * @param string $namespaceName The namespace name of the reflected class.
-     *
-     * @return array<string, string> A list with all found use statements.
-     */
-    public function parseUseStatements(string $namespaceName)
-    {
-        $statements = [];
-        while (($token = $this->next())) {
-            if ($token[0] === T_USE) {
-                $statements = array_merge($statements, $this->parseUseStatement());
-                continue;
-            }
-
-            if ($token[0] !== T_NAMESPACE || $this->parseNamespace() !== $namespaceName) {
-                continue;
-            }
-
-            // Get fresh array for new namespace. This is to prevent the parser to collect the use statements
-            // for a previous namespace with the same name. This is the case if a namespace is defined twice
-            // or if a namespace with the same name is commented out.
-            $statements = [];
-        }
-
-        return $statements;
-    }
-
-    /**
-     * Gets the namespace.
-     *
-     * @return string The found namespace.
-     */
-    public function parseNamespace()
-    {
-        $name = '';
-        while (
-            ($token = $this->next()) && ($token[0] === T_STRING || $token[0] === T_NS_SEPARATOR || (
-            PHP_VERSION_ID >= 80000 &&
-            ($token[0] === T_NAME_QUALIFIED || $token[0] === T_NAME_FULLY_QUALIFIED)
-            ))
-        ) {
-            $name .= $token[1];
-        }
-
-        return $name;
-    }
-
-    /**
-     * Gets the class name.
-     *
-     * @return string The found class name.
-     */
-    public function parseClass()
-    {
-        // Namespaces and class names are tokenized the same: T_STRINGs
-        // separated by T_NS_SEPARATOR so we can use one function to provide
-        // both.
-        return $this->parseNamespace();
-    }
-}

+ 0 - 15
vendor/doctrine/annotations/psalm.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0"?>
-<psalm
-    errorLevel="7"
-    resolveFromConfigFile="true"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns="https://getpsalm.org/schema/config"
-    xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
->
-    <projectFiles>
-        <directory name="lib/Doctrine/Common/Annotations" />
-        <ignoreFiles>
-            <directory name="vendor" />
-        </ignoreFiles>
-    </projectFiles>
-</psalm>

+ 0 - 19
vendor/doctrine/inflector/LICENSE

@@ -1,19 +0,0 @@
-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.

Some files were not shown because too many files changed in this diff