diff --git a/composer.json b/composer.json
index 2a1d09f3bb6fe0b0ac15279de7d6e615a5fd9152..31df984baf200d3feb6709148864494fe6e9150f 100644
--- a/composer.json
+++ b/composer.json
@@ -104,7 +104,7 @@
         "drupal/config_ignore": "2.4",
         "drupal/console": "1.9.7",
         "drupal/core-composer-scaffold": "^9.0",
-        "drupal/core-recommended": "9.5.9",
+        "drupal/core-recommended": "9.5.10",
         "drupal/crop": "2.3",
         "drupal/ctools": "3.13",
         "drupal/decorative_image_widget": "^1.0@alpha",
diff --git a/composer.lock b/composer.lock
index 74ff143fdbea438aace9ca6dc8c3d54cf2f43703..96066a2c6f039053cda06ddb0cda946289cf9445 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "172e6f465b573f652cf286858ec7fe16",
+    "content-hash": "2d28d673202e012e02abaf2fded13503",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -2879,16 +2879,16 @@
         },
         {
             "name": "drupal/core",
-            "version": "9.5.9",
+            "version": "9.5.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/drupal/core.git",
-                "reference": "c3b194f9056a297f6d72e54056c818843cab9aba"
+                "reference": "c84bab7403943fbc4ed90ffcdde4460a94642b06"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/drupal/core/zipball/c3b194f9056a297f6d72e54056c818843cab9aba",
-                "reference": "c3b194f9056a297f6d72e54056c818843cab9aba",
+                "url": "https://api.github.com/repos/drupal/core/zipball/c84bab7403943fbc4ed90ffcdde4460a94642b06",
+                "reference": "c84bab7403943fbc4ed90ffcdde4460a94642b06",
                 "shasum": ""
             },
             "require": {
@@ -3040,9 +3040,9 @@
             ],
             "description": "Drupal is an open source content management platform powering millions of websites and applications.",
             "support": {
-                "source": "https://github.com/drupal/core/tree/9.5.9"
+                "source": "https://github.com/drupal/core/tree/9.5.10"
             },
-            "time": "2023-05-03T13:26:12+00:00"
+            "time": "2023-07-05T09:26:59+00:00"
         },
         {
             "name": "drupal/core-composer-scaffold",
@@ -3096,16 +3096,16 @@
         },
         {
             "name": "drupal/core-recommended",
-            "version": "9.5.9",
+            "version": "9.5.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/drupal/core-recommended.git",
-                "reference": "63865212817ab48815a95c6aaceafcab0b9eabee"
+                "reference": "d149750a704e63b40a7a26afed5ad1517d515fdc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/drupal/core-recommended/zipball/63865212817ab48815a95c6aaceafcab0b9eabee",
-                "reference": "63865212817ab48815a95c6aaceafcab0b9eabee",
+                "url": "https://api.github.com/repos/drupal/core-recommended/zipball/d149750a704e63b40a7a26afed5ad1517d515fdc",
+                "reference": "d149750a704e63b40a7a26afed5ad1517d515fdc",
                 "shasum": ""
             },
             "require": {
@@ -3114,14 +3114,11 @@
                 "doctrine/annotations": "~1.13.3",
                 "doctrine/lexer": "~1.2.3",
                 "doctrine/reflection": "~1.2.3",
-                "drupal/core": "9.5.9",
+                "drupal/core": "9.5.10",
                 "egulias/email-validator": "~3.2.1",
                 "guzzlehttp/guzzle": "~6.5.8",
                 "guzzlehttp/promises": "~1.5.2",
                 "guzzlehttp/psr7": "~1.9.1",
-                "laminas/laminas-escaper": "~2.9.0",
-                "laminas/laminas-feed": "~2.17.0",
-                "laminas/laminas-stdlib": "~3.11.0",
                 "longwave/laminas-diactoros": "~2.14.2",
                 "masterminds/html5": "~2.7.6",
                 "pear/archive_tar": "~1.4.14",
@@ -3176,9 +3173,9 @@
             ],
             "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.",
             "support": {
-                "source": "https://github.com/drupal/core-recommended/tree/9.5.9"
+                "source": "https://github.com/drupal/core-recommended/tree/9.5.10"
             },
-            "time": "2023-05-03T13:26:12+00:00"
+            "time": "2023-07-05T09:26:59+00:00"
         },
         {
             "name": "drupal/crop",
@@ -9143,33 +9140,33 @@
         },
         {
             "name": "laminas/laminas-escaper",
-            "version": "2.9.0",
+            "version": "2.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laminas/laminas-escaper.git",
-                "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f"
+                "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f",
-                "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f",
+                "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490",
+                "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
+                "ext-ctype": "*",
+                "ext-mbstring": "*",
+                "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0"
             },
             "conflict": {
                 "zendframework/zend-escaper": "*"
             },
             "require-dev": {
-                "laminas/laminas-coding-standard": "~2.3.0",
-                "phpunit/phpunit": "^9.3",
-                "psalm/plugin-phpunit": "^0.12.2",
-                "vimeo/psalm": "^3.16"
-            },
-            "suggest": {
-                "ext-iconv": "*",
-                "ext-mbstring": "*"
+                "infection/infection": "^0.26.6",
+                "laminas/laminas-coding-standard": "~2.4.0",
+                "maglnet/composer-require-checker": "^3.8.0",
+                "phpunit/phpunit": "^9.5.18",
+                "psalm/plugin-phpunit": "^0.17.0",
+                "vimeo/psalm": "^4.22.0"
             },
             "type": "library",
             "autoload": {
@@ -9201,44 +9198,45 @@
                     "type": "community_bridge"
                 }
             ],
-            "time": "2021-09-02T17:10:53+00:00"
+            "time": "2022-10-10T10:11:09+00:00"
         },
         {
             "name": "laminas/laminas-feed",
-            "version": "2.17.0",
+            "version": "2.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laminas/laminas-feed.git",
-                "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0"
+                "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/1ccb024ea615606ed1d676ba0fa3f22a398f3ac0",
-                "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0",
+                "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/508ebef6e622f2f2ce3dd0559739ffd0dfa3b938",
+                "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-libxml": "*",
                 "laminas/laminas-escaper": "^2.9",
+                "laminas/laminas-servicemanager": "^3.14.0",
                 "laminas/laminas-stdlib": "^3.6",
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
             },
             "conflict": {
                 "laminas/laminas-servicemanager": "<3.3",
                 "zendframework/zend-feed": "*"
             },
             "require-dev": {
-                "laminas/laminas-cache": "^2.7.2",
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "laminas/laminas-db": "^2.13.3",
-                "laminas/laminas-http": "^2.15",
-                "laminas/laminas-servicemanager": "^3.7",
-                "laminas/laminas-validator": "^2.15",
-                "phpunit/phpunit": "^9.5.5",
-                "psalm/plugin-phpunit": "^0.13.0",
+                "laminas/laminas-cache": "^2.13.2 || ^3.6",
+                "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.1",
+                "laminas/laminas-coding-standard": "~2.4.0",
+                "laminas/laminas-db": "^2.15",
+                "laminas/laminas-http": "^2.17.0",
+                "laminas/laminas-validator": "^2.26",
+                "phpunit/phpunit": "^9.5.25",
+                "psalm/plugin-phpunit": "^0.18.0",
                 "psr/http-message": "^1.0.1",
-                "vimeo/psalm": "^4.1"
+                "vimeo/psalm": "^5.1.0"
             },
             "suggest": {
                 "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests",
@@ -9258,11 +9256,13 @@
             "license": [
                 "BSD-3-Clause"
             ],
-            "description": "provides functionality for consuming RSS and Atom feeds",
+            "description": "provides functionality for creating and consuming RSS and Atom feeds",
             "homepage": "https://laminas.dev",
             "keywords": [
+                "atom",
                 "feed",
-                "laminas"
+                "laminas",
+                "rss"
             ],
             "support": {
                 "chat": "https://laminas.dev/chat",
@@ -9278,34 +9278,124 @@
                     "type": "community_bridge"
                 }
             ],
-            "time": "2022-03-24T10:26:04+00:00"
+            "time": "2022-12-03T19:40:30+00:00"
+        },
+        {
+            "name": "laminas/laminas-servicemanager",
+            "version": "3.20.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-servicemanager.git",
+                "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/bc2c2cbe2dd90db8b9d16b0618f542692b76ab59",
+                "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59",
+                "shasum": ""
+            },
+            "require": {
+                "laminas/laminas-stdlib": "^3.2.1",
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0",
+                "psr/container": "^1.0"
+            },
+            "conflict": {
+                "ext-psr": "*",
+                "laminas/laminas-code": "<3.3.1",
+                "zendframework/zend-code": "<3.3.1",
+                "zendframework/zend-servicemanager": "*"
+            },
+            "provide": {
+                "psr/container-implementation": "^1.0"
+            },
+            "replace": {
+                "container-interop/container-interop": "^1.2.0"
+            },
+            "require-dev": {
+                "composer/package-versions-deprecated": "^1.11.99.5",
+                "laminas/laminas-coding-standard": "~2.4.0",
+                "laminas/laminas-container-config-test": "^0.8",
+                "laminas/laminas-dependency-plugin": "^2.2",
+                "mikey179/vfsstream": "^1.6.11@alpha",
+                "ocramius/proxy-manager": "^2.14.1",
+                "phpbench/phpbench": "^1.2.7",
+                "phpunit/phpunit": "^9.5.26",
+                "psalm/plugin-phpunit": "^0.18.0",
+                "vimeo/psalm": "^5.0.0"
+            },
+            "suggest": {
+                "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services"
+            },
+            "bin": [
+                "bin/generate-deps-for-config-factory",
+                "bin/generate-factory-for-class"
+            ],
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/autoload.php"
+                ],
+                "psr-4": {
+                    "Laminas\\ServiceManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Factory-Driven Dependency Injection Container",
+            "homepage": "https://laminas.dev",
+            "keywords": [
+                "PSR-11",
+                "dependency-injection",
+                "di",
+                "dic",
+                "laminas",
+                "service-manager",
+                "servicemanager"
+            ],
+            "support": {
+                "chat": "https://laminas.dev/chat",
+                "docs": "https://docs.laminas.dev/laminas-servicemanager/",
+                "forum": "https://discourse.laminas.dev",
+                "issues": "https://github.com/laminas/laminas-servicemanager/issues",
+                "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom",
+                "source": "https://github.com/laminas/laminas-servicemanager"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "time": "2022-12-01T17:03:38+00:00"
         },
         {
             "name": "laminas/laminas-stdlib",
-            "version": "3.11.0",
+            "version": "3.16.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laminas/laminas-stdlib.git",
-                "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f"
+                "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f",
-                "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f",
+                "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/f4f773641807c7ccee59b758bfe4ac4ba33ecb17",
+                "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
             },
             "conflict": {
                 "zendframework/zend-stdlib": "*"
             },
             "require-dev": {
-                "laminas/laminas-coding-standard": "~2.3.0",
-                "phpbench/phpbench": "^1.0",
-                "phpunit/phpunit": "^9.3.7",
-                "psalm/plugin-phpunit": "^0.17.0",
-                "vimeo/psalm": "^4.7"
+                "laminas/laminas-coding-standard": "^2.4.0",
+                "phpbench/phpbench": "^1.2.7",
+                "phpunit/phpunit": "^9.5.26",
+                "psalm/plugin-phpunit": "^0.18.0",
+                "vimeo/psalm": "^5.0.0"
             },
             "type": "library",
             "autoload": {
@@ -9337,7 +9427,7 @@
                     "type": "community_bridge"
                 }
             ],
-            "time": "2022-07-27T12:28:58+00:00"
+            "time": "2022-12-03T18:48:01+00:00"
         },
         {
             "name": "league/container",
diff --git a/vendor/bin/generate-deps-for-config-factory b/vendor/bin/generate-deps-for-config-factory
new file mode 100755
index 0000000000000000000000000000000000000000..7b9886356ed86e0ce8e92e825944490803e9eaa6
--- /dev/null
+++ b/vendor/bin/generate-deps-for-config-factory
@@ -0,0 +1,119 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * Proxy PHP file generated by Composer
+ *
+ * This file includes the referenced bin path (../laminas/laminas-servicemanager/bin/generate-deps-for-config-factory)
+ * using a stream wrapper to prevent the shebang from being output on PHP<8
+ *
+ * @generated
+ */
+
+namespace Composer;
+
+$GLOBALS['_composer_bin_dir'] = __DIR__;
+$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
+
+if (PHP_VERSION_ID < 80000) {
+    if (!class_exists('Composer\BinProxyWrapper')) {
+        /**
+         * @internal
+         */
+        final class BinProxyWrapper
+        {
+            private $handle;
+            private $position;
+            private $realpath;
+
+            public function stream_open($path, $mode, $options, &$opened_path)
+            {
+                // get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
+                $opened_path = substr($path, 17);
+                $this->realpath = realpath($opened_path) ?: $opened_path;
+                $opened_path = $this->realpath;
+                $this->handle = fopen($this->realpath, $mode);
+                $this->position = 0;
+
+                return (bool) $this->handle;
+            }
+
+            public function stream_read($count)
+            {
+                $data = fread($this->handle, $count);
+
+                if ($this->position === 0) {
+                    $data = preg_replace('{^#!.*\r?\n}', '', $data);
+                }
+
+                $this->position += strlen($data);
+
+                return $data;
+            }
+
+            public function stream_cast($castAs)
+            {
+                return $this->handle;
+            }
+
+            public function stream_close()
+            {
+                fclose($this->handle);
+            }
+
+            public function stream_lock($operation)
+            {
+                return $operation ? flock($this->handle, $operation) : true;
+            }
+
+            public function stream_seek($offset, $whence)
+            {
+                if (0 === fseek($this->handle, $offset, $whence)) {
+                    $this->position = ftell($this->handle);
+                    return true;
+                }
+
+                return false;
+            }
+
+            public function stream_tell()
+            {
+                return $this->position;
+            }
+
+            public function stream_eof()
+            {
+                return feof($this->handle);
+            }
+
+            public function stream_stat()
+            {
+                return array();
+            }
+
+            public function stream_set_option($option, $arg1, $arg2)
+            {
+                return true;
+            }
+
+            public function url_stat($path, $flags)
+            {
+                $path = substr($path, 17);
+                if (file_exists($path)) {
+                    return stat($path);
+                }
+
+                return false;
+            }
+        }
+    }
+
+    if (
+        (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+        || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+    ) {
+        return include("phpvfscomposer://" . __DIR__ . '/..'.'/laminas/laminas-servicemanager/bin/generate-deps-for-config-factory');
+    }
+}
+
+return include __DIR__ . '/..'.'/laminas/laminas-servicemanager/bin/generate-deps-for-config-factory';
diff --git a/vendor/bin/generate-factory-for-class b/vendor/bin/generate-factory-for-class
new file mode 100755
index 0000000000000000000000000000000000000000..4bc576d42fdaab919f8fd1c452b3625cf52e1b3c
--- /dev/null
+++ b/vendor/bin/generate-factory-for-class
@@ -0,0 +1,119 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * Proxy PHP file generated by Composer
+ *
+ * This file includes the referenced bin path (../laminas/laminas-servicemanager/bin/generate-factory-for-class)
+ * using a stream wrapper to prevent the shebang from being output on PHP<8
+ *
+ * @generated
+ */
+
+namespace Composer;
+
+$GLOBALS['_composer_bin_dir'] = __DIR__;
+$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
+
+if (PHP_VERSION_ID < 80000) {
+    if (!class_exists('Composer\BinProxyWrapper')) {
+        /**
+         * @internal
+         */
+        final class BinProxyWrapper
+        {
+            private $handle;
+            private $position;
+            private $realpath;
+
+            public function stream_open($path, $mode, $options, &$opened_path)
+            {
+                // get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
+                $opened_path = substr($path, 17);
+                $this->realpath = realpath($opened_path) ?: $opened_path;
+                $opened_path = $this->realpath;
+                $this->handle = fopen($this->realpath, $mode);
+                $this->position = 0;
+
+                return (bool) $this->handle;
+            }
+
+            public function stream_read($count)
+            {
+                $data = fread($this->handle, $count);
+
+                if ($this->position === 0) {
+                    $data = preg_replace('{^#!.*\r?\n}', '', $data);
+                }
+
+                $this->position += strlen($data);
+
+                return $data;
+            }
+
+            public function stream_cast($castAs)
+            {
+                return $this->handle;
+            }
+
+            public function stream_close()
+            {
+                fclose($this->handle);
+            }
+
+            public function stream_lock($operation)
+            {
+                return $operation ? flock($this->handle, $operation) : true;
+            }
+
+            public function stream_seek($offset, $whence)
+            {
+                if (0 === fseek($this->handle, $offset, $whence)) {
+                    $this->position = ftell($this->handle);
+                    return true;
+                }
+
+                return false;
+            }
+
+            public function stream_tell()
+            {
+                return $this->position;
+            }
+
+            public function stream_eof()
+            {
+                return feof($this->handle);
+            }
+
+            public function stream_stat()
+            {
+                return array();
+            }
+
+            public function stream_set_option($option, $arg1, $arg2)
+            {
+                return true;
+            }
+
+            public function url_stat($path, $flags)
+            {
+                $path = substr($path, 17);
+                if (file_exists($path)) {
+                    return stat($path);
+                }
+
+                return false;
+            }
+        }
+    }
+
+    if (
+        (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+        || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+    ) {
+        return include("phpvfscomposer://" . __DIR__ . '/..'.'/laminas/laminas-servicemanager/bin/generate-factory-for-class');
+    }
+}
+
+return include __DIR__ . '/..'.'/laminas/laminas-servicemanager/bin/generate-factory-for-class';
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 33648eb5fc498c1b9ac29a20efaff0e18d21ff41..cd508688ffab67001b1b7daeda8e672dbe4a62c8 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -3766,6 +3766,36 @@
     'Laminas\\Feed\\Writer\\StandaloneExtensionManager' => $vendorDir . '/laminas/laminas-feed/src/Writer/StandaloneExtensionManager.php',
     'Laminas\\Feed\\Writer\\Version' => $vendorDir . '/laminas/laminas-feed/src/Writer/Version.php',
     'Laminas\\Feed\\Writer\\Writer' => $vendorDir . '/laminas/laminas-feed/src/Writer/Writer.php',
+    'Laminas\\ServiceManager\\AbstractFactoryInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/AbstractFactoryInterface.php',
+    'Laminas\\ServiceManager\\AbstractFactory\\ConfigAbstractFactory' => $vendorDir . '/laminas/laminas-servicemanager/src/AbstractFactory/ConfigAbstractFactory.php',
+    'Laminas\\ServiceManager\\AbstractFactory\\ReflectionBasedAbstractFactory' => $vendorDir . '/laminas/laminas-servicemanager/src/AbstractFactory/ReflectionBasedAbstractFactory.php',
+    'Laminas\\ServiceManager\\AbstractPluginManager' => $vendorDir . '/laminas/laminas-servicemanager/src/AbstractPluginManager.php',
+    'Laminas\\ServiceManager\\Config' => $vendorDir . '/laminas/laminas-servicemanager/src/Config.php',
+    'Laminas\\ServiceManager\\ConfigInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/ConfigInterface.php',
+    'Laminas\\ServiceManager\\DelegatorFactoryInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/DelegatorFactoryInterface.php',
+    'Laminas\\ServiceManager\\Exception\\ContainerModificationsNotAllowedException' => $vendorDir . '/laminas/laminas-servicemanager/src/Exception/ContainerModificationsNotAllowedException.php',
+    'Laminas\\ServiceManager\\Exception\\CyclicAliasException' => $vendorDir . '/laminas/laminas-servicemanager/src/Exception/CyclicAliasException.php',
+    'Laminas\\ServiceManager\\Exception\\ExceptionInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/Exception/ExceptionInterface.php',
+    'Laminas\\ServiceManager\\Exception\\InvalidArgumentException' => $vendorDir . '/laminas/laminas-servicemanager/src/Exception/InvalidArgumentException.php',
+    'Laminas\\ServiceManager\\Exception\\InvalidServiceException' => $vendorDir . '/laminas/laminas-servicemanager/src/Exception/InvalidServiceException.php',
+    'Laminas\\ServiceManager\\Exception\\ServiceNotCreatedException' => $vendorDir . '/laminas/laminas-servicemanager/src/Exception/ServiceNotCreatedException.php',
+    'Laminas\\ServiceManager\\Exception\\ServiceNotFoundException' => $vendorDir . '/laminas/laminas-servicemanager/src/Exception/ServiceNotFoundException.php',
+    'Laminas\\ServiceManager\\FactoryInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/FactoryInterface.php',
+    'Laminas\\ServiceManager\\Factory\\AbstractFactoryInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/Factory/AbstractFactoryInterface.php',
+    'Laminas\\ServiceManager\\Factory\\DelegatorFactoryInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/Factory/DelegatorFactoryInterface.php',
+    'Laminas\\ServiceManager\\Factory\\FactoryInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/Factory/FactoryInterface.php',
+    'Laminas\\ServiceManager\\Factory\\InvokableFactory' => $vendorDir . '/laminas/laminas-servicemanager/src/Factory/InvokableFactory.php',
+    'Laminas\\ServiceManager\\InitializerInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/InitializerInterface.php',
+    'Laminas\\ServiceManager\\Initializer\\InitializerInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/Initializer/InitializerInterface.php',
+    'Laminas\\ServiceManager\\PluginManagerInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/PluginManagerInterface.php',
+    'Laminas\\ServiceManager\\Proxy\\LazyServiceFactory' => $vendorDir . '/laminas/laminas-servicemanager/src/Proxy/LazyServiceFactory.php',
+    'Laminas\\ServiceManager\\ServiceLocatorInterface' => $vendorDir . '/laminas/laminas-servicemanager/src/ServiceLocatorInterface.php',
+    'Laminas\\ServiceManager\\ServiceManager' => $vendorDir . '/laminas/laminas-servicemanager/src/ServiceManager.php',
+    'Laminas\\ServiceManager\\Test\\CommonPluginManagerTrait' => $vendorDir . '/laminas/laminas-servicemanager/src/Test/CommonPluginManagerTrait.php',
+    'Laminas\\ServiceManager\\Tool\\ConfigDumper' => $vendorDir . '/laminas/laminas-servicemanager/src/Tool/ConfigDumper.php',
+    'Laminas\\ServiceManager\\Tool\\ConfigDumperCommand' => $vendorDir . '/laminas/laminas-servicemanager/src/Tool/ConfigDumperCommand.php',
+    'Laminas\\ServiceManager\\Tool\\FactoryCreator' => $vendorDir . '/laminas/laminas-servicemanager/src/Tool/FactoryCreator.php',
+    'Laminas\\ServiceManager\\Tool\\FactoryCreatorCommand' => $vendorDir . '/laminas/laminas-servicemanager/src/Tool/FactoryCreatorCommand.php',
     'Laminas\\Stdlib\\AbstractOptions' => $vendorDir . '/laminas/laminas-stdlib/src/AbstractOptions.php',
     'Laminas\\Stdlib\\ArrayObject' => $vendorDir . '/laminas/laminas-stdlib/src/ArrayObject.php',
     'Laminas\\Stdlib\\ArraySerializableInterface' => $vendorDir . '/laminas/laminas-stdlib/src/ArraySerializableInterface.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 837febc2bd1f9068508a0bb51f984819f95bd0c6..9bd4635e64bb5a3e1c98e97b2415784e9a2e4058 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -20,6 +20,7 @@
     'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
     '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
     '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
+    'c9d07b32a2e02bc0fc582d4f0c1b56cc' => $vendorDir . '/laminas/laminas-servicemanager/src/autoload.php',
     '3e41e0554275033aae3e9e7e056c2d14' => $vendorDir . '/longwave/laminas-diactoros/src/functions/create_uploaded_file.php',
     'f4ee20bfdee1006b0970e8d951bea11e' => $vendorDir . '/longwave/laminas-diactoros/src/functions/marshal_headers_from_sapi.php',
     '039b4ca04402a921dc2af19c2e8c1f6e' => $vendorDir . '/longwave/laminas-diactoros/src/functions/marshal_method_from_sapi.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 397443b93e9e51ca6c94661222e702d1809c47db..1e44d83e6eb1181ed24bb7cde803707e35b081f3 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -101,6 +101,7 @@
     'Masterminds\\' => array($vendorDir . '/masterminds/html5/src'),
     'League\\Container\\' => array($vendorDir . '/league/container/src'),
     'Laminas\\Stdlib\\' => array($vendorDir . '/laminas/laminas-stdlib/src'),
+    'Laminas\\ServiceManager\\' => array($vendorDir . '/laminas/laminas-servicemanager/src'),
     'Laminas\\Feed\\' => array($vendorDir . '/laminas/laminas-feed/src'),
     'Laminas\\Escaper\\' => array($vendorDir . '/laminas/laminas-escaper/src'),
     'Laminas\\Diactoros\\' => array($vendorDir . '/longwave/laminas-diactoros/src'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 5d4ef3807dcceaaded3417ceda1860ee5572a2f2..9995636fb0f62ecccf94557644896cd58219286a 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -21,6 +21,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
         '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
         '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
+        'c9d07b32a2e02bc0fc582d4f0c1b56cc' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/autoload.php',
         '3e41e0554275033aae3e9e7e056c2d14' => __DIR__ . '/..' . '/longwave/laminas-diactoros/src/functions/create_uploaded_file.php',
         'f4ee20bfdee1006b0970e8d951bea11e' => __DIR__ . '/..' . '/longwave/laminas-diactoros/src/functions/marshal_headers_from_sapi.php',
         '039b4ca04402a921dc2af19c2e8c1f6e' => __DIR__ . '/..' . '/longwave/laminas-diactoros/src/functions/marshal_method_from_sapi.php',
@@ -173,6 +174,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             'League\\Container\\' => 17,
             'Laminas\\Stdlib\\' => 15,
+            'Laminas\\ServiceManager\\' => 23,
             'Laminas\\Feed\\' => 13,
             'Laminas\\Escaper\\' => 16,
             'Laminas\\Diactoros\\' => 18,
@@ -613,6 +615,10 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             0 => __DIR__ . '/..' . '/laminas/laminas-stdlib/src',
         ),
+        'Laminas\\ServiceManager\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src',
+        ),
         'Laminas\\Feed\\' => 
         array (
             0 => __DIR__ . '/..' . '/laminas/laminas-feed/src',
@@ -4593,6 +4599,36 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Laminas\\Feed\\Writer\\StandaloneExtensionManager' => __DIR__ . '/..' . '/laminas/laminas-feed/src/Writer/StandaloneExtensionManager.php',
         'Laminas\\Feed\\Writer\\Version' => __DIR__ . '/..' . '/laminas/laminas-feed/src/Writer/Version.php',
         'Laminas\\Feed\\Writer\\Writer' => __DIR__ . '/..' . '/laminas/laminas-feed/src/Writer/Writer.php',
+        'Laminas\\ServiceManager\\AbstractFactoryInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/AbstractFactoryInterface.php',
+        'Laminas\\ServiceManager\\AbstractFactory\\ConfigAbstractFactory' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/AbstractFactory/ConfigAbstractFactory.php',
+        'Laminas\\ServiceManager\\AbstractFactory\\ReflectionBasedAbstractFactory' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/AbstractFactory/ReflectionBasedAbstractFactory.php',
+        'Laminas\\ServiceManager\\AbstractPluginManager' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/AbstractPluginManager.php',
+        'Laminas\\ServiceManager\\Config' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Config.php',
+        'Laminas\\ServiceManager\\ConfigInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/ConfigInterface.php',
+        'Laminas\\ServiceManager\\DelegatorFactoryInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/DelegatorFactoryInterface.php',
+        'Laminas\\ServiceManager\\Exception\\ContainerModificationsNotAllowedException' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Exception/ContainerModificationsNotAllowedException.php',
+        'Laminas\\ServiceManager\\Exception\\CyclicAliasException' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Exception/CyclicAliasException.php',
+        'Laminas\\ServiceManager\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Exception/ExceptionInterface.php',
+        'Laminas\\ServiceManager\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Exception/InvalidArgumentException.php',
+        'Laminas\\ServiceManager\\Exception\\InvalidServiceException' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Exception/InvalidServiceException.php',
+        'Laminas\\ServiceManager\\Exception\\ServiceNotCreatedException' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Exception/ServiceNotCreatedException.php',
+        'Laminas\\ServiceManager\\Exception\\ServiceNotFoundException' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Exception/ServiceNotFoundException.php',
+        'Laminas\\ServiceManager\\FactoryInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/FactoryInterface.php',
+        'Laminas\\ServiceManager\\Factory\\AbstractFactoryInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Factory/AbstractFactoryInterface.php',
+        'Laminas\\ServiceManager\\Factory\\DelegatorFactoryInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Factory/DelegatorFactoryInterface.php',
+        'Laminas\\ServiceManager\\Factory\\FactoryInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Factory/FactoryInterface.php',
+        'Laminas\\ServiceManager\\Factory\\InvokableFactory' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Factory/InvokableFactory.php',
+        'Laminas\\ServiceManager\\InitializerInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/InitializerInterface.php',
+        'Laminas\\ServiceManager\\Initializer\\InitializerInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Initializer/InitializerInterface.php',
+        'Laminas\\ServiceManager\\PluginManagerInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/PluginManagerInterface.php',
+        'Laminas\\ServiceManager\\Proxy\\LazyServiceFactory' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Proxy/LazyServiceFactory.php',
+        'Laminas\\ServiceManager\\ServiceLocatorInterface' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/ServiceLocatorInterface.php',
+        'Laminas\\ServiceManager\\ServiceManager' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/ServiceManager.php',
+        'Laminas\\ServiceManager\\Test\\CommonPluginManagerTrait' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Test/CommonPluginManagerTrait.php',
+        'Laminas\\ServiceManager\\Tool\\ConfigDumper' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Tool/ConfigDumper.php',
+        'Laminas\\ServiceManager\\Tool\\ConfigDumperCommand' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Tool/ConfigDumperCommand.php',
+        'Laminas\\ServiceManager\\Tool\\FactoryCreator' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Tool/FactoryCreator.php',
+        'Laminas\\ServiceManager\\Tool\\FactoryCreatorCommand' => __DIR__ . '/..' . '/laminas/laminas-servicemanager/src/Tool/FactoryCreatorCommand.php',
         'Laminas\\Stdlib\\AbstractOptions' => __DIR__ . '/..' . '/laminas/laminas-stdlib/src/AbstractOptions.php',
         'Laminas\\Stdlib\\ArrayObject' => __DIR__ . '/..' . '/laminas/laminas-stdlib/src/ArrayObject.php',
         'Laminas\\Stdlib\\ArraySerializableInterface' => __DIR__ . '/..' . '/laminas/laminas-stdlib/src/ArraySerializableInterface.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 34791ff99310cecf4b7a5510bf93caa7eda70d3f..8ba6e4ec2c066b9feeccd68684dd619972814a5f 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -2978,17 +2978,17 @@
         },
         {
             "name": "drupal/core",
-            "version": "9.5.9",
-            "version_normalized": "9.5.9.0",
+            "version": "9.5.10",
+            "version_normalized": "9.5.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/drupal/core.git",
-                "reference": "c3b194f9056a297f6d72e54056c818843cab9aba"
+                "reference": "c84bab7403943fbc4ed90ffcdde4460a94642b06"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/drupal/core/zipball/c3b194f9056a297f6d72e54056c818843cab9aba",
-                "reference": "c3b194f9056a297f6d72e54056c818843cab9aba",
+                "url": "https://api.github.com/repos/drupal/core/zipball/c84bab7403943fbc4ed90ffcdde4460a94642b06",
+                "reference": "c84bab7403943fbc4ed90ffcdde4460a94642b06",
                 "shasum": ""
             },
             "require": {
@@ -3068,7 +3068,7 @@
                 "drupal/core-uuid": "self.version",
                 "drupal/core-version": "self.version"
             },
-            "time": "2023-05-03T13:26:12+00:00",
+            "time": "2023-07-05T09:26:59+00:00",
             "type": "drupal-core",
             "extra": {
                 "drupal-scaffold": {
@@ -3147,7 +3147,7 @@
             ],
             "description": "Drupal is an open source content management platform powering millions of websites and applications.",
             "support": {
-                "source": "https://github.com/drupal/core/tree/9.5.9"
+                "source": "https://github.com/drupal/core/tree/9.5.10"
             },
             "install-path": "../../web/core"
         },
@@ -3203,17 +3203,17 @@
         },
         {
             "name": "drupal/core-recommended",
-            "version": "9.5.9",
-            "version_normalized": "9.5.9.0",
+            "version": "9.5.10",
+            "version_normalized": "9.5.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/drupal/core-recommended.git",
-                "reference": "63865212817ab48815a95c6aaceafcab0b9eabee"
+                "reference": "d149750a704e63b40a7a26afed5ad1517d515fdc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/drupal/core-recommended/zipball/63865212817ab48815a95c6aaceafcab0b9eabee",
-                "reference": "63865212817ab48815a95c6aaceafcab0b9eabee",
+                "url": "https://api.github.com/repos/drupal/core-recommended/zipball/d149750a704e63b40a7a26afed5ad1517d515fdc",
+                "reference": "d149750a704e63b40a7a26afed5ad1517d515fdc",
                 "shasum": ""
             },
             "require": {
@@ -3222,14 +3222,11 @@
                 "doctrine/annotations": "~1.13.3",
                 "doctrine/lexer": "~1.2.3",
                 "doctrine/reflection": "~1.2.3",
-                "drupal/core": "9.5.9",
+                "drupal/core": "9.5.10",
                 "egulias/email-validator": "~3.2.1",
                 "guzzlehttp/guzzle": "~6.5.8",
                 "guzzlehttp/promises": "~1.5.2",
                 "guzzlehttp/psr7": "~1.9.1",
-                "laminas/laminas-escaper": "~2.9.0",
-                "laminas/laminas-feed": "~2.17.0",
-                "laminas/laminas-stdlib": "~3.11.0",
                 "longwave/laminas-diactoros": "~2.14.2",
                 "masterminds/html5": "~2.7.6",
                 "pear/archive_tar": "~1.4.14",
@@ -3277,7 +3274,7 @@
             "conflict": {
                 "webflo/drupal-core-strict": "*"
             },
-            "time": "2023-05-03T13:26:12+00:00",
+            "time": "2023-07-05T09:26:59+00:00",
             "type": "metapackage",
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -3285,7 +3282,7 @@
             ],
             "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.",
             "support": {
-                "source": "https://github.com/drupal/core-recommended/tree/9.5.9"
+                "source": "https://github.com/drupal/core-recommended/tree/9.5.10"
             },
             "install-path": null
         },
@@ -9507,36 +9504,36 @@
         },
         {
             "name": "laminas/laminas-escaper",
-            "version": "2.9.0",
-            "version_normalized": "2.9.0.0",
+            "version": "2.12.0",
+            "version_normalized": "2.12.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laminas/laminas-escaper.git",
-                "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f"
+                "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f",
-                "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f",
+                "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490",
+                "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
+                "ext-ctype": "*",
+                "ext-mbstring": "*",
+                "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0"
             },
             "conflict": {
                 "zendframework/zend-escaper": "*"
             },
             "require-dev": {
-                "laminas/laminas-coding-standard": "~2.3.0",
-                "phpunit/phpunit": "^9.3",
-                "psalm/plugin-phpunit": "^0.12.2",
-                "vimeo/psalm": "^3.16"
-            },
-            "suggest": {
-                "ext-iconv": "*",
-                "ext-mbstring": "*"
+                "infection/infection": "^0.26.6",
+                "laminas/laminas-coding-standard": "~2.4.0",
+                "maglnet/composer-require-checker": "^3.8.0",
+                "phpunit/phpunit": "^9.5.18",
+                "psalm/plugin-phpunit": "^0.17.0",
+                "vimeo/psalm": "^4.22.0"
             },
-            "time": "2021-09-02T17:10:53+00:00",
+            "time": "2022-10-10T10:11:09+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -9572,41 +9569,42 @@
         },
         {
             "name": "laminas/laminas-feed",
-            "version": "2.17.0",
-            "version_normalized": "2.17.0.0",
+            "version": "2.20.0",
+            "version_normalized": "2.20.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laminas/laminas-feed.git",
-                "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0"
+                "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/1ccb024ea615606ed1d676ba0fa3f22a398f3ac0",
-                "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0",
+                "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/508ebef6e622f2f2ce3dd0559739ffd0dfa3b938",
+                "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-libxml": "*",
                 "laminas/laminas-escaper": "^2.9",
+                "laminas/laminas-servicemanager": "^3.14.0",
                 "laminas/laminas-stdlib": "^3.6",
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
             },
             "conflict": {
                 "laminas/laminas-servicemanager": "<3.3",
                 "zendframework/zend-feed": "*"
             },
             "require-dev": {
-                "laminas/laminas-cache": "^2.7.2",
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "laminas/laminas-db": "^2.13.3",
-                "laminas/laminas-http": "^2.15",
-                "laminas/laminas-servicemanager": "^3.7",
-                "laminas/laminas-validator": "^2.15",
-                "phpunit/phpunit": "^9.5.5",
-                "psalm/plugin-phpunit": "^0.13.0",
+                "laminas/laminas-cache": "^2.13.2 || ^3.6",
+                "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.1",
+                "laminas/laminas-coding-standard": "~2.4.0",
+                "laminas/laminas-db": "^2.15",
+                "laminas/laminas-http": "^2.17.0",
+                "laminas/laminas-validator": "^2.26",
+                "phpunit/phpunit": "^9.5.25",
+                "psalm/plugin-phpunit": "^0.18.0",
                 "psr/http-message": "^1.0.1",
-                "vimeo/psalm": "^4.1"
+                "vimeo/psalm": "^5.1.0"
             },
             "suggest": {
                 "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests",
@@ -9616,7 +9614,7 @@
                 "laminas/laminas-validator": "Laminas\\Validator component, for validating email addresses used in Atom feeds and entries when using the Writer subcomponent",
                 "psr/http-message": "PSR-7 ^1.0.1, if you wish to use Laminas\\Feed\\Reader\\Http\\Psr7ResponseDecorator"
             },
-            "time": "2022-03-24T10:26:04+00:00",
+            "time": "2022-12-03T19:40:30+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -9628,11 +9626,13 @@
             "license": [
                 "BSD-3-Clause"
             ],
-            "description": "provides functionality for consuming RSS and Atom feeds",
+            "description": "provides functionality for creating and consuming RSS and Atom feeds",
             "homepage": "https://laminas.dev",
             "keywords": [
+                "atom",
                 "feed",
-                "laminas"
+                "laminas",
+                "rss"
             ],
             "support": {
                 "chat": "https://laminas.dev/chat",
@@ -9650,35 +9650,128 @@
             ],
             "install-path": "../laminas/laminas-feed"
         },
+        {
+            "name": "laminas/laminas-servicemanager",
+            "version": "3.20.0",
+            "version_normalized": "3.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-servicemanager.git",
+                "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/bc2c2cbe2dd90db8b9d16b0618f542692b76ab59",
+                "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59",
+                "shasum": ""
+            },
+            "require": {
+                "laminas/laminas-stdlib": "^3.2.1",
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0",
+                "psr/container": "^1.0"
+            },
+            "conflict": {
+                "ext-psr": "*",
+                "laminas/laminas-code": "<3.3.1",
+                "zendframework/zend-code": "<3.3.1",
+                "zendframework/zend-servicemanager": "*"
+            },
+            "provide": {
+                "psr/container-implementation": "^1.0"
+            },
+            "replace": {
+                "container-interop/container-interop": "^1.2.0"
+            },
+            "require-dev": {
+                "composer/package-versions-deprecated": "^1.11.99.5",
+                "laminas/laminas-coding-standard": "~2.4.0",
+                "laminas/laminas-container-config-test": "^0.8",
+                "laminas/laminas-dependency-plugin": "^2.2",
+                "mikey179/vfsstream": "^1.6.11@alpha",
+                "ocramius/proxy-manager": "^2.14.1",
+                "phpbench/phpbench": "^1.2.7",
+                "phpunit/phpunit": "^9.5.26",
+                "psalm/plugin-phpunit": "^0.18.0",
+                "vimeo/psalm": "^5.0.0"
+            },
+            "suggest": {
+                "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services"
+            },
+            "time": "2022-12-01T17:03:38+00:00",
+            "bin": [
+                "bin/generate-deps-for-config-factory",
+                "bin/generate-factory-for-class"
+            ],
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "src/autoload.php"
+                ],
+                "psr-4": {
+                    "Laminas\\ServiceManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Factory-Driven Dependency Injection Container",
+            "homepage": "https://laminas.dev",
+            "keywords": [
+                "PSR-11",
+                "dependency-injection",
+                "di",
+                "dic",
+                "laminas",
+                "service-manager",
+                "servicemanager"
+            ],
+            "support": {
+                "chat": "https://laminas.dev/chat",
+                "docs": "https://docs.laminas.dev/laminas-servicemanager/",
+                "forum": "https://discourse.laminas.dev",
+                "issues": "https://github.com/laminas/laminas-servicemanager/issues",
+                "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom",
+                "source": "https://github.com/laminas/laminas-servicemanager"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "install-path": "../laminas/laminas-servicemanager"
+        },
         {
             "name": "laminas/laminas-stdlib",
-            "version": "3.11.0",
-            "version_normalized": "3.11.0.0",
+            "version": "3.16.1",
+            "version_normalized": "3.16.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laminas/laminas-stdlib.git",
-                "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f"
+                "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f",
-                "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f",
+                "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/f4f773641807c7ccee59b758bfe4ac4ba33ecb17",
+                "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
             },
             "conflict": {
                 "zendframework/zend-stdlib": "*"
             },
             "require-dev": {
-                "laminas/laminas-coding-standard": "~2.3.0",
-                "phpbench/phpbench": "^1.0",
-                "phpunit/phpunit": "^9.3.7",
-                "psalm/plugin-phpunit": "^0.17.0",
-                "vimeo/psalm": "^4.7"
+                "laminas/laminas-coding-standard": "^2.4.0",
+                "phpbench/phpbench": "^1.2.7",
+                "phpunit/phpunit": "^9.5.26",
+                "psalm/plugin-phpunit": "^0.18.0",
+                "vimeo/psalm": "^5.0.0"
             },
-            "time": "2022-07-27T12:28:58+00:00",
+            "time": "2022-12-03T18:48:01+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index aa1d924fa888868902f5f787a3fc341045d1f4ed..40ca690aca6675fba2906744a41382fdbf4ec3c3 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
         'name' => 'osu-asc-webservices/d8-upstream',
         'pretty_version' => 'dev-master',
         'version' => 'dev-master',
-        'reference' => '79c97ae45ca1ad34bd2936bed3603b906c0222fd',
+        'reference' => 'dd25f899e596d74b913969c7a61d57a38511cb6e',
         'type' => 'project',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -154,6 +154,12 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'container-interop/container-interop' => array(
+            'dev_requirement' => false,
+            'replaced' => array(
+                0 => '^1.2.0',
+            ),
+        ),
         'cweagans/composer-patches' => array(
             'pretty_version' => '1.7.3',
             'version' => '1.7.3.0',
@@ -449,9 +455,9 @@
             'dev_requirement' => false,
         ),
         'drupal/core' => array(
-            'pretty_version' => '9.5.9',
-            'version' => '9.5.9.0',
-            'reference' => 'c3b194f9056a297f6d72e54056c818843cab9aba',
+            'pretty_version' => '9.5.10',
+            'version' => '9.5.10.0',
+            'reference' => 'c84bab7403943fbc4ed90ffcdde4460a94642b06',
             'type' => 'drupal-core',
             'install_path' => __DIR__ . '/../../web/core',
             'aliases' => array(),
@@ -460,25 +466,25 @@
         'drupal/core-annotation' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-assertion' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-bridge' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-class-finder' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-composer-scaffold' => array(
@@ -493,97 +499,97 @@
         'drupal/core-datetime' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-dependency-injection' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-diff' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-discovery' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-event-dispatcher' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-file-cache' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-file-security' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-filesystem' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-front-matter' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-gettext' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-graph' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-http-foundation' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-php-storage' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-plugin' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-proxy-builder' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-recommended' => array(
-            'pretty_version' => '9.5.9',
-            'version' => '9.5.9.0',
-            'reference' => '63865212817ab48815a95c6aaceafcab0b9eabee',
+            'pretty_version' => '9.5.10',
+            'version' => '9.5.10.0',
+            'reference' => 'd149750a704e63b40a7a26afed5ad1517d515fdc',
             'type' => 'metapackage',
             'install_path' => NULL,
             'aliases' => array(),
@@ -592,37 +598,37 @@
         'drupal/core-render' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-serialization' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-transliteration' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-utility' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-uuid' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/core-version' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => '9.5.9',
+                0 => '9.5.10',
             ),
         ),
         'drupal/crop' => array(
@@ -1460,27 +1466,36 @@
             ),
         ),
         'laminas/laminas-escaper' => array(
-            'pretty_version' => '2.9.0',
-            'version' => '2.9.0.0',
-            'reference' => '891ad70986729e20ed2e86355fcf93c9dc238a5f',
+            'pretty_version' => '2.12.0',
+            'version' => '2.12.0.0',
+            'reference' => 'ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490',
             'type' => 'library',
             'install_path' => __DIR__ . '/../laminas/laminas-escaper',
             'aliases' => array(),
             'dev_requirement' => false,
         ),
         'laminas/laminas-feed' => array(
-            'pretty_version' => '2.17.0',
-            'version' => '2.17.0.0',
-            'reference' => '1ccb024ea615606ed1d676ba0fa3f22a398f3ac0',
+            'pretty_version' => '2.20.0',
+            'version' => '2.20.0.0',
+            'reference' => '508ebef6e622f2f2ce3dd0559739ffd0dfa3b938',
             'type' => 'library',
             'install_path' => __DIR__ . '/../laminas/laminas-feed',
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'laminas/laminas-servicemanager' => array(
+            'pretty_version' => '3.20.0',
+            'version' => '3.20.0.0',
+            'reference' => 'bc2c2cbe2dd90db8b9d16b0618f542692b76ab59',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../laminas/laminas-servicemanager',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
         'laminas/laminas-stdlib' => array(
-            'pretty_version' => '3.11.0',
-            'version' => '3.11.0.0',
-            'reference' => 'aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f',
+            'pretty_version' => '3.16.1',
+            'version' => '3.16.1.0',
+            'reference' => 'f4f773641807c7ccee59b758bfe4ac4ba33ecb17',
             'type' => 'library',
             'install_path' => __DIR__ . '/../laminas/laminas-stdlib',
             'aliases' => array(),
@@ -1549,7 +1564,7 @@
         'osu-asc-webservices/d8-upstream' => array(
             'pretty_version' => 'dev-master',
             'version' => 'dev-master',
-            'reference' => '79c97ae45ca1ad34bd2936bed3603b906c0222fd',
+            'reference' => 'dd25f899e596d74b913969c7a61d57a38511cb6e',
             'type' => 'project',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
diff --git a/vendor/laminas/laminas-escaper/.laminas-ci.json b/vendor/laminas/laminas-escaper/.laminas-ci.json
deleted file mode 100644
index bce3fa21bb254ba6f0cbc797dbb45bcc1fc60d15..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-escaper/.laminas-ci.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "ignore_php_platform_requirements": {
-        "8.1": true
-    }
-}
diff --git a/vendor/laminas/laminas-escaper/README.md b/vendor/laminas/laminas-escaper/README.md
index 4f6c184c82240350a11773601baf8c58284273f2..23832082137cac7897b293fc1ae9b5ffb11d5056 100644
--- a/vendor/laminas/laminas-escaper/README.md
+++ b/vendor/laminas/laminas-escaper/README.md
@@ -1,7 +1,22 @@
 # laminas-escaper
 
 [![Build Status](https://github.com/laminas/laminas-escaper/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/laminas/laminas-escaper/actions/workflows/continuous-integration.yml)
-[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-escaper/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-escaper?branch=master)
+
+> ## 🇷🇺 Русским гражданам
+>
+> Мы, участники Laminas, родились и живем в разных странах. У многих из нас есть друзья, родственники и коллеги как в России, так и в Украине. Некоторые из нас родились в России. Некоторые из нас живут в России. У некоторых бабушки и дедушки сражались с фашистами во Второй мировой войне. Здесь никто не поддерживает фашизм.
+>
+> У одного из нас есть украинская родственница, которая спаслась из дома вместе с сыном. Поезд задержался из-за бомбежки на дороге впереди. У нас есть друзья, которые прячутся в бомбоубежищах. Мы с тревогой ждем весточки от них после воздушных налетов, которые беспорядочно наносят удары и попадают по больницам, школам, детским садам и домам. Мы не берем это из каких-либо СМИ. Мы наблюдаем это напрямую.
+>
+> Вы доверяете нам достаточно, чтоб использовать наши программы, и мы просим вас довериться нам вновь. Мы нуждаемся в помощи. Выходите и протестуйте против этой бесполезной войны. Остановите кровопролитие. Скажите "Нет войне!"
+>
+> ## 🇺🇸 To Citizens of Russia
+>
+> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism.
+>
+> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences.
+>
+> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!"
 
 The OWASP Top 10 web security risks study lists Cross-Site Scripting (XSS) in
 second place. PHP’s sole functionality against XSS is limited to two functions
diff --git a/vendor/laminas/laminas-escaper/composer.json b/vendor/laminas/laminas-escaper/composer.json
index 92515dc7c1946ec7f39d4a4b0021332b17fd0d6e..75c503fe09cdfb3ee9a8b17409abc31cc1a1b679 100644
--- a/vendor/laminas/laminas-escaper/composer.json
+++ b/vendor/laminas/laminas-escaper/composer.json
@@ -16,22 +16,30 @@
         "forum": "https://discourse.laminas.dev"
     },
     "config": {
-        "sort-packages": true
+        "sort-packages": true,
+        "platform": {
+            "php": "7.4.99"
+        },
+        "allow-plugins": {
+            "dealerdirect/phpcodesniffer-composer-installer": true,
+            "composer/package-versions-deprecated": true,
+            "infection/extension-installer": true
+        }
     },
     "extra": {
     },
     "require": {
-        "php": "^7.3 || ~8.0.0 || ~8.1.0"
-    },
-    "suggest": {
-        "ext-iconv": "*",
+        "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0",
+        "ext-ctype": "*",
         "ext-mbstring": "*"
     },
     "require-dev": {
-        "laminas/laminas-coding-standard": "~2.3.0",
-        "phpunit/phpunit": "^9.3",
-        "psalm/plugin-phpunit": "^0.12.2",
-        "vimeo/psalm": "^3.16"
+        "infection/infection": "^0.26.6",
+        "laminas/laminas-coding-standard": "~2.4.0",
+        "maglnet/composer-require-checker": "^3.8.0",
+        "phpunit/phpunit": "^9.5.18",
+        "psalm/plugin-phpunit": "^0.17.0",
+        "vimeo/psalm": "^4.22.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/vendor/laminas/laminas-escaper/composer.lock b/vendor/laminas/laminas-escaper/composer.lock
deleted file mode 100644
index b4228586b76e7be9470b625892292c967af43c83..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-escaper/composer.lock
+++ /dev/null
@@ -1,4170 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
-        "This file is @generated automatically"
-    ],
-    "content-hash": "5c54f272d6c88f5ee83f3aaa6a9ed107",
-    "packages": [],
-    "packages-dev": [
-        {
-            "name": "amphp/amp",
-            "version": "v2.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/amp.git",
-                "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/amp/zipball/caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
-                "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1",
-                "ext-json": "*",
-                "jetbrains/phpstorm-stubs": "^2019.3",
-                "phpunit/phpunit": "^7 | ^8 | ^9",
-                "psalm/phar": "^3.11@dev",
-                "react/promise": "^2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Amp\\": "lib"
-                },
-                "files": [
-                    "lib/functions.php",
-                    "lib/Internal/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Daniel Lowrey",
-                    "email": "rdlowrey@php.net"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Bob Weinand",
-                    "email": "bobwei9@hotmail.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "A non-blocking concurrency framework for PHP applications.",
-            "homepage": "http://amphp.org/amp",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "awaitable",
-                "concurrency",
-                "event",
-                "event-loop",
-                "future",
-                "non-blocking",
-                "promise"
-            ],
-            "support": {
-                "irc": "irc://irc.freenode.org/amphp",
-                "issues": "https://github.com/amphp/amp/issues",
-                "source": "https://github.com/amphp/amp/tree/v2.6.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-07-16T20:06:06+00:00"
-        },
-        {
-            "name": "amphp/byte-stream",
-            "version": "v1.8.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/byte-stream.git",
-                "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
-                "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2",
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1.4",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "jetbrains/phpstorm-stubs": "^2019.3",
-                "phpunit/phpunit": "^6 || ^7 || ^8",
-                "psalm/phar": "^3.11.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Amp\\ByteStream\\": "lib"
-                },
-                "files": [
-                    "lib/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "A stream abstraction to make working with non-blocking I/O simple.",
-            "homepage": "http://amphp.org/byte-stream",
-            "keywords": [
-                "amp",
-                "amphp",
-                "async",
-                "io",
-                "non-blocking",
-                "stream"
-            ],
-            "support": {
-                "irc": "irc://irc.freenode.org/amphp",
-                "issues": "https://github.com/amphp/byte-stream/issues",
-                "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-03-30T17:13:30+00:00"
-        },
-        {
-            "name": "composer/package-versions-deprecated",
-            "version": "1.11.99.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/package-versions-deprecated.git",
-                "reference": "fff576ac850c045158a250e7e27666e146e78d18"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/fff576ac850c045158a250e7e27666e146e78d18",
-                "reference": "fff576ac850c045158a250e7e27666e146e78d18",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.1.0 || ^2.0",
-                "php": "^7 || ^8"
-            },
-            "replace": {
-                "ocramius/package-versions": "1.11.99"
-            },
-            "require-dev": {
-                "composer/composer": "^1.9.3 || ^2.0@dev",
-                "ext-zip": "^1.13",
-                "phpunit/phpunit": "^6.5 || ^7"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "PackageVersions\\Installer",
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PackageVersions\\": "src/PackageVersions"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
-            "support": {
-                "issues": "https://github.com/composer/package-versions-deprecated/issues",
-                "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.3"
-            },
-            "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"
-                }
-            ],
-            "time": "2021-08-17T13:49:14+00:00"
-        },
-        {
-            "name": "composer/semver",
-            "version": "3.2.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/semver.git",
-                "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9",
-                "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0 || ^8.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^0.12.54",
-                "symfony/phpunit-bridge": "^4.2 || ^5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.x-dev"
-                }
-            },
-            "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": "irc://irc.freenode.org/composer",
-                "issues": "https://github.com/composer/semver/issues",
-                "source": "https://github.com/composer/semver/tree/3.2.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"
-                }
-            ],
-            "time": "2021-05-24T12:41:47+00:00"
-        },
-        {
-            "name": "composer/xdebug-handler",
-            "version": "1.4.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "f27e06cd9675801df441b3656569b328e04aa37c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c",
-                "reference": "f27e06cd9675801df441b3656569b328e04aa37c",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0 || ^8.0",
-                "psr/log": "^1.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^0.12.55",
-                "symfony/phpunit-bridge": "^4.2 || ^5"
-            },
-            "type": "library",
-            "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": "irc://irc.freenode.org/composer",
-                "issues": "https://github.com/composer/xdebug-handler/issues",
-                "source": "https://github.com/composer/xdebug-handler/tree/1.4.6"
-            },
-            "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"
-                }
-            ],
-            "time": "2021-03-25T17:01:18+00:00"
-        },
-        {
-            "name": "dealerdirect/phpcodesniffer-composer-installer",
-            "version": "v0.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
-                "reference": "fe390591e0241955f22eb9ba327d137e501c771c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c",
-                "reference": "fe390591e0241955f22eb9ba327d137e501c771c",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.0 || ^2.0",
-                "php": ">=5.3",
-                "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "composer/composer": "*",
-                "phpcompatibility/php-compatibility": "^9.0",
-                "sensiolabs/security-checker": "^4.1.0"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
-            },
-            "autoload": {
-                "psr-4": {
-                    "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Franck Nijhof",
-                    "email": "franck.nijhof@dealerdirect.com",
-                    "homepage": "http://www.frenck.nl",
-                    "role": "Developer / IT Manager"
-                }
-            ],
-            "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
-            "homepage": "http://www.dealerdirect.com",
-            "keywords": [
-                "PHPCodeSniffer",
-                "PHP_CodeSniffer",
-                "code quality",
-                "codesniffer",
-                "composer",
-                "installer",
-                "phpcs",
-                "plugin",
-                "qa",
-                "quality",
-                "standard",
-                "standards",
-                "style guide",
-                "stylecheck",
-                "tests"
-            ],
-            "support": {
-                "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
-                "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
-            },
-            "time": "2020-12-07T18:04:37+00:00"
-        },
-        {
-            "name": "dnoegel/php-xdg-base-dir",
-            "version": "v0.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
-                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
-                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "XdgBaseDir\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "implementation of xdg base directory specification for php",
-            "support": {
-                "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
-                "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
-            },
-            "time": "2019-12-04T15:06:13+00:00"
-        },
-        {
-            "name": "doctrine/instantiator",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
-                "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "^8.0",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
-                "phpstan/phpstan": "^0.12",
-                "phpstan/phpstan-phpunit": "^0.12",
-                "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
-            },
-            "type": "library",
-            "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.4.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"
-                }
-            ],
-            "time": "2020-11-10T18:47:58+00:00"
-        },
-        {
-            "name": "felixfbecker/advanced-json-rpc",
-            "version": "v3.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
-                "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
-                "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
-                "shasum": ""
-            },
-            "require": {
-                "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
-                "php": "^7.1 || ^8.0",
-                "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^7.0 || ^8.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "AdvancedJsonRpc\\": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "ISC"
-            ],
-            "authors": [
-                {
-                    "name": "Felix Becker",
-                    "email": "felix.b@outlook.com"
-                }
-            ],
-            "description": "A more advanced JSONRPC implementation",
-            "support": {
-                "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
-                "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
-            },
-            "time": "2021-06-11T22:34:44+00:00"
-        },
-        {
-            "name": "felixfbecker/language-server-protocol",
-            "version": "1.5.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
-                "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
-                "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "*",
-                "squizlabs/php_codesniffer": "^3.1",
-                "vimeo/psalm": "^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "LanguageServerProtocol\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "ISC"
-            ],
-            "authors": [
-                {
-                    "name": "Felix Becker",
-                    "email": "felix.b@outlook.com"
-                }
-            ],
-            "description": "PHP classes for the Language Server Protocol",
-            "keywords": [
-                "language",
-                "microsoft",
-                "php",
-                "server"
-            ],
-            "support": {
-                "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
-                "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1"
-            },
-            "time": "2021-02-22T14:02:09+00:00"
-        },
-        {
-            "name": "laminas/laminas-coding-standard",
-            "version": "2.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-coding-standard.git",
-                "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/bcf6e07fe4690240be7beb6d884d0b0fafa6a251",
-                "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251",
-                "shasum": ""
-            },
-            "require": {
-                "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
-                "php": "^7.3 || ^8.0",
-                "slevomat/coding-standard": "^7.0",
-                "squizlabs/php_codesniffer": "^3.6",
-                "webimpress/coding-standard": "^1.2"
-            },
-            "type": "phpcodesniffer-standard",
-            "autoload": {
-                "psr-4": {
-                    "LaminasCodingStandard\\": "src/LaminasCodingStandard/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas Coding Standard",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "Coding Standard",
-                "laminas"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-coding-standard/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-coding-standard/issues",
-                "rss": "https://github.com/laminas/laminas-coding-standard/releases.atom",
-                "source": "https://github.com/laminas/laminas-coding-standard"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-05-29T15:53:59+00:00"
-        },
-        {
-            "name": "myclabs/deep-copy",
-            "version": "1.10.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
-                "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "replace": {
-                "myclabs/deep-copy": "self.version"
-            },
-            "require-dev": {
-                "doctrine/collections": "^1.0",
-                "doctrine/common": "^2.6",
-                "phpunit/phpunit": "^7.1"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "DeepCopy\\": "src/DeepCopy/"
-                },
-                "files": [
-                    "src/DeepCopy/deep_copy.php"
-                ]
-            },
-            "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.10.2"
-            },
-            "funding": [
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2020-11-13T09:40:50+00:00"
-        },
-        {
-            "name": "netresearch/jsonmapper",
-            "version": "v3.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/cweiske/jsonmapper.git",
-                "reference": "ba09f0e456d4f00cef84e012da5715625594407c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/ba09f0e456d4f00cef84e012da5715625594407c",
-                "reference": "ba09f0e456d4f00cef84e012da5715625594407c",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "ext-pcre": "*",
-                "ext-reflection": "*",
-                "ext-spl": "*",
-                "php": ">=5.6"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.8.35 || ~5.7 || ~6.4 || ~7.0",
-                "squizlabs/php_codesniffer": "~3.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "JsonMapper": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "OSL-3.0"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Weiske",
-                    "email": "cweiske@cweiske.de",
-                    "homepage": "http://github.com/cweiske/jsonmapper/",
-                    "role": "Developer"
-                }
-            ],
-            "description": "Map nested JSON structures onto PHP classes",
-            "support": {
-                "email": "cweiske@cweiske.de",
-                "issues": "https://github.com/cweiske/jsonmapper/issues",
-                "source": "https://github.com/cweiske/jsonmapper/tree/v3.1.1"
-            },
-            "time": "2020-11-02T19:19:54+00:00"
-        },
-        {
-            "name": "nikic/php-parser",
-            "version": "v4.12.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "6608f01670c3cc5079e18c1dab1104e002579143"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143",
-                "reference": "6608f01670c3cc5079e18c1dab1104e002579143",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=7.0"
-            },
-            "require-dev": {
-                "ircmaxell/php-yacc": "^0.0.7",
-                "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
-            },
-            "bin": [
-                "bin/php-parse"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.9-dev"
-                }
-            },
-            "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.12.0"
-            },
-            "time": "2021-07-21T10:44:31+00:00"
-        },
-        {
-            "name": "openlss/lib-array2xml",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nullivex/lib-array2xml.git",
-                "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
-                "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "LSS": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "Apache-2.0"
-            ],
-            "authors": [
-                {
-                    "name": "Bryan Tong",
-                    "email": "bryan@nullivex.com",
-                    "homepage": "https://www.nullivex.com"
-                },
-                {
-                    "name": "Tony Butler",
-                    "email": "spudz76@gmail.com",
-                    "homepage": "https://www.nullivex.com"
-                }
-            ],
-            "description": "Array2XML conversion library credit to lalit.org",
-            "homepage": "https://www.nullivex.com",
-            "keywords": [
-                "array",
-                "array conversion",
-                "xml",
-                "xml conversion"
-            ],
-            "support": {
-                "issues": "https://github.com/nullivex/lib-array2xml/issues",
-                "source": "https://github.com/nullivex/lib-array2xml/tree/master"
-            },
-            "time": "2019-03-29T20:06:56+00:00"
-        },
-        {
-            "name": "phar-io/manifest",
-            "version": "2.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/manifest.git",
-                "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
-                "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-phar": "*",
-                "ext-xmlwriter": "*",
-                "phar-io/version": "^3.0.1",
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "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.3"
-            },
-            "time": "2021-07-20T11:28:43+00:00"
-        },
-        {
-            "name": "phar-io/version",
-            "version": "3.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/version.git",
-                "reference": "bae7c545bef187884426f042434e561ab1ddb182"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
-                "reference": "bae7c545bef187884426f042434e561ab1ddb182",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "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.1.0"
-            },
-            "time": "2021-02-23T14:00:09+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-common",
-            "version": "2.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
-                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-2.x": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "opensource@ijaap.nl"
-                }
-            ],
-            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
-            "homepage": "http://www.phpdoc.org",
-            "keywords": [
-                "FQSEN",
-                "phpDocumentor",
-                "phpdoc",
-                "reflection",
-                "static analysis"
-            ],
-            "support": {
-                "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
-            },
-            "time": "2020-06-27T09:03:43+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "5.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
-                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
-                "shasum": ""
-            },
-            "require": {
-                "ext-filter": "*",
-                "php": "^7.2 || ^8.0",
-                "phpdocumentor/reflection-common": "^2.2",
-                "phpdocumentor/type-resolver": "^1.3",
-                "webmozart/assert": "^1.9.1"
-            },
-            "require-dev": {
-                "mockery/mockery": "~1.3.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                },
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "account@ijaap.nl"
-                }
-            ],
-            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
-            "support": {
-                "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
-            },
-            "time": "2020-09-03T19:13:55+00:00"
-        },
-        {
-            "name": "phpdocumentor/type-resolver",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
-                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0",
-                "phpdocumentor/reflection-common": "^2.0"
-            },
-            "require-dev": {
-                "ext-tokenizer": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-1.x": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                }
-            ],
-            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
-            "support": {
-                "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
-            },
-            "time": "2020-09-17T18:55:26+00:00"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "1.13.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
-                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.2",
-                "php": "^7.2 || ~8.0, <8.1",
-                "phpdocumentor/reflection-docblock": "^5.2",
-                "sebastian/comparator": "^3.0 || ^4.0",
-                "sebastian/recursion-context": "^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "phpspec/phpspec": "^6.0",
-                "phpunit/phpunit": "^8.0 || ^9.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.11.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Prophecy\\": "src/Prophecy"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
-                },
-                {
-                    "name": "Marcello Duarte",
-                    "email": "marcello.duarte@gmail.com"
-                }
-            ],
-            "description": "Highly opinionated mocking framework for PHP 5.3+",
-            "homepage": "https://github.com/phpspec/prophecy",
-            "keywords": [
-                "Double",
-                "Dummy",
-                "fake",
-                "mock",
-                "spy",
-                "stub"
-            ],
-            "support": {
-                "issues": "https://github.com/phpspec/prophecy/issues",
-                "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
-            },
-            "time": "2021-03-17T13:42:18+00:00"
-        },
-        {
-            "name": "phpstan/phpdoc-parser",
-            "version": "0.5.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpstan/phpdoc-parser.git",
-                "reference": "ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c",
-                "reference": "ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "php-parallel-lint/php-parallel-lint": "^1.2",
-                "phpstan/extension-installer": "^1.0",
-                "phpstan/phpstan": "^0.12.87",
-                "phpstan/phpstan-strict-rules": "^0.12.5",
-                "phpunit/phpunit": "^9.5",
-                "symfony/process": "^5.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "0.5-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PHPStan\\PhpDocParser\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "PHPDoc parser with support for nullable, intersection and generic types",
-            "support": {
-                "issues": "https://github.com/phpstan/phpdoc-parser/issues",
-                "source": "https://github.com/phpstan/phpdoc-parser/tree/0.5.5"
-            },
-            "time": "2021-06-11T13:24:46+00:00"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "9.2.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "f6293e1b30a2354e8428e004689671b83871edde"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
-                "reference": "f6293e1b30a2354e8428e004689671b83871edde",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-libxml": "*",
-                "ext-xmlwriter": "*",
-                "nikic/php-parser": "^4.10.2",
-                "php": ">=7.3",
-                "phpunit/php-file-iterator": "^3.0.3",
-                "phpunit/php-text-template": "^2.0.2",
-                "sebastian/code-unit-reverse-lookup": "^2.0.2",
-                "sebastian/complexity": "^2.0",
-                "sebastian/environment": "^5.1.2",
-                "sebastian/lines-of-code": "^1.0.3",
-                "sebastian/version": "^3.0.1",
-                "theseer/tokenizer": "^1.2.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-pcov": "*",
-                "ext-xdebug": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "9.2-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-03-28T07:26:59+00:00"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "3.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
-                "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:57:25+00:00"
-        },
-        {
-            "name": "phpunit/php-invoker",
-            "version": "3.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-invoker.git",
-                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
-                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "ext-pcntl": "*",
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-pcntl": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "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/3.1.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:58:55+00:00"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
-                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T05:33:50+00:00"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "5.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
-                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0-dev"
-                }
-            },
-            "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/5.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:16:10+00:00"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "9.5.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
-                "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.3.1",
-                "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": ">=7.3",
-                "phpspec/prophecy": "^1.12.1",
-                "phpunit/php-code-coverage": "^9.2.3",
-                "phpunit/php-file-iterator": "^3.0.5",
-                "phpunit/php-invoker": "^3.1.1",
-                "phpunit/php-text-template": "^2.0.3",
-                "phpunit/php-timer": "^5.0.2",
-                "sebastian/cli-parser": "^1.0.1",
-                "sebastian/code-unit": "^1.0.6",
-                "sebastian/comparator": "^4.0.5",
-                "sebastian/diff": "^4.0.3",
-                "sebastian/environment": "^5.1.3",
-                "sebastian/exporter": "^4.0.3",
-                "sebastian/global-state": "^5.0.1",
-                "sebastian/object-enumerator": "^4.0.3",
-                "sebastian/resource-operations": "^3.0.3",
-                "sebastian/type": "^2.3.4",
-                "sebastian/version": "^3.0.2"
-            },
-            "require-dev": {
-                "ext-pdo": "*",
-                "phpspec/prophecy-phpunit": "^2.0.1"
-            },
-            "suggest": {
-                "ext-soap": "*",
-                "ext-xdebug": "*"
-            },
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "9.5-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ],
-                "files": [
-                    "src/Framework/Assert/Functions.php"
-                ]
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9"
-            },
-            "funding": [
-                {
-                    "url": "https://phpunit.de/donate.html",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-08-31T06:47:40+00:00"
-        },
-        {
-            "name": "psalm/plugin-phpunit",
-            "version": "0.12.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
-                "reference": "85ee5a080a5281e63085d933b30a06b1b1680758"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/85ee5a080a5281e63085d933b30a06b1b1680758",
-                "reference": "85ee5a080a5281e63085d933b30a06b1b1680758",
-                "shasum": ""
-            },
-            "require": {
-                "composer/package-versions-deprecated": "^1.10",
-                "composer/semver": "^1.4 || ^2.0 || ^3.0",
-                "ext-simplexml": "*",
-                "php": "^7.1.3 || ^8.0",
-                "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
-                "vimeo/psalm": "^3.6.2 || dev-master || dev-4.x"
-            },
-            "require-dev": {
-                "codeception/codeception": "^4.0.3",
-                "squizlabs/php_codesniffer": "^3.3.1",
-                "weirdan/codeception-psalm-module": "^0.7.1",
-                "weirdan/prophecy-shim": "^1.0 || ^2.0"
-            },
-            "type": "psalm-plugin",
-            "extra": {
-                "psalm": {
-                    "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psalm\\PhpUnitPlugin\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Matt Brown",
-                    "email": "github@muglug.com"
-                }
-            ],
-            "description": "Psalm plugin for PHPUnit",
-            "support": {
-                "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
-                "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.12.2"
-            },
-            "time": "2020-09-28T17:25:39+00:00"
-        },
-        {
-            "name": "psr/container",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/container.git",
-                "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
-                "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.0"
-            },
-            "type": "library",
-            "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/1.1.1"
-            },
-            "time": "2021-03-05T17:36:06+00:00"
-        },
-        {
-            "name": "psr/log",
-            "version": "1.1.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
-                }
-            },
-            "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/1.1.4"
-            },
-            "time": "2021-05-03T11:20:27+00:00"
-        },
-        {
-            "name": "sebastian/cli-parser",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/cli-parser.git",
-                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
-                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T06:08:49+00:00"
-        },
-        {
-            "name": "sebastian/code-unit",
-            "version": "1.0.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/code-unit.git",
-                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
-                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "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/1.0.8"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:08:54+00:00"
-        },
-        {
-            "name": "sebastian/code-unit-reverse-lookup",
-            "version": "2.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
-                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
-                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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/2.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:30:19+00:00"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "4.0.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/diff": "^4.0",
-                "sebastian/exporter": "^4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T15:49:45+00:00"
-        },
-        {
-            "name": "sebastian/complexity",
-            "version": "2.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/complexity.git",
-                "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
-                "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^4.7",
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T15:52:27+00:00"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "4.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
-                "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3",
-                "symfony/process": "^4.2 || ^5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:10:38+00:00"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "5.1.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
-                "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-posix": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.1-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/environment/issues",
-                "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:52:38+00:00"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "4.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
-                "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/recursion-context": "^4.0"
-            },
-            "require-dev": {
-                "ext-mbstring": "*",
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/exporter/issues",
-                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:24:23+00:00"
-        },
-        {
-            "name": "sebastian/global-state",
-            "version": "5.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
-                "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/object-reflector": "^2.0",
-                "sebastian/recursion-context": "^4.0"
-            },
-            "require-dev": {
-                "ext-dom": "*",
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-uopz": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/global-state",
-            "keywords": [
-                "global state"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/global-state/issues",
-                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-06-11T13:31:12+00:00"
-        },
-        {
-            "name": "sebastian/lines-of-code",
-            "version": "1.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/lines-of-code.git",
-                "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
-                "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^4.6",
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-11-28T06:42:11+00:00"
-        },
-        {
-            "name": "sebastian/object-enumerator",
-            "version": "4.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
-                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
-                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/object-reflector": "^2.0",
-                "sebastian/recursion-context": "^4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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/4.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:12:34+00:00"
-        },
-        {
-            "name": "sebastian/object-reflector",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-reflector.git",
-                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
-                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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/2.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:14:26+00:00"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "4.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
-                "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/recursion-context",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
-                "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:17:30+00:00"
-        },
-        {
-            "name": "sebastian/resource-operations",
-            "version": "3.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/resource-operations.git",
-                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
-                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides a list of PHP built-in functions that operate on resources",
-            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
-                "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T06:45:17+00:00"
-        },
-        {
-            "name": "sebastian/type",
-            "version": "2.3.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/type.git",
-                "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
-                "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "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/2.3.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-06-15T12:49:02+00:00"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "3.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "c6c1022351a901512170118436c764e473f6de8c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
-                "reference": "c6c1022351a901512170118436c764e473f6de8c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "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/3.0.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T06:39:44+00:00"
-        },
-        {
-            "name": "slevomat/coding-standard",
-            "version": "7.0.14",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/slevomat/coding-standard.git",
-                "reference": "15b2b4630c148775debea8e412bc7e128d9868a3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/15b2b4630c148775debea8e412bc7e128d9868a3",
-                "reference": "15b2b4630c148775debea8e412bc7e128d9868a3",
-                "shasum": ""
-            },
-            "require": {
-                "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
-                "php": "^7.1 || ^8.0",
-                "phpstan/phpdoc-parser": "0.5.1 - 0.5.5",
-                "squizlabs/php_codesniffer": "^3.6.0"
-            },
-            "require-dev": {
-                "phing/phing": "2.16.4",
-                "php-parallel-lint/php-parallel-lint": "1.3.1",
-                "phpstan/phpstan": "0.12.96",
-                "phpstan/phpstan-deprecation-rules": "0.12.6",
-                "phpstan/phpstan-phpunit": "0.12.22",
-                "phpstan/phpstan-strict-rules": "0.12.11",
-                "phpunit/phpunit": "7.5.20|8.5.5|9.5.8"
-            },
-            "type": "phpcodesniffer-standard",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "7.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "SlevomatCodingStandard\\": "SlevomatCodingStandard"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
-            "support": {
-                "issues": "https://github.com/slevomat/coding-standard/issues",
-                "source": "https://github.com/slevomat/coding-standard/tree/7.0.14"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/kukulich",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-08-26T12:17:56+00:00"
-        },
-        {
-            "name": "squizlabs/php_codesniffer",
-            "version": "3.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
-                "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
-                "shasum": ""
-            },
-            "require": {
-                "ext-simplexml": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": ">=5.4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
-            },
-            "bin": [
-                "bin/phpcs",
-                "bin/phpcbf"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.x-dev"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Greg Sherwood",
-                    "role": "lead"
-                }
-            ],
-            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
-            "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
-            "keywords": [
-                "phpcs",
-                "standards"
-            ],
-            "support": {
-                "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
-                "source": "https://github.com/squizlabs/PHP_CodeSniffer",
-                "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
-            },
-            "time": "2021-04-09T00:54:41+00:00"
-        },
-        {
-            "name": "symfony/console",
-            "version": "v5.3.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/console.git",
-                "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a",
-                "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/deprecation-contracts": "^2.1",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php73": "^1.8",
-                "symfony/polyfill-php80": "^1.16",
-                "symfony/service-contracts": "^1.1|^2",
-                "symfony/string": "^5.1"
-            },
-            "conflict": {
-                "psr/log": ">=3",
-                "symfony/dependency-injection": "<4.4",
-                "symfony/dotenv": "<5.1",
-                "symfony/event-dispatcher": "<4.4",
-                "symfony/lock": "<4.4",
-                "symfony/process": "<4.4"
-            },
-            "provide": {
-                "psr/log-implementation": "1.0|2.0"
-            },
-            "require-dev": {
-                "psr/log": "^1|^2",
-                "symfony/config": "^4.4|^5.0",
-                "symfony/dependency-injection": "^4.4|^5.0",
-                "symfony/event-dispatcher": "^4.4|^5.0",
-                "symfony/lock": "^4.4|^5.0",
-                "symfony/process": "^4.4|^5.0",
-                "symfony/var-dumper": "^4.4|^5.0"
-            },
-            "suggest": {
-                "psr/log": "For using the console logger",
-                "symfony/event-dispatcher": "",
-                "symfony/lock": "",
-                "symfony/process": ""
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Console\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Eases the creation of beautiful and testable command line interfaces",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "cli",
-                "command line",
-                "console",
-                "terminal"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/console/tree/v5.3.7"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-08-25T20:02:16+00:00"
-        },
-        {
-            "name": "symfony/deprecation-contracts",
-            "version": "v2.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
-                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "A generic function and convention to trigger deprecation notices",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-03-23T23:28:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
-                "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-ctype": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "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.23.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-02-19T12:13:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-grapheme",
-            "version": "v1.23.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
-                "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
-                "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
-                },
-                "files": [
-                    "bootstrap.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": "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.23.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-05-27T12:26:48+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
-                "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ],
-                "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.23.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-02-19T12:13:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.23.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
-                "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
-                },
-                "files": [
-                    "bootstrap.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": "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.23.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-05-27T12:26:48+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php73",
-            "version": "v1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
-                "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php73\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ],
-                "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 7.3+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-02-19T12:13:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php80",
-            "version": "v1.23.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
-                "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php80\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ],
-                "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.23.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-07-28T13:41:28+00:00"
-        },
-        {
-            "name": "symfony/service-contracts",
-            "version": "v2.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
-                "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "psr/container": "^1.1"
-            },
-            "suggest": {
-                "symfony/service-implementation": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Contracts\\Service\\": ""
-                }
-            },
-            "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/v2.4.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-04-01T10:43:52+00:00"
-        },
-        {
-            "name": "symfony/string",
-            "version": "v5.3.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/string.git",
-                "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5",
-                "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-intl-grapheme": "~1.0",
-                "symfony/polyfill-intl-normalizer": "~1.0",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php80": "~1.15"
-            },
-            "require-dev": {
-                "symfony/error-handler": "^4.4|^5.0",
-                "symfony/http-client": "^4.4|^5.0",
-                "symfony/translation-contracts": "^1.1|^2",
-                "symfony/var-exporter": "^4.4|^5.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\String\\": ""
-                },
-                "files": [
-                    "Resources/functions.php"
-                ],
-                "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/v5.3.7"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-08-26T08:00:08+00:00"
-        },
-        {
-            "name": "theseer/tokenizer",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
-                "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "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.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/theseer",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-07-28T10:34:58+00:00"
-        },
-        {
-            "name": "vimeo/psalm",
-            "version": "3.18.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/vimeo/psalm.git",
-                "reference": "19aa905f7c3c7350569999a93c40ae91ae4e1626"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/vimeo/psalm/zipball/19aa905f7c3c7350569999a93c40ae91ae4e1626",
-                "reference": "19aa905f7c3c7350569999a93c40ae91ae4e1626",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2.1",
-                "amphp/byte-stream": "^1.5",
-                "composer/package-versions-deprecated": "^1.8.0",
-                "composer/semver": "^1.4 || ^2.0 || ^3.0",
-                "composer/xdebug-handler": "^1.1",
-                "dnoegel/php-xdg-base-dir": "^0.1.1",
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-libxml": "*",
-                "ext-mbstring": "*",
-                "ext-simplexml": "*",
-                "ext-tokenizer": "*",
-                "felixfbecker/advanced-json-rpc": "^3.0.3",
-                "felixfbecker/language-server-protocol": "^1.4",
-                "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0",
-                "nikic/php-parser": "4.3.* || 4.4.* || 4.5.* || 4.6.* || ^4.8",
-                "openlss/lib-array2xml": "^1.0",
-                "php": "^7.1.3|^8",
-                "sebastian/diff": "^3.0 || ^4.0",
-                "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
-                "webmozart/glob": "^4.1",
-                "webmozart/path-util": "^2.3"
-            },
-            "provide": {
-                "psalm/psalm": "self.version"
-            },
-            "require-dev": {
-                "amphp/amp": "^2.4.2",
-                "bamarni/composer-bin-plugin": "^1.2",
-                "brianium/paratest": "^4.0.0",
-                "ext-curl": "*",
-                "phpdocumentor/reflection-docblock": "^4.3.4 || ^5",
-                "phpmyadmin/sql-parser": "5.1.0",
-                "phpspec/prophecy": ">=1.9.0",
-                "phpunit/phpunit": "^7.5.16 || ^8.5 || ^9.0",
-                "psalm/plugin-phpunit": "^0.11",
-                "slevomat/coding-standard": "^5.0",
-                "squizlabs/php_codesniffer": "^3.5",
-                "symfony/process": "^4.3",
-                "weirdan/prophecy-shim": "^1.0 || ^2.0"
-            },
-            "suggest": {
-                "ext-igbinary": "^2.0.5"
-            },
-            "bin": [
-                "psalm",
-                "psalm-language-server",
-                "psalm-plugin",
-                "psalm-refactor",
-                "psalter"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.x-dev",
-                    "dev-2.x": "2.x-dev",
-                    "dev-1.x": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psalm\\": "src/Psalm/"
-                },
-                "files": [
-                    "src/functions.php",
-                    "src/spl_object_id.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Matthew Brown"
-                }
-            ],
-            "description": "A static analysis tool for finding errors in PHP applications",
-            "keywords": [
-                "code",
-                "inspection",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/vimeo/psalm/issues",
-                "source": "https://github.com/vimeo/psalm/tree/3.18.2"
-            },
-            "time": "2020-10-20T13:48:22+00:00"
-        },
-        {
-            "name": "webimpress/coding-standard",
-            "version": "1.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webimpress/coding-standard.git",
-                "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/8f4a220de33f471a8101836f7ec72b852c3f9f03",
-                "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ^8.0",
-                "squizlabs/php_codesniffer": "^3.6"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.5.4"
-            },
-            "type": "phpcodesniffer-standard",
-            "extra": {
-                "dev-master": "1.2.x-dev",
-                "dev-develop": "1.3.x-dev"
-            },
-            "autoload": {
-                "psr-4": {
-                    "WebimpressCodingStandard\\": "src/WebimpressCodingStandard/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "description": "Webimpress Coding Standard",
-            "keywords": [
-                "Coding Standard",
-                "PSR-2",
-                "phpcs",
-                "psr-12",
-                "webimpress"
-            ],
-            "support": {
-                "issues": "https://github.com/webimpress/coding-standard/issues",
-                "source": "https://github.com/webimpress/coding-standard/tree/1.2.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/michalbundyra",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-04-12T12:51:27+00:00"
-        },
-        {
-            "name": "webmozart/assert",
-            "version": "1.9.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozarts/assert.git",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.3 || ^7.0 || ^8.0",
-                "symfony/polyfill-ctype": "^1.8"
-            },
-            "conflict": {
-                "phpstan/phpstan": "<0.12.20",
-                "vimeo/psalm": "<3.9.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\Assert\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "Assertions to validate method input/output with nice error messages.",
-            "keywords": [
-                "assert",
-                "check",
-                "validate"
-            ],
-            "support": {
-                "issues": "https://github.com/webmozarts/assert/issues",
-                "source": "https://github.com/webmozarts/assert/tree/1.9.1"
-            },
-            "time": "2020-07-08T17:02:28+00:00"
-        },
-        {
-            "name": "webmozart/glob",
-            "version": "4.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozarts/glob.git",
-                "reference": "06358fafde0f32edb4513f4fd88fe113a40c90ee"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozarts/glob/zipball/06358fafde0f32edb4513f4fd88fe113a40c90ee",
-                "reference": "06358fafde0f32edb4513f4fd88fe113a40c90ee",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ^8.0.0",
-                "webmozart/path-util": "^2.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^8.0",
-                "symfony/filesystem": "^5.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.1-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\Glob\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "A PHP implementation of Ant's glob.",
-            "support": {
-                "issues": "https://github.com/webmozarts/glob/issues",
-                "source": "https://github.com/webmozarts/glob/tree/4.3.0"
-            },
-            "time": "2021-01-21T06:17:15+00:00"
-        },
-        {
-            "name": "webmozart/path-util",
-            "version": "2.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozart/path-util.git",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "webmozart/assert": "~1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\PathUtil\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
-            "support": {
-                "issues": "https://github.com/webmozart/path-util/issues",
-                "source": "https://github.com/webmozart/path-util/tree/2.3.0"
-            },
-            "time": "2015-12-17T08:42:14+00:00"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": [],
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {
-        "php": "^7.3 || ~8.0.0 || ~8.1.0"
-    },
-    "platform-dev": [],
-    "plugin-api-version": "2.0.0"
-}
diff --git a/vendor/laminas/laminas-escaper/phpcs.xml.dist b/vendor/laminas/laminas-escaper/phpcs.xml.dist
deleted file mode 100644
index 7f391d80a49f6ce4d2e0e73f2e807656d4a28636..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-escaper/phpcs.xml.dist
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<ruleset
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="./vendor/squizlabs/php_codesniffer/phpcs.xsd">
-
-    <arg name="basepath" value="."/>
-    <arg name="cache" value=".phpcs-cache"/>
-    <arg name="colors"/>
-    <arg name="extensions" value="php"/>
-    <arg name="parallel" value="80"/>
-
-    <!-- Show progress -->
-    <arg value="p"/>
-
-    <!-- Paths to check -->
-    <file>src</file>
-    <file>test</file>
-
-    <!-- Include all rules from Laminas Coding Standard -->
-    <rule ref="LaminasCodingStandard"/>
-</ruleset>
diff --git a/vendor/laminas/laminas-escaper/psalm-baseline.xml b/vendor/laminas/laminas-escaper/psalm-baseline.xml
deleted file mode 100644
index 03474eabe0c5ca9da6f097ae769cb84d09e2fe9b..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-escaper/psalm-baseline.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<files psalm-version="3.18.2@19aa905f7c3c7350569999a93c40ae91ae4e1626">
-  <file src="src/Escaper.php">
-    <MixedArgument occurrences="10">
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-    </MixedArgument>
-    <MixedArgumentTypeCoercion occurrences="3">
-      <code>$this-&gt;cssMatcher</code>
-      <code>$this-&gt;htmlAttrMatcher</code>
-      <code>$this-&gt;jsMatcher</code>
-    </MixedArgumentTypeCoercion>
-    <MixedAssignment occurrences="3">
-      <code>$chr</code>
-      <code>$chr</code>
-      <code>$chr</code>
-    </MixedAssignment>
-    <MixedOperand occurrences="1">
-      <code>static::$htmlNamedEntityMap[$ord]</code>
-    </MixedOperand>
-    <PossiblyInvalidArgument occurrences="1">
-      <code>$from</code>
-    </PossiblyInvalidArgument>
-  </file>
-  <file src="test/EscaperTest.php">
-    <InvalidReturnStatement occurrences="5"/>
-    <InvalidReturnType occurrences="5">
-      <code>array&lt;string, array{0: string, 1: string}&gt;</code>
-      <code>array&lt;string, array{0: string, 1: string}&gt;</code>
-      <code>array&lt;string, array{0: string, 1: string}&gt;</code>
-      <code>array&lt;string, array{0: string, 1: string}&gt;</code>
-      <code>array&lt;string, array{0: string}&gt;</code>
-    </InvalidReturnType>
-    <MissingReturnType occurrences="9">
-      <code>testCssEscapingReturnsStringIfContainsOnlyDigits</code>
-      <code>testCssEscapingReturnsStringIfZeroLength</code>
-      <code>testHtmlAttributeEscapingEscapesOwaspRecommendedRanges</code>
-      <code>testJavascriptEscapingReturnsStringIfContainsOnlyDigits</code>
-      <code>testJavascriptEscapingReturnsStringIfZeroLength</code>
-      <code>testReturnsEncodingFromGetter</code>
-      <code>testSettingEncodingToEmptyStringShouldThrowException</code>
-      <code>testSettingEncodingToInvalidValueShouldThrowException</code>
-      <code>testUnicodeCodepointConversionToUtf8</code>
-    </MissingReturnType>
-  </file>
-  <file src="vendor/symfony/polyfill-mbstring/bootstrap80.php">
-    <ParseError occurrences="1">
-      <code>=</code>
-    </ParseError>
-  </file>
-</files>
diff --git a/vendor/laminas/laminas-escaper/psalm.xml b/vendor/laminas/laminas-escaper/psalm.xml
deleted file mode 100644
index 68b6d6b64ca1652b84fb037b6123578d85e78775..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-escaper/psalm.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<psalm
-    totallyTyped="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"
-    errorBaseline="psalm-baseline.xml"
->
-    <projectFiles>
-        <directory name="src"/>
-        <directory name="test"/>
-        <ignoreFiles>
-            <directory name="vendor"/>
-        </ignoreFiles>
-    </projectFiles>
-
-    <issueHandlers>
-        <InternalMethod>
-            <errorLevel type="suppress">
-                <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/>
-            </errorLevel>
-            <errorLevel type="suppress">
-                <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/>
-            </errorLevel>
-            <errorLevel type="suppress">
-                <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/>
-            </errorLevel>
-        </InternalMethod>
-    </issueHandlers>
-
-    <plugins>
-        <pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
-    </plugins>
-</psalm>
diff --git a/vendor/laminas/laminas-escaper/src/Escaper.php b/vendor/laminas/laminas-escaper/src/Escaper.php
index ca0f1a9dd21ca8025b158089da4904f0ad44cf35..d6a02e14c9be4e64040e4401c5cf71924391150e 100644
--- a/vendor/laminas/laminas-escaper/src/Escaper.php
+++ b/vendor/laminas/laminas-escaper/src/Escaper.php
@@ -6,10 +6,8 @@
 
 use function bin2hex;
 use function ctype_digit;
-use function function_exists;
 use function hexdec;
 use function htmlspecialchars;
-use function iconv;
 use function in_array;
 use function mb_convert_encoding;
 use function ord;
@@ -38,7 +36,7 @@ class Escaper
      * entities that XML supports. Using HTML entities would result in this error:
      *     XML Parsing Error: undefined entity
      *
-     * @var array
+     * @var array<int, string>
      */
     protected static $htmlNamedEntityMap = [
         34 => 'quot', // quotation mark
@@ -67,6 +65,7 @@ class Escaper
      * Static Matcher which escapes characters for HTML Attribute contexts
      *
      * @var callable
+     * @psalm-var callable(array<array-key, string>):string
      */
     protected $htmlAttrMatcher;
 
@@ -74,6 +73,7 @@ class Escaper
      * Static Matcher which escapes characters for Javascript contexts
      *
      * @var callable
+     * @psalm-var callable(array<array-key, string>):string
      */
     protected $jsMatcher;
 
@@ -81,6 +81,7 @@ class Escaper
      * Static Matcher which escapes characters for CSS Attribute contexts
      *
      * @var callable
+     * @psalm-var callable(array<array-key, string>):string
      */
     protected $cssMatcher;
 
@@ -255,7 +256,7 @@ public function escapeCss(string $string)
      * Callback function for preg_replace_callback that applies HTML Attribute
      * escaping to all matches.
      *
-     * @param array $matches
+     * @param array<array-key, string> $matches
      * @return string
      */
     protected function htmlAttrMatcher($matches)
@@ -302,7 +303,7 @@ protected function htmlAttrMatcher($matches)
      * Callback function for preg_replace_callback that applies Javascript
      * escaping to all matches.
      *
-     * @param array $matches
+     * @param array<array-key, string> $matches
      * @return string
      */
     protected function jsMatcher($matches)
@@ -325,7 +326,7 @@ protected function jsMatcher($matches)
      * Callback function for preg_replace_callback that applies CSS
      * escaping to all matches.
      *
-     * @param array $matches
+     * @param array<array-key, string> $matches
      * @return string
      */
     protected function cssMatcher($matches)
@@ -391,32 +392,21 @@ protected function isUtf8($string)
     }
 
     /**
-     * Encoding conversion helper which wraps iconv and mbstring where they exist or throws
-     * and exception where neither is available.
+     * Encoding conversion helper which wraps mb_convert_encoding
      *
      * @param string $string
      * @param string $to
      * @param array|string $from
-     * @throws Exception\RuntimeException
      * @return string
      */
     protected function convertEncoding($string, $to, $from)
     {
-        if (function_exists('iconv')) {
-            $result = iconv($from, $to, $string);
-        } elseif (function_exists('mb_convert_encoding')) {
-            $result = mb_convert_encoding($string, $to, $from);
-        } else {
-            throw new Exception\RuntimeException(
-                static::class
-                . ' requires either the iconv or mbstring extension to be installed'
-                . ' when escaping for non UTF-8 strings.'
-            );
-        }
+        $result = mb_convert_encoding($string, $to, $from);
 
         if ($result === false) {
             return ''; // return non-fatal blank string on encoding errors from users
         }
+
         return $result;
     }
 }
diff --git a/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php b/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php
index 87edfd2aa582d9928e694b86f65572c3273aff19..8f5fd89aa1b3b06153e8af9c1c534175e7ba2d49 100644
--- a/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php
+++ b/vendor/laminas/laminas-escaper/src/Exception/ExceptionInterface.php
@@ -4,6 +4,8 @@
 
 namespace Laminas\Escaper\Exception;
 
-interface ExceptionInterface
+use Throwable;
+
+interface ExceptionInterface extends Throwable
 {
 }
diff --git a/vendor/laminas/laminas-feed/.laminas-ci.json b/vendor/laminas/laminas-feed/.laminas-ci.json
index 52a5dc863952d88dbb0f1ca114f3739c6c032eff..cf74e8fe964d63498e13d29a07b117a5ded8582b 100644
--- a/vendor/laminas/laminas-feed/.laminas-ci.json
+++ b/vendor/laminas/laminas-feed/.laminas-ci.json
@@ -3,6 +3,7 @@
         "tidy"
     ],
     "ignore_php_platform_requirements": {
-        "8.1": true
+        "8.1": false,
+        "8.2": true
     }
 }
diff --git a/vendor/laminas/laminas-feed/README.md b/vendor/laminas/laminas-feed/README.md
index f4ea4c788c05541574264b49f879344a3de09124..314776d16228691b9ce449622ec65c042f1ac3cc 100644
--- a/vendor/laminas/laminas-feed/README.md
+++ b/vendor/laminas/laminas-feed/README.md
@@ -4,19 +4,19 @@
 [![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-feed/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-feed?branch=master)
 
 > ## 🇷🇺 Русским гражданам
-> 
+>
 > Мы, участники Laminas, родились и живем в разных странах. У многих из нас есть друзья, родственники и коллеги как в России, так и в Украине. Некоторые из нас родились в России. Некоторые из нас живут в России. У некоторых бабушки и дедушки сражались с фашистами во Второй мировой войне. Здесь никто не поддерживает фашизм.
-> 
+>
 > У одного из нас есть украинская родственница, которая спаслась из дома вместе с сыном. Поезд задержался из-за бомбежки на дороге впереди. У нас есть друзья, которые прячутся в бомбоубежищах. Мы с тревогой ждем весточки от них после воздушных налетов, которые беспорядочно наносят удары и попадают по больницам, школам, детским садам и домам. Мы не берем это из каких-либо СМИ. Мы наблюдаем это напрямую.
-> 
+>
 > Вы доверяете нам достаточно, чтоб использовать наши программы, и мы просим вас довериться нам вновь. Мы нуждаемся в помощи. Выходите и протестуйте против этой бесполезной войны. Остановите кровопролитие. Скажите "Нет войне!"
-> 
+>
 > ## 🇺🇸 To Citizens of Russia
-> 
+>
 > We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism.
-> 
+>
 > One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences.
-> 
+>
 > You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!"
 
 `Laminas\Feed` provides functionality for consuming RSS and Atom feeds. It provides
diff --git a/vendor/laminas/laminas-feed/composer.json b/vendor/laminas/laminas-feed/composer.json
index 6ab3a4e528aa9eae14850b108752e8c334755cd3..556586ca7579d57f0caa58f940102b3b49de9cfa 100644
--- a/vendor/laminas/laminas-feed/composer.json
+++ b/vendor/laminas/laminas-feed/composer.json
@@ -1,10 +1,12 @@
 {
     "name": "laminas/laminas-feed",
-    "description": "provides functionality for consuming RSS and Atom feeds",
+    "description": "provides functionality for creating and consuming RSS and Atom feeds",
     "license": "BSD-3-Clause",
     "keywords": [
         "laminas",
-        "feed"
+        "feed",
+        "rss",
+        "atom"
     ],
     "homepage": "https://laminas.dev",
     "support": {
@@ -18,29 +20,33 @@
     "config": {
         "sort-packages": true,
         "platform": {
-            "php": "7.3.99"
+            "php": "8.0.99"
+        },
+        "allow-plugins": {
+            "dealerdirect/phpcodesniffer-composer-installer": true
         }
     },
     "extra": {
     },
     "require": {
-        "php": "^7.3 || ~8.0.0 || ~8.1.0",
+        "php": "~8.0.0 || ~8.1.0 || ~8.2.0",
         "ext-dom": "*",
         "ext-libxml": "*",
         "laminas/laminas-escaper": "^2.9",
+        "laminas/laminas-servicemanager": "^3.14.0",
         "laminas/laminas-stdlib": "^3.6"
     },
     "require-dev": {
-        "laminas/laminas-cache": "^2.7.2",
-        "laminas/laminas-coding-standard": "~2.2.1",
-        "laminas/laminas-db": "^2.13.3",
-        "laminas/laminas-http": "^2.15",
-        "laminas/laminas-servicemanager": "^3.7",
-        "laminas/laminas-validator": "^2.15",
-        "phpunit/phpunit": "^9.5.5",
-        "psalm/plugin-phpunit": "^0.13.0",
+        "laminas/laminas-cache": "^2.13.2 || ^3.6",
+        "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.1",
+        "laminas/laminas-coding-standard": "~2.4.0",
+        "laminas/laminas-db": "^2.15",
+        "laminas/laminas-http": "^2.17.0",
+        "laminas/laminas-validator": "^2.26",
+        "phpunit/phpunit": "^9.5.25",
+        "psalm/plugin-phpunit": "^0.18.0",
         "psr/http-message": "^1.0.1",
-        "vimeo/psalm": "^4.1"
+        "vimeo/psalm": "^5.1.0"
     },
     "conflict": {
         "laminas/laminas-servicemanager": "<3.3",
diff --git a/vendor/laminas/laminas-feed/composer.lock b/vendor/laminas/laminas-feed/composer.lock
deleted file mode 100644
index 6ae8b27bd022eac4d6c662adf5774a381939b7d9..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-feed/composer.lock
+++ /dev/null
@@ -1,6040 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
-        "This file is @generated automatically"
-    ],
-    "content-hash": "be30c83943e7f52192d9bea3c3bcbaa3",
-    "packages": [
-        {
-            "name": "laminas/laminas-escaper",
-            "version": "2.9.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-escaper.git",
-                "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f",
-                "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-escaper": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "~2.3.0",
-                "phpunit/phpunit": "^9.3",
-                "psalm/plugin-phpunit": "^0.12.2",
-                "vimeo/psalm": "^3.16"
-            },
-            "suggest": {
-                "ext-iconv": "*",
-                "ext-mbstring": "*"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Escaper\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "escaper",
-                "laminas"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-escaper/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-escaper/issues",
-                "rss": "https://github.com/laminas/laminas-escaper/releases.atom",
-                "source": "https://github.com/laminas/laminas-escaper"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-02T17:10:53+00:00"
-        },
-        {
-            "name": "laminas/laminas-stdlib",
-            "version": "3.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-stdlib.git",
-                "reference": "c53d8537f108fac3fae652677a19735db730ba46"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/c53d8537f108fac3fae652677a19735db730ba46",
-                "reference": "c53d8537f108fac3fae652677a19735db730ba46",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-stdlib": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "~2.3.0",
-                "phpbench/phpbench": "^0.17.1",
-                "phpunit/phpunit": "~9.3.7",
-                "psalm/plugin-phpunit": "^0.16.0",
-                "vimeo/psalm": "^4.7"
-            },
-            "type": "library",
-            "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"
-                }
-            ],
-            "time": "2021-09-02T16:11:32+00:00"
-        }
-    ],
-    "packages-dev": [
-        {
-            "name": "amphp/amp",
-            "version": "v2.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/amp.git",
-                "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/amp/zipball/caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
-                "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1",
-                "ext-json": "*",
-                "jetbrains/phpstorm-stubs": "^2019.3",
-                "phpunit/phpunit": "^7 | ^8 | ^9",
-                "psalm/phar": "^3.11@dev",
-                "react/promise": "^2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "lib/functions.php",
-                    "lib/Internal/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\": "lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Daniel Lowrey",
-                    "email": "rdlowrey@php.net"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Bob Weinand",
-                    "email": "bobwei9@hotmail.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "A non-blocking concurrency framework for PHP applications.",
-            "homepage": "http://amphp.org/amp",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "awaitable",
-                "concurrency",
-                "event",
-                "event-loop",
-                "future",
-                "non-blocking",
-                "promise"
-            ],
-            "support": {
-                "irc": "irc://irc.freenode.org/amphp",
-                "issues": "https://github.com/amphp/amp/issues",
-                "source": "https://github.com/amphp/amp/tree/v2.6.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-07-16T20:06:06+00:00"
-        },
-        {
-            "name": "amphp/byte-stream",
-            "version": "v1.8.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/byte-stream.git",
-                "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
-                "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2",
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1.4",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "jetbrains/phpstorm-stubs": "^2019.3",
-                "phpunit/phpunit": "^6 || ^7 || ^8",
-                "psalm/phar": "^3.11.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "lib/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\ByteStream\\": "lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "A stream abstraction to make working with non-blocking I/O simple.",
-            "homepage": "http://amphp.org/byte-stream",
-            "keywords": [
-                "amp",
-                "amphp",
-                "async",
-                "io",
-                "non-blocking",
-                "stream"
-            ],
-            "support": {
-                "irc": "irc://irc.freenode.org/amphp",
-                "issues": "https://github.com/amphp/byte-stream/issues",
-                "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-03-30T17:13:30+00:00"
-        },
-        {
-            "name": "composer/package-versions-deprecated",
-            "version": "1.11.99.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/package-versions-deprecated.git",
-                "reference": "b174585d1fe49ceed21928a945138948cb394600"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600",
-                "reference": "b174585d1fe49ceed21928a945138948cb394600",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.1.0 || ^2.0",
-                "php": "^7 || ^8"
-            },
-            "replace": {
-                "ocramius/package-versions": "1.11.99"
-            },
-            "require-dev": {
-                "composer/composer": "^1.9.3 || ^2.0@dev",
-                "ext-zip": "^1.13",
-                "phpunit/phpunit": "^6.5 || ^7"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "PackageVersions\\Installer",
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PackageVersions\\": "src/PackageVersions"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
-            "support": {
-                "issues": "https://github.com/composer/package-versions-deprecated/issues",
-                "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.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"
-                }
-            ],
-            "time": "2021-09-13T08:41:34+00:00"
-        },
-        {
-            "name": "composer/semver",
-            "version": "3.2.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/semver.git",
-                "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9",
-                "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0 || ^8.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^0.12.54",
-                "symfony/phpunit-bridge": "^4.2 || ^5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.x-dev"
-                }
-            },
-            "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": "irc://irc.freenode.org/composer",
-                "issues": "https://github.com/composer/semver/issues",
-                "source": "https://github.com/composer/semver/tree/3.2.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"
-                }
-            ],
-            "time": "2021-05-24T12:41:47+00:00"
-        },
-        {
-            "name": "composer/xdebug-handler",
-            "version": "2.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
-                "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0 || ^8.0",
-                "psr/log": "^1 || ^2 || ^3"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^0.12.55",
-                "symfony/phpunit-bridge": "^4.2 || ^5"
-            },
-            "type": "library",
-            "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": "irc://irc.freenode.org/composer",
-                "issues": "https://github.com/composer/xdebug-handler/issues",
-                "source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
-            },
-            "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"
-                }
-            ],
-            "time": "2021-07-31T17:03:58+00:00"
-        },
-        {
-            "name": "container-interop/container-interop",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/container-interop/container-interop.git",
-                "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
-                "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
-                "shasum": ""
-            },
-            "require": {
-                "psr/container": "^1.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Interop\\Container\\": "src/Interop/Container/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
-            "homepage": "https://github.com/container-interop/container-interop",
-            "support": {
-                "issues": "https://github.com/container-interop/container-interop/issues",
-                "source": "https://github.com/container-interop/container-interop/tree/master"
-            },
-            "abandoned": "psr/container",
-            "time": "2017-02-14T19:40:03+00:00"
-        },
-        {
-            "name": "dealerdirect/phpcodesniffer-composer-installer",
-            "version": "v0.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
-                "reference": "fe390591e0241955f22eb9ba327d137e501c771c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c",
-                "reference": "fe390591e0241955f22eb9ba327d137e501c771c",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.0 || ^2.0",
-                "php": ">=5.3",
-                "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "composer/composer": "*",
-                "phpcompatibility/php-compatibility": "^9.0",
-                "sensiolabs/security-checker": "^4.1.0"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
-            },
-            "autoload": {
-                "psr-4": {
-                    "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Franck Nijhof",
-                    "email": "franck.nijhof@dealerdirect.com",
-                    "homepage": "http://www.frenck.nl",
-                    "role": "Developer / IT Manager"
-                }
-            ],
-            "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
-            "homepage": "http://www.dealerdirect.com",
-            "keywords": [
-                "PHPCodeSniffer",
-                "PHP_CodeSniffer",
-                "code quality",
-                "codesniffer",
-                "composer",
-                "installer",
-                "phpcs",
-                "plugin",
-                "qa",
-                "quality",
-                "standard",
-                "standards",
-                "style guide",
-                "stylecheck",
-                "tests"
-            ],
-            "support": {
-                "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
-                "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
-            },
-            "time": "2020-12-07T18:04:37+00:00"
-        },
-        {
-            "name": "dnoegel/php-xdg-base-dir",
-            "version": "v0.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
-                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
-                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "XdgBaseDir\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "implementation of xdg base directory specification for php",
-            "support": {
-                "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
-                "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
-            },
-            "time": "2019-12-04T15:06:13+00:00"
-        },
-        {
-            "name": "doctrine/instantiator",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
-                "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "doctrine/coding-standard": "^8.0",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
-                "phpstan/phpstan": "^0.12",
-                "phpstan/phpstan-phpunit": "^0.12",
-                "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
-            },
-            "type": "library",
-            "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.4.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"
-                }
-            ],
-            "time": "2020-11-10T18:47:58+00:00"
-        },
-        {
-            "name": "felixfbecker/advanced-json-rpc",
-            "version": "v3.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
-                "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
-                "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
-                "shasum": ""
-            },
-            "require": {
-                "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
-                "php": "^7.1 || ^8.0",
-                "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^7.0 || ^8.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "AdvancedJsonRpc\\": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "ISC"
-            ],
-            "authors": [
-                {
-                    "name": "Felix Becker",
-                    "email": "felix.b@outlook.com"
-                }
-            ],
-            "description": "A more advanced JSONRPC implementation",
-            "support": {
-                "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
-                "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
-            },
-            "time": "2021-06-11T22:34:44+00:00"
-        },
-        {
-            "name": "felixfbecker/language-server-protocol",
-            "version": "1.5.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
-                "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
-                "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "*",
-                "squizlabs/php_codesniffer": "^3.1",
-                "vimeo/psalm": "^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "LanguageServerProtocol\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "ISC"
-            ],
-            "authors": [
-                {
-                    "name": "Felix Becker",
-                    "email": "felix.b@outlook.com"
-                }
-            ],
-            "description": "PHP classes for the Language Server Protocol",
-            "keywords": [
-                "language",
-                "microsoft",
-                "php",
-                "server"
-            ],
-            "support": {
-                "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
-                "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1"
-            },
-            "time": "2021-02-22T14:02:09+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache",
-            "version": "2.13.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache.git",
-                "reference": "566948e32f30881cb903ffbd0e3e20dac00cd83e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache/zipball/566948e32f30881cb903ffbd0e3e20dac00cd83e",
-                "reference": "566948e32f30881cb903ffbd0e3e20dac00cd83e",
-                "shasum": ""
-            },
-            "require": {
-                "laminas/laminas-cache-storage-adapter-apc": "^1.0",
-                "laminas/laminas-cache-storage-adapter-apcu": "^1.0",
-                "laminas/laminas-cache-storage-adapter-blackhole": "^1.0",
-                "laminas/laminas-cache-storage-adapter-dba": "^1.0",
-                "laminas/laminas-cache-storage-adapter-ext-mongodb": "^1.0",
-                "laminas/laminas-cache-storage-adapter-filesystem": "^1.0",
-                "laminas/laminas-cache-storage-adapter-memcache": "^1.0",
-                "laminas/laminas-cache-storage-adapter-memcached": "^1.0",
-                "laminas/laminas-cache-storage-adapter-memory": "^1.0",
-                "laminas/laminas-cache-storage-adapter-mongodb": "^1.0",
-                "laminas/laminas-cache-storage-adapter-redis": "^1.0",
-                "laminas/laminas-cache-storage-adapter-session": "^1.0",
-                "laminas/laminas-cache-storage-adapter-wincache": "^1.0",
-                "laminas/laminas-cache-storage-adapter-xcache": "^1.0",
-                "laminas/laminas-cache-storage-adapter-zend-server": "^1.0",
-                "laminas/laminas-eventmanager": "^3.3",
-                "laminas/laminas-servicemanager": "^3.6",
-                "laminas/laminas-stdlib": "^3.3",
-                "laminas/laminas-zendframework-bridge": "^1.0",
-                "php": "^7.3 || ~8.0.0",
-                "psr/cache": "^1.0",
-                "psr/simple-cache": "^1.0"
-            },
-            "conflict": {
-                "symfony/console": "<5.1"
-            },
-            "provide": {
-                "psr/cache-implementation": "1.0",
-                "psr/simple-cache-implementation": "1.0"
-            },
-            "replace": {
-                "zendframework/zend-cache": "^2.9.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cli": "^1.0",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "laminas/laminas-config-aggregator": "^1.5",
-                "laminas/laminas-feed": "^2.14",
-                "laminas/laminas-serializer": "^2.6",
-                "phpbench/phpbench": "^1.0.0-beta2",
-                "phpspec/prophecy-phpunit": "^2.0",
-                "phpunit/phpunit": "^9.5"
-            },
-            "suggest": {
-                "laminas/laminas-cli": "The laminas-cli binary can be used to consume commands provided by this component",
-                "laminas/laminas-serializer": "Laminas\\Serializer component"
-            },
-            "type": "library",
-            "extra": {
-                "laminas": {
-                    "component": "Laminas\\Cache",
-                    "config-provider": "Laminas\\Cache\\ConfigProvider"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "autoload/patternPluginManagerPolyfill.php"
-                ],
-                "psr-4": {
-                    "Laminas\\Cache\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "cache",
-                "laminas",
-                "psr-16",
-                "psr-6"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-cache/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-cache/issues",
-                "rss": "https://github.com/laminas/laminas-cache/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-08-08T10:21:18+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-apc",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-apc.git",
-                "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apc/zipball/8b375d994f6e67534f6ae6e995249e706faa30c1",
-                "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.0@dev",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
-            },
-            "suggest": {
-                "ext-apc": "APC or compatible extension, to use the APC storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-apc/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-apc/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-apc/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-apc"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "abandoned": true,
-            "time": "2020-10-12T16:04:12+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-apcu",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-apcu.git",
-                "reference": "e182aab739d6b03992a9915cc3c7019391a94548"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apcu/zipball/e182aab739d6b03992a9915cc3c7019391a94548",
-                "reference": "e182aab739d6b03992a9915cc3c7019391a94548",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "ext-apcu": "*",
-                "laminas/laminas-cache": "^2.10.1",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1.1",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "squizlabs/php_codesniffer": "^2.7"
-            },
-            "suggest": {
-                "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for apcu",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-apcu/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-apcu/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-apcu/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-apcu"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-05-03T20:41:53+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-blackhole",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole.git",
-                "reference": "4af1053efd81785a292c2a9442871c075700345a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-blackhole/zipball/4af1053efd81785a292c2a9442871c075700345a",
-                "reference": "4af1053efd81785a292c2a9442871c075700345a",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10.1",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1.1",
-                "laminas/laminas-coding-standard": "^2.1.4",
-                "squizlabs/php_codesniffer": "^3.5.8"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for blackhole",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-blackhole/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-04-29T21:06:24+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-dba",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-dba.git",
-                "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-dba/zipball/ad968d3d8a0350af8e6717be58bb96e5a9e77f3b",
-                "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.0@dev",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "squizlabs/php_codesniffer": "^2.7"
-            },
-            "suggest": {
-                "ext-dba": "DBA, to use the DBA storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for dba",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-dba/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-dba/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-dba/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-dba"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "abandoned": true,
-            "time": "2020-10-12T16:08:58+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-ext-mongodb",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb.git",
-                "reference": "72f68589cc8323fa688167a4720b795dd0907f4e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-ext-mongodb/zipball/72f68589cc8323fa688167a4720b795dd0907f4e",
-                "reference": "72f68589cc8323fa688167a4720b795dd0907f4e",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10",
-                "mongodb/mongodb": "<1.8"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10.3",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1.1",
-                "laminas/laminas-coding-standard": "~2.2.0",
-                "laminas/laminas-serializer": "^2.10.1",
-                "mongodb/mongodb": "^1.8.0",
-                "psalm/plugin-phpunit": "^0.16.1",
-                "vimeo/psalm": "^4.9"
-            },
-            "suggest": {
-                "mongodb/mongodb": "MongoDB, to use the ExtMongoDb storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for ext-mongodb",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-ext-mongodb/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-08-10T18:17:48+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-filesystem",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem.git",
-                "reference": "76fc488c3fa0ad442e4e70f807305c940d1bdcbc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-filesystem/zipball/76fc488c3fa0ad442e4e70f807305c940d1bdcbc",
-                "reference": "76fc488c3fa0ad442e4e70f807305c940d1bdcbc",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1.1",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "laminas/laminas-serializer": "^2.10",
-                "phpunit/phpunit": "^9.5",
-                "squizlabs/php_codesniffer": "^2.7"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for filesystem",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-filesystem/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-04-25T00:27:54+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-memcache",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcache.git",
-                "reference": "1d2a74e300a0fd0b8d0e0cb4e379a173ccad0088"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcache/zipball/1d2a74e300a0fd0b8d0e0cb4e379a173ccad0088",
-                "reference": "1d2a74e300a0fd0b8d0e0cb4e379a173ccad0088",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10.1",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1.1",
-                "laminas/laminas-coding-standard": "^2.1.4",
-                "laminas/laminas-serializer": "^2.10.1",
-                "squizlabs/php_codesniffer": "^3.6.0"
-            },
-            "suggest": {
-                "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for memcache",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-memcache/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-memcache/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-memcache/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-memcache"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "abandoned": true,
-            "time": "2021-04-29T19:57:43+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-memcached",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcached.git",
-                "reference": "d05f33e43a352b85c6d0208e9cfbf2a59f02ede3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcached/zipball/d05f33e43a352b85c6d0208e9cfbf2a59f02ede3",
-                "reference": "d05f33e43a352b85c6d0208e9cfbf2a59f02ede3",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.0.2",
-                "laminas/laminas-coding-standard": "~2.2.0",
-                "phpunit/phpunit": "^9.5.8"
-            },
-            "suggest": {
-                "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for memcached",
-            "keywords": [
-                "cache",
-                "laminas",
-                "memcached"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-memcached/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-memcached/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-memcached/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-memcached"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-08-08T14:51:12+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-memory",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-memory.git",
-                "reference": "02c7a4a1118bbd47d1c0f0bfe1e8b140af79d2bd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memory/zipball/02c7a4a1118bbd47d1c0f0bfe1e8b140af79d2bd",
-                "reference": "02c7a4a1118bbd47d1c0f0bfe1e8b140af79d2bd",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10.1",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1.1",
-                "laminas/laminas-coding-standard": "^2.1.4",
-                "squizlabs/php_codesniffer": "^3.5.8"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for memory",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-memory/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-memory/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-memory/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-memory"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-04-28T17:27:13+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-mongodb",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb.git",
-                "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-mongodb/zipball/ef4aa396b55533b8eb3e1d4126c39a78a22e49a6",
-                "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.0@dev",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "squizlabs/php_codesniffer": "^2.7"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for mongodb",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-mongodb/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "abandoned": true,
-            "time": "2020-10-12T16:19:10+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-redis",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-redis.git",
-                "reference": "de8a63d4a0ef1ccead401eb7fb6d75b57fa3f9ee"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-redis/zipball/de8a63d4a0ef1ccead401eb7fb6d75b57fa3f9ee",
-                "reference": "de8a63d4a0ef1ccead401eb7fb6d75b57fa3f9ee",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10",
-                "phpunit/phpunit": "<6.1.0"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "composer-runtime-api": "^2",
-                "ext-posix": "*",
-                "ext-redis": "*",
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1",
-                "laminas/laminas-coding-standard": "^2.1",
-                "laminas/laminas-serializer": "^2.10",
-                "psalm/plugin-phpunit": "^0.15.1",
-                "vimeo/psalm": "^4.7"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for redis",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-redis/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-redis/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-redis/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-redis"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-06-03T16:14:07+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-session",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-session.git",
-                "reference": "74a275056cfca2300eb9a67cd1d917f7066b4113"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-session/zipball/74a275056cfca2300eb9a67cd1d917f7066b4113",
-                "reference": "74a275056cfca2300eb9a67cd1d917f7066b4113",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.1",
-                "laminas/laminas-coding-standard": "^2.1",
-                "laminas/laminas-session": "^2.7.4"
-            },
-            "suggest": {
-                "laminas/laminas-session": "Laminas\\Session component"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for session",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-session/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-session/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-session/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-session"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-05-02T13:52:36+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-wincache",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-wincache.git",
-                "reference": "0f54599c5d9aff11b01adadd2742097f923170ba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-wincache/zipball/0f54599c5d9aff11b01adadd2742097f923170ba",
-                "reference": "0f54599c5d9aff11b01adadd2742097f923170ba",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.0@dev",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "squizlabs/php_codesniffer": "^2.7"
-            },
-            "suggest": {
-                "ext-wincache": "WinCache, to use the WinCache storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for wincache",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-wincache/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-wincache/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-wincache/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-wincache"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "abandoned": true,
-            "time": "2020-10-12T16:22:49+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-xcache",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-xcache.git",
-                "reference": "24049557aa796ec7527bcc8032ed68346232b219"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-xcache/zipball/24049557aa796ec7527bcc8032ed68346232b219",
-                "reference": "24049557aa796ec7527bcc8032ed68346232b219",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.0@dev",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "laminas/laminas-serializer": "^2.9",
-                "squizlabs/php_codesniffer": "^2.7"
-            },
-            "suggest": {
-                "ext-xcache": "XCache, to use the XCache storage adapter"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for xcache",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-xcache/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-xcache/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-xcache/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-xcache"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "abandoned": true,
-            "time": "2020-10-12T16:23:46+00:00"
-        },
-        {
-            "name": "laminas/laminas-cache-storage-adapter-zend-server",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server.git",
-                "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-zend-server/zipball/8d0b0d219a048a92472d89a5e527990f3ea2decc",
-                "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "conflict": {
-                "laminas/laminas-cache": "<2.10"
-            },
-            "provide": {
-                "laminas/laminas-cache-storage-implementation": "1.0"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.10",
-                "laminas/laminas-cache-storage-adapter-test": "^1.0@dev",
-                "laminas/laminas-coding-standard": "~1.0.0",
-                "squizlabs/php_codesniffer": "^2.7"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Cache\\Storage\\Adapter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas cache adapter for zend-server",
-            "keywords": [
-                "cache",
-                "laminas"
-            ],
-            "support": {
-                "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-zend-server/",
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server/issues",
-                "rss": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server/releases.atom",
-                "source": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2020-10-12T16:24:25+00:00"
-        },
-        {
-            "name": "laminas/laminas-coding-standard",
-            "version": "2.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-coding-standard.git",
-                "reference": "c953ecb1d37034f4aa326046e2c24a10fe0a2845"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/c953ecb1d37034f4aa326046e2c24a10fe0a2845",
-                "reference": "c953ecb1d37034f4aa326046e2c24a10fe0a2845",
-                "shasum": ""
-            },
-            "require": {
-                "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
-                "php": "^7.3 || ~8.0.0",
-                "slevomat/coding-standard": "^6.4.1",
-                "squizlabs/php_codesniffer": "^3.5.8",
-                "webimpress/coding-standard": "^1.1.6"
-            },
-            "type": "phpcodesniffer-standard",
-            "autoload": {
-                "psr-4": {
-                    "LaminasCodingStandard\\": "src/LaminasCodingStandard/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Laminas Coding Standard",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "Coding Standard",
-                "laminas"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-coding-standard/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-coding-standard/issues",
-                "rss": "https://github.com/laminas/laminas-coding-standard/releases.atom",
-                "source": "https://github.com/laminas/laminas-coding-standard"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-05-17T17:39:41+00:00"
-        },
-        {
-            "name": "laminas/laminas-db",
-            "version": "2.13.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-db.git",
-                "reference": "e1bcf243f6e56f02590f11a149cd75403e873241"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-db/zipball/e1bcf243f6e56f02590f11a149cd75403e873241",
-                "reference": "e1bcf243f6e56f02590f11a149cd75403e873241",
-                "shasum": ""
-            },
-            "require": {
-                "laminas/laminas-stdlib": "^3.6",
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-db": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "laminas/laminas-eventmanager": "^3.4",
-                "laminas/laminas-hydrator": "^3.2 || ^4.3",
-                "laminas/laminas-servicemanager": "^3.7",
-                "phpunit/phpunit": "^9.5.5"
-            },
-            "suggest": {
-                "laminas/laminas-eventmanager": "Laminas\\EventManager component",
-                "laminas/laminas-hydrator": "(^3.2 || ^4.3) Laminas\\Hydrator component for using HydratingResultSets",
-                "laminas/laminas-servicemanager": "Laminas\\ServiceManager component"
-            },
-            "type": "library",
-            "extra": {
-                "laminas": {
-                    "component": "Laminas\\Db",
-                    "config-provider": "Laminas\\Db\\ConfigProvider"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Db\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Database abstraction layer, SQL abstraction, result set abstraction, and RowDataGateway and TableDataGateway implementations",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "db",
-                "laminas"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-db/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-db/issues",
-                "rss": "https://github.com/laminas/laminas-db/releases.atom",
-                "source": "https://github.com/laminas/laminas-db"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-19T07:38:14+00:00"
-        },
-        {
-            "name": "laminas/laminas-eventmanager",
-            "version": "3.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-eventmanager.git",
-                "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/a93fd278c97b2d41ebbce5ba048a24e3e6f580ba",
-                "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-eventmanager": "*"
-            },
-            "require-dev": {
-                "container-interop/container-interop": "^1.1",
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "laminas/laminas-stdlib": "^3.6",
-                "phpbench/phpbench": "^1.1",
-                "phpspec/prophecy-phpunit": "^2.0",
-                "phpunit/phpunit": "^9.5.5"
-            },
-            "suggest": {
-                "container-interop/container-interop": "^1.1, to use the lazy listeners feature",
-                "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\EventManager\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Trigger and listen to events within a PHP application",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "event",
-                "eventmanager",
-                "events",
-                "laminas"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-eventmanager/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-eventmanager/issues",
-                "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom",
-                "source": "https://github.com/laminas/laminas-eventmanager"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-07T22:35:32+00:00"
-        },
-        {
-            "name": "laminas/laminas-http",
-            "version": "2.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-http.git",
-                "reference": "e1f3420ab35e21ea135913d213b8d570e5e7b513"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-http/zipball/e1f3420ab35e21ea135913d213b8d570e5e7b513",
-                "reference": "e1f3420ab35e21ea135913d213b8d570e5e7b513",
-                "shasum": ""
-            },
-            "require": {
-                "laminas/laminas-loader": "^2.8",
-                "laminas/laminas-stdlib": "^3.6",
-                "laminas/laminas-uri": "^2.9.1",
-                "laminas/laminas-validator": "^2.15",
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-http": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "phpunit/phpunit": "^9.5.5"
-            },
-            "suggest": {
-                "paragonie/certainty": "For automated management of cacert.pem"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Http\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "http",
-                "http client",
-                "laminas"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-http/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-http/issues",
-                "rss": "https://github.com/laminas/laminas-http/releases.atom",
-                "source": "https://github.com/laminas/laminas-http"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-10T10:45:31+00:00"
-        },
-        {
-            "name": "laminas/laminas-loader",
-            "version": "2.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-loader.git",
-                "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b",
-                "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-loader": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Loader\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Autoloading and plugin loading strategies",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "laminas",
-                "loader"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-loader/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-loader/issues",
-                "rss": "https://github.com/laminas/laminas-loader/releases.atom",
-                "source": "https://github.com/laminas/laminas-loader"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-02T18:30:53+00:00"
-        },
-        {
-            "name": "laminas/laminas-servicemanager",
-            "version": "3.7.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-servicemanager.git",
-                "reference": "2b0aee477fdbd3191af7c302b93dbc5fda0626f4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/2b0aee477fdbd3191af7c302b93dbc5fda0626f4",
-                "reference": "2b0aee477fdbd3191af7c302b93dbc5fda0626f4",
-                "shasum": ""
-            },
-            "require": {
-                "container-interop/container-interop": "^1.2",
-                "laminas/laminas-stdlib": "^3.2.1",
-                "laminas/laminas-zendframework-bridge": "^1.0",
-                "php": "^7.3 || ~8.0.0",
-                "psr/container": "^1.0"
-            },
-            "conflict": {
-                "laminas/laminas-code": "<3.3.1",
-                "zendframework/zend-code": "<3.3.1"
-            },
-            "provide": {
-                "container-interop/container-interop-implementation": "^1.2",
-                "psr/container-implementation": "^1.0"
-            },
-            "replace": {
-                "zendframework/zend-servicemanager": "^3.4.0"
-            },
-            "require-dev": {
-                "composer/package-versions-deprecated": "^1.0",
-                "laminas/laminas-coding-standard": "~2.2.0",
-                "laminas/laminas-container-config-test": "^0.3",
-                "laminas/laminas-dependency-plugin": "^2.1.2",
-                "mikey179/vfsstream": "^1.6.8",
-                "ocramius/proxy-manager": "^2.2.3",
-                "phpbench/phpbench": "^1.0.4",
-                "phpspec/prophecy-phpunit": "^2.0",
-                "phpunit/phpunit": "^9.4",
-                "psalm/plugin-phpunit": "^0.16.1",
-                "vimeo/psalm": "^4.8"
-            },
-            "suggest": {
-                "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services"
-            },
-            "bin": [
-                "bin/generate-deps-for-config-factory",
-                "bin/generate-factory-for-class"
-            ],
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\ServiceManager\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Factory-Driven Dependency Injection Container",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "PSR-11",
-                "dependency-injection",
-                "di",
-                "dic",
-                "laminas",
-                "service-manager",
-                "servicemanager"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-servicemanager/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-servicemanager/issues",
-                "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom",
-                "source": "https://github.com/laminas/laminas-servicemanager"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-07-24T19:33:07+00:00"
-        },
-        {
-            "name": "laminas/laminas-uri",
-            "version": "2.9.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-uri.git",
-                "reference": "7e837dc15c8fd3949df7d1213246fd7c8640032b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/7e837dc15c8fd3949df7d1213246fd7c8640032b",
-                "reference": "7e837dc15c8fd3949df7d1213246fd7c8640032b",
-                "shasum": ""
-            },
-            "require": {
-                "laminas/laminas-escaper": "^2.9",
-                "laminas/laminas-validator": "^2.15",
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-uri": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "phpunit/phpunit": "^9.5.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Uri\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "A component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "laminas",
-                "uri"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-uri/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-uri/issues",
-                "rss": "https://github.com/laminas/laminas-uri/releases.atom",
-                "source": "https://github.com/laminas/laminas-uri"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-09T18:37:15+00:00"
-        },
-        {
-            "name": "laminas/laminas-validator",
-            "version": "2.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-validator.git",
-                "reference": "270380e87904f5a1a1fba3059989d4ca157e16a9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/270380e87904f5a1a1fba3059989d4ca157e16a9",
-                "reference": "270380e87904f5a1a1fba3059989d4ca157e16a9",
-                "shasum": ""
-            },
-            "require": {
-                "container-interop/container-interop": "^1.1",
-                "laminas/laminas-stdlib": "^3.6",
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "conflict": {
-                "zendframework/zend-validator": "*"
-            },
-            "require-dev": {
-                "laminas/laminas-cache": "^2.6.1",
-                "laminas/laminas-coding-standard": "~2.2.1",
-                "laminas/laminas-db": "^2.7",
-                "laminas/laminas-filter": "^2.6",
-                "laminas/laminas-http": "^2.14.2",
-                "laminas/laminas-i18n": "^2.6",
-                "laminas/laminas-math": "^2.6",
-                "laminas/laminas-servicemanager": "^2.7.11 || ^3.0.3",
-                "laminas/laminas-session": "^2.8",
-                "laminas/laminas-uri": "^2.7",
-                "phpspec/prophecy-phpunit": "^2.0",
-                "phpunit/phpunit": "^9.5.5",
-                "psalm/plugin-phpunit": "^0.15.0",
-                "psr/http-client": "^1.0",
-                "psr/http-factory": "^1.0",
-                "psr/http-message": "^1.0",
-                "vimeo/psalm": "^4.3"
-            },
-            "suggest": {
-                "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator",
-                "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator",
-                "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages",
-                "laminas/laminas-i18n-resources": "Translations of validator messages",
-                "laminas/laminas-math": "Laminas\\Math component, required by the Csrf validator",
-                "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains",
-                "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator",
-                "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators",
-                "psr/http-message": "psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators"
-            },
-            "type": "library",
-            "extra": {
-                "laminas": {
-                    "component": "Laminas\\Validator",
-                    "config-provider": "Laminas\\Validator\\ConfigProvider"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Laminas\\Validator\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria",
-            "homepage": "https://laminas.dev",
-            "keywords": [
-                "laminas",
-                "validator"
-            ],
-            "support": {
-                "chat": "https://laminas.dev/chat",
-                "docs": "https://docs.laminas.dev/laminas-validator/",
-                "forum": "https://discourse.laminas.dev",
-                "issues": "https://github.com/laminas/laminas-validator/issues",
-                "rss": "https://github.com/laminas/laminas-validator/releases.atom",
-                "source": "https://github.com/laminas/laminas-validator"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-08T23:16:56+00:00"
-        },
-        {
-            "name": "laminas/laminas-zendframework-bridge",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
-                "reference": "bf180a382393e7db5c1e8d0f2ec0c4af9c724baf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/bf180a382393e7db5c1e8d0f2ec0c4af9c724baf",
-                "reference": "bf180a382393e7db5c1e8d0f2ec0c4af9c724baf",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ~8.0.0 || ~8.1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3",
-                "psalm/plugin-phpunit": "^0.15.1",
-                "squizlabs/php_codesniffer": "^3.5",
-                "vimeo/psalm": "^4.6"
-            },
-            "type": "library",
-            "extra": {
-                "laminas": {
-                    "module": "Laminas\\ZendFrameworkBridge"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "src/autoload.php"
-                ],
-                "psr-4": {
-                    "Laminas\\ZendFrameworkBridge\\": "src//"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "description": "Alias legacy ZF class names to Laminas Project equivalents.",
-            "keywords": [
-                "ZendFramework",
-                "autoloading",
-                "laminas",
-                "zf"
-            ],
-            "support": {
-                "forum": "https://discourse.laminas.dev/",
-                "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
-                "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
-                "source": "https://github.com/laminas/laminas-zendframework-bridge"
-            },
-            "funding": [
-                {
-                    "url": "https://funding.communitybridge.org/projects/laminas-project",
-                    "type": "community_bridge"
-                }
-            ],
-            "time": "2021-09-03T17:53:30+00:00"
-        },
-        {
-            "name": "myclabs/deep-copy",
-            "version": "1.10.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
-                "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "doctrine/collections": "^1.0",
-                "doctrine/common": "^2.6",
-                "phpunit/phpunit": "^7.1"
-            },
-            "type": "library",
-            "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.10.2"
-            },
-            "funding": [
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2020-11-13T09:40:50+00:00"
-        },
-        {
-            "name": "netresearch/jsonmapper",
-            "version": "v4.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/cweiske/jsonmapper.git",
-                "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
-                "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "ext-pcre": "*",
-                "ext-reflection": "*",
-                "ext-spl": "*",
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
-                "squizlabs/php_codesniffer": "~3.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "JsonMapper": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "OSL-3.0"
-            ],
-            "authors": [
-                {
-                    "name": "Christian Weiske",
-                    "email": "cweiske@cweiske.de",
-                    "homepage": "http://github.com/cweiske/jsonmapper/",
-                    "role": "Developer"
-                }
-            ],
-            "description": "Map nested JSON structures onto PHP classes",
-            "support": {
-                "email": "cweiske@cweiske.de",
-                "issues": "https://github.com/cweiske/jsonmapper/issues",
-                "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
-            },
-            "time": "2020-12-01T19:48:11+00:00"
-        },
-        {
-            "name": "nikic/php-parser",
-            "version": "v4.13.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "50953a2691a922aa1769461637869a0a2faa3f53"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53",
-                "reference": "50953a2691a922aa1769461637869a0a2faa3f53",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=7.0"
-            },
-            "require-dev": {
-                "ircmaxell/php-yacc": "^0.0.7",
-                "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
-            },
-            "bin": [
-                "bin/php-parse"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.9-dev"
-                }
-            },
-            "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.13.0"
-            },
-            "time": "2021-09-20T12:20:58+00:00"
-        },
-        {
-            "name": "openlss/lib-array2xml",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nullivex/lib-array2xml.git",
-                "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
-                "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "LSS": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "Apache-2.0"
-            ],
-            "authors": [
-                {
-                    "name": "Bryan Tong",
-                    "email": "bryan@nullivex.com",
-                    "homepage": "https://www.nullivex.com"
-                },
-                {
-                    "name": "Tony Butler",
-                    "email": "spudz76@gmail.com",
-                    "homepage": "https://www.nullivex.com"
-                }
-            ],
-            "description": "Array2XML conversion library credit to lalit.org",
-            "homepage": "https://www.nullivex.com",
-            "keywords": [
-                "array",
-                "array conversion",
-                "xml",
-                "xml conversion"
-            ],
-            "support": {
-                "issues": "https://github.com/nullivex/lib-array2xml/issues",
-                "source": "https://github.com/nullivex/lib-array2xml/tree/master"
-            },
-            "time": "2019-03-29T20:06:56+00:00"
-        },
-        {
-            "name": "phar-io/manifest",
-            "version": "2.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/manifest.git",
-                "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
-                "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-phar": "*",
-                "ext-xmlwriter": "*",
-                "phar-io/version": "^3.0.1",
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "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.3"
-            },
-            "time": "2021-07-20T11:28:43+00:00"
-        },
-        {
-            "name": "phar-io/version",
-            "version": "3.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phar-io/version.git",
-                "reference": "bae7c545bef187884426f042434e561ab1ddb182"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
-                "reference": "bae7c545bef187884426f042434e561ab1ddb182",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "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.1.0"
-            },
-            "time": "2021-02-23T14:00:09+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-common",
-            "version": "2.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
-                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-2.x": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "opensource@ijaap.nl"
-                }
-            ],
-            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
-            "homepage": "http://www.phpdoc.org",
-            "keywords": [
-                "FQSEN",
-                "phpDocumentor",
-                "phpdoc",
-                "reflection",
-                "static analysis"
-            ],
-            "support": {
-                "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
-            },
-            "time": "2020-06-27T09:03:43+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "5.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
-                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
-                "shasum": ""
-            },
-            "require": {
-                "ext-filter": "*",
-                "php": "^7.2 || ^8.0",
-                "phpdocumentor/reflection-common": "^2.2",
-                "phpdocumentor/type-resolver": "^1.3",
-                "webmozart/assert": "^1.9.1"
-            },
-            "require-dev": {
-                "mockery/mockery": "~1.3.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                },
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "account@ijaap.nl"
-                }
-            ],
-            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
-            "support": {
-                "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
-            },
-            "time": "2020-09-03T19:13:55+00:00"
-        },
-        {
-            "name": "phpdocumentor/type-resolver",
-            "version": "1.5.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/30f38bffc6f24293dadd1823936372dfa9e86e2f",
-                "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0",
-                "phpdocumentor/reflection-common": "^2.0"
-            },
-            "require-dev": {
-                "ext-tokenizer": "*",
-                "psalm/phar": "^4.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-1.x": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                }
-            ],
-            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
-            "support": {
-                "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.0"
-            },
-            "time": "2021-09-17T15:28:14+00:00"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "1.14.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
-                "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.2",
-                "php": "^7.2 || ~8.0, <8.2",
-                "phpdocumentor/reflection-docblock": "^5.2",
-                "sebastian/comparator": "^3.0 || ^4.0",
-                "sebastian/recursion-context": "^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "phpspec/phpspec": "^6.0 || ^7.0",
-                "phpunit/phpunit": "^8.0 || ^9.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Prophecy\\": "src/Prophecy"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
-                },
-                {
-                    "name": "Marcello Duarte",
-                    "email": "marcello.duarte@gmail.com"
-                }
-            ],
-            "description": "Highly opinionated mocking framework for PHP 5.3+",
-            "homepage": "https://github.com/phpspec/prophecy",
-            "keywords": [
-                "Double",
-                "Dummy",
-                "fake",
-                "mock",
-                "spy",
-                "stub"
-            ],
-            "support": {
-                "issues": "https://github.com/phpspec/prophecy/issues",
-                "source": "https://github.com/phpspec/prophecy/tree/1.14.0"
-            },
-            "time": "2021-09-10T09:02:12+00:00"
-        },
-        {
-            "name": "phpstan/phpdoc-parser",
-            "version": "0.4.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpstan/phpdoc-parser.git",
-                "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/98a088b17966bdf6ee25c8a4b634df313d8aa531",
-                "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "require-dev": {
-                "consistence/coding-standard": "^3.5",
-                "ergebnis/composer-normalize": "^2.0.2",
-                "jakub-onderka/php-parallel-lint": "^0.9.2",
-                "phing/phing": "^2.16.0",
-                "phpstan/extension-installer": "^1.0",
-                "phpstan/phpstan": "^0.12.26",
-                "phpstan/phpstan-strict-rules": "^0.12",
-                "phpunit/phpunit": "^6.3",
-                "slevomat/coding-standard": "^4.7.2",
-                "symfony/process": "^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "0.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PHPStan\\PhpDocParser\\": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "PHPDoc parser with support for nullable, intersection and generic types",
-            "support": {
-                "issues": "https://github.com/phpstan/phpdoc-parser/issues",
-                "source": "https://github.com/phpstan/phpdoc-parser/tree/master"
-            },
-            "time": "2020-08-03T20:32:43+00:00"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "9.2.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218",
-                "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-libxml": "*",
-                "ext-xmlwriter": "*",
-                "nikic/php-parser": "^4.12.0",
-                "php": ">=7.3",
-                "phpunit/php-file-iterator": "^3.0.3",
-                "phpunit/php-text-template": "^2.0.2",
-                "sebastian/code-unit-reverse-lookup": "^2.0.2",
-                "sebastian/complexity": "^2.0",
-                "sebastian/environment": "^5.1.2",
-                "sebastian/lines-of-code": "^1.0.3",
-                "sebastian/version": "^3.0.1",
-                "theseer/tokenizer": "^1.2.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-pcov": "*",
-                "ext-xdebug": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "9.2-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-09-17T05:39:03+00:00"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "3.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
-                "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:57:25+00:00"
-        },
-        {
-            "name": "phpunit/php-invoker",
-            "version": "3.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-invoker.git",
-                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
-                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "ext-pcntl": "*",
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-pcntl": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "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/3.1.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:58:55+00:00"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
-                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T05:33:50+00:00"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "5.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
-                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0-dev"
-                }
-            },
-            "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/5.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:16:10+00:00"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "9.5.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
-                "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.3.1",
-                "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": ">=7.3",
-                "phpspec/prophecy": "^1.12.1",
-                "phpunit/php-code-coverage": "^9.2.3",
-                "phpunit/php-file-iterator": "^3.0.5",
-                "phpunit/php-invoker": "^3.1.1",
-                "phpunit/php-text-template": "^2.0.3",
-                "phpunit/php-timer": "^5.0.2",
-                "sebastian/cli-parser": "^1.0.1",
-                "sebastian/code-unit": "^1.0.6",
-                "sebastian/comparator": "^4.0.5",
-                "sebastian/diff": "^4.0.3",
-                "sebastian/environment": "^5.1.3",
-                "sebastian/exporter": "^4.0.3",
-                "sebastian/global-state": "^5.0.1",
-                "sebastian/object-enumerator": "^4.0.3",
-                "sebastian/resource-operations": "^3.0.3",
-                "sebastian/type": "^2.3.4",
-                "sebastian/version": "^3.0.2"
-            },
-            "require-dev": {
-                "ext-pdo": "*",
-                "phpspec/prophecy-phpunit": "^2.0.1"
-            },
-            "suggest": {
-                "ext-soap": "*",
-                "ext-xdebug": "*"
-            },
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "9.5-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9"
-            },
-            "funding": [
-                {
-                    "url": "https://phpunit.de/donate.html",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-08-31T06:47:40+00:00"
-        },
-        {
-            "name": "psalm/plugin-phpunit",
-            "version": "0.13.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
-                "reference": "e006914489f3e445f5cb786ea6f3df89ea30129b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e006914489f3e445f5cb786ea6f3df89ea30129b",
-                "reference": "e006914489f3e445f5cb786ea6f3df89ea30129b",
-                "shasum": ""
-            },
-            "require": {
-                "composer/package-versions-deprecated": "^1.10",
-                "composer/semver": "^1.4 || ^2.0 || ^3.0",
-                "ext-simplexml": "*",
-                "php": "^7.3 || ^8.0",
-                "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
-                "vimeo/psalm": "dev-master || dev-4.x || ^4.0"
-            },
-            "require-dev": {
-                "codeception/codeception": "^4.0.3",
-                "squizlabs/php_codesniffer": "^3.3.1",
-                "weirdan/codeception-psalm-module": "^0.7.1",
-                "weirdan/prophecy-shim": "^1.0 || ^2.0"
-            },
-            "type": "psalm-plugin",
-            "extra": {
-                "psalm": {
-                    "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psalm\\PhpUnitPlugin\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Matt Brown",
-                    "email": "github@muglug.com"
-                }
-            ],
-            "description": "Psalm plugin for PHPUnit",
-            "support": {
-                "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
-                "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.13.0"
-            },
-            "time": "2020-10-19T12:43:17+00:00"
-        },
-        {
-            "name": "psr/cache",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/cache.git",
-                "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
-                "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Cache\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for caching libraries",
-            "keywords": [
-                "cache",
-                "psr",
-                "psr-6"
-            ],
-            "support": {
-                "source": "https://github.com/php-fig/cache/tree/master"
-            },
-            "time": "2016-08-06T20:24:11+00:00"
-        },
-        {
-            "name": "psr/container",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/container.git",
-                "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
-                "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.0"
-            },
-            "type": "library",
-            "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/1.1.1"
-            },
-            "time": "2021-03-05T17:36:06+00:00"
-        },
-        {
-            "name": "psr/http-message",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-message.git",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Http\\Message\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://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/master"
-            },
-            "time": "2016-08-06T14:39:51+00:00"
-        },
-        {
-            "name": "psr/log",
-            "version": "1.1.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
-                }
-            },
-            "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/1.1.4"
-            },
-            "time": "2021-05-03T11:20:27+00:00"
-        },
-        {
-            "name": "psr/simple-cache",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/simple-cache.git",
-                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
-                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\SimpleCache\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://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/master"
-            },
-            "time": "2017-10-23T01:57:42+00:00"
-        },
-        {
-            "name": "sebastian/cli-parser",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/cli-parser.git",
-                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
-                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T06:08:49+00:00"
-        },
-        {
-            "name": "sebastian/code-unit",
-            "version": "1.0.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/code-unit.git",
-                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
-                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "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/1.0.8"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:08:54+00:00"
-        },
-        {
-            "name": "sebastian/code-unit-reverse-lookup",
-            "version": "2.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
-                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
-                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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/2.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:30:19+00:00"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "4.0.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/diff": "^4.0",
-                "sebastian/exporter": "^4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T15:49:45+00:00"
-        },
-        {
-            "name": "sebastian/complexity",
-            "version": "2.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/complexity.git",
-                "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
-                "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^4.7",
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T15:52:27+00:00"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "4.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
-                "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3",
-                "symfony/process": "^4.2 || ^5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:10:38+00:00"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "5.1.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
-                "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-posix": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.1-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/environment/issues",
-                "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:52:38+00:00"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "4.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
-                "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/recursion-context": "^4.0"
-            },
-            "require-dev": {
-                "ext-mbstring": "*",
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/exporter/issues",
-                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T05:24:23+00:00"
-        },
-        {
-            "name": "sebastian/global-state",
-            "version": "5.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
-                "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/object-reflector": "^2.0",
-                "sebastian/recursion-context": "^4.0"
-            },
-            "require-dev": {
-                "ext-dom": "*",
-                "phpunit/phpunit": "^9.3"
-            },
-            "suggest": {
-                "ext-uopz": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/global-state",
-            "keywords": [
-                "global state"
-            ],
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/global-state/issues",
-                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-06-11T13:31:12+00:00"
-        },
-        {
-            "name": "sebastian/lines-of-code",
-            "version": "1.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/lines-of-code.git",
-                "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
-                "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^4.6",
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "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",
-                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-11-28T06:42:11+00:00"
-        },
-        {
-            "name": "sebastian/object-enumerator",
-            "version": "4.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
-                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
-                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "sebastian/object-reflector": "^2.0",
-                "sebastian/recursion-context": "^4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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/4.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:12:34+00:00"
-        },
-        {
-            "name": "sebastian/object-reflector",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/object-reflector.git",
-                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
-                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "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/2.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:14:26+00:00"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "4.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
-                "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "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": "http://www.github.com/sebastianbergmann/recursion-context",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
-                "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-10-26T13:17:30+00:00"
-        },
-        {
-            "name": "sebastian/resource-operations",
-            "version": "3.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/resource-operations.git",
-                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
-                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides a list of PHP built-in functions that operate on resources",
-            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
-            "support": {
-                "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
-                "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T06:45:17+00:00"
-        },
-        {
-            "name": "sebastian/type",
-            "version": "2.3.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/type.git",
-                "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
-                "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "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/2.3.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-06-15T12:49:02+00:00"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "3.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "c6c1022351a901512170118436c764e473f6de8c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
-                "reference": "c6c1022351a901512170118436c764e473f6de8c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "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/3.0.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sebastianbergmann",
-                    "type": "github"
-                }
-            ],
-            "time": "2020-09-28T06:39:44+00:00"
-        },
-        {
-            "name": "slevomat/coding-standard",
-            "version": "6.4.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/slevomat/coding-standard.git",
-                "reference": "696dcca217d0c9da2c40d02731526c1e25b65346"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/696dcca217d0c9da2c40d02731526c1e25b65346",
-                "reference": "696dcca217d0c9da2c40d02731526c1e25b65346",
-                "shasum": ""
-            },
-            "require": {
-                "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
-                "php": "^7.1 || ^8.0",
-                "phpstan/phpdoc-parser": "0.4.5 - 0.4.9",
-                "squizlabs/php_codesniffer": "^3.5.6"
-            },
-            "require-dev": {
-                "phing/phing": "2.16.3",
-                "php-parallel-lint/php-parallel-lint": "1.2.0",
-                "phpstan/phpstan": "0.12.48",
-                "phpstan/phpstan-deprecation-rules": "0.12.5",
-                "phpstan/phpstan-phpunit": "0.12.16",
-                "phpstan/phpstan-strict-rules": "0.12.5",
-                "phpunit/phpunit": "7.5.20|8.5.5|9.4.0"
-            },
-            "type": "phpcodesniffer-standard",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "6.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "SlevomatCodingStandard\\": "SlevomatCodingStandard"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
-            "support": {
-                "issues": "https://github.com/slevomat/coding-standard/issues",
-                "source": "https://github.com/slevomat/coding-standard/tree/6.4.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/kukulich",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2020-10-05T12:39:37+00:00"
-        },
-        {
-            "name": "squizlabs/php_codesniffer",
-            "version": "3.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
-                "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
-                "shasum": ""
-            },
-            "require": {
-                "ext-simplexml": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": ">=5.4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
-            },
-            "bin": [
-                "bin/phpcs",
-                "bin/phpcbf"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.x-dev"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Greg Sherwood",
-                    "role": "lead"
-                }
-            ],
-            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
-            "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
-            "keywords": [
-                "phpcs",
-                "standards"
-            ],
-            "support": {
-                "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
-                "source": "https://github.com/squizlabs/PHP_CodeSniffer",
-                "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
-            },
-            "time": "2021-04-09T00:54:41+00:00"
-        },
-        {
-            "name": "symfony/console",
-            "version": "v5.3.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/console.git",
-                "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a",
-                "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/deprecation-contracts": "^2.1",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php73": "^1.8",
-                "symfony/polyfill-php80": "^1.16",
-                "symfony/service-contracts": "^1.1|^2",
-                "symfony/string": "^5.1"
-            },
-            "conflict": {
-                "psr/log": ">=3",
-                "symfony/dependency-injection": "<4.4",
-                "symfony/dotenv": "<5.1",
-                "symfony/event-dispatcher": "<4.4",
-                "symfony/lock": "<4.4",
-                "symfony/process": "<4.4"
-            },
-            "provide": {
-                "psr/log-implementation": "1.0|2.0"
-            },
-            "require-dev": {
-                "psr/log": "^1|^2",
-                "symfony/config": "^4.4|^5.0",
-                "symfony/dependency-injection": "^4.4|^5.0",
-                "symfony/event-dispatcher": "^4.4|^5.0",
-                "symfony/lock": "^4.4|^5.0",
-                "symfony/process": "^4.4|^5.0",
-                "symfony/var-dumper": "^4.4|^5.0"
-            },
-            "suggest": {
-                "psr/log": "For using the console logger",
-                "symfony/event-dispatcher": "",
-                "symfony/lock": "",
-                "symfony/process": ""
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Console\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Eases the creation of beautiful and testable command line interfaces",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "cli",
-                "command line",
-                "console",
-                "terminal"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/console/tree/v5.3.7"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-08-25T20:02:16+00:00"
-        },
-        {
-            "name": "symfony/deprecation-contracts",
-            "version": "v2.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
-                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "A generic function and convention to trigger deprecation notices",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-03-23T23:28:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
-                "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-ctype": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                },
-                "files": [
-                    "bootstrap.php"
-                ]
-            },
-            "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.23.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-02-19T12:13:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-grapheme",
-            "version": "v1.23.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
-                "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
-                "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's grapheme_* functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "grapheme",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-05-27T12:26:48+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
-                "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's Normalizer class and related functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "intl",
-                "normalizer",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-02-19T12:13:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.23.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
-                "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for the Mbstring extension",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "mbstring",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-05-27T12:26:48+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php73",
-            "version": "v1.23.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
-                "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php73\\": ""
-                },
-                "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 7.3+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-02-19T12:13:01+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php80",
-            "version": "v1.23.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
-                "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.23-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php80\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ion Bazan",
-                    "email": "ion.bazan@gmail.com"
-                },
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-07-28T13:41:28+00:00"
-        },
-        {
-            "name": "symfony/service-contracts",
-            "version": "v2.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
-                "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "psr/container": "^1.1"
-            },
-            "suggest": {
-                "symfony/service-implementation": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "2.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Contracts\\Service\\": ""
-                }
-            },
-            "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/v2.4.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-04-01T10:43:52+00:00"
-        },
-        {
-            "name": "symfony/string",
-            "version": "v5.3.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/string.git",
-                "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5",
-                "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-intl-grapheme": "~1.0",
-                "symfony/polyfill-intl-normalizer": "~1.0",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php80": "~1.15"
-            },
-            "require-dev": {
-                "symfony/error-handler": "^4.4|^5.0",
-                "symfony/http-client": "^4.4|^5.0",
-                "symfony/translation-contracts": "^1.1|^2",
-                "symfony/var-exporter": "^4.4|^5.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\String\\": ""
-                },
-                "files": [
-                    "Resources/functions.php"
-                ],
-                "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/v5.3.7"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-08-26T08:00:08+00:00"
-        },
-        {
-            "name": "theseer/tokenizer",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
-                "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-tokenizer": "*",
-                "ext-xmlwriter": "*",
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "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.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/theseer",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-07-28T10:34:58+00:00"
-        },
-        {
-            "name": "vimeo/psalm",
-            "version": "4.10.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/vimeo/psalm.git",
-                "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/vimeo/psalm/zipball/916b098b008f6de4543892b1e0651c1c3b92cbfa",
-                "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2.4.2",
-                "amphp/byte-stream": "^1.5",
-                "composer/package-versions-deprecated": "^1.8.0",
-                "composer/semver": "^1.4 || ^2.0 || ^3.0",
-                "composer/xdebug-handler": "^1.1 || ^2.0",
-                "dnoegel/php-xdg-base-dir": "^0.1.1",
-                "ext-ctype": "*",
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-libxml": "*",
-                "ext-mbstring": "*",
-                "ext-simplexml": "*",
-                "ext-tokenizer": "*",
-                "felixfbecker/advanced-json-rpc": "^3.0.3",
-                "felixfbecker/language-server-protocol": "^1.5",
-                "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
-                "nikic/php-parser": "^4.12",
-                "openlss/lib-array2xml": "^1.0",
-                "php": "^7.1|^8",
-                "sebastian/diff": "^3.0 || ^4.0",
-                "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
-                "webmozart/path-util": "^2.3"
-            },
-            "provide": {
-                "psalm/psalm": "self.version"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.2",
-                "brianium/paratest": "^4.0||^6.0",
-                "ext-curl": "*",
-                "php-parallel-lint/php-parallel-lint": "^1.2",
-                "phpdocumentor/reflection-docblock": "^5",
-                "phpmyadmin/sql-parser": "5.1.0||dev-master",
-                "phpspec/prophecy": ">=1.9.0",
-                "phpunit/phpunit": "^9.0",
-                "psalm/plugin-phpunit": "^0.16",
-                "slevomat/coding-standard": "^7.0",
-                "squizlabs/php_codesniffer": "^3.5",
-                "symfony/process": "^4.3 || ^5.0",
-                "weirdan/prophecy-shim": "^1.0 || ^2.0"
-            },
-            "suggest": {
-                "ext-igbinary": "^2.0.5"
-            },
-            "bin": [
-                "psalm",
-                "psalm-language-server",
-                "psalm-plugin",
-                "psalm-refactor",
-                "psalter"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.x-dev",
-                    "dev-3.x": "3.x-dev",
-                    "dev-2.x": "2.x-dev",
-                    "dev-1.x": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "src/functions.php",
-                    "src/spl_object_id.php"
-                ],
-                "psr-4": {
-                    "Psalm\\": "src/Psalm/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Matthew Brown"
-                }
-            ],
-            "description": "A static analysis tool for finding errors in PHP applications",
-            "keywords": [
-                "code",
-                "inspection",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/vimeo/psalm/issues",
-                "source": "https://github.com/vimeo/psalm/tree/4.10.0"
-            },
-            "time": "2021-09-04T21:00:09+00:00"
-        },
-        {
-            "name": "webimpress/coding-standard",
-            "version": "1.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webimpress/coding-standard.git",
-                "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/8f4a220de33f471a8101836f7ec72b852c3f9f03",
-                "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.3 || ^8.0",
-                "squizlabs/php_codesniffer": "^3.6"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.5.4"
-            },
-            "type": "phpcodesniffer-standard",
-            "extra": {
-                "dev-master": "1.2.x-dev",
-                "dev-develop": "1.3.x-dev"
-            },
-            "autoload": {
-                "psr-4": {
-                    "WebimpressCodingStandard\\": "src/WebimpressCodingStandard/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "description": "Webimpress Coding Standard",
-            "keywords": [
-                "Coding Standard",
-                "PSR-2",
-                "phpcs",
-                "psr-12",
-                "webimpress"
-            ],
-            "support": {
-                "issues": "https://github.com/webimpress/coding-standard/issues",
-                "source": "https://github.com/webimpress/coding-standard/tree/1.2.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/michalbundyra",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-04-12T12:51:27+00:00"
-        },
-        {
-            "name": "webmozart/assert",
-            "version": "1.10.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozarts/assert.git",
-                "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
-                "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0",
-                "symfony/polyfill-ctype": "^1.8"
-            },
-            "conflict": {
-                "phpstan/phpstan": "<0.12.20",
-                "vimeo/psalm": "<4.6.1 || 4.6.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^8.5.13"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.10-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\Assert\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "Assertions to validate method input/output with nice error messages.",
-            "keywords": [
-                "assert",
-                "check",
-                "validate"
-            ],
-            "support": {
-                "issues": "https://github.com/webmozarts/assert/issues",
-                "source": "https://github.com/webmozarts/assert/tree/1.10.0"
-            },
-            "time": "2021-03-09T10:59:23+00:00"
-        },
-        {
-            "name": "webmozart/path-util",
-            "version": "2.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozart/path-util.git",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "webmozart/assert": "~1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\PathUtil\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
-            "support": {
-                "issues": "https://github.com/webmozart/path-util/issues",
-                "source": "https://github.com/webmozart/path-util/tree/2.3.0"
-            },
-            "abandoned": "symfony/filesystem",
-            "time": "2015-12-17T08:42:14+00:00"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": [],
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {
-        "php": "^7.3 || ~8.0.0 || ~8.1.0",
-        "ext-dom": "*",
-        "ext-libxml": "*"
-    },
-    "platform-dev": [],
-    "platform-overrides": {
-        "php": "7.3.99"
-    },
-    "plugin-api-version": "2.2.0"
-}
diff --git a/vendor/laminas/laminas-feed/psalm-baseline.xml b/vendor/laminas/laminas-feed/psalm-baseline.xml
deleted file mode 100644
index a6667f228e33f2c60ef31ceaa474e7dfec9824c4..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-feed/psalm-baseline.xml
+++ /dev/null
@@ -1,5382 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<files psalm-version="4.10.0@916b098b008f6de4543892b1e0651c1c3b92cbfa">
-  <file src="src/PubSubHubbub/AbstractCallback.php">
-    <DocblockTypeContradiction occurrences="4">
-      <code>! $httpResponse instanceof HttpResponse &amp;&amp; ! $httpResponse instanceof PhpResponse</code>
-      <code>$this-&gt;httpResponse === null</code>
-      <code>$this-&gt;storage === null</code>
-      <code>is_array($options)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="4">
-      <code>$callbackUrl</code>
-      <code>$callbackUrl</code>
-      <code>$name</code>
-      <code>$options['storage']</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="7">
-      <code>$callbackUrl</code>
-      <code>$callbackUrl</code>
-      <code>$https</code>
-      <code>$https</code>
-      <code>$iisUrlRewritten</code>
-      <code>$name</code>
-      <code>$unencodedUrl</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="5">
-      <code>bool|string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedOperand occurrences="2">
-      <code>$_SERVER['QUERY_STRING']</code>
-      <code>$callbackUrl</code>
-    </MixedOperand>
-    <MixedReturnStatement occurrences="8">
-      <code>$_SERVER[$temp]</code>
-      <code>$_SERVER[$temp]</code>
-      <code>$_SERVER['HTTP_HOST']</code>
-      <code>$callbackUrl</code>
-      <code>$callbackUrl</code>
-      <code>$headers[$header]</code>
-      <code>$name</code>
-      <code>$unencodedUrl</code>
-    </MixedReturnStatement>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>$httpResponse</code>
-      <code>$storage</code>
-    </PropertyNotSetInConstructor>
-    <RedundantCondition occurrences="1">
-      <code>is_array($options)</code>
-    </RedundantCondition>
-  </file>
-  <file src="src/PubSubHubbub/CallbackInterface.php">
-    <MissingReturnType occurrences="2">
-      <code>handle</code>
-      <code>setHttpResponse</code>
-    </MissingReturnType>
-  </file>
-  <file src="src/PubSubHubbub/HttpResponse.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>! is_int($code)</code>
-    </DocblockTypeContradiction>
-    <InvalidScalarArgument occurrences="1">
-      <code>strlen($content)</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="2">
-      <code>$header['replace']</code>
-      <code>$header['replace']</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="9">
-      <code>$header['name']</code>
-      <code>$header['name']</code>
-      <code>$header['name']</code>
-      <code>$header['name']</code>
-      <code>$header['replace']</code>
-      <code>$header['replace']</code>
-      <code>$header['value']</code>
-      <code>$header['value']</code>
-      <code>$header['value']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="3">
-      <code>$header</code>
-      <code>$header</code>
-      <code>$header</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>string|null</code>
-    </MixedInferredReturnType>
-    <MixedOperand occurrences="4">
-      <code>$header['name']</code>
-      <code>$header['name']</code>
-      <code>$header['value']</code>
-      <code>$header['value']</code>
-    </MixedOperand>
-    <MixedReturnStatement occurrences="1">
-      <code>$header['value']</code>
-    </MixedReturnStatement>
-    <RedundantCastGivenDocblockType occurrences="3">
-      <code>(string) $content</code>
-      <code>(string) $name</code>
-      <code>(string) $value</code>
-    </RedundantCastGivenDocblockType>
-  </file>
-  <file src="src/PubSubHubbub/Model/AbstractModel.php">
-    <NullArgument occurrences="1">
-      <code>null</code>
-    </NullArgument>
-  </file>
-  <file src="src/PubSubHubbub/Model/Subscription.php">
-    <DocblockTypeContradiction occurrences="3">
-      <code>! is_string($key)</code>
-      <code>! is_string($key)</code>
-      <code>null === $this-&gt;now</code>
-    </DocblockTypeContradiction>
-    <FalsableReturnStatement occurrences="1">
-      <code>false</code>
-    </FalsableReturnStatement>
-    <MixedArgumentTypeCoercion occurrences="2">
-      <code>$data</code>
-      <code>$data</code>
-    </MixedArgumentTypeCoercion>
-    <MixedAssignment occurrences="1">
-      <code>$data['created_time']</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>array</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="1">
-      <code>getArrayCopy</code>
-    </MixedMethodCall>
-    <MixedOperand occurrences="1">
-      <code>$data['lease_seconds']</code>
-    </MixedOperand>
-    <MixedReturnStatement occurrences="1">
-      <code>$result-&gt;current()-&gt;getArrayCopy()</code>
-    </MixedReturnStatement>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>$now</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/PubSubHubbub/PubSubHubbub.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>null === static::$escaper</code>
-    </DocblockTypeContradiction>
-    <MixedInferredReturnType occurrences="1">
-      <code>array&lt;array-key, mixed&gt;|null</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$feed-&gt;getHubs()</code>
-    </MixedReturnStatement>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>$source instanceof Reader\Feed\AbstractFeed</code>
-    </RedundantConditionGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="1">
-      <code>getHubs</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="src/PubSubHubbub/Publisher.php">
-    <DocblockTypeContradiction occurrences="10">
-      <code>! is_string($name)</code>
-      <code>! is_string($name)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($value)</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>is_array($options)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="9">
-      <code>$options['hubUrls']</code>
-      <code>$options['parameters']</code>
-      <code>$options['updatedTopicUrls']</code>
-      <code>$topicUrl</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedArgument>
-    <MixedArgumentTypeCoercion occurrences="2">
-      <code>$name</code>
-      <code>$name</code>
-    </MixedArgumentTypeCoercion>
-    <MixedAssignment occurrences="6">
-      <code>$topicUrl</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedAssignment>
-    <MixedOperand occurrences="1">
-      <code>$response-&gt;getContent()</code>
-    </MixedOperand>
-  </file>
-  <file src="src/PubSubHubbub/Subscriber.php">
-    <DocblockTypeContradiction occurrences="13">
-      <code>! is_string($name)</code>
-      <code>! is_string($name)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($value)</code>
-      <code>$this-&gt;storage === null</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>is_array($options)</code>
-    </DocblockTypeContradiction>
-    <InvalidPropertyAssignmentValue occurrences="1">
-      <code>$bool</code>
-    </InvalidPropertyAssignmentValue>
-    <InvalidScalarArgument occurrences="1">
-      <code>rand()</code>
-    </InvalidScalarArgument>
-    <MissingReturnType occurrences="1">
-      <code>setTestStaticToken</code>
-    </MissingReturnType>
-    <MixedArgument occurrences="19">
-      <code>$auth[0]</code>
-      <code>$auth[1]</code>
-      <code>$authentication</code>
-      <code>$duplicateKey</code>
-      <code>$options['authentications']</code>
-      <code>$options['callbackUrl']</code>
-      <code>$options['hubUrls']</code>
-      <code>$options['leaseSeconds']</code>
-      <code>$options['parameters']</code>
-      <code>$options['preferredVerificationMode']</code>
-      <code>$options['storage']</code>
-      <code>$options['topicUrl']</code>
-      <code>$options['usePathParameter']</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedArgument>
-    <MixedArgumentTypeCoercion occurrences="5">
-      <code>$key</code>
-      <code>$key</code>
-      <code>$name</code>
-      <code>$url</code>
-      <code>uksort($params, 'strnatcmp')</code>
-    </MixedArgumentTypeCoercion>
-    <MixedArrayAccess occurrences="2">
-      <code>$auth[0]</code>
-      <code>$auth[1]</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="11">
-      <code>$auth</code>
-      <code>$authentication</code>
-      <code>$duplicateKey</code>
-      <code>$keyduplicate</code>
-      <code>$params[$name]</code>
-      <code>$url</code>
-      <code>$url</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedAssignment>
-    <MixedOperand occurrences="4">
-      <code>$keyduplicate</code>
-      <code>$params['hub.lease_seconds']</code>
-      <code>$params['hub.topic']</code>
-      <code>$value</code>
-    </MixedOperand>
-    <PossiblyFalsePropertyAssignmentValue occurrences="1">
-      <code>false</code>
-    </PossiblyFalsePropertyAssignmentValue>
-    <PossiblyInvalidCast occurrences="1">
-      <code>$params['hub.verify_token']</code>
-    </PossiblyInvalidCast>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>$leaseSeconds</code>
-      <code>$storage</code>
-    </PropertyNotSetInConstructor>
-    <RedundantCast occurrences="1">
-      <code>(string) $token</code>
-    </RedundantCast>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>$this-&gt;getLeaseSeconds() !== null</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/PubSubHubbub/Subscriber/Callback.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>$this-&gt;feedUpdate === null</code>
-    </DocblockTypeContradiction>
-    <InvalidScalarArgument occurrences="6">
-      <code>$contentType</code>
-      <code>$contentType</code>
-      <code>$contentType</code>
-      <code>$contentType</code>
-      <code>$contentType</code>
-      <code>$this-&gt;getSubscriberCount()</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="9">
-      <code>$_SERVER['REQUEST_METHOD']</code>
-      <code>$_SERVER['REQUEST_METHOD']</code>
-      <code>$httpGetData['hub_challenge']</code>
-      <code>$httpGetData['hub_mode']</code>
-      <code>$httpGetData['hub_mode']</code>
-      <code>$httpGetData['hub_topic']</code>
-      <code>$httpGetData['hub_verify_token']</code>
-      <code>$params['xhub.subscription']</code>
-      <code>$queryString</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="3">
-      <code>$data['lease_seconds']</code>
-      <code>$queryString</code>
-      <code>$verifyToken</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>false|string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$httpGetData['xhub_subscription']</code>
-    </MixedReturnStatement>
-    <ParamNameMismatch occurrences="1">
-      <code>$httpGetData</code>
-    </ParamNameMismatch>
-    <PossiblyFalseArgument occurrences="2">
-      <code>$this-&gt;_getRawBody()</code>
-      <code>$verifyTokenKey</code>
-    </PossiblyFalseArgument>
-    <PossiblyNullArgument occurrences="1">
-      <code>$httpGetData['hub_verify_token']</code>
-    </PossiblyNullArgument>
-    <PossiblyNullArrayAccess occurrences="1">
-      <code>$httpGetData['hub_verify_token']</code>
-    </PossiblyNullArrayAccess>
-    <PossiblyUndefinedMethod occurrences="1">
-      <code>setHeader</code>
-    </PossiblyUndefinedMethod>
-    <PropertyNotSetInConstructor occurrences="4">
-      <code>$currentSubscriptionData</code>
-      <code>$feedUpdate</code>
-      <code>Callback</code>
-      <code>Callback</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Reader/AbstractEntry.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>$this-&gt;xpath</code>
-    </DocblockTypeContradiction>
-    <InvalidArgument occurrences="1">
-      <code>$entry</code>
-    </InvalidArgument>
-    <MixedArgument occurrences="2">
-      <code>$all['core']</code>
-      <code>$extension</code>
-    </MixedArgument>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;extensions[$extension]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="4">
-      <code>$className</code>
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$feed</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="2">
-      <code>null|Extension\AbstractEntry</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="2">
-      <code>getClassName</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="2">
-      <code>$this-&gt;data['type']</code>
-      <code>$this-&gt;extensions[$name . '\Entry']</code>
-    </MixedReturnStatement>
-    <PossiblyNullPropertyAssignmentValue occurrences="1">
-      <code>$entry-&gt;ownerDocument</code>
-    </PossiblyNullPropertyAssignmentValue>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>$xpath</code>
-    </PropertyNotSetInConstructor>
-    <UndefinedMethod occurrences="1">
-      <code>Reader::getPluginLoader()</code>
-    </UndefinedMethod>
-  </file>
-  <file src="src/Reader/AbstractFeed.php">
-    <InvalidScalarArgument occurrences="1">
-      <code>$this-&gt;key()</code>
-    </InvalidScalarArgument>
-    <MissingReturnType occurrences="3">
-      <code>indexEntries</code>
-      <code>loadExtensions</code>
-      <code>registerNamespaces</code>
-    </MissingReturnType>
-    <MixedArgument occurrences="5">
-      <code>$all['core']</code>
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$this-&gt;entries[$this-&gt;key()]</code>
-      <code>$this-&gt;entries[$this-&gt;key()]</code>
-    </MixedArgument>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;extensions[$extension]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="4">
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$feed</code>
-      <code>$plugin</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="3">
-      <code>setDomDocument</code>
-      <code>setType</code>
-      <code>setXpath</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;data['type']</code>
-    </MixedReturnStatement>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>$originalSourceUri</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Reader/Collection/Author.php">
-    <MixedArrayAccess occurrences="1">
-      <code>$element['name']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="2">
-      <code>$authors[]</code>
-      <code>$element</code>
-    </MixedAssignment>
-  </file>
-  <file src="src/Reader/Collection/Category.php">
-    <MixedArrayAccess occurrences="1">
-      <code>$element['term']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="3">
-      <code>$categories[]</code>
-      <code>$categories[]</code>
-      <code>$element</code>
-    </MixedAssignment>
-  </file>
-  <file src="src/Reader/Entry/AbstractEntry.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>$this-&gt;xpath</code>
-    </DocblockTypeContradiction>
-    <InvalidScalarArgument occurrences="1">
-      <code>$deep</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="3">
-      <code>$all['core']</code>
-      <code>$extension</code>
-      <code>$extension</code>
-    </MixedArgument>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;extensions[$extension]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="4">
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$feed</code>
-      <code>$plugin</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="3">
-      <code>setEntryElement</code>
-      <code>setEntryKey</code>
-      <code>setType</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;data['type']</code>
-    </MixedReturnStatement>
-    <PossiblyNullPropertyAssignmentValue occurrences="1">
-      <code>$entry-&gt;ownerDocument</code>
-    </PossiblyNullPropertyAssignmentValue>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>$xpath</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Reader/Entry/Atom.php">
-    <ImplementedReturnTypeMismatch occurrences="3">
-      <code>AuthorCollection</code>
-      <code>null|string</code>
-      <code>void</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidNullableReturnType occurrences="1">
-      <code>string</code>
-    </InvalidNullableReturnType>
-    <MixedAssignment occurrences="2">
-      <code>$extension</code>
-      <code>$extension</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="15">
-      <code>AuthorCollection</code>
-      <code>Reader\Collection\Category</code>
-      <code>array</code>
-      <code>int</code>
-      <code>null|DateTime</code>
-      <code>null|DateTime</code>
-      <code>null|Reader\Feed\Atom\Source</code>
-      <code>null|object{href: string, length: int, type: string}</code>
-      <code>null|string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="4">
-      <code>setEntryElement</code>
-      <code>setEntryKey</code>
-      <code>setType</code>
-      <code>setXpath</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="15">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['commentcount']</code>
-      <code>$this-&gt;data['commentfeedlink']</code>
-      <code>$this-&gt;data['commentlink']</code>
-      <code>$this-&gt;data['content']</code>
-      <code>$this-&gt;data['datecreated']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['enclosure']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['links']</code>
-      <code>$this-&gt;data['source']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <MixedReturnTypeCoercion occurrences="2">
-      <code>null|array&lt;string, string&gt;</code>
-    </MixedReturnTypeCoercion>
-    <NullableReturnStatement occurrences="1">
-      <code>$this-&gt;getLink(0)</code>
-    </NullableReturnStatement>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>Atom</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Reader/Entry/Rss.php">
-    <ImplementedReturnTypeMismatch occurrences="3">
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>void</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidNullableReturnType occurrences="1">
-      <code>string</code>
-    </InvalidNullableReturnType>
-    <InvalidReturnStatement occurrences="1">
-      <code>$this-&gt;data['authors']</code>
-    </InvalidReturnStatement>
-    <InvalidScalarArgument occurrences="1">
-      <code>$entryKey</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="2">
-      <code>$dateModified</code>
-      <code>$dateModified</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="1">
-      <code>$author['name']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="10">
-      <code>$author</code>
-      <code>$commentlink</code>
-      <code>$dateModified</code>
-      <code>$description</code>
-      <code>$description</code>
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$id</code>
-      <code>$title</code>
-      <code>$title</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="13">
-      <code>DateTime</code>
-      <code>Reader\Collection\Category</code>
-      <code>array</code>
-      <code>int</code>
-      <code>null|array</code>
-      <code>null|object{url?: string, href?: string, length: int, type: string}</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="4">
-      <code>setEntryElement</code>
-      <code>setEntryKey</code>
-      <code>setType</code>
-      <code>setXpath</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="15">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['commentcount']</code>
-      <code>$this-&gt;data['commentfeedlink']</code>
-      <code>$this-&gt;data['commentlink']</code>
-      <code>$this-&gt;data['commentlink']</code>
-      <code>$this-&gt;data['content']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['enclosure']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['links']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <MixedReturnTypeCoercion occurrences="2">
-      <code>null|array&lt;string, string&gt;</code>
-    </MixedReturnTypeCoercion>
-    <NullableReturnStatement occurrences="6">
-      <code>$this-&gt;data['commentfeedlink']</code>
-      <code>$this-&gt;data['commentlink']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;getLink(0)</code>
-    </NullableReturnStatement>
-    <PossiblyNullArgument occurrences="1">
-      <code>$standard</code>
-    </PossiblyNullArgument>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>Rss</code>
-    </PropertyNotSetInConstructor>
-    <UndefinedMethod occurrences="1">
-      <code>getAttribute</code>
-    </UndefinedMethod>
-    <UnusedVariable occurrences="2">
-      <code>$description</code>
-      <code>$title</code>
-    </UnusedVariable>
-  </file>
-  <file src="src/Reader/Extension/AbstractEntry.php">
-    <DocblockTypeContradiction occurrences="2">
-      <code>$this-&gt;xpath</code>
-      <code>null === $type</code>
-    </DocblockTypeContradiction>
-    <InvalidArgument occurrences="1">
-      <code>$this-&gt;getEntryElement()</code>
-    </InvalidArgument>
-    <InvalidPropertyAssignmentValue occurrences="1">
-      <code>$entryKey</code>
-    </InvalidPropertyAssignmentValue>
-    <MissingConstructor occurrences="33">
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-    </MissingConstructor>
-    <MixedAssignment occurrences="1">
-      <code>$type</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$type</code>
-    </MixedReturnStatement>
-    <PossiblyNullPropertyAssignmentValue occurrences="1">
-      <code>$entry-&gt;ownerDocument</code>
-    </PossiblyNullPropertyAssignmentValue>
-    <RedundantCastGivenDocblockType occurrences="3">
-      <code>(int) $this-&gt;entryKey</code>
-      <code>(int) $this-&gt;entryKey</code>
-      <code>(int) $this-&gt;entryKey</code>
-    </RedundantCastGivenDocblockType>
-  </file>
-  <file src="src/Reader/Extension/AbstractFeed.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>null === $this-&gt;xpath</code>
-    </DocblockTypeContradiction>
-    <MissingConstructor occurrences="16">
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$domDocument</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-      <code>$xpath</code>
-    </MissingConstructor>
-    <MissingReturnType occurrences="1">
-      <code>registerNamespaces</code>
-    </MissingReturnType>
-    <MixedAssignment occurrences="1">
-      <code>$type</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$type</code>
-    </MixedReturnStatement>
-    <PossiblyNullPropertyAssignmentValue occurrences="1">
-      <code>null</code>
-    </PossiblyNullPropertyAssignmentValue>
-  </file>
-  <file src="src/Reader/Extension/Atom/Entry.php">
-    <ArgumentTypeCoercion occurrences="2">
-      <code>$author</code>
-      <code>$element</code>
-    </ArgumentTypeCoercion>
-    <InvalidScalarArgument occurrences="1">
-      <code>$deep</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="6">
-      <code>$content ?? ''</code>
-      <code>$dateCreated</code>
-      <code>$dateModified</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$link-&gt;value</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="14">
-      <code>$baseUrl</code>
-      <code>$baseUrl</code>
-      <code>$content</code>
-      <code>$count</code>
-      <code>$dateCreated</code>
-      <code>$dateCreated</code>
-      <code>$dateModified</code>
-      <code>$dateModified</code>
-      <code>$description</code>
-      <code>$id</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$title</code>
-      <code>$type</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="15">
-      <code>Collection\Author</code>
-      <code>Collection\Category</code>
-      <code>array</code>
-      <code>int</code>
-      <code>null|DateTime</code>
-      <code>null|DateTime</code>
-      <code>null|Reader\Feed\Atom\Source</code>
-      <code>null|object{href: string, length: int, type: string}</code>
-      <code>null|string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="19">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['baseUrl']</code>
-      <code>$this-&gt;data['baseUrl']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['commentcount']</code>
-      <code>$this-&gt;data['commentcount']</code>
-      <code>$this-&gt;data['commentfeedlink']</code>
-      <code>$this-&gt;data['commentlink']</code>
-      <code>$this-&gt;data['content']</code>
-      <code>$this-&gt;data['datecreated']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['enclosure']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['links']</code>
-      <code>$this-&gt;data['source']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="5">
-      <code>$this-&gt;data['commentfeedlink']</code>
-      <code>$this-&gt;data['commentlink']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['title']</code>
-    </NullableReturnStatement>
-    <PossiblyNullOperand occurrences="1">
-      <code>$this-&gt;getBaseUrl()</code>
-    </PossiblyNullOperand>
-    <UndefinedMethod occurrences="4">
-      <code>getAttribute</code>
-      <code>getAttribute</code>
-      <code>getAttribute</code>
-      <code>getAttribute</code>
-    </UndefinedMethod>
-    <UndefinedPropertyFetch occurrences="4">
-      <code>$link-&gt;value</code>
-      <code>$list-&gt;item(0)-&gt;value</code>
-      <code>$list-&gt;item(0)-&gt;value</code>
-      <code>$list-&gt;item(0)-&gt;value</code>
-    </UndefinedPropertyFetch>
-  </file>
-  <file src="src/Reader/Extension/Atom/Feed.php">
-    <ArgumentTypeCoercion occurrences="1">
-      <code>$author</code>
-    </ArgumentTypeCoercion>
-    <MixedArgument occurrences="3">
-      <code>$dateCreated</code>
-      <code>$dateModified</code>
-      <code>$link</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="16">
-      <code>$baseUrl</code>
-      <code>$copyright</code>
-      <code>$copyright</code>
-      <code>$dateCreated</code>
-      <code>$dateCreated</code>
-      <code>$dateModified</code>
-      <code>$dateModified</code>
-      <code>$description</code>
-      <code>$description</code>
-      <code>$generator</code>
-      <code>$id</code>
-      <code>$imageUrl</code>
-      <code>$language</code>
-      <code>$language</code>
-      <code>$link</code>
-      <code>$title</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="15">
-      <code>Collection\Author</code>
-      <code>Collection\Category</code>
-      <code>null|DateTime</code>
-      <code>null|DateTime</code>
-      <code>null|array</code>
-      <code>null|array</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="22">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['baseUrl']</code>
-      <code>$this-&gt;data['baseUrl']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['datecreated']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['feedlink']</code>
-      <code>$this-&gt;data['generator']</code>
-      <code>$this-&gt;data['generator']</code>
-      <code>$this-&gt;data['hubs']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['link']</code>
-      <code>$this-&gt;data['title']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <PossiblyNullOperand occurrences="1">
-      <code>$this-&gt;getBaseUrl()</code>
-    </PossiblyNullOperand>
-    <UndefinedMethod occurrences="3">
-      <code>getAttribute</code>
-      <code>getAttribute</code>
-      <code>getAttribute</code>
-    </UndefinedMethod>
-    <UnusedVariable occurrences="2">
-      <code>$copyright</code>
-      <code>$description</code>
-    </UnusedVariable>
-  </file>
-  <file src="src/Reader/Extension/Content/Entry.php">
-    <MixedInferredReturnType occurrences="1">
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="2">
-      <code>$this-&gt;xpath-&gt;evaluate('string(' . $this-&gt;getXpathPrefix() . '/content:encoded)')</code>
-      <code>$this-&gt;xpath-&gt;evaluate('string(' . $this-&gt;getXpathPrefix() . '/content:encoded)')</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/CreativeCommons/Entry.php">
-    <MixedAssignment occurrences="1">
-      <code>$list</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>array</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;data[$name]</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/CreativeCommons/Feed.php">
-    <MixedAssignment occurrences="3">
-      <code>$license</code>
-      <code>$licenses[]</code>
-      <code>$list</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>array</code>
-    </MixedInferredReturnType>
-    <MixedPropertyFetch occurrences="2">
-      <code>$license-&gt;nodeValue</code>
-      <code>$list-&gt;length</code>
-    </MixedPropertyFetch>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;data[$name]</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/DublinCore/Entry.php">
-    <InvalidReturnStatement occurrences="1">
-      <code>$this-&gt;data['authors']</code>
-    </InvalidReturnStatement>
-    <MixedArgument occurrences="1">
-      <code>$date</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="14">
-      <code>$date</code>
-      <code>$date</code>
-      <code>$description</code>
-      <code>$description</code>
-      <code>$id</code>
-      <code>$id</code>
-      <code>$list</code>
-      <code>$list</code>
-      <code>$list</code>
-      <code>$list</code>
-      <code>$list</code>
-      <code>$list</code>
-      <code>$title</code>
-      <code>$title</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="6">
-      <code>Collection\Category</code>
-      <code>array</code>
-      <code>null|DateTime</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="9">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['date']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['title']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <MixedReturnTypeCoercion occurrences="2">
-      <code>null|array&lt;string, string&gt;</code>
-    </MixedReturnTypeCoercion>
-    <NullableReturnStatement occurrences="3">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['title']</code>
-    </NullableReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/DublinCore/Feed.php">
-    <InvalidReturnStatement occurrences="1">
-      <code>$this-&gt;data['authors']</code>
-    </InvalidReturnStatement>
-    <MixedArgument occurrences="1">
-      <code>$date</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="14">
-      <code>$copyright</code>
-      <code>$copyright</code>
-      <code>$date</code>
-      <code>$date</code>
-      <code>$description</code>
-      <code>$description</code>
-      <code>$id</code>
-      <code>$id</code>
-      <code>$language</code>
-      <code>$language</code>
-      <code>$list</code>
-      <code>$list</code>
-      <code>$title</code>
-      <code>$title</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="8">
-      <code>Collection\Category</code>
-      <code>array</code>
-      <code>null|DateTime</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="13">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['date']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['title']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="1">
-      <code>$this-&gt;data['authors']</code>
-    </NullableReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/GooglePlayPodcast/Entry.php">
-    <MixedAssignment occurrences="3">
-      <code>$block</code>
-      <code>$description</code>
-      <code>$explicit</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="3">
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="6">
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['explicit']</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="3">
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['explicit']</code>
-    </NullableReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/GooglePlayPodcast/Feed.php">
-    <MixedAssignment occurrences="5">
-      <code>$author</code>
-      <code>$block</code>
-      <code>$description</code>
-      <code>$explicit</code>
-      <code>$image</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="6">
-      <code>null|array</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="11">
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['image']</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="5">
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['image']</code>
-    </NullableReturnStatement>
-    <UndefinedMethod occurrences="2">
-      <code>getAttribute</code>
-      <code>getAttribute</code>
-    </UndefinedMethod>
-    <UnusedVariable occurrences="2">
-      <code>$children</code>
-      <code>$children</code>
-    </UnusedVariable>
-  </file>
-  <file src="src/Reader/Extension/Podcast/Entry.php">
-    <MixedAssignment occurrences="13">
-      <code>$author</code>
-      <code>$block</code>
-      <code>$duration</code>
-      <code>$episode</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$keywords</code>
-      <code>$season</code>
-      <code>$status</code>
-      <code>$subtitle</code>
-      <code>$summary</code>
-      <code>$title</code>
-      <code>$type</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="13">
-      <code>bool</code>
-      <code>null|int</code>
-      <code>null|int</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="22">
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['duration']</code>
-      <code>$this-&gt;data['duration']</code>
-      <code>$this-&gt;data['episode']</code>
-      <code>$this-&gt;data['episodeType']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['isClosedCaptioned']</code>
-      <code>$this-&gt;data['keywords']</code>
-      <code>$this-&gt;data['keywords']</code>
-      <code>$this-&gt;data['season']</code>
-      <code>$this-&gt;data['subtitle']</code>
-      <code>$this-&gt;data['subtitle']</code>
-      <code>$this-&gt;data['summary']</code>
-      <code>$this-&gt;data['summary']</code>
-      <code>$this-&gt;data['title']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="9">
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['duration']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['keywords']</code>
-      <code>$this-&gt;data['subtitle']</code>
-      <code>$this-&gt;data['summary']</code>
-      <code>$this-&gt;data['title']</code>
-    </NullableReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/Podcast/Feed.php">
-    <MixedAssignment occurrences="13">
-      <code>$author</code>
-      <code>$block</code>
-      <code>$complete</code>
-      <code>$email</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$keywords</code>
-      <code>$name</code>
-      <code>$newFeedUrl</code>
-      <code>$owner</code>
-      <code>$subtitle</code>
-      <code>$summary</code>
-      <code>$type</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="12">
-      <code>bool</code>
-      <code>null|array</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedOperand occurrences="2">
-      <code>$email</code>
-      <code>$name</code>
-    </MixedOperand>
-    <MixedReturnStatement occurrences="21">
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['complete']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['keywords']</code>
-      <code>$this-&gt;data['keywords']</code>
-      <code>$this-&gt;data['new-feed-url']</code>
-      <code>$this-&gt;data['new-feed-url']</code>
-      <code>$this-&gt;data['owner']</code>
-      <code>$this-&gt;data['owner']</code>
-      <code>$this-&gt;data['podcastType']</code>
-      <code>$this-&gt;data['subtitle']</code>
-      <code>$this-&gt;data['subtitle']</code>
-      <code>$this-&gt;data['summary']</code>
-      <code>$this-&gt;data['summary']</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="9">
-      <code>$this-&gt;data['author']</code>
-      <code>$this-&gt;data['block']</code>
-      <code>$this-&gt;data['explicit']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['keywords']</code>
-      <code>$this-&gt;data['new-feed-url']</code>
-      <code>$this-&gt;data['owner']</code>
-      <code>$this-&gt;data['subtitle']</code>
-      <code>$this-&gt;data['summary']</code>
-    </NullableReturnStatement>
-    <UndefinedMethod occurrences="2">
-      <code>getAttribute</code>
-      <code>getAttribute</code>
-    </UndefinedMethod>
-    <UnusedVariable occurrences="2">
-      <code>$children</code>
-      <code>$children</code>
-    </UnusedVariable>
-  </file>
-  <file src="src/Reader/Extension/PodcastIndex/Entry.php">
-    <MismatchingDocblockReturnType occurrences="2">
-      <code>null|object{url: string, type: string, language: string, rel: string}</code>
-      <code>null|object{url: string, type: string}</code>
-    </MismatchingDocblockReturnType>
-    <MixedInferredReturnType occurrences="3">
-      <code>array&lt;int, object{title: string, startTime: string, duration: string}&gt;</code>
-      <code>null|object{url: string, type: string, language: string, rel: string}</code>
-      <code>null|object{url: string, type: string}</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;data['soundbites']</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/PodcastIndex/Feed.php">
-    <MismatchingDocblockReturnType occurrences="1">
-      <code>null|object{url: string, title: string}</code>
-    </MismatchingDocblockReturnType>
-    <MixedAssignment occurrences="2">
-      <code>$locked</code>
-      <code>$owner</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="3">
-      <code>?string</code>
-      <code>bool</code>
-      <code>null|object{url: string, title: string}</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="3">
-      <code>$this-&gt;data['locked']</code>
-      <code>$this-&gt;data['owner']</code>
-      <code>$this-&gt;data['owner']</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/Slash/Entry.php">
-    <InvalidOperand occurrences="1">
-      <code>$hit</code>
-    </InvalidOperand>
-    <MixedArgument occurrences="1">
-      <code>$stringParade</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="3">
-      <code>$comments</code>
-      <code>$data</code>
-      <code>$stringParade</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="4">
-      <code>array</code>
-      <code>int</code>
-      <code>null|string</code>
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="5">
-      <code>$comments</code>
-      <code>$this-&gt;data[$name]</code>
-      <code>$this-&gt;data[$name]</code>
-      <code>$this-&gt;getData('department')</code>
-      <code>$this-&gt;getData('section')</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="1">
-      <code>$this-&gt;data[$name]</code>
-    </NullableReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/Syndication/Feed.php">
-    <MixedArgument occurrences="1">
-      <code>$updateBase</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="5">
-      <code>$data</code>
-      <code>$freq</code>
-      <code>$freq</code>
-      <code>$period</code>
-      <code>$updateBase</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="3">
-      <code>int</code>
-      <code>int</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedOperand occurrences="1">
-      <code>$freq</code>
-    </MixedOperand>
-    <MixedReturnStatement occurrences="3">
-      <code>$freq</code>
-      <code>$period</code>
-      <code>$ticks / $freq</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/Thread/Entry.php">
-    <MixedAssignment occurrences="1">
-      <code>$data</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>null|int</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;getData('total')</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Extension/WellFormedWeb/Entry.php">
-    <MixedAssignment occurrences="1">
-      <code>$data</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="2">
-      <code>$data</code>
-      <code>$this-&gt;data[$name]</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/ExtensionManager.php">
-    <MixedInferredReturnType occurrences="1">
-      <code>Extension\AbstractEntry|Extension\AbstractFeed</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;pluginManager-&gt;get($extension)</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Reader/Feed/AbstractFeed.php">
-    <InvalidScalarArgument occurrences="1">
-      <code>$this-&gt;key()</code>
-    </InvalidScalarArgument>
-    <MissingReturnType occurrences="3">
-      <code>indexEntries</code>
-      <code>loadExtensions</code>
-      <code>registerNamespaces</code>
-    </MissingReturnType>
-    <MixedArgument occurrences="7">
-      <code>$all['core']</code>
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$this-&gt;entries[$this-&gt;key()]</code>
-      <code>$this-&gt;entries[$this-&gt;key()]</code>
-    </MixedArgument>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;extensions[$extension]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="4">
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$feed</code>
-      <code>$plugin</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="2">
-      <code>null|Reader\Extension\AbstractFeed</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="3">
-      <code>setDomDocument</code>
-      <code>setType</code>
-      <code>setXpath</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="2">
-      <code>$this-&gt;data['type']</code>
-      <code>$this-&gt;extensions[$name . '\\Feed']</code>
-    </MixedReturnStatement>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>$originalSourceUri</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Reader/Feed/Atom.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>null|array&lt;string, string&gt;</code>
-    </ImplementedReturnTypeMismatch>
-    <MixedArgument occurrences="1">
-      <code>$categoryCollection</code>
-    </MixedArgument>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;entries[$index]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="23">
-      <code>$atomFeed</code>
-      <code>$atomFeed</code>
-      <code>$authors</code>
-      <code>$baseUrl</code>
-      <code>$categoryCollection</code>
-      <code>$categoryCollection</code>
-      <code>$copyright</code>
-      <code>$dateCreated</code>
-      <code>$dateModified</code>
-      <code>$description</code>
-      <code>$entries</code>
-      <code>$entry</code>
-      <code>$extension</code>
-      <code>$generator</code>
-      <code>$hubs</code>
-      <code>$id</code>
-      <code>$index</code>
-      <code>$language</code>
-      <code>$language</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$title</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="15">
-      <code>Reader\Collection\Category</code>
-      <code>array</code>
-      <code>null|DateTime</code>
-      <code>null|DateTime</code>
-      <code>null|array</code>
-      <code>null|array</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="7">
-      <code>setDomDocument</code>
-      <code>setDomDocument</code>
-      <code>setType</code>
-      <code>setType</code>
-      <code>setXpath</code>
-      <code>setXpath</code>
-      <code>setXpathPrefix</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="30">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['baseUrl']</code>
-      <code>$this-&gt;data['baseUrl']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['datecreated']</code>
-      <code>$this-&gt;data['datecreated']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['feedlink']</code>
-      <code>$this-&gt;data['feedlink']</code>
-      <code>$this-&gt;data['generator']</code>
-      <code>$this-&gt;data['generator']</code>
-      <code>$this-&gt;data['hubs']</code>
-      <code>$this-&gt;data['hubs']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['link']</code>
-      <code>$this-&gt;data['link']</code>
-      <code>$this-&gt;data['title']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <MixedReturnTypeCoercion occurrences="2">
-      <code>null|array&lt;string, string&gt;</code>
-    </MixedReturnTypeCoercion>
-    <PossiblyNullReference occurrences="16">
-      <code>getAuthors</code>
-      <code>getBaseUrl</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCopyright</code>
-      <code>getDateCreated</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getFeedLink</code>
-      <code>getGenerator</code>
-      <code>getHubs</code>
-      <code>getId</code>
-      <code>getImage</code>
-      <code>getLanguage</code>
-      <code>getLink</code>
-      <code>getTitle</code>
-    </PossiblyNullReference>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>Atom</code>
-    </PropertyNotSetInConstructor>
-    <UndefinedMethod occurrences="16">
-      <code>getAuthors</code>
-      <code>getBaseUrl</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCopyright</code>
-      <code>getDateCreated</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getFeedLink</code>
-      <code>getGenerator</code>
-      <code>getHubs</code>
-      <code>getId</code>
-      <code>getImage</code>
-      <code>getLanguage</code>
-      <code>getLink</code>
-      <code>getTitle</code>
-    </UndefinedMethod>
-  </file>
-  <file src="src/Reader/Feed/Atom/Source.php">
-    <ImplementedReturnTypeMismatch occurrences="4">
-      <code>void</code>
-      <code>void</code>
-      <code>void</code>
-      <code>void</code>
-    </ImplementedReturnTypeMismatch>
-    <MixedAssignment occurrences="2">
-      <code>$extension</code>
-      <code>$extension</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="4">
-      <code>setDomDocument</code>
-      <code>setType</code>
-      <code>setXpath</code>
-      <code>setXpathPrefix</code>
-    </MixedMethodCall>
-    <PossiblyNullArgument occurrences="1">
-      <code>$this-&gt;domDocument</code>
-    </PossiblyNullArgument>
-    <PossiblyNullPropertyAssignmentValue occurrences="1">
-      <code>$source-&gt;ownerDocument</code>
-    </PossiblyNullPropertyAssignmentValue>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>Source</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Reader/Feed/Rss.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>null|array&lt;string, string&gt;</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidScalarArgument occurrences="1">
-      <code>$lastBuildDateParsed</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="6">
-      <code>$authors</code>
-      <code>$categoryCollection</code>
-      <code>$dateModified</code>
-      <code>$dateModified</code>
-      <code>$hubs</code>
-      <code>$lastBuildDate</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="1">
-      <code>$author['name']</code>
-    </MixedArrayAccess>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;entries[$index]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="56">
-      <code>$author</code>
-      <code>$authors</code>
-      <code>$authorsDc</code>
-      <code>$categoryCollection</code>
-      <code>$categoryCollection</code>
-      <code>$copyright</code>
-      <code>$copyright</code>
-      <code>$copyright</code>
-      <code>$date</code>
-      <code>$date</code>
-      <code>$dateModified</code>
-      <code>$dateModified</code>
-      <code>$description</code>
-      <code>$description</code>
-      <code>$description</code>
-      <code>$description</code>
-      <code>$entries</code>
-      <code>$entries</code>
-      <code>$entry</code>
-      <code>$extension</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$generator</code>
-      <code>$generator</code>
-      <code>$generator</code>
-      <code>$generator</code>
-      <code>$hubs</code>
-      <code>$id</code>
-      <code>$id</code>
-      <code>$id</code>
-      <code>$image['description']</code>
-      <code>$image['height']</code>
-      <code>$image['link']</code>
-      <code>$image['title']</code>
-      <code>$image['uri']</code>
-      <code>$image['width']</code>
-      <code>$index</code>
-      <code>$language</code>
-      <code>$language</code>
-      <code>$language</code>
-      <code>$language</code>
-      <code>$lastBuildDate</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$title</code>
-      <code>$title</code>
-      <code>$title</code>
-      <code>$title</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="14">
-      <code>DateTime</code>
-      <code>DateTime</code>
-      <code>Reader\Collection\Category</code>
-      <code>array</code>
-      <code>null|array</code>
-      <code>null|array</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="7">
-      <code>setDomDocument</code>
-      <code>setDomDocument</code>
-      <code>setType</code>
-      <code>setType</code>
-      <code>setXpath</code>
-      <code>setXpath</code>
-      <code>setXpathPrefix</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="25">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['feedlink']</code>
-      <code>$this-&gt;data['feedlink']</code>
-      <code>$this-&gt;data['generator']</code>
-      <code>$this-&gt;data['generator']</code>
-      <code>$this-&gt;data['hubs']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['lastBuildDate']</code>
-      <code>$this-&gt;data['link']</code>
-      <code>$this-&gt;data['link']</code>
-      <code>$this-&gt;data['title']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <MixedReturnTypeCoercion occurrences="2">
-      <code>null|array&lt;string, string&gt;</code>
-    </MixedReturnTypeCoercion>
-    <NullableReturnStatement occurrences="3">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['datemodified']</code>
-      <code>$this-&gt;data['lastBuildDate']</code>
-    </NullableReturnStatement>
-    <PossiblyNullArgument occurrences="1">
-      <code>$standard</code>
-    </PossiblyNullArgument>
-    <PossiblyNullReference occurrences="20">
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCopyright</code>
-      <code>getCopyright</code>
-      <code>getDate</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getFeedLink</code>
-      <code>getGenerator</code>
-      <code>getHubs</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getLanguage</code>
-      <code>getLanguage</code>
-      <code>getLink</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-    </PossiblyNullReference>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>Rss</code>
-    </PropertyNotSetInConstructor>
-    <UndefinedMethod occurrences="21">
-      <code>getAttribute</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCopyright</code>
-      <code>getCopyright</code>
-      <code>getDate</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getFeedLink</code>
-      <code>getGenerator</code>
-      <code>getHubs</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getLanguage</code>
-      <code>getLanguage</code>
-      <code>getLink</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-    </UndefinedMethod>
-  </file>
-  <file src="src/Reader/FeedSet.php">
-    <MixedArgument occurrences="1">
-      <code>$this-&gt;offsetGet('href')</code>
-    </MixedArgument>
-    <UnsafeInstantiation occurrences="1"/>
-  </file>
-  <file src="src/Reader/Http/LaminasHttpClientDecorator.php">
-    <InvalidScalarArgument occurrences="1">
-      <code>$value</code>
-    </InvalidScalarArgument>
-    <MixedArgumentTypeCoercion occurrences="1">
-      <code>$value</code>
-    </MixedArgumentTypeCoercion>
-    <MixedAssignment occurrences="3">
-      <code>$normalized[$name]</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedAssignment>
-    <PossiblyInvalidMethodCall occurrences="1">
-      <code>addHeaderLine</code>
-    </PossiblyInvalidMethodCall>
-    <PossiblyUndefinedMethod occurrences="1">
-      <code>addHeaderLine</code>
-    </PossiblyUndefinedMethod>
-  </file>
-  <file src="src/Reader/Http/Psr7ResponseDecorator.php">
-    <MixedInferredReturnType occurrences="1">
-      <code>getHeaderLine</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$default</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="1">
-      <code>$default</code>
-    </NullableReturnStatement>
-  </file>
-  <file src="src/Reader/Http/Response.php">
-    <DocblockTypeContradiction occurrences="3">
-      <code>! is_numeric($statusCode)</code>
-      <code>is_object($statusCode)</code>
-      <code>is_string($statusCode)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="2">
-      <code>$statusCode</code>
-      <code>$statusCode</code>
-    </MixedArgument>
-    <MixedArgumentTypeCoercion occurrences="1">
-      <code>$name</code>
-    </MixedArgumentTypeCoercion>
-    <MixedAssignment occurrences="2">
-      <code>$normalized[strtolower($name)]</code>
-      <code>$value</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>getHeaderLine</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;headers[$normalizedName] ?? $default</code>
-    </MixedReturnStatement>
-    <NullableReturnStatement occurrences="1">
-      <code>$this-&gt;headers[$normalizedName] ?? $default</code>
-    </NullableReturnStatement>
-    <PossiblyInvalidCast occurrences="1">
-      <code>$body</code>
-    </PossiblyInvalidCast>
-    <RedundantCastGivenDocblockType occurrences="1">
-      <code>(int) $statusCode</code>
-    </RedundantCastGivenDocblockType>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>gettype($statusCode)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Reader/Reader.php">
-    <DocblockTypeContradiction occurrences="4">
-      <code>! is_string($string)</code>
-      <code>$httpClient instanceof Http\ClientInterface</code>
-      <code>$response instanceof Http\ResponseInterface</code>
-      <code>static::$httpClient</code>
-    </DocblockTypeContradiction>
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>Feed\FeedInterface</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidNullableReturnType occurrences="1">
-      <code>ExtensionManagerInterface</code>
-    </InvalidNullableReturnType>
-    <InvalidReturnStatement occurrences="1">
-      <code>$reader</code>
-    </InvalidReturnStatement>
-    <InvalidReturnType occurrences="1">
-      <code>Feed\FeedInterface</code>
-    </InvalidReturnType>
-    <InvalidScalarArgument occurrences="1">
-      <code>1</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="4">
-      <code>$data</code>
-      <code>$responseXml</code>
-      <code>$value</code>
-      <code>$version</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="9">
-      <code>$data</code>
-      <code>$data</code>
-      <code>$etag</code>
-      <code>$lastModified</code>
-      <code>$responseXml</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$version</code>
-    </MixedAssignment>
-    <NullableReturnStatement occurrences="1">
-      <code>static::$extensionManager</code>
-    </NullableReturnStatement>
-    <RedundantCastGivenDocblockType occurrences="3">
-      <code>(int) $response-&gt;getStatusCode()</code>
-      <code>(int) $response-&gt;getStatusCode()</code>
-      <code>(int) $response-&gt;getStatusCode()</code>
-    </RedundantCastGivenDocblockType>
-    <RedundantConditionGivenDocblockType occurrences="2">
-      <code>is_string($feed)</code>
-      <code>static::$httpConditionalGet &amp;&amp; $cache</code>
-    </RedundantConditionGivenDocblockType>
-    <TooManyArguments occurrences="1">
-      <code>get</code>
-    </TooManyArguments>
-    <UndefinedInterfaceMethod occurrences="2">
-      <code>setOriginalSourceUri</code>
-      <code>setOriginalSourceUri</code>
-    </UndefinedInterfaceMethod>
-    <UndefinedVariable occurrences="1">
-      <code>$phpErrormsg</code>
-    </UndefinedVariable>
-  </file>
-  <file src="src/Reader/StandaloneExtensionManager.php">
-    <LessSpecificReturnStatement occurrences="1">
-      <code>new $class()</code>
-    </LessSpecificReturnStatement>
-    <MixedMethodCall occurrences="1">
-      <code>new $class()</code>
-    </MixedMethodCall>
-    <MoreSpecificReturnType occurrences="1">
-      <code>Extension\AbstractEntry|Extension\AbstractFeed</code>
-    </MoreSpecificReturnType>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>is_string($class)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Uri.php">
-    <InvalidNullableReturnType occurrences="3">
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </InvalidNullableReturnType>
-    <NullableReturnStatement occurrences="3">
-      <code>$this-&gt;host</code>
-      <code>$this-&gt;path</code>
-      <code>$this-&gt;scheme</code>
-    </NullableReturnStatement>
-    <UnsafeInstantiation occurrences="1">
-      <code>new static($uri)</code>
-    </UnsafeInstantiation>
-  </file>
-  <file src="src/Writer/AbstractFeed.php">
-    <DocblockTypeContradiction occurrences="19">
-      <code>! is_string($copyright)</code>
-      <code>! is_string($description)</code>
-      <code>! is_string($encoding)</code>
-      <code>! is_string($id)</code>
-      <code>! is_string($language)</code>
-      <code>! is_string($link)</code>
-      <code>! is_string($link)</code>
-      <code>! is_string($name)</code>
-      <code>! is_string($title)</code>
-      <code>! is_string($uri)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($url)</code>
-      <code>! is_string($version)</code>
-      <code>empty($id) || ! is_string($id)</code>
-      <code>empty($link) || ! is_string($link)</code>
-      <code>empty($link) || ! is_string($link)</code>
-      <code>empty($uri) || ! is_string($uri)</code>
-      <code>empty($url) || ! is_string($url)</code>
-      <code>empty($url) || ! is_string($url)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="6">
-      <code>$author</code>
-      <code>$category</code>
-      <code>$ext</code>
-      <code>$ext</code>
-      <code>$ext</code>
-      <code>$url</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="4">
-      <code>$this-&gt;data['authors'][]</code>
-      <code>$this-&gt;data['categories'][]</code>
-      <code>$this-&gt;data['feedLinks'][strtolower($type)]</code>
-      <code>$this-&gt;data['hubs'][]</code>
-    </MixedArrayAssignment>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;extensions[$ext]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="5">
-      <code>$author</code>
-      <code>$category</code>
-      <code>$ext</code>
-      <code>$exts</code>
-      <code>$url</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="18">
-      <code>null|array</code>
-      <code>null|array</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="1">
-      <code>setEncoding</code>
-    </MixedMethodCall>
-    <MixedPropertyTypeCoercion occurrences="1">
-      <code>$this-&gt;extensions</code>
-    </MixedPropertyTypeCoercion>
-    <MixedReturnStatement occurrences="18">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['authors'][$index]</code>
-      <code>$this-&gt;data['baseUrl']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['dateCreated']</code>
-      <code>$this-&gt;data['dateModified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['encoding']</code>
-      <code>$this-&gt;data['feedLinks']</code>
-      <code>$this-&gt;data['generator']</code>
-      <code>$this-&gt;data['hubs']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['image']</code>
-      <code>$this-&gt;data['language']</code>
-      <code>$this-&gt;data['lastBuildDate']</code>
-      <code>$this-&gt;data['link']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>$extensions</code>
-      <code>$type</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Deleted.php">
-    <DocblockTypeContradiction occurrences="2">
-      <code>! is_string($reference)</code>
-      <code>$date instanceof DateTimeInterface</code>
-    </DocblockTypeContradiction>
-    <MissingConstructor occurrences="1">
-      <code>$type</code>
-    </MissingConstructor>
-    <MixedInferredReturnType occurrences="5">
-      <code>DateTime</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="5">
-      <code>$this-&gt;data['by']</code>
-      <code>$this-&gt;data['comment']</code>
-      <code>$this-&gt;data['encoding']</code>
-      <code>$this-&gt;data['reference']</code>
-      <code>$this-&gt;data['when']</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Writer/Entry.php">
-    <DocblockTypeContradiction occurrences="12">
-      <code>! is_string($content)</code>
-      <code>! is_string($copyright)</code>
-      <code>! is_string($description)</code>
-      <code>! is_string($encoding)</code>
-      <code>! is_string($id)</code>
-      <code>! is_string($link)</code>
-      <code>! is_string($link)</code>
-      <code>! is_string($title)</code>
-      <code>$date instanceof DateTimeInterface</code>
-      <code>$date instanceof DateTimeInterface</code>
-      <code>empty($link) || ! is_string($link)</code>
-      <code>empty($link) || ! is_string($link)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="5">
-      <code>$author</code>
-      <code>$category</code>
-      <code>$enclosure['uri']</code>
-      <code>$ext</code>
-      <code>$link</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="3">
-      <code>$this-&gt;data['authors'][]</code>
-      <code>$this-&gt;data['categories'][]</code>
-      <code>$this-&gt;data['commentFeedLinks'][]</code>
-    </MixedArrayAssignment>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;extensions[$ext]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="6">
-      <code>$author</code>
-      <code>$category</code>
-      <code>$ext</code>
-      <code>$extension</code>
-      <code>$exts</code>
-      <code>$link</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="16">
-      <code>array</code>
-      <code>array</code>
-      <code>array</code>
-      <code>int</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>null|string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="1">
-      <code>setEncoding</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="16">
-      <code>$this-&gt;data['authors']</code>
-      <code>$this-&gt;data['categories']</code>
-      <code>$this-&gt;data['commentCount']</code>
-      <code>$this-&gt;data['commentFeedLinks']</code>
-      <code>$this-&gt;data['commentLink']</code>
-      <code>$this-&gt;data['content']</code>
-      <code>$this-&gt;data['copyright']</code>
-      <code>$this-&gt;data['dateCreated']</code>
-      <code>$this-&gt;data['dateModified']</code>
-      <code>$this-&gt;data['description']</code>
-      <code>$this-&gt;data['enclosure']</code>
-      <code>$this-&gt;data['encoding']</code>
-      <code>$this-&gt;data['id']</code>
-      <code>$this-&gt;data['link']</code>
-      <code>$this-&gt;data['links']</code>
-      <code>$this-&gt;data['title']</code>
-    </MixedReturnStatement>
-    <PossiblyNullArgument occurrences="1">
-      <code>$this-&gt;getEncoding()</code>
-    </PossiblyNullArgument>
-    <PropertyNotSetInConstructor occurrences="1">
-      <code>$type</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Extension/AbstractRenderer.php">
-    <ImplementedReturnTypeMismatch occurrences="2">
-      <code>$this</code>
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <MissingConstructor occurrences="52">
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$base</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$dom</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$rootElement</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-      <code>$type</code>
-    </MissingConstructor>
-  </file>
-  <file src="src/Writer/Extension/Atom/Renderer/Feed.php">
-    <MixedArgument occurrences="4">
-      <code>$href</code>
-      <code>$hubUrl</code>
-      <code>$type</code>
-      <code>$type</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="5">
-      <code>$flinks</code>
-      <code>$href</code>
-      <code>$hubUrl</code>
-      <code>$hubs</code>
-      <code>$type</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="2">
-      <code>getFeedLinks</code>
-      <code>getHubs</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="2">
-      <code>empty($flinks)</code>
-      <code>empty($hubs)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/Extension/Content/Renderer/Entry.php">
-    <MixedArgument occurrences="1">
-      <code>$content</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="1">
-      <code>$content</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>getContent</code>
-    </MixedMethodCall>
-  </file>
-  <file src="src/Writer/Extension/DublinCore/Renderer/Entry.php">
-    <MixedArgument occurrences="2">
-      <code>$data</code>
-      <code>$data['name']</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="1">
-      <code>$data['name']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="2">
-      <code>$authors</code>
-      <code>$data</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>getAuthors</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="1">
-      <code>empty($authors)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/Extension/DublinCore/Renderer/Feed.php">
-    <MixedArgument occurrences="2">
-      <code>$data</code>
-      <code>$data['name']</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="1">
-      <code>$data['name']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="2">
-      <code>$authors</code>
-      <code>$data</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>getAuthors</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="1">
-      <code>empty($authors)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/Extension/GooglePlayPodcast/Entry.php">
-    <RedundantConditionGivenDocblockType occurrences="3">
-      <code>in_array($value, ['yes', 'no', 'clean'], true)</code>
-      <code>in_array($value, ['yes', 'no', 'clean'], true)</code>
-      <code>in_array($value, ['yes', 'no', 'clean'], true)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Writer/Extension/GooglePlayPodcast/Feed.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>! is_string($value)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="3">
-      <code>$val</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedArgument>
-    <MixedArgumentTypeCoercion occurrences="1">
-      <code>$key</code>
-    </MixedArgumentTypeCoercion>
-    <MixedArrayAssignment occurrences="4">
-      <code>$this-&gt;data['authors'][]</code>
-      <code>$this-&gt;data['categories'][$key]</code>
-      <code>$this-&gt;data['categories'][$key]</code>
-      <code>$this-&gt;data['categories'][]</code>
-    </MixedArrayAssignment>
-    <MixedAssignment occurrences="3">
-      <code>$val</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedAssignment>
-    <RedundantConditionGivenDocblockType occurrences="3">
-      <code>in_array($value, ['yes', 'no', 'clean'], true)</code>
-      <code>in_array($value, ['yes', 'no', 'clean'], true)</code>
-      <code>in_array($value, ['yes', 'no', 'clean'], true)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Writer/Extension/GooglePlayPodcast/Renderer/Entry.php">
-    <MixedArgument occurrences="3">
-      <code>$block</code>
-      <code>$description</code>
-      <code>$explicit</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="3">
-      <code>$block</code>
-      <code>$description</code>
-      <code>$explicit</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="3">
-      <code>getPlayPodcastBlock</code>
-      <code>getPlayPodcastDescription</code>
-      <code>getPlayPodcastExplicit</code>
-    </MixedMethodCall>
-  </file>
-  <file src="src/Writer/Extension/GooglePlayPodcast/Renderer/Feed.php">
-    <MixedArgument occurrences="8">
-      <code>$author</code>
-      <code>$block</code>
-      <code>$cat</code>
-      <code>$description</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$key</code>
-      <code>$subcat</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="10">
-      <code>$author</code>
-      <code>$authors</code>
-      <code>$block</code>
-      <code>$cat</code>
-      <code>$cats</code>
-      <code>$description</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$key</code>
-      <code>$subcat</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="6">
-      <code>getPlayPodcastAuthors</code>
-      <code>getPlayPodcastBlock</code>
-      <code>getPlayPodcastCategories</code>
-      <code>getPlayPodcastDescription</code>
-      <code>getPlayPodcastExplicit</code>
-      <code>getPlayPodcastImage</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="2">
-      <code>empty($authors)</code>
-      <code>empty($cats)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/Extension/ITunes/Entry.php">
-    <DocblockTypeContradiction occurrences="10">
-      <code>! is_bool($value)</code>
-      <code>! is_numeric($number)</code>
-      <code>! is_numeric($number)</code>
-      <code>! is_string($value)</code>
-      <code>is_bool($status)</code>
-      <code>is_float($number)</code>
-      <code>is_float($number)</code>
-      <code>is_object($number)</code>
-      <code>is_object($number)</code>
-      <code>is_object($type)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="4">
-      <code>$number</code>
-      <code>$number</code>
-      <code>$type</code>
-      <code>$value</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$this-&gt;data['authors'][]</code>
-    </MixedArrayAssignment>
-    <MixedAssignment occurrences="1">
-      <code>$value</code>
-    </MixedAssignment>
-    <RedundantCastGivenDocblockType occurrences="2">
-      <code>(int) $number</code>
-      <code>(int) $number</code>
-    </RedundantCastGivenDocblockType>
-    <RedundantConditionGivenDocblockType occurrences="3">
-      <code>gettype($number)</code>
-      <code>gettype($number)</code>
-      <code>var_export($type, true)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Writer/Extension/ITunes/Feed.php">
-    <DocblockTypeContradiction occurrences="4">
-      <code>! is_bool($value)</code>
-      <code>! is_string($value)</code>
-      <code>is_bool($status)</code>
-      <code>is_object($type)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="7">
-      <code>$type</code>
-      <code>$val</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value['email']</code>
-      <code>$value['name']</code>
-    </MixedArgument>
-    <MixedArgumentTypeCoercion occurrences="1">
-      <code>$key</code>
-    </MixedArgumentTypeCoercion>
-    <MixedArrayAssignment occurrences="5">
-      <code>$this-&gt;data['authors'][]</code>
-      <code>$this-&gt;data['categories'][$key]</code>
-      <code>$this-&gt;data['categories'][$key]</code>
-      <code>$this-&gt;data['categories'][]</code>
-      <code>$this-&gt;data['owners'][]</code>
-    </MixedArrayAssignment>
-    <MixedAssignment occurrences="4">
-      <code>$val</code>
-      <code>$value</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedAssignment>
-    <RedundantCastGivenDocblockType occurrences="1">
-      <code>(string) $value</code>
-    </RedundantCastGivenDocblockType>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>var_export($type, true)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Writer/Extension/ITunes/Renderer/Entry.php">
-    <MixedArgument occurrences="12">
-      <code>$author</code>
-      <code>$block</code>
-      <code>$duration</code>
-      <code>$episode</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$keywords</code>
-      <code>$season</code>
-      <code>$subtitle</code>
-      <code>$summary</code>
-      <code>$title</code>
-      <code>$type</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="14">
-      <code>$author</code>
-      <code>$authors</code>
-      <code>$block</code>
-      <code>$duration</code>
-      <code>$episode</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$keywords</code>
-      <code>$season</code>
-      <code>$status</code>
-      <code>$subtitle</code>
-      <code>$summary</code>
-      <code>$title</code>
-      <code>$type</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="13">
-      <code>getItunesAuthors</code>
-      <code>getItunesBlock</code>
-      <code>getItunesDuration</code>
-      <code>getItunesEpisode</code>
-      <code>getItunesEpisodeType</code>
-      <code>getItunesExplicit</code>
-      <code>getItunesImage</code>
-      <code>getItunesIsClosedCaptioned</code>
-      <code>getItunesKeywords</code>
-      <code>getItunesSeason</code>
-      <code>getItunesSubtitle</code>
-      <code>getItunesSummary</code>
-      <code>getItunesTitle</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="2">
-      <code>empty($authors)</code>
-      <code>empty($keywords)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/Extension/ITunes/Renderer/Feed.php">
-    <MixedArgument occurrences="15">
-      <code>$author</code>
-      <code>$block</code>
-      <code>$cat</code>
-      <code>$duration</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$key</code>
-      <code>$keywords</code>
-      <code>$owner['email']</code>
-      <code>$owner['name']</code>
-      <code>$subcat</code>
-      <code>$subtitle</code>
-      <code>$summary</code>
-      <code>$type</code>
-      <code>$url</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="2">
-      <code>$owner['email']</code>
-      <code>$owner['name']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="18">
-      <code>$author</code>
-      <code>$authors</code>
-      <code>$block</code>
-      <code>$cat</code>
-      <code>$cats</code>
-      <code>$duration</code>
-      <code>$explicit</code>
-      <code>$image</code>
-      <code>$key</code>
-      <code>$keywords</code>
-      <code>$owner</code>
-      <code>$owners</code>
-      <code>$status</code>
-      <code>$subcat</code>
-      <code>$subtitle</code>
-      <code>$summary</code>
-      <code>$type</code>
-      <code>$url</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="13">
-      <code>getItunesAuthors</code>
-      <code>getItunesBlock</code>
-      <code>getItunesCategories</code>
-      <code>getItunesComplete</code>
-      <code>getItunesDuration</code>
-      <code>getItunesExplicit</code>
-      <code>getItunesImage</code>
-      <code>getItunesKeywords</code>
-      <code>getItunesNewFeedUrl</code>
-      <code>getItunesOwners</code>
-      <code>getItunesSubtitle</code>
-      <code>getItunesSummary</code>
-      <code>getItunesType</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="4">
-      <code>empty($authors)</code>
-      <code>empty($cats)</code>
-      <code>empty($keywords)</code>
-      <code>empty($owners)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/Extension/PodcastIndex/Entry.php">
-    <MixedArgument occurrences="1">
-      <code>$value</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$this-&gt;data['soundbites'][]</code>
-    </MixedArrayAssignment>
-    <MixedAssignment occurrences="1">
-      <code>$value</code>
-    </MixedAssignment>
-  </file>
-  <file src="src/Writer/Extension/PodcastIndex/Renderer/Entry.php">
-    <MixedAssignment occurrences="1">
-      <code>$soundbite</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="3">
-      <code>getPodcastIndexChapters</code>
-      <code>getPodcastIndexSoundbites</code>
-      <code>getPodcastIndexTranscript</code>
-    </MixedMethodCall>
-  </file>
-  <file src="src/Writer/Extension/PodcastIndex/Renderer/Feed.php">
-    <MixedMethodCall occurrences="2">
-      <code>getPodcastIndexFunding</code>
-      <code>getPodcastIndexLocked</code>
-    </MixedMethodCall>
-  </file>
-  <file src="src/Writer/Extension/Slash/Renderer/Entry.php">
-    <MixedAssignment occurrences="2">
-      <code>$count</code>
-      <code>$tcount-&gt;nodeValue</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>getCommentCount</code>
-    </MixedMethodCall>
-  </file>
-  <file src="src/Writer/Extension/Threading/Renderer/Entry.php">
-    <MixedArgument occurrences="4">
-      <code>$count</code>
-      <code>$count</code>
-      <code>$link</code>
-      <code>$link['uri']</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="2">
-      <code>$link['type']</code>
-      <code>$link['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="7">
-      <code>$count</code>
-      <code>$count</code>
-      <code>$count</code>
-      <code>$link</code>
-      <code>$link</code>
-      <code>$links</code>
-      <code>$tcount-&gt;nodeValue</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="5">
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentFeedLinks</code>
-      <code>getCommentLink</code>
-    </MixedMethodCall>
-    <MixedOperand occurrences="1">
-      <code>$link['type']</code>
-    </MixedOperand>
-    <ParadoxicalCondition occurrences="1">
-      <code>empty($links)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/Extension/WellFormedWeb/Renderer/Entry.php">
-    <MixedArgument occurrences="1">
-      <code>$link['uri']</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="2">
-      <code>$link['type']</code>
-      <code>$link['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="2">
-      <code>$link</code>
-      <code>$links</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>getCommentFeedLinks</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="1">
-      <code>empty($links)</code>
-    </ParadoxicalCondition>
-  </file>
-  <file src="src/Writer/ExtensionManager.php">
-    <MixedInferredReturnType occurrences="1">
-      <code>Extension\AbstractRenderer</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;pluginManager-&gt;get($extension)</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="src/Writer/ExtensionPluginManager.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>gettype($instance)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="1">
-      <code>$plugin</code>
-    </MixedArgument>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>is_object($instance)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Writer/Feed.php">
-    <InvalidStringClass occurrences="1">
-      <code>new $renderClass($this)</code>
-    </InvalidStringClass>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;entries[$this-&gt;key()]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="2">
-      <code>$entries[$timestamp]</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="3">
-      <code>Entry</code>
-      <code>Entry</code>
-      <code>string</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="9">
-      <code>getDateCreated</code>
-      <code>getDateCreated</code>
-      <code>getDateModified</code>
-      <code>getDateModified</code>
-      <code>getTimestamp</code>
-      <code>getTimestamp</code>
-      <code>ignoreExceptions</code>
-      <code>render</code>
-      <code>saveXml</code>
-    </MixedMethodCall>
-    <MixedReturnStatement occurrences="3">
-      <code>$renderer-&gt;render()-&gt;saveXml()</code>
-      <code>$this-&gt;entries[$index]</code>
-      <code>$this-&gt;entries[$this-&gt;key()]</code>
-    </MixedReturnStatement>
-    <PossiblyNullArgument occurrences="1">
-      <code>$this-&gt;getEncoding()</code>
-    </PossiblyNullArgument>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Feed</code>
-      <code>Feed</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/FeedFactory.php">
-    <DocblockTypeContradiction occurrences="2">
-      <code>! is_array($data) &amp;&amp; ! $data instanceof Traversable</code>
-      <code>! is_array($entries) &amp;&amp; ! $entries instanceof Traversable</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="5">
-      <code>$key</code>
-      <code>$key</code>
-      <code>$value</code>
-      <code>$value['link']</code>
-      <code>$value['type']</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="4">
-      <code>$key</code>
-      <code>$key</code>
-      <code>$value</code>
-      <code>$value</code>
-    </MixedAssignment>
-  </file>
-  <file src="src/Writer/Renderer/AbstractRenderer.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>is_bool($bool)</code>
-    </DocblockTypeContradiction>
-    <MixedArgument occurrences="1">
-      <code>$extension</code>
-    </MixedArgument>
-    <MixedArrayOffset occurrences="1">
-      <code>$this-&gt;extensions[$extension]</code>
-    </MixedArrayOffset>
-    <MixedAssignment occurrences="3">
-      <code>$extension</code>
-      <code>$exts</code>
-      <code>$plugin</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="2">
-      <code>setDataContainer</code>
-      <code>setEncoding</code>
-    </MixedMethodCall>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>$dom</code>
-      <code>$rootElement</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Entry/Atom.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidArgument occurrences="1">
-      <code>$container</code>
-    </InvalidArgument>
-    <InvalidCast occurrences="1">
-      <code>$tidy</code>
-    </InvalidCast>
-    <InvalidIterator occurrences="1">
-      <code>$categories</code>
-    </InvalidIterator>
-    <InvalidMethodCall occurrences="2">
-      <code>format</code>
-      <code>format</code>
-    </InvalidMethodCall>
-    <InvalidScalarArgument occurrences="1">
-      <code>$deep</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="16">
-      <code>$cat['label']</code>
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$cat['term']</code>
-      <code>$content</code>
-      <code>$data</code>
-      <code>$data</code>
-      <code>$data['email']</code>
-      <code>$data['length']</code>
-      <code>$data['name']</code>
-      <code>$data['type']</code>
-      <code>$data['uri']</code>
-      <code>$data['uri']</code>
-      <code>$source</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDateCreated()-&gt;format(DateTime::ATOM)</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDateModified()-&gt;format(DateTime::ATOM)</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="10">
-      <code>$cat['label']</code>
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$cat['term']</code>
-      <code>$data['email']</code>
-      <code>$data['length']</code>
-      <code>$data['name']</code>
-      <code>$data['type']</code>
-      <code>$data['uri']</code>
-      <code>$data['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="6">
-      <code>$cat</code>
-      <code>$content</code>
-      <code>$data</code>
-      <code>$data</code>
-      <code>$ext</code>
-      <code>$source</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="4">
-      <code>render</code>
-      <code>setDomDocument</code>
-      <code>setRootElement</code>
-      <code>setType</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="2">
-      <code>! $authors || empty($authors)</code>
-      <code>empty($data)</code>
-    </ParadoxicalCondition>
-    <PossiblyNullArgument occurrences="9">
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDescription()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getTitle()</code>
-    </PossiblyNullArgument>
-    <PossiblyNullReference occurrences="2">
-      <code>format</code>
-      <code>format</code>
-    </PossiblyNullReference>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Atom</code>
-      <code>Atom</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Entry/Atom/Deleted.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidArgument occurrences="1">
-      <code>$container</code>
-    </InvalidArgument>
-    <MixedArgument occurrences="8">
-      <code>$data</code>
-      <code>$data</code>
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-      <code>$this-&gt;container-&gt;getReference()</code>
-      <code>$this-&gt;container-&gt;getWhen()-&gt;format(DateTime::ATOM)</code>
-      <code>$this-&gt;getDataContainer()-&gt;getComment()</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="3">
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="1">
-      <code>$data</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>format</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="1">
-      <code>empty($data)</code>
-    </ParadoxicalCondition>
-    <PossiblyNullArgument occurrences="1">
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-    </PossiblyNullArgument>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Deleted</code>
-      <code>Deleted</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Entry/AtomDeleted.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidArgument occurrences="1">
-      <code>$container</code>
-    </InvalidArgument>
-    <MixedArgument occurrences="8">
-      <code>$data</code>
-      <code>$data</code>
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-      <code>$this-&gt;container-&gt;getReference()</code>
-      <code>$this-&gt;container-&gt;getWhen()-&gt;format(DateTime::ATOM)</code>
-      <code>$this-&gt;getDataContainer()-&gt;getComment()</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="3">
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="1">
-      <code>$data</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>format</code>
-    </MixedMethodCall>
-    <ParadoxicalCondition occurrences="1">
-      <code>empty($data)</code>
-    </ParadoxicalCondition>
-    <PossiblyNullArgument occurrences="1">
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-    </PossiblyNullArgument>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>AtomDeleted</code>
-      <code>AtomDeleted</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Entry/Rss.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidArgument occurrences="1">
-      <code>$container</code>
-    </InvalidArgument>
-    <InvalidIterator occurrences="1">
-      <code>$categories</code>
-    </InvalidIterator>
-    <InvalidMethodCall occurrences="1">
-      <code>format</code>
-    </InvalidMethodCall>
-    <MixedArgument occurrences="9">
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$data</code>
-      <code>$data['length']</code>
-      <code>$data['type']</code>
-      <code>$data['uri']</code>
-      <code>$link</code>
-      <code>$name</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDateModified()-&gt;format(DateTime::RSS)</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="10">
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$data['email']</code>
-      <code>$data['length']</code>
-      <code>$data['length']</code>
-      <code>$data['length']</code>
-      <code>$data['name']</code>
-      <code>$data['name']</code>
-      <code>$data['type']</code>
-      <code>$data['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="6">
-      <code>$cat</code>
-      <code>$data</code>
-      <code>$data</code>
-      <code>$ext</code>
-      <code>$link</code>
-      <code>$name</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="4">
-      <code>render</code>
-      <code>setDomDocument</code>
-      <code>setRootElement</code>
-      <code>setType</code>
-    </MixedMethodCall>
-    <MixedOperand occurrences="2">
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-    </MixedOperand>
-    <ParadoxicalCondition occurrences="2">
-      <code>! $authors || empty($authors)</code>
-      <code>empty($data)</code>
-    </ParadoxicalCondition>
-    <PossiblyNullArgument occurrences="7">
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDescription()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getTitle()</code>
-    </PossiblyNullArgument>
-    <PossiblyNullReference occurrences="1">
-      <code>format</code>
-    </PossiblyNullReference>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Rss</code>
-      <code>Rss</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Feed/AbstractAtom.php">
-    <InvalidArgument occurrences="3">
-      <code>$flinks</code>
-      <code>$gdata</code>
-      <code>$gdata</code>
-    </InvalidArgument>
-    <InvalidArrayOffset occurrences="1">
-      <code>$gdata['name']</code>
-    </InvalidArrayOffset>
-    <InvalidIterator occurrences="3">
-      <code>$categories</code>
-      <code>$flinks</code>
-      <code>$hubs</code>
-    </InvalidIterator>
-    <InvalidMethodCall occurrences="1">
-      <code>format</code>
-    </InvalidMethodCall>
-    <MixedArgument occurrences="15">
-      <code>$cat['label']</code>
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$cat['term']</code>
-      <code>$data</code>
-      <code>$data</code>
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-      <code>$gdata['name']</code>
-      <code>$href</code>
-      <code>$hubUrl</code>
-      <code>$image['uri']</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDateModified()-&gt;format(DateTime::ATOM)</code>
-      <code>$type</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="7">
-      <code>$cat['label']</code>
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$cat['term']</code>
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="5">
-      <code>$cat</code>
-      <code>$data</code>
-      <code>$href</code>
-      <code>$hubUrl</code>
-      <code>$type</code>
-    </MixedAssignment>
-    <ParadoxicalCondition occurrences="1">
-      <code>! $authors || empty($authors)</code>
-    </ParadoxicalCondition>
-    <PossiblyNullArgument occurrences="8">
-      <code>$gdata['uri']</code>
-      <code>$gdata['version']</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDescription()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLanguage()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getTitle()</code>
-    </PossiblyNullArgument>
-    <PossiblyNullArrayAccess occurrences="1">
-      <code>$gdata['name']</code>
-    </PossiblyNullArrayAccess>
-    <PossiblyNullReference occurrences="1">
-      <code>format</code>
-    </PossiblyNullReference>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>AbstractAtom</code>
-      <code>AbstractAtom</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Feed/Atom.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidScalarArgument occurrences="1">
-      <code>$deep</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="1">
-      <code>$entry</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="2">
-      <code>$entry</code>
-      <code>$ext</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="5">
-      <code>render</code>
-      <code>setDomDocument</code>
-      <code>setEncoding</code>
-      <code>setRootElement</code>
-      <code>setType</code>
-    </MixedMethodCall>
-    <PossiblyNullArgument occurrences="1">
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-    </PossiblyNullArgument>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Atom</code>
-      <code>Atom</code>
-    </PropertyNotSetInConstructor>
-    <RawObjectIteration occurrences="1">
-      <code>$this-&gt;container</code>
-    </RawObjectIteration>
-  </file>
-  <file src="src/Writer/Renderer/Feed/Atom/AbstractAtom.php">
-    <InvalidArgument occurrences="3">
-      <code>$flinks</code>
-      <code>$gdata</code>
-      <code>$gdata</code>
-    </InvalidArgument>
-    <InvalidArrayOffset occurrences="1">
-      <code>$gdata['name']</code>
-    </InvalidArrayOffset>
-    <InvalidIterator occurrences="3">
-      <code>$categories</code>
-      <code>$flinks</code>
-      <code>$hubs</code>
-    </InvalidIterator>
-    <InvalidMethodCall occurrences="1">
-      <code>format</code>
-    </InvalidMethodCall>
-    <MixedArgument occurrences="15">
-      <code>$cat['label']</code>
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$cat['term']</code>
-      <code>$data</code>
-      <code>$data</code>
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-      <code>$gdata['name']</code>
-      <code>$href</code>
-      <code>$hubUrl</code>
-      <code>$image['uri']</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDateModified()-&gt;format(DateTime::ATOM)</code>
-      <code>$type</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="7">
-      <code>$cat['label']</code>
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$cat['term']</code>
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['uri']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="5">
-      <code>$cat</code>
-      <code>$data</code>
-      <code>$href</code>
-      <code>$hubUrl</code>
-      <code>$type</code>
-    </MixedAssignment>
-    <ParadoxicalCondition occurrences="1">
-      <code>! $authors || empty($authors)</code>
-    </ParadoxicalCondition>
-    <PossiblyNullArgument occurrences="8">
-      <code>$gdata['uri']</code>
-      <code>$gdata['version']</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDescription()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getId()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLanguage()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLink()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getTitle()</code>
-    </PossiblyNullArgument>
-    <PossiblyNullArrayAccess occurrences="1">
-      <code>$gdata['name']</code>
-    </PossiblyNullArrayAccess>
-    <PossiblyNullReference occurrences="1">
-      <code>format</code>
-    </PossiblyNullReference>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>AbstractAtom</code>
-      <code>AbstractAtom</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Feed/Atom/Source.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidArgument occurrences="3">
-      <code>$container</code>
-      <code>$gdata</code>
-      <code>$gdata</code>
-    </InvalidArgument>
-    <InvalidArrayOffset occurrences="1">
-      <code>$gdata['name']</code>
-    </InvalidArrayOffset>
-    <MixedArgument occurrences="1">
-      <code>$gdata['name']</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="1">
-      <code>$ext</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="4">
-      <code>render</code>
-      <code>setDomDocument</code>
-      <code>setRootElement</code>
-      <code>setType</code>
-    </MixedMethodCall>
-    <PossiblyNullArgument occurrences="3">
-      <code>$gdata['uri']</code>
-      <code>$gdata['version']</code>
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-    </PossiblyNullArgument>
-    <PossiblyNullArrayAccess occurrences="1">
-      <code>$gdata['name']</code>
-    </PossiblyNullArrayAccess>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Source</code>
-      <code>Source</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Feed/AtomSource.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidArgument occurrences="2">
-      <code>$gdata</code>
-      <code>$gdata</code>
-    </InvalidArgument>
-    <InvalidArrayOffset occurrences="1">
-      <code>$gdata['name']</code>
-    </InvalidArrayOffset>
-    <MixedArgument occurrences="1">
-      <code>$gdata['name']</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="1">
-      <code>$ext</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="4">
-      <code>render</code>
-      <code>setDomDocument</code>
-      <code>setRootElement</code>
-      <code>setType</code>
-    </MixedMethodCall>
-    <PossiblyNullArgument occurrences="3">
-      <code>$gdata['uri']</code>
-      <code>$gdata['version']</code>
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-    </PossiblyNullArgument>
-    <PossiblyNullArrayAccess occurrences="1">
-      <code>$gdata['name']</code>
-    </PossiblyNullArrayAccess>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>AtomSource</code>
-      <code>AtomSource</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/Renderer/Feed/Rss.php">
-    <ImplementedReturnTypeMismatch occurrences="1">
-      <code>$this</code>
-    </ImplementedReturnTypeMismatch>
-    <InvalidArgument occurrences="2">
-      <code>$gdata</code>
-      <code>$gdata</code>
-    </InvalidArgument>
-    <InvalidArrayOffset occurrences="1">
-      <code>$gdata['name']</code>
-    </InvalidArrayOffset>
-    <InvalidIterator occurrences="1">
-      <code>$categories</code>
-    </InvalidIterator>
-    <InvalidMethodCall occurrences="2">
-      <code>format</code>
-      <code>format</code>
-    </InvalidMethodCall>
-    <InvalidScalarArgument occurrences="1">
-      <code>$deep</code>
-    </InvalidScalarArgument>
-    <MixedArgument occurrences="10">
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$data</code>
-      <code>$image['height']</code>
-      <code>$image['uri']</code>
-      <code>$image['width']</code>
-      <code>$name</code>
-      <code>$name</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDateModified()-&gt;format(DateTime::RSS)</code>
-      <code>$this-&gt;getDataContainer()-&gt;getLastBuildDate()-&gt;format(DateTime::RSS)</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="5">
-      <code>$cat['scheme']</code>
-      <code>$cat['term']</code>
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$data['name']</code>
-    </MixedArrayAccess>
-    <MixedAssignment occurrences="6">
-      <code>$cat</code>
-      <code>$data</code>
-      <code>$entry</code>
-      <code>$ext</code>
-      <code>$name</code>
-      <code>$name</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="5">
-      <code>render</code>
-      <code>setDomDocument</code>
-      <code>setEncoding</code>
-      <code>setRootElement</code>
-      <code>setType</code>
-    </MixedMethodCall>
-    <MixedOperand occurrences="4">
-      <code>$data['email']</code>
-      <code>$data['name']</code>
-      <code>$name</code>
-      <code>$name</code>
-    </MixedOperand>
-    <ParadoxicalCondition occurrences="1">
-      <code>! $authors || empty($authors)</code>
-    </ParadoxicalCondition>
-    <PossiblyNullArgument occurrences="3">
-      <code>$this-&gt;container-&gt;getEncoding()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getDescription()</code>
-      <code>$this-&gt;getDataContainer()-&gt;getTitle()</code>
-    </PossiblyNullArgument>
-    <PossiblyNullArrayAccess occurrences="1">
-      <code>$gdata['name']</code>
-    </PossiblyNullArrayAccess>
-    <PossiblyNullOperand occurrences="2">
-      <code>$gdata['uri']</code>
-      <code>$gdata['version']</code>
-    </PossiblyNullOperand>
-    <PossiblyNullReference occurrences="2">
-      <code>format</code>
-      <code>format</code>
-    </PossiblyNullReference>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Rss</code>
-      <code>Rss</code>
-    </PropertyNotSetInConstructor>
-    <RawObjectIteration occurrences="1">
-      <code>$this-&gt;container</code>
-    </RawObjectIteration>
-  </file>
-  <file src="src/Writer/Renderer/RendererInterface.php">
-    <MissingReturnType occurrences="2">
-      <code>setRootElement</code>
-      <code>setType</code>
-    </MissingReturnType>
-  </file>
-  <file src="src/Writer/Source.php">
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Source</code>
-      <code>Source</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="src/Writer/StandaloneExtensionManager.php">
-    <MixedMethodCall occurrences="1">
-      <code>new $class()</code>
-    </MixedMethodCall>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>is_string($class)</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="src/Writer/Writer.php">
-    <MixedArgument occurrences="4">
-      <code>static::$extensions['entry']</code>
-      <code>static::$extensions['entryRenderer']</code>
-      <code>static::$extensions['feed']</code>
-      <code>static::$extensions['feedRenderer']</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="4">
-      <code>static::$extensions['entry'][]</code>
-      <code>static::$extensions['entryRenderer'][]</code>
-      <code>static::$extensions['feed'][]</code>
-      <code>static::$extensions['feedRenderer'][]</code>
-    </MixedArrayAssignment>
-    <RedundantPropertyInitializationCheck occurrences="1">
-      <code>isset(static::$extensionManager)</code>
-    </RedundantPropertyInitializationCheck>
-  </file>
-  <file src="test/PubSubHubbub/ClientNotReset.php">
-    <PropertyNotSetInConstructor occurrences="6">
-      <code>ClientNotReset</code>
-      <code>ClientNotReset</code>
-      <code>ClientNotReset</code>
-      <code>ClientNotReset</code>
-      <code>ClientNotReset</code>
-      <code>ClientNotReset</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="test/PubSubHubbub/Model/SubscriptionTest.php">
-    <MissingReturnType occurrences="1">
-      <code>createTable</code>
-    </MissingReturnType>
-    <PossiblyUndefinedMethod occurrences="1">
-      <code>execute</code>
-    </PossiblyUndefinedMethod>
-    <RedundantConditionGivenDocblockType occurrences="1">
-      <code>assertIsArray</code>
-    </RedundantConditionGivenDocblockType>
-  </file>
-  <file src="test/PubSubHubbub/PubSubHubbubTest.php">
-    <ArgumentTypeCoercion occurrences="1">
-      <code>$feed</code>
-    </ArgumentTypeCoercion>
-  </file>
-  <file src="test/PubSubHubbub/PublisherTest.php">
-    <InvalidArgument occurrences="6">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <InvalidScalarArgument occurrences="2">
-      <code>123</code>
-      <code>123</code>
-    </InvalidScalarArgument>
-  </file>
-  <file src="test/PubSubHubbub/Subscriber/CallbackTest.php">
-    <ArgumentTypeCoercion occurrences="4">
-      <code>$className</code>
-      <code>$className</code>
-      <code>'Result'</code>
-      <code>'Result'</code>
-    </ArgumentTypeCoercion>
-    <DeprecatedMethod occurrences="3">
-      <code>setMethods</code>
-      <code>setMethods</code>
-      <code>setMethods</code>
-    </DeprecatedMethod>
-    <InvalidArgument occurrences="8">
-      <code>$this-&gt;tableGateway</code>
-      <code>''</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>new stdClass()</code>
-    </InvalidArgument>
-    <InvalidPropertyAssignmentValue occurrences="3"/>
-    <MissingReturnType occurrences="1">
-      <code>mockInputStream</code>
-    </MissingReturnType>
-    <PossiblyUndefinedMethod occurrences="1">
-      <code>getHeader</code>
-    </PossiblyUndefinedMethod>
-    <UndefinedClass occurrences="2">
-      <code>'Result'</code>
-      <code>'Result'</code>
-    </UndefinedClass>
-  </file>
-  <file src="test/PubSubHubbub/SubscriberHttpTest.php">
-    <ArgumentTypeCoercion occurrences="2">
-      <code>$className</code>
-      <code>$className</code>
-    </ArgumentTypeCoercion>
-    <DeprecatedMethod occurrences="1">
-      <code>setMethods</code>
-    </DeprecatedMethod>
-    <InternalMethod occurrences="1">
-      <code>getName</code>
-    </InternalMethod>
-    <InvalidArgument occurrences="1">
-      <code>$this-&gt;storage</code>
-    </InvalidArgument>
-    <PossiblyFalsePropertyAssignmentValue occurrences="1">
-      <code>getenv('TESTS_LAMINAS_FEED_PUBSUBHUBBUB_BASEURI')</code>
-    </PossiblyFalsePropertyAssignmentValue>
-    <TooFewArguments occurrences="1">
-      <code>getSubscription</code>
-    </TooFewArguments>
-  </file>
-  <file src="test/PubSubHubbub/SubscriberTest.php">
-    <ArgumentTypeCoercion occurrences="2">
-      <code>$className</code>
-      <code>$className</code>
-    </ArgumentTypeCoercion>
-    <DeprecatedMethod occurrences="1">
-      <code>setMethods</code>
-    </DeprecatedMethod>
-    <InvalidArgument occurrences="16">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <InvalidScalarArgument occurrences="5">
-      <code>'0aa'</code>
-      <code>'10000'</code>
-      <code>123</code>
-      <code>123</code>
-      <code>123</code>
-    </InvalidScalarArgument>
-  </file>
-  <file src="test/PubSubHubbub/TestAsset/Callback.php">
-    <MissingParamType occurrences="1">
-      <code>$sendResponseNow</code>
-    </MissingParamType>
-    <PropertyNotSetInConstructor occurrences="2">
-      <code>Callback</code>
-      <code>Callback</code>
-    </PropertyNotSetInConstructor>
-  </file>
-  <file src="test/Reader/Entry/AtomStandaloneEntryTest.php">
-    <RedundantCastGivenDocblockType occurrences="1">
-      <code>(array) $entry-&gt;getAuthors()</code>
-    </RedundantCastGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="6">
-      <code>getCommentLink</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getEnclosure</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Entry/AtomTest.php">
-    <MixedArgument occurrences="6">
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="39">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="51">
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getBaseUrl</code>
-      <code>getBaseUrl</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getDateCreated</code>
-      <code>getDateCreated</code>
-      <code>getDateCreated</code>
-      <code>getDateModified</code>
-      <code>getDateModified</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getEnclosure</code>
-      <code>getEnclosure</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-    </MixedMethodCall>
-  </file>
-  <file src="test/Reader/Entry/CommonTest.php">
-    <MixedArgument occurrences="1">
-      <code>$entry-&gt;getElement()-&gt;tagName</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="11">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="14">
-      <code>getDomDocument</code>
-      <code>getElement</code>
-      <code>getElement</code>
-      <code>getElement</code>
-      <code>getEncoding</code>
-      <code>getEncoding</code>
-      <code>getExtension</code>
-      <code>getExtension</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getType</code>
-      <code>getXpath</code>
-      <code>getXpathPrefix</code>
-      <code>saveXml</code>
-    </MixedMethodCall>
-    <MixedPropertyFetch occurrences="1">
-      <code>$entry-&gt;getElement()-&gt;tagName</code>
-    </MixedPropertyFetch>
-  </file>
-  <file src="test/Reader/Entry/RssTest.php">
-    <InvalidDocblock occurrences="1">
-      <code>public function dateModifiedProvider(): array</code>
-    </InvalidDocblock>
-    <MixedArgument occurrences="26">
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-      <code>$entry-&gt;getCategories()-&gt;getValues()</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="279">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>array&lt;int,&lt;array{0:string,1:DateTimeInterface|null}&gt;&gt;</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="361">
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getAuthors</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentCount</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getCommentLink</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getEnclosure</code>
-      <code>getEnclosure</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-    </MixedMethodCall>
-  </file>
-  <file src="test/Reader/ExtensionPluginManagerCompatibilityTest.php">
-    <InvalidReturnType occurrences="1">
-      <code>getInstanceOf</code>
-    </InvalidReturnType>
-  </file>
-  <file src="test/Reader/Feed/AtomSourceTest.php">
-    <MixedArgument occurrences="1">
-      <code>$source-&gt;getCategories()-&gt;getValues()</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="13">
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-      <code>$source</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="30">
-      <code>getAuthors</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCopyright</code>
-      <code>getDateCreated</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getFeedLink</code>
-      <code>getGenerator</code>
-      <code>getHubs</code>
-      <code>getId</code>
-      <code>getLanguage</code>
-      <code>getLink</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getSource</code>
-      <code>getTitle</code>
-      <code>getValues</code>
-    </MixedMethodCall>
-  </file>
-  <file src="test/Reader/Feed/AtomTest.php">
-    <RedundantCastGivenDocblockType occurrences="2">
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-    </RedundantCastGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="9">
-      <code>getBaseUrl</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getLastBuildDate</code>
-      <code>setOriginalSourceUri</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Feed/CommonTest.php">
-    <UndefinedInterfaceMethod occurrences="9">
-      <code>getDomDocument</code>
-      <code>getElement</code>
-      <code>getEncoding</code>
-      <code>getEncoding</code>
-      <code>getExtension</code>
-      <code>getExtension</code>
-      <code>getXpath</code>
-      <code>getXpathPrefix</code>
-      <code>saveXml</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Feed/RssTest.php">
-    <InvalidMethodCall occurrences="28">
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-      <code>getValues</code>
-    </InvalidMethodCall>
-    <RedundantCastGivenDocblockType occurrences="28">
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-      <code>(array) $feed-&gt;getAuthors()</code>
-    </RedundantCastGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="29">
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getHubs</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getLastBuildDate</code>
-      <code>getLastBuildDate</code>
-      <code>setOriginalSourceUri</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Http/LaminasHttpClientDecoratorTest.php">
-    <InvalidArgument occurrences="2">
-      <code>$headers</code>
-      <code>$responseHeaders</code>
-    </InvalidArgument>
-    <MismatchingDocblockReturnType occurrences="1">
-      <code>MockObject&lt;Headers&gt;</code>
-    </MismatchingDocblockReturnType>
-    <MissingClosureParamType occurrences="2">
-      <code>$argument</code>
-      <code>$parameter</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="3">
-      <code>$this-&gt;client</code>
-      <code>$this-&gt;client</code>
-      <code>$this-&gt;client</code>
-    </MixedArgument>
-    <MixedInferredReturnType occurrences="1">
-      <code>MockObject&lt;Headers&gt;</code>
-    </MixedInferredReturnType>
-    <MixedMethodCall occurrences="31">
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>method</code>
-      <code>willReturn</code>
-      <code>willReturn</code>
-      <code>willReturn</code>
-      <code>with</code>
-      <code>with</code>
-      <code>with</code>
-      <code>with</code>
-      <code>with</code>
-      <code>with</code>
-    </MixedMethodCall>
-    <MixedReturnTypeCoercion occurrences="2">
-      <code>$response</code>
-      <code>MockObject&lt;HttpResponse&gt;</code>
-    </MixedReturnTypeCoercion>
-    <PossiblyUndefinedMethod occurrences="11">
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-      <code>expects</code>
-    </PossiblyUndefinedMethod>
-    <TooManyTemplateParams occurrences="2">
-      <code>MockObject&lt;Headers&gt;</code>
-      <code>MockObject&lt;HttpResponse&gt;</code>
-    </TooManyTemplateParams>
-  </file>
-  <file src="test/Reader/Http/ResponseTest.php">
-    <MissingReturnType occurrences="3">
-      <code>testConstructorRaisesExceptionForInvalidBody</code>
-      <code>testConstructorRaisesExceptionForInvalidHeaderStructures</code>
-      <code>testConstructorRaisesExceptionForInvalidStatusCode</code>
-    </MissingReturnType>
-    <MixedArgument occurrences="2">
-      <code>$body</code>
-      <code>$statusCode</code>
-    </MixedArgument>
-  </file>
-  <file src="test/Reader/Integration/GooglePlayPodcastRss2Test.php">
-    <MixedAssignment occurrences="20">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="20">
-      <code>getCastAuthor</code>
-      <code>getDuration</code>
-      <code>getEnclosure</code>
-      <code>getEncoding</code>
-      <code>getEpisode</code>
-      <code>getEpisode</code>
-      <code>getEpisodeType</code>
-      <code>getEpisodeType</code>
-      <code>getId</code>
-      <code>getItunesImage</code>
-      <code>getPlayPodcastBlock</code>
-      <code>getPlayPodcastDescription</code>
-      <code>getPlayPodcastExplicit</code>
-      <code>getSeason</code>
-      <code>getSeason</code>
-      <code>getSubtitle</code>
-      <code>getTitle</code>
-      <code>isClosedCaptioned</code>
-      <code>isClosedCaptioned</code>
-      <code>isClosedCaptioned</code>
-    </MixedMethodCall>
-    <UndefinedInterfaceMethod occurrences="14">
-      <code>getEncoding</code>
-      <code>getNewFeedUrl</code>
-      <code>getOwner</code>
-      <code>getPlayPodcastAuthor</code>
-      <code>getPlayPodcastBlock</code>
-      <code>getPlayPodcastCategories</code>
-      <code>getPlayPodcastDescription</code>
-      <code>getPlayPodcastExplicit</code>
-      <code>getPlayPodcastImage</code>
-      <code>getPodcastType</code>
-      <code>getPodcastType</code>
-      <code>isComplete</code>
-      <code>isComplete</code>
-      <code>isComplete</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Integration/HOnlineComAtom10Test.php">
-    <MixedAssignment occurrences="10">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="10">
-      <code>getAuthor</code>
-      <code>getAuthors</code>
-      <code>getContent</code>
-      <code>getDescription</code>
-      <code>getEncoding</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLinks</code>
-      <code>getPermaLink</code>
-      <code>getTitle</code>
-    </MixedMethodCall>
-    <RedundantCastGivenDocblockType occurrences="1">
-      <code>(array) $feed-&gt;getAuthors()</code>
-    </RedundantCastGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="1">
-      <code>getEncoding</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Integration/LautDeRdfTest.php">
-    <MixedAssignment occurrences="10">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="10">
-      <code>getAuthor</code>
-      <code>getAuthors</code>
-      <code>getContent</code>
-      <code>getDescription</code>
-      <code>getEncoding</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLinks</code>
-      <code>getPermaLink</code>
-      <code>getTitle</code>
-    </MixedMethodCall>
-    <RedundantCastGivenDocblockType occurrences="1">
-      <code>(array) $feed-&gt;getAuthors()</code>
-    </RedundantCastGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="1">
-      <code>getEncoding</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Integration/PodcastRss2Test.php">
-    <MixedAssignment occurrences="22">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$keywords</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="21">
-      <code>getBlock</code>
-      <code>getCastAuthor</code>
-      <code>getDuration</code>
-      <code>getEnclosure</code>
-      <code>getEncoding</code>
-      <code>getEpisode</code>
-      <code>getEpisode</code>
-      <code>getEpisodeType</code>
-      <code>getEpisodeType</code>
-      <code>getExplicit</code>
-      <code>getId</code>
-      <code>getItunesImage</code>
-      <code>getKeywords</code>
-      <code>getSeason</code>
-      <code>getSeason</code>
-      <code>getSubtitle</code>
-      <code>getSummary</code>
-      <code>getTitle</code>
-      <code>isClosedCaptioned</code>
-      <code>isClosedCaptioned</code>
-      <code>isClosedCaptioned</code>
-    </MixedMethodCall>
-    <UndefinedInterfaceMethod occurrences="13">
-      <code>getBlock</code>
-      <code>getCastAuthor</code>
-      <code>getEncoding</code>
-      <code>getExplicit</code>
-      <code>getItunesCategories</code>
-      <code>getItunesImage</code>
-      <code>getNewFeedUrl</code>
-      <code>getOwner</code>
-      <code>getPodcastType</code>
-      <code>getPodcastType</code>
-      <code>isComplete</code>
-      <code>isComplete</code>
-      <code>isComplete</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Integration/WordpressAtom10Test.php">
-    <MixedArgument occurrences="1">
-      <code>$entry-&gt;getContent()</code>
-    </MixedArgument>
-    <MixedAssignment occurrences="10">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="10">
-      <code>getAuthor</code>
-      <code>getAuthors</code>
-      <code>getContent</code>
-      <code>getDescription</code>
-      <code>getEncoding</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLinks</code>
-      <code>getPermaLink</code>
-      <code>getTitle</code>
-    </MixedMethodCall>
-    <RedundantCastGivenDocblockType occurrences="1">
-      <code>(array) $feed-&gt;getAuthors()</code>
-    </RedundantCastGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="1">
-      <code>getEncoding</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/Integration/WordpressRss2DcAtomTest.php">
-    <MixedAssignment occurrences="10">
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="10">
-      <code>getAuthor</code>
-      <code>getAuthors</code>
-      <code>getContent</code>
-      <code>getDescription</code>
-      <code>getEncoding</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLinks</code>
-      <code>getPermaLink</code>
-      <code>getTitle</code>
-    </MixedMethodCall>
-    <RedundantCastGivenDocblockType occurrences="1">
-      <code>(array) $feed-&gt;getAuthors()</code>
-    </RedundantCastGivenDocblockType>
-    <UndefinedInterfaceMethod occurrences="1">
-      <code>getEncoding</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/ReaderTest.php">
-    <ArgumentTypeCoercion occurrences="10">
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-      <code>$feed</code>
-    </ArgumentTypeCoercion>
-    <DeprecatedMethod occurrences="2">
-      <code>setMethods</code>
-      <code>setMethods</code>
-    </DeprecatedMethod>
-    <InvalidArgument occurrences="2">
-      <code>new stdClass()</code>
-    </InvalidArgument>
-    <MissingClosureParamType occurrences="2">
-      <code>$message</code>
-      <code>$toReturn</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="2">
-      <code>$message</code>
-      <code>$notices-&gt;messages</code>
-    </MixedArgument>
-    <MixedArrayAccess occurrences="1">
-      <code>$link['feed']</code>
-    </MixedArrayAccess>
-    <MixedArrayAssignment occurrences="1">
-      <code>$notices-&gt;messages[]</code>
-    </MixedArrayAssignment>
-    <MixedAssignment occurrences="1">
-      <code>$link</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>getEncoding</code>
-    </MixedMethodCall>
-    <UndefinedInterfaceMethod occurrences="1">
-      <code>getEncoding</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Reader/TestAsset/CustomExtensionManager.php">
-    <LessSpecificReturnStatement occurrences="1">
-      <code>new $class()</code>
-    </LessSpecificReturnStatement>
-    <MixedMethodCall occurrences="1">
-      <code>new $class()</code>
-    </MixedMethodCall>
-    <MoreSpecificReturnType occurrences="1">
-      <code>Extension\AbstractEntry|Extension\AbstractFeed</code>
-    </MoreSpecificReturnType>
-  </file>
-  <file src="test/Reader/_files/My/Extension/JungleBooks/Entry.php">
-    <MixedAssignment occurrences="1">
-      <code>$isbn</code>
-    </MixedAssignment>
-  </file>
-  <file src="test/Reader/_files/My/Extension/JungleBooks/Feed.php">
-    <MixedAssignment occurrences="1">
-      <code>$dayPopular</code>
-    </MixedAssignment>
-    <MixedInferredReturnType occurrences="1">
-      <code>null|string</code>
-    </MixedInferredReturnType>
-    <MixedReturnStatement occurrences="1">
-      <code>$this-&gt;data['dayPopular']</code>
-    </MixedReturnStatement>
-  </file>
-  <file src="test/Writer/DeletedTest.php">
-    <DocblockTypeContradiction occurrences="1">
-      <code>assertNull</code>
-    </DocblockTypeContradiction>
-    <InvalidArgument occurrences="6">
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-    </InvalidArgument>
-    <InvalidScalarArgument occurrences="1">
-      <code>'abc'</code>
-    </InvalidScalarArgument>
-  </file>
-  <file src="test/Writer/EntryTest.php">
-    <InvalidArgument occurrences="20">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-    </InvalidArgument>
-    <InvalidScalarArgument occurrences="2">
-      <code>'abc'</code>
-      <code>'abc'</code>
-    </InvalidScalarArgument>
-    <MissingClosureParamType occurrences="2">
-      <code>$message</code>
-      <code>$toReturn</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="3">
-      <code>$count</code>
-      <code>$message</code>
-      <code>$notices-&gt;messages</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$notices-&gt;messages[]</code>
-    </MixedArrayAssignment>
-    <NullArgument occurrences="1">
-      <code>null</code>
-    </NullArgument>
-  </file>
-  <file src="test/Writer/Extension/GooglePlayPodcast/EntryTest.php">
-    <InvalidArgument occurrences="4">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-  </file>
-  <file src="test/Writer/Extension/GooglePlayPodcast/FeedTest.php">
-    <InvalidArgument occurrences="8">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <MissingReturnType occurrences="2">
-      <code>testSetPlayPodcastImageRaisesExceptionForInvalidUrl</code>
-      <code>testSetPlayPodcastImageSetsInternalDataWithValidUrl</code>
-    </MissingReturnType>
-  </file>
-  <file src="test/Writer/Extension/ITunes/EntryTest.php">
-    <InvalidArgument occurrences="17">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <MissingReturnType occurrences="8">
-      <code>testEpisodeTypeMaybeMutatedWithAcceptedValues</code>
-      <code>testSetEpisodeRaisesExceptionForNonNumericEpisodeNumbers</code>
-      <code>testSetEpisodeTypeRaisesExceptionForInvalidTypes</code>
-      <code>testSetExplicit</code>
-      <code>testSetItunesImageRaisesExceptionForInvalidUrl</code>
-      <code>testSetItunesImageSetsInternalDataWithValidUrl</code>
-      <code>testSetSeasonRaisesExceptionForNonNumericSeasonNumbers</code>
-      <code>testSettingClosedCaptioningToNonBooleanRaisesException</code>
-    </MissingReturnType>
-  </file>
-  <file src="test/Writer/Extension/ITunes/FeedTest.php">
-    <InvalidArgument occurrences="18">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <MissingReturnType occurrences="6">
-      <code>testSetExplicit</code>
-      <code>testSetItunesCompleteRaisesExceptionForInvalidStatus</code>
-      <code>testSetItunesImageRaisesExceptionForInvalidUrl</code>
-      <code>testSetItunesImageSetsInternalDataWithValidUrl</code>
-      <code>testSetItunesTypeMutatesTypeWithValidData</code>
-      <code>testSetItunesTypeWithInvalidTypeRaisesException</code>
-    </MissingReturnType>
-  </file>
-  <file src="test/Writer/FeedFactoryTest.php">
-    <InvalidArgument occurrences="1">
-      <code>'string'</code>
-    </InvalidArgument>
-    <InvalidMethodCall occurrences="1">
-      <code>format</code>
-    </InvalidMethodCall>
-    <PossiblyNullReference occurrences="1">
-      <code>format</code>
-    </PossiblyNullReference>
-  </file>
-  <file src="test/Writer/FeedTest.php">
-    <InvalidArgument occurrences="28">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-      <code>Writer\Exception\ExceptionInterface::class</code>
-    </InvalidArgument>
-    <InvalidMethodCall occurrences="4">
-      <code>getTimestamp</code>
-      <code>getTimestamp</code>
-      <code>getTimestamp</code>
-      <code>getTimestamp</code>
-    </InvalidMethodCall>
-    <MissingClosureParamType occurrences="2">
-      <code>$message</code>
-      <code>$toReturn</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="2">
-      <code>$message</code>
-      <code>$notices-&gt;messages</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$notices-&gt;messages[]</code>
-    </MixedArrayAssignment>
-  </file>
-  <file src="test/Writer/Renderer/Entry/AtomTest.php">
-    <InvalidArgument occurrences="6">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <MissingClosureParamType occurrences="2">
-      <code>$message</code>
-      <code>$toReturn</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="2">
-      <code>$message</code>
-      <code>$notices-&gt;messages</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$notices-&gt;messages[]</code>
-    </MixedArrayAssignment>
-    <MixedAssignment occurrences="19">
-      <code>$enc</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="21">
-      <code>getAuthor</code>
-      <code>getCategories</code>
-      <code>getCommentCount</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentLink</code>
-      <code>getContent</code>
-      <code>getDateCreated</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getEnclosure</code>
-      <code>getEncoding</code>
-      <code>getEncoding</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getTimestamp</code>
-      <code>getTimestamp</code>
-      <code>getTitle</code>
-    </MixedMethodCall>
-    <MixedPropertyFetch occurrences="3">
-      <code>$enc-&gt;length</code>
-      <code>$enc-&gt;type</code>
-      <code>$enc-&gt;url</code>
-    </MixedPropertyFetch>
-  </file>
-  <file src="test/Writer/Renderer/Entry/RssTest.php">
-    <InvalidArgument occurrences="7">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <MissingClosureParamType occurrences="2">
-      <code>$message</code>
-      <code>$toReturn</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="2">
-      <code>$message</code>
-      <code>$notices-&gt;messages</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$notices-&gt;messages[]</code>
-    </MixedArrayAssignment>
-    <MixedAssignment occurrences="22">
-      <code>$enc</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-      <code>$entry</code>
-    </MixedAssignment>
-    <MixedMethodCall occurrences="24">
-      <code>getAuthor</code>
-      <code>getAuthor</code>
-      <code>getCategories</code>
-      <code>getCategories</code>
-      <code>getCommentCount</code>
-      <code>getCommentFeedLink</code>
-      <code>getCommentLink</code>
-      <code>getContent</code>
-      <code>getContent</code>
-      <code>getDateCreated</code>
-      <code>getDateModified</code>
-      <code>getDescription</code>
-      <code>getDescription</code>
-      <code>getEnclosure</code>
-      <code>getEncoding</code>
-      <code>getEncoding</code>
-      <code>getId</code>
-      <code>getId</code>
-      <code>getLink</code>
-      <code>getLink</code>
-      <code>getTimestamp</code>
-      <code>getTimestamp</code>
-      <code>getTitle</code>
-      <code>getTitle</code>
-    </MixedMethodCall>
-    <MixedPropertyFetch occurrences="3">
-      <code>$enc-&gt;length</code>
-      <code>$enc-&gt;type</code>
-      <code>$enc-&gt;url</code>
-    </MixedPropertyFetch>
-  </file>
-  <file src="test/Writer/Renderer/Feed/AtomTest.php">
-    <InvalidArgument occurrences="5">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <MissingClosureParamType occurrences="2">
-      <code>$message</code>
-      <code>$toReturn</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="2">
-      <code>$message</code>
-      <code>$notices-&gt;messages</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$notices-&gt;messages[]</code>
-    </MixedArrayAssignment>
-    <PossiblyNullReference occurrences="1">
-      <code>getTimestamp</code>
-    </PossiblyNullReference>
-    <UndefinedInterfaceMethod occurrences="5">
-      <code>getBaseUrl</code>
-      <code>getEncoding</code>
-      <code>getEncoding</code>
-      <code>getHubs</code>
-      <code>getImage</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Writer/Renderer/Feed/RssTest.php">
-    <InvalidArgument occurrences="15">
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-      <code>ExceptionInterface::class</code>
-    </InvalidArgument>
-    <MissingClosureParamType occurrences="2">
-      <code>$message</code>
-      <code>$toReturn</code>
-    </MissingClosureParamType>
-    <MixedArgument occurrences="3">
-      <code>$feed-&gt;getDomDocument()</code>
-      <code>$message</code>
-      <code>$notices-&gt;messages</code>
-    </MixedArgument>
-    <MixedArrayAssignment occurrences="1">
-      <code>$notices-&gt;messages[]</code>
-    </MixedArrayAssignment>
-    <MixedMethodCall occurrences="1">
-      <code>getTimestamp</code>
-    </MixedMethodCall>
-    <MixedPropertyFetch occurrences="1">
-      <code>$xpath-&gt;evaluate('/rss/channel/atom:link[@rel="self"]')-&gt;length</code>
-    </MixedPropertyFetch>
-    <PossiblyNullReference occurrences="1">
-      <code>getTimestamp</code>
-    </PossiblyNullReference>
-    <UndefinedInterfaceMethod occurrences="8">
-      <code>getBaseUrl</code>
-      <code>getDomDocument</code>
-      <code>getEncoding</code>
-      <code>getEncoding</code>
-      <code>getHubs</code>
-      <code>getImage</code>
-      <code>getImage</code>
-      <code>getLastBuildDate</code>
-    </UndefinedInterfaceMethod>
-  </file>
-  <file src="test/Writer/StandaloneExtensionManagerTest.php">
-    <MixedAssignment occurrences="3">
-      <code>$extension</code>
-      <code>$extension</code>
-      <code>$test</code>
-    </MixedAssignment>
-  </file>
-  <file src="test/Writer/TestAsset/CustomExtensionManager.php">
-    <MixedMethodCall occurrences="1">
-      <code>new $class()</code>
-    </MixedMethodCall>
-  </file>
-</files>
diff --git a/vendor/laminas/laminas-feed/psalm.xml b/vendor/laminas/laminas-feed/psalm.xml
deleted file mode 100644
index 28a3082db8674f44066aaa241560a7fbcbb328b2..0000000000000000000000000000000000000000
--- a/vendor/laminas/laminas-feed/psalm.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<psalm
-    cacheDirectory="./.psalm-cache"
-    totallyTyped="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"
-    errorBaseline="psalm-baseline.xml"
->
-    <projectFiles>
-        <directory name="src"/>
-        <directory name="test"/>
-        <ignoreFiles>
-            <directory name="vendor"/>
-        </ignoreFiles>
-    </projectFiles>
-
-    <issueHandlers>
-        <InternalMethod>
-            <errorLevel type="suppress">
-                <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/>
-            </errorLevel>
-            <errorLevel type="suppress">
-                <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/>
-            </errorLevel>
-            <errorLevel type="suppress">
-                <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/>
-            </errorLevel>
-        </InternalMethod>
-    </issueHandlers>
-    <plugins>
-        <pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
-    </plugins>
-</psalm>
diff --git a/vendor/laminas/laminas-feed/renovate.json b/vendor/laminas/laminas-feed/renovate.json
new file mode 100644
index 0000000000000000000000000000000000000000..060b1d1a2848a8968ea4b178f5292697f7ef1ea1
--- /dev/null
+++ b/vendor/laminas/laminas-feed/renovate.json
@@ -0,0 +1,6 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": [
+    "local>laminas/.github:renovate-config"
+  ]
+}
diff --git a/vendor/laminas/laminas-feed/src/Exception/BadMethodCallException.php b/vendor/laminas/laminas-feed/src/Exception/BadMethodCallException.php
index 0d06ad42d39a544f670cc79445a02f590712dd75..5cd1aa5763c12e82e4a0fe14e8c5840f390251f9 100644
--- a/vendor/laminas/laminas-feed/src/Exception/BadMethodCallException.php
+++ b/vendor/laminas/laminas-feed/src/Exception/BadMethodCallException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Exception;
 
 class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
diff --git a/vendor/laminas/laminas-feed/src/Exception/ExceptionInterface.php b/vendor/laminas/laminas-feed/src/Exception/ExceptionInterface.php
index e767e0427fb785391a3d5a702aacdb108fdc8ad0..b3ac261ac055339b72d4aa1f8904acf017a2003c 100644
--- a/vendor/laminas/laminas-feed/src/Exception/ExceptionInterface.php
+++ b/vendor/laminas/laminas-feed/src/Exception/ExceptionInterface.php
@@ -1,7 +1,11 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Exception;
 
-interface ExceptionInterface
+use Throwable;
+
+interface ExceptionInterface extends Throwable
 {
 }
diff --git a/vendor/laminas/laminas-feed/src/Exception/InvalidArgumentException.php b/vendor/laminas/laminas-feed/src/Exception/InvalidArgumentException.php
index 538910d51025615221276b08aa75bb953926df6a..de9b8aa4dbb76249c32b7fd9e90349df7a7756a6 100644
--- a/vendor/laminas/laminas-feed/src/Exception/InvalidArgumentException.php
+++ b/vendor/laminas/laminas-feed/src/Exception/InvalidArgumentException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Exception;
 
 class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
diff --git a/vendor/laminas/laminas-feed/src/Exception/RuntimeException.php b/vendor/laminas/laminas-feed/src/Exception/RuntimeException.php
index b6248d8698a5bf4bfe4cb26b2e28fb8c139c31ff..a1e438fbd5a43356a0af8039690b0ef3354f65e6 100644
--- a/vendor/laminas/laminas-feed/src/Exception/RuntimeException.php
+++ b/vendor/laminas/laminas-feed/src/Exception/RuntimeException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Exception;
 
 class RuntimeException extends \RuntimeException implements ExceptionInterface
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/AbstractCallback.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/AbstractCallback.php
index 09d9513738bc6db2e8209c83ddb374cee3a2b262..9b2b868cd9d0d867264db7c4aea5b11048b3ad70 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/AbstractCallback.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/AbstractCallback.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub;
 
 use Laminas\Http\PhpEnvironment\Response as PhpResponse;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/CallbackInterface.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/CallbackInterface.php
index b98375305d625e2ceda847fadfa935b6cea24112..ce83a3fba18179f52ce61d98faf8de40c6fe3254 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/CallbackInterface.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/CallbackInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub;
 
 use Laminas\Http\PhpEnvironment\Response;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/ExceptionInterface.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/ExceptionInterface.php
index 7c3088f61d046279b515591e8d42fa8ad1ec13fe..88851ae63e01144461b0fb66aef7de90bae88121 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/ExceptionInterface.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/ExceptionInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub\Exception;
 
 use Laminas\Feed\Exception\ExceptionInterface as Exception;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/InvalidArgumentException.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/InvalidArgumentException.php
index ee271c53c56de516d00a3741d432e6a742805f91..a349cf11048de935fbf4fabd45644a5cb7d94554 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/InvalidArgumentException.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/InvalidArgumentException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/RuntimeException.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/RuntimeException.php
index bea97c15f25013a4203511c58832927c9191ca3f..6cfa63346e664bb5684c6125ffd836aa86a31bda 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/RuntimeException.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Exception/RuntimeException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/HttpResponse.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/HttpResponse.php
index 38a54acfdf6652c73da3d188ca9fa588923c9b9f..5bd9ecf3f823f6f122801b11c1e013305cb7f34c 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/HttpResponse.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/HttpResponse.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub;
 
 use function header;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/AbstractModel.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/AbstractModel.php
index 174bd31bb3fdd0ce1ddc9dc840758866cdcf1755..db833361bd6c1f659d3211c878f82804dde41d36 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/AbstractModel.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/AbstractModel.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub\Model;
 
 use Laminas\Db\TableGateway\TableGateway;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/Subscription.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/Subscription.php
index f2cfb36ba015cbe107301e9bb30ed3a120f5c4c4..c50237b2961dad6fe561bcfc2ecf03c8f791512b 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/Subscription.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/Subscription.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub\Model;
 
 use DateInterval;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/SubscriptionPersistenceInterface.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/SubscriptionPersistenceInterface.php
index d99ca1a8229fb550b756ed3a9aae27f02670f9c2..fccec366344543b24539afe1db7005560c1da7ec 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/SubscriptionPersistenceInterface.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Model/SubscriptionPersistenceInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub\Model;
 
 interface SubscriptionPersistenceInterface
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/PubSubHubbub.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/PubSubHubbub.php
index 958e30a6fb3d9aaac587a17ad3fdf5bde321e09e..703786f1091418487a8421c87a80d9bf0b66e6ef 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/PubSubHubbub.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/PubSubHubbub.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub;
 
 use Laminas\Escaper\Escaper;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Publisher.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Publisher.php
index 73c283c2088dd772c299e637f45adc37067b0ddb..bfbdbaf8a626039435a8629ef8ca6f3cd7f47038 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Publisher.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Publisher.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub;
 
 use Laminas\Feed\Uri;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber.php
index 2550b40945d64b5ec7eaec0c1eb1fcefadb9440f..30004150fcda85e16cc44fd9020a48322562a2a6 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub;
 
 use DateInterval;
@@ -780,7 +782,7 @@ protected function _generateVerifyToken()
         if (! empty($this->testStaticToken)) {
             return $this->testStaticToken;
         }
-        return uniqid(rand(), true) . time();
+        return uniqid((string) rand(), true) . time();
     }
 
     /**
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber/Callback.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber/Callback.php
index 3d060118541382e15febacede88ebdc15b66579a..3a112b711ba4598c9e8a4aec04d971d9df990b28 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber/Callback.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Subscriber/Callback.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub\Subscriber;
 
 use Laminas\Feed\PubSubHubbub;
diff --git a/vendor/laminas/laminas-feed/src/PubSubHubbub/Version.php b/vendor/laminas/laminas-feed/src/PubSubHubbub/Version.php
index 181ee9b3269b230cbfe9e7d34593d31f68de98ce..78bed10aa5118a308160d771b22a93d5bdcc11a1 100644
--- a/vendor/laminas/laminas-feed/src/PubSubHubbub/Version.php
+++ b/vendor/laminas/laminas-feed/src/PubSubHubbub/Version.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\PubSubHubbub;
 
 // phpcs:ignore WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix
diff --git a/vendor/laminas/laminas-feed/src/Reader/AbstractEntry.php b/vendor/laminas/laminas-feed/src/Reader/AbstractEntry.php
index e044632133192ffa5f5162268b1b88c3f895faff..434e3ecb33af7fe8d2aa70433f1e3080cc0d2213 100644
--- a/vendor/laminas/laminas-feed/src/Reader/AbstractEntry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/AbstractEntry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Reader/AbstractFeed.php b/vendor/laminas/laminas-feed/src/Reader/AbstractFeed.php
index df5f014cc882c6b76245cbecda40d88f97f702b4..8eabed03f4741da6b90d9d228667fce3a7dd4c96 100644
--- a/vendor/laminas/laminas-feed/src/Reader/AbstractFeed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/AbstractFeed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 use DOMDocument;
@@ -15,7 +17,10 @@
 use function strpos;
 
 /**
- * @deprecated This (abstract) class is deprecated. Use \Laminas\Feed\Reader\Feed\AbstractFeed instead.
+ * @deprecated This (abstract) class is deprecated. Use \Laminas\Feed\Reader\Feed\AbstractFeed instead.]
+ *
+ * @template TItem of Entry\AbstractEntry
+ * @template-implements Feed\FeedInterface<int, TItem>
  */
 abstract class AbstractFeed implements Feed\FeedInterface
 {
diff --git a/vendor/laminas/laminas-feed/src/Reader/Collection.php b/vendor/laminas/laminas-feed/src/Reader/Collection.php
index e6ce009cf25b2ebb77b8d2e768a778e602b76343..d21aa30214c533448acb4503531f065840b53bc0 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Collection.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Collection.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 use ArrayObject;
@@ -8,6 +10,10 @@
  * @deprecated This class is deprecated. Use the concrete collection classes
  *     \Laminas\Feed\Reader\Collection\Author and \Laminas\Feed\Reader\Collection\Category
  *     or the generic class \Laminas\Feed\Reader\Collection\Collection instead.
+ *
+ * @template TKey
+ * @template TValue
+ * @template-extends ArrayObject<TKey, TValue>
  */
 class Collection extends ArrayObject
 {
diff --git a/vendor/laminas/laminas-feed/src/Reader/Collection/AbstractCollection.php b/vendor/laminas/laminas-feed/src/Reader/Collection/AbstractCollection.php
index c2b264cfec0d0a82f62b767d1c12c63a4370c700..741417b9bfa6d8be7cba54cc214fca109c448bc7 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Collection/AbstractCollection.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Collection/AbstractCollection.php
@@ -1,9 +1,16 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Collection;
 
 use ArrayObject;
 
+/**
+ * @template TKey
+ * @template TValue
+ * @template-extends ArrayObject<TKey, TValue>
+ */
 abstract class AbstractCollection extends ArrayObject
 {
     /**
@@ -12,7 +19,7 @@ abstract class AbstractCollection extends ArrayObject
      * the category name, domain/URI, and other data. This method would
      * merely return the most useful data - i.e. the category names.
      *
-     * @return array
+     * @return array<int, string>
      */
     abstract public function getValues();
 }
diff --git a/vendor/laminas/laminas-feed/src/Reader/Collection/Author.php b/vendor/laminas/laminas-feed/src/Reader/Collection/Author.php
index 5bbc7df4cc4b0a548b8b225364b0358ccdde8465..80d7453c3895c7fcb8659e0274c705b06968e737 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Collection/Author.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Collection/Author.php
@@ -1,16 +1,19 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Collection;
 
 use function array_unique;
 
+/** @template-extends AbstractCollection<int, array{name: string, ...}> */
 class Author extends AbstractCollection
 {
     /**
+     * @inheritDoc
+     *
      * Return a simple array of the most relevant slice of
      * the author values, i.e. all author names.
-     *
-     * @return array
      */
     public function getValues()
     {
diff --git a/vendor/laminas/laminas-feed/src/Reader/Collection/Category.php b/vendor/laminas/laminas-feed/src/Reader/Collection/Category.php
index a6eaf4c1a2b097126d1285a906e5c4f2983eaaf9..e037ac9af0c1bb3c44b5cc261584d2930e5569f3 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Collection/Category.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Collection/Category.php
@@ -1,18 +1,21 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Collection;
 
 use function array_unique;
 
+/** @template-extends AbstractCollection<int, array{term: string, scheme: string, label: string}> */
 class Category extends AbstractCollection
 {
     /**
+     * @inheritDoc
+     *
      * Return a simple array of the most relevant slice of
      * the collection values. For example, feed categories contain
      * the category name, domain/URI, and other data. This method would
      * merely return the most useful data - i.e. the category names.
-     *
-     * @return array
      */
     public function getValues()
     {
diff --git a/vendor/laminas/laminas-feed/src/Reader/Collection/Collection.php b/vendor/laminas/laminas-feed/src/Reader/Collection/Collection.php
index 132635c59e9dd162911bbcb0202fe47e93915fac..53979dfa9a865134a82f8ff3709bab68c81c338a 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Collection/Collection.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Collection/Collection.php
@@ -1,9 +1,16 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Collection;
 
 use ArrayObject;
 
+/**
+ * @template TKey
+ * @template TValue
+ * @template-extends ArrayObject<TKey, TValue>
+ */
 class Collection extends ArrayObject
 {
 }
diff --git a/vendor/laminas/laminas-feed/src/Reader/Entry/AbstractEntry.php b/vendor/laminas/laminas-feed/src/Reader/Entry/AbstractEntry.php
index bdebe38834927388497323932ff9a16b9dbee4f8..72744985030738e142f376a1b9fa709fd1de11da 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Entry/AbstractEntry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Entry/AbstractEntry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Entry;
 
 use DOMDocument;
@@ -12,9 +14,6 @@
 use function in_array;
 use function method_exists;
 use function sprintf;
-use function version_compare;
-
-use const PHP_VERSION;
 
 abstract class AbstractEntry
 {
@@ -121,8 +120,7 @@ public function getEncoding()
     public function saveXml()
     {
         $dom   = new DOMDocument('1.0', $this->getEncoding());
-        $deep  = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-        $entry = $dom->importNode($this->getElement(), $deep);
+        $entry = $dom->importNode($this->getElement(), true);
         $dom->appendChild($entry);
         return $dom->saveXML();
     }
diff --git a/vendor/laminas/laminas-feed/src/Reader/Entry/Atom.php b/vendor/laminas/laminas-feed/src/Reader/Entry/Atom.php
index fd2ae1a7cbc827472e0d74c9dfa24e712a444ccd..2d0ed5b564a87b2fda97eacf6272c450f40ad843 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Entry/Atom.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Entry/Atom.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Entry;
 
 use DateTime;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Entry/EntryInterface.php b/vendor/laminas/laminas-feed/src/Reader/Entry/EntryInterface.php
index 8127e21ed9d70e2d45f88ec31a2869af907bd25a..052b799f0574bbde540034afe5887c4d9b3bba38 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Entry/EntryInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Entry/EntryInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Entry;
 
 use DateTime;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Entry/Rss.php b/vendor/laminas/laminas-feed/src/Reader/Entry/Rss.php
index 341e952ac48b544625788a6113826b5277e66f35..50abc7dde0bba1c796291732d03f7711ab2467de 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Entry/Rss.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Entry/Rss.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Entry;
 
 use DateTime;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Exception/BadMethodCallException.php b/vendor/laminas/laminas-feed/src/Reader/Exception/BadMethodCallException.php
index cf935eb031dd76d38d87d3feff4c47e36fe94d8c..480914ea058916633cdfa911670bc747b3c631e2 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Exception/BadMethodCallException.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Exception/BadMethodCallException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Exception/ExceptionInterface.php b/vendor/laminas/laminas-feed/src/Reader/Exception/ExceptionInterface.php
index 5a1450eaf5d96ca83c9ea6ffd5ea48f1d7943ab4..0a83bcd89ac8421a8208221c9a66e9a050761bad 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Exception/ExceptionInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Exception/ExceptionInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Exception;
 
 use Laminas\Feed\Exception\ExceptionInterface as Exception;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidArgumentException.php b/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidArgumentException.php
index d7f2ad233a95146af17bf540bd93936684266384..6d41edae689198537b9d6905bbe319ab57dd62b8 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidArgumentException.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidArgumentException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidHttpClientException.php b/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidHttpClientException.php
index e89daeeb0e65132ab3265ccf683385c534f1df9a..9ea4b7026145058fd9ef91cd78b7fe7e9b151a4d 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidHttpClientException.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Exception/InvalidHttpClientException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Exception/RuntimeException.php b/vendor/laminas/laminas-feed/src/Reader/Exception/RuntimeException.php
index 33fd34dcf94741e789a01b65253b7d1e6a664639..cae8442a8e8877e04118a16973fb72c7f15407de 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Exception/RuntimeException.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Exception/RuntimeException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractEntry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractEntry.php
index a46954c2f56777bb5825c3d284f7bbc6b8c0c646..02ce5c8c3874632df01fb770ca16b63080adbe40 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractEntry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractEntry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractFeed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractFeed.php
index a2191ece88ad54536f44a74c45aadceb42e1f61f..8325d455b9366b0d1ee8d8febf30a7a7a8fdf2d1 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractFeed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/AbstractFeed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Entry.php
index 22b9da1e901eea436de7caf9f65f1bf1fc137891..0953aa23a6831e3002e4fa42a3c91f3ed2a6dea2 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Atom;
 
 use DateTime;
@@ -18,9 +20,6 @@
 use function preg_replace;
 use function strlen;
 use function trim;
-use function version_compare;
-
-use const PHP_VERSION;
 
 class Entry extends Extension\AbstractEntry
 {
@@ -112,8 +111,7 @@ public function getContent()
                         ->query($this->getXpathPrefix() . '/atom:content/xhtml:div')
                         ->item(0);
                     $d      = new DOMDocument('1.0', $this->getEncoding());
-                    $deep   = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-                    $xhtmls = $d->importNode($xhtml, $deep);
+                    $xhtmls = $d->importNode($xhtml, true);
                     $d->appendChild($xhtmls);
                     $content = $this->collectXhtml(
                         $d->saveXML(),
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Feed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Feed.php
index 22867b2fee80135df0cd85d4c245eddaff137553..746188ec248645c0d40d26f58d73bb8edc7907ef 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Atom/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Atom;
 
 use DateTime;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Content/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Content/Entry.php
index cfe293da7ea012e1bc829a0bb73025db8b96c19d..7a13cdd3b2c198d6e12df10d358a8805288016a0 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Content/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Content/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Content;
 
 use Laminas\Feed\Reader;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Entry.php
index fee1063d4aac4a21510fb30d9c9fd2139b4cfe32..621cf1c27ea7e298c059e18ddb398b6ef5d4a9fc 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\CreativeCommons;
 
 use DOMNodeList;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Feed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Feed.php
index c4bea17a39cc4ce99334dc73a03e94694918918e..629be3da62d9105ff907bfce2c1b32221aced47f 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/CreativeCommons/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\CreativeCommons;
 
 use Laminas\Feed\Reader\Exception\RuntimeException;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Entry.php
index 34a09afb20feb1f4254e93e116053f8857ff11f9..245cee49a8bc897b2a6388cdeff3489b31e6866d 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\DublinCore;
 
 use DateTime;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Feed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Feed.php
index 242219e50eb74d0abbcc3cb092101595aad32d5c..5e3fd7537ffb29958177c7f152cfcdc5a0fe2823 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/DublinCore/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\DublinCore;
 
 use DateTime;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Entry.php
index 4fa819b0c0471be436eb729ead6dccd1a9795e92..b9c0afcc839410142dd0683537da4d12854aa49d 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\GooglePlayPodcast;
 
 use Laminas\Feed\Reader\Extension;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Feed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Feed.php
index a637e605518433aa401cff6e0e07825654743288..7cc4f9f66ec2d4e957a7c42ca70dcb379b0c9e86 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/GooglePlayPodcast/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\GooglePlayPodcast;
 
 use DOMText;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Entry.php
index 031707c66f5be020cde3043a5fe55348a48363ff..0c0a2e0f1d69d9e01dfba8f33b2baa2495b74919 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Podcast;
 
 use Laminas\Feed\Reader\Extension;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Feed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Feed.php
index c00d84c13cd46c0f9684e030ca0ef094caed991a..6cf823b92e7994ea5a8e96d2f70a0981d9ecbc1c 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Podcast/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Podcast;
 
 use DOMText;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Entry.php
index 2013f755b5867325b1ef20d4bec1a9bb0e7f3bef..5a6a3659dc3ed52221c14860c5281bbec73da69a 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\PodcastIndex;
 
 use DOMElement;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Feed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Feed.php
index 9d978718067668bc17d05b7468da4ca6d88040f0..0c8df15e48088a693031c0e677209c19e3bfc4cd 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/PodcastIndex/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\PodcastIndex;
 
 use Laminas\Feed\Reader\Extension;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Slash/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Slash/Entry.php
index 3e506338f79ab6711af0a1b1dc1954900f0d3002..a7361d49fde90aebe39aa027c9f1e8f8cc6e1eeb 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Slash/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Slash/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Slash;
 
 use Laminas\Feed\Reader\Extension;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Syndication/Feed.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Syndication/Feed.php
index 986992e4f6b67fbdf0c536a71b7dc13ccd213cb8..d375efe5f6f9c712329b8ecf3b1d6a156e45ace7 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Syndication/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Syndication/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Syndication;
 
 use DateTime;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/Thread/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/Thread/Entry.php
index b399d873133f709914b51919fb5b9baff0c678ff..92cd43b3e28dcec488e73d81f000054e48c96d45 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/Thread/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/Thread/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\Thread;
 
 use Laminas\Feed\Reader\Extension;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Extension/WellFormedWeb/Entry.php b/vendor/laminas/laminas-feed/src/Reader/Extension/WellFormedWeb/Entry.php
index ce04f9c8f1194fc458df31be3a2bcf905ec5fc00..a902004adaf2e7ddbdaa5cac8c675dec3e9093c2 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Extension/WellFormedWeb/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Extension/WellFormedWeb/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Extension\WellFormedWeb;
 
 use Laminas\Feed\Reader\Extension;
diff --git a/vendor/laminas/laminas-feed/src/Reader/ExtensionManager.php b/vendor/laminas/laminas-feed/src/Reader/ExtensionManager.php
index 903c9cabb0cae37fb12f2740f3f4d96751eeab88..e3f06839f726ffd14968cd719b4be736712548f0 100644
--- a/vendor/laminas/laminas-feed/src/Reader/ExtensionManager.php
+++ b/vendor/laminas/laminas-feed/src/Reader/ExtensionManager.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 use function call_user_func_array;
@@ -10,6 +12,9 @@
  * Default implementation of ExtensionManagerInterface
  *
  * Decorator of ExtensionPluginManager.
+ *
+ * @final this class wasn't designed to be inherited from, but we can't assume that consumers haven't already
+ *        extended it, therefore we cannot add the final marker without a new major release.
  */
 class ExtensionManager implements ExtensionManagerInterface
 {
@@ -65,9 +70,8 @@ public function get($extension)
      * Do we have the named extension?
      *
      * @param  string $extension
-     * @return bool
      */
-    public function has($extension)
+    public function has($extension): bool
     {
         return $this->pluginManager->has($extension);
     }
diff --git a/vendor/laminas/laminas-feed/src/Reader/ExtensionManagerInterface.php b/vendor/laminas/laminas-feed/src/Reader/ExtensionManagerInterface.php
index ad0da3ab52f17cb61ded2e8dbdf6adbe31079865..a9f196c0d4b58152a881dad7f28582168783901d 100644
--- a/vendor/laminas/laminas-feed/src/Reader/ExtensionManagerInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/ExtensionManagerInterface.php
@@ -1,22 +1,20 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
+/**
+ * This interface exists to provide type inference for container implementations that retrieve extensions.
+ * Methods have been migrated from declared in PHP to being part of the docblock signature,
+ * in order to avoid conflicting with `psr/container` signatures, which are way stricter, and
+ * therefore incompatible with this one.
+ *
+ * @deprecated this interface is no longer needed, and shouldn't be relied upon
+ *
+ * @method has(string $extension): bool
+ * @method get(string $extension): mixed
+ */
 interface ExtensionManagerInterface
 {
-    /**
-     * Do we have the extension?
-     *
-     * @param  string $extension
-     * @return bool
-     */
-    public function has($extension);
-
-    /**
-     * Retrieve the extension
-     *
-     * @param  string $extension
-     * @return mixed
-     */
-    public function get($extension);
 }
diff --git a/vendor/laminas/laminas-feed/src/Reader/ExtensionPluginManager.php b/vendor/laminas/laminas-feed/src/Reader/ExtensionPluginManager.php
index 19530c8431441e0f6e0e99e2bd90efacf724ffba..fe24057a3da20261a8c2a79aa37bed72853f7221 100644
--- a/vendor/laminas/laminas-feed/src/Reader/ExtensionPluginManager.php
+++ b/vendor/laminas/laminas-feed/src/Reader/ExtensionPluginManager.php
@@ -1,14 +1,16 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
+use Laminas\Feed\Reader\Extension\AbstractEntry;
+use Laminas\Feed\Reader\Extension\AbstractFeed;
 use Laminas\ServiceManager\AbstractPluginManager;
+use Laminas\ServiceManager\ConfigInterface;
 use Laminas\ServiceManager\Exception\InvalidServiceException;
 use Laminas\ServiceManager\Factory\InvokableFactory;
-use Zend\Feed\Reader\Extension\Atom\Entry;
-use Zend\Feed\Reader\Extension\Atom\Feed;
 
-use function get_class;
 use function gettype;
 use function is_object;
 use function sprintf;
@@ -19,6 +21,12 @@
  *
  * Validation checks that we have an Extension\AbstractEntry or
  * Extension\AbstractFeed.
+ *
+ * @psalm-import-type FactoriesConfigurationType from ConfigInterface
+ * @final this class wasn't designed to be inherited from, but we can't assume that consumers haven't already
+ *        extended it, therefore we cannot add the final marker without a new major release.
+ * @template InstanceType of AbstractEntry|AbstractFeed
+ * @template-extends AbstractPluginManager<InstanceType>
  */
 class ExtensionPluginManager extends AbstractPluginManager implements ExtensionManagerInterface
 {
@@ -98,21 +106,21 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
         'WellFormedWeb\Entry'     => Extension\WellFormedWeb\Entry::class,
 
         // Legacy Zend Framework aliases
-        Entry::class                                               => Extension\Atom\Entry::class,
-        Feed::class                                                => Extension\Atom\Feed::class,
-        \Zend\Feed\Reader\Extension\Content\Entry::class           => Extension\Content\Entry::class,
-        \Zend\Feed\Reader\Extension\CreativeCommons\Entry::class   => Extension\CreativeCommons\Entry::class,
-        \Zend\Feed\Reader\Extension\CreativeCommons\Feed::class    => Extension\CreativeCommons\Feed::class,
-        \Zend\Feed\Reader\Extension\DublinCore\Entry::class        => Extension\DublinCore\Entry::class,
-        \Zend\Feed\Reader\Extension\DublinCore\Feed::class         => Extension\DublinCore\Feed::class,
-        \Zend\Feed\Reader\Extension\GooglePlayPodcast\Entry::class => Extension\GooglePlayPodcast\Entry::class,
-        \Zend\Feed\Reader\Extension\GooglePlayPodcast\Feed::class  => Extension\GooglePlayPodcast\Feed::class,
-        \Zend\Feed\Reader\Extension\Podcast\Entry::class           => Extension\Podcast\Entry::class,
-        \Zend\Feed\Reader\Extension\Podcast\Feed::class            => Extension\Podcast\Feed::class,
-        \Zend\Feed\Reader\Extension\Slash\Entry::class             => Extension\Slash\Entry::class,
-        \Zend\Feed\Reader\Extension\Syndication\Feed::class        => Extension\Syndication\Feed::class,
-        \Zend\Feed\Reader\Extension\Thread\Entry::class            => Extension\Thread\Entry::class,
-        \Zend\Feed\Reader\Extension\WellFormedWeb\Entry::class     => Extension\WellFormedWeb\Entry::class,
+        'Zend\Feed\Reader\Extension\Atom\Entry'              => Extension\Atom\Entry::class,
+        'Zend\Feed\Reader\Extension\Atom\Feed'               => Extension\Atom\Feed::class,
+        'Zend\Feed\Reader\Extension\Content\Entry'           => Extension\Content\Entry::class,
+        'Zend\Feed\Reader\Extension\CreativeCommons\Entry'   => Extension\CreativeCommons\Entry::class,
+        'Zend\Feed\Reader\Extension\CreativeCommons\Feed'    => Extension\CreativeCommons\Feed::class,
+        'Zend\Feed\Reader\Extension\DublinCore\Entry'        => Extension\DublinCore\Entry::class,
+        'Zend\Feed\Reader\Extension\DublinCore\Feed'         => Extension\DublinCore\Feed::class,
+        'Zend\Feed\Reader\Extension\GooglePlayPodcast\Entry' => Extension\GooglePlayPodcast\Entry::class,
+        'Zend\Feed\Reader\Extension\GooglePlayPodcast\Feed'  => Extension\GooglePlayPodcast\Feed::class,
+        'Zend\Feed\Reader\Extension\Podcast\Entry'           => Extension\Podcast\Entry::class,
+        'Zend\Feed\Reader\Extension\Podcast\Feed'            => Extension\Podcast\Feed::class,
+        'Zend\Feed\Reader\Extension\Slash\Entry'             => Extension\Slash\Entry::class,
+        'Zend\Feed\Reader\Extension\Syndication\Feed'        => Extension\Syndication\Feed::class,
+        'Zend\Feed\Reader\Extension\Thread\Entry'            => Extension\Thread\Entry::class,
+        'Zend\Feed\Reader\Extension\WellFormedWeb\Entry'     => Extension\WellFormedWeb\Entry::class,
 
         // v2 normalized FQCNs
         'zendfeedreaderextensionatomentry'              => Extension\Atom\Entry::class,
@@ -136,6 +144,7 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
      * Factories for default set of extension classes
      *
      * @var array<array-key, callable|string>
+     * @psalm-var FactoriesConfigurationType
      */
     protected $factories = [
         Extension\Atom\Entry::class              => InvokableFactory::class,
@@ -180,6 +189,8 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
     /**
      * Do not share instances (v2)
      *
+     * @deprecated
+     *
      * @var bool
      */
     protected $shareByDefault = false;
@@ -191,37 +202,31 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
      */
     protected $sharedByDefault = false;
 
-    /**
-     * Validate the plugin
-     *
-     * Checks that the extension loaded is of a valid type.
-     *
-     * @param  mixed $instance
-     * @return void
-     * @throws Exception\InvalidArgumentException If invalid.
-     */
-    public function validate($instance)
+    /** @inheritDoc */
+    public function validate(mixed $instance)
     {
         if (
-            $instance instanceof Extension\AbstractEntry
-            || $instance instanceof Extension\AbstractFeed
+            $instance instanceof AbstractEntry
+            || $instance instanceof AbstractFeed
         ) {
             // we're okay
             return;
         }
 
         throw new InvalidServiceException(sprintf(
-            'Plugin of type %s is invalid; must implement %s\Extension\AbstractFeed '
-            . 'or %s\Extension\AbstractEntry',
-            is_object($instance) ? get_class($instance) : gettype($instance),
-            __NAMESPACE__,
-            __NAMESPACE__
+            'Plugin of type %s is invalid; must implement %s or %s',
+            is_object($instance) ? $instance::class : gettype($instance),
+            AbstractEntry::class,
+            AbstractFeed::class
         ));
     }
 
     /**
      * Validate the plugin (v2)
      *
+     * @deprecated Since 2.18.0 This component is no longer compatible with service manager v2 series.
+     *             This method will be removed in version 3.0 of this component
+     *
      * @param  mixed $plugin
      * @return void
      * @throws Exception\InvalidArgumentException If invalid.
@@ -232,11 +237,10 @@ public function validatePlugin($plugin)
             $this->validate($plugin);
         } catch (InvalidServiceException $e) {
             throw new Exception\InvalidArgumentException(sprintf(
-                'Plugin of type %s is invalid; must implement %s\Extension\AbstractFeed '
-                . 'or %s\Extension\AbstractEntry',
-                is_object($plugin) ? get_class($plugin) : gettype($plugin),
-                __NAMESPACE__,
-                __NAMESPACE__
+                'Plugin of type %s is invalid; must implement %s or %s',
+                is_object($plugin) ? $plugin::class : gettype($plugin),
+                AbstractEntry::class,
+                AbstractFeed::class
             ));
         }
     }
diff --git a/vendor/laminas/laminas-feed/src/Reader/Feed/AbstractFeed.php b/vendor/laminas/laminas-feed/src/Reader/Feed/AbstractFeed.php
index 5656497e3911d412e3592e81f01f48299781c24d..5a4930dd42713f9f88f77b944bc116e7f17ecb47 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Feed/AbstractFeed.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Feed/AbstractFeed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Feed;
 
 use DOMDocument;
@@ -18,6 +20,10 @@
 use function sprintf;
 use function strpos;
 
+/**
+ * @template TItem of Reader\Entry\Rss|Reader\Entry\Atom
+ * @template-implements FeedInterface<TItem>
+ */
 abstract class AbstractFeed implements FeedInterface
 {
     /**
diff --git a/vendor/laminas/laminas-feed/src/Reader/Feed/Atom.php b/vendor/laminas/laminas-feed/src/Reader/Feed/Atom.php
index 2cceaf775591f321ada8556a08715a03df769a23..10d503597f1ab0698525c353fe356f04d4ed2c58 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Feed/Atom.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Feed/Atom.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Feed;
 
 use DateTime;
@@ -10,6 +12,7 @@
 use function count;
 use function is_array;
 
+/** @template-extends AbstractFeed<Reader\Entry\Atom> */
 class Atom extends AbstractFeed
 {
     /**
diff --git a/vendor/laminas/laminas-feed/src/Reader/Feed/Atom/Source.php b/vendor/laminas/laminas-feed/src/Reader/Feed/Atom/Source.php
index 6ff2b50bd9a33849945a13a4a8ce7f9a373ecf20..f50cd2dee643dbfedb1cbfd59771904063d10e65 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Feed/Atom/Source.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Feed/Atom/Source.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Feed\Atom;
 
 use DOMElement;
diff --git a/vendor/laminas/laminas-feed/src/Reader/Feed/FeedInterface.php b/vendor/laminas/laminas-feed/src/Reader/Feed/FeedInterface.php
index df5b533eddf62840f448ca0c1c3317caa85c23e8..e048de3aa9e05e480cbd570d9a49f2e5fc9c7fb7 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Feed/FeedInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Feed/FeedInterface.php
@@ -1,12 +1,19 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Feed;
 
 use Countable;
 use DateTime;
 use Iterator;
 use Laminas\Feed\Reader\Collection\Category;
+use Laminas\Feed\Reader\Entry\EntryInterface;
 
+/**
+ * @template TItem of EntryInterface
+ * @template-extends Iterator<int, TItem>
+ */
 interface FeedInterface extends Iterator, Countable
 {
     /**
diff --git a/vendor/laminas/laminas-feed/src/Reader/Feed/Rss.php b/vendor/laminas/laminas-feed/src/Reader/Feed/Rss.php
index 633e3795cf8c69dddbebe5113525ac9a64b1ba92..dbb496aea70f7d7769b1c01d88520ef8ddc12887 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Feed/Rss.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Feed/Rss.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Feed;
 
 use DateTime;
@@ -16,6 +18,7 @@
 use function strtotime;
 use function trim;
 
+/** @template-extends AbstractFeed<Reader\Entry\Rss> */
 class Rss extends AbstractFeed
 {
     /**
diff --git a/vendor/laminas/laminas-feed/src/Reader/FeedSet.php b/vendor/laminas/laminas-feed/src/Reader/FeedSet.php
index b7c0cacb6c5d845650a717827a3ff7502b8fa9db..eff1ffeb5bb1efde7fbdd13418b8e60fa7a2d04b 100644
--- a/vendor/laminas/laminas-feed/src/Reader/FeedSet.php
+++ b/vendor/laminas/laminas-feed/src/Reader/FeedSet.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 use ArrayObject;
@@ -18,6 +20,7 @@
 use function strtolower;
 use function trim;
 
+/** @template-extends ArrayObject<array-key, FeedSet|Feed\FeedInterface|string|null> */
 class FeedSet extends ArrayObject
 {
     /** @var null|string */
@@ -163,11 +166,10 @@ protected function canonicalizePath($path)
     }
 
     /**
+     * @inheritDoc
+     *
      * Supports lazy loading of feeds using Reader::import() but
      * delegates any other operations to the parent class.
-     *
-     * @param  string $offset
-     * @return mixed
      */
     #[ReturnTypeWillChange]
     public function offsetGet($offset)
diff --git a/vendor/laminas/laminas-feed/src/Reader/Http/ClientInterface.php b/vendor/laminas/laminas-feed/src/Reader/Http/ClientInterface.php
index 9fe4c35621a1be144ed4930f607f609862d4a39a..ec12d90fa04b3870a306427bb66f94626daccb9f 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Http/ClientInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Http/ClientInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Http;
 
 interface ClientInterface
diff --git a/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareClientInterface.php b/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareClientInterface.php
index 27c7f713282d50aa9739cef084dfce419ed1d446..936986d09999c45d0c1d567d2216ad5713fd252a 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareClientInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareClientInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Http;
 
 interface HeaderAwareClientInterface extends ClientInterface
diff --git a/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareResponseInterface.php b/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareResponseInterface.php
index ad83006f3b3df06384b00951ed0682f738e73b2e..961bd150f4b4948b9ad32e920b804cbb86f0aab9 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareResponseInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Http/HeaderAwareResponseInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Http;
 
 interface HeaderAwareResponseInterface extends ResponseInterface
diff --git a/vendor/laminas/laminas-feed/src/Reader/Http/LaminasHttpClientDecorator.php b/vendor/laminas/laminas-feed/src/Reader/Http/LaminasHttpClientDecorator.php
index 6146d4aecbf3fe88190744360a905949db7d4adc..0cfcac4a0f36552c73019ca181b061e92513a05b 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Http/LaminasHttpClientDecorator.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Http/LaminasHttpClientDecorator.php
@@ -1,12 +1,13 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Http;
 
 use Laminas\Feed\Reader\Exception;
 use Laminas\Http\Client as LaminasHttpClient;
 use Laminas\Http\Headers;
 
-use function get_class;
 use function gettype;
 use function implode;
 use function is_array;
@@ -17,8 +18,7 @@
 
 class LaminasHttpClientDecorator implements HeaderAwareClientInterface
 {
-    /** @var LaminasHttpClient */
-    private $client;
+    private LaminasHttpClient $client;
 
     public function __construct(LaminasHttpClient $client)
     {
@@ -75,7 +75,7 @@ private function injectHeaders(array $headerValues)
                 throw new Exception\InvalidArgumentException(sprintf(
                     'Header values provided to %s::get must be arrays of values; received %s',
                     self::class,
-                    is_object($values) ? get_class($values) : gettype($values)
+                    is_object($values) ? $values::class : gettype($values)
                 ));
             }
 
@@ -85,7 +85,7 @@ private function injectHeaders(array $headerValues)
                         'Individual header values provided to %s::get must be strings or numbers; '
                         . 'received %s for header %s',
                         self::class,
-                        is_object($value) ? get_class($value) : gettype($value),
+                        is_object($value) ? $value::class : gettype($value),
                         $name
                     ));
                 }
diff --git a/vendor/laminas/laminas-feed/src/Reader/Http/Psr7ResponseDecorator.php b/vendor/laminas/laminas-feed/src/Reader/Http/Psr7ResponseDecorator.php
index 82114d0a25df263dbcfa33b364543b59feff692e..ffc4a20a721e9022aceb5954ee08b60c3d953c3b 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Http/Psr7ResponseDecorator.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Http/Psr7ResponseDecorator.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Http;
 
 use Psr\Http\Message\ResponseInterface as Psr7ResponseInterface;
@@ -9,8 +11,7 @@
  */
 class Psr7ResponseDecorator implements HeaderAwareResponseInterface
 {
-    /** @var Psr7ResponseInterface */
-    private $decoratedResponse;
+    private Psr7ResponseInterface $decoratedResponse;
 
     public function __construct(Psr7ResponseInterface $response)
     {
diff --git a/vendor/laminas/laminas-feed/src/Reader/Http/Response.php b/vendor/laminas/laminas-feed/src/Reader/Http/Response.php
index df101278fecddb2ce983455a01097f35d2f42d82..a3f777263ebd32113eb871e4da1acba7b76bc3b3 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Http/Response.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Http/Response.php
@@ -1,10 +1,11 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Http;
 
 use Laminas\Feed\Reader\Exception;
 
-use function get_class;
 use function gettype;
 use function intval;
 use function is_numeric;
@@ -17,14 +18,11 @@
 
 class Response implements HeaderAwareResponseInterface
 {
-    /** @var string */
-    private $body;
+    private string $body;
 
-    /** @var array */
-    private $headers;
+    private array $headers;
 
-    /** @var int */
-    private $statusCode;
+    private int $statusCode;
 
     /**
      * @param  int $statusCode
@@ -81,7 +79,7 @@ private function validateStatusCode($statusCode)
             throw new Exception\InvalidArgumentException(sprintf(
                 '%s expects a numeric status code; received %s',
                 self::class,
-                is_object($statusCode) ? get_class($statusCode) : gettype($statusCode)
+                is_object($statusCode) ? $statusCode::class : gettype($statusCode)
             ));
         }
 
@@ -123,7 +121,7 @@ private function validateBody($body)
         throw new Exception\InvalidArgumentException(sprintf(
             '%s expects a string body, or an object that can cast to string; received %s',
             self::class,
-            is_object($body) ? get_class($body) : gettype($body)
+            is_object($body) ? $body::class : gettype($body)
         ));
     }
 
@@ -148,7 +146,7 @@ private function validateHeaders(array $headers)
                 throw new Exception\InvalidArgumentException(sprintf(
                     'Individual header values provided to %s must be a string or numeric; received %s for header %s',
                     self::class,
-                    is_object($value) ? get_class($value) : gettype($value),
+                    is_object($value) ? $value::class : gettype($value),
                     $name
                 ));
             }
diff --git a/vendor/laminas/laminas-feed/src/Reader/Http/ResponseInterface.php b/vendor/laminas/laminas-feed/src/Reader/Http/ResponseInterface.php
index 12204f4b5cf19117cf9a296c845be4f9bc861102..36615cc27b43202592bfc003c4f2c05bafd94907 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Http/ResponseInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Http/ResponseInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader\Http;
 
 interface ResponseInterface
diff --git a/vendor/laminas/laminas-feed/src/Reader/Reader.php b/vendor/laminas/laminas-feed/src/Reader/Reader.php
index 5a53f4110519d8322596605a044946b0c93811db..3cb729e3357c8ec95952b2985bf6338c11111810 100644
--- a/vendor/laminas/laminas-feed/src/Reader/Reader.php
+++ b/vendor/laminas/laminas-feed/src/Reader/Reader.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 use DOMDocument;
@@ -12,7 +14,6 @@
 use function array_unique;
 use function file_get_contents;
 use function function_exists;
-use function get_class;
 use function gettype;
 use function in_array;
 use function ini_restore;
@@ -128,7 +129,7 @@ class Reader implements ReaderImportInterface
     public static function disableEntityLoader($flag = true)
     {
         if (LIBXML_VERSION < 20900) {
-            return libxml_disable_entity_loader($flag);
+            return libxml_disable_entity_loader($flag); // phpcs:ignore
         }
         return $flag;
     }
@@ -329,7 +330,7 @@ public static function importRemoteFeed($uri, Http\ClientInterface $client)
             throw new Exception\RuntimeException(sprintf(
                 'Did not receive a %s\Http\ResponseInterface from the provided HTTP client; received "%s"',
                 __NAMESPACE__,
-                is_object($response) ? get_class($response) : gettype($response)
+                is_object($response) ? $response::class : gettype($response)
             ));
         }
 
@@ -478,7 +479,7 @@ public static function detectType($feed, $specOnly = false)
             $dom = $feed;
         } elseif (is_string($feed) && ! empty($feed)) {
             ErrorHandler::start(E_NOTICE | E_WARNING);
-            ini_set('track_errors', 1);
+            ini_set('track_errors', '1');
             $disableEntityLoaderFlag = self::disableEntityLoader();
             $dom                     = new DOMDocument();
             $status                  = $dom->loadXML($feed);
@@ -603,10 +604,13 @@ public static function setExtensionManager(ExtensionManagerInterface $extensionM
      */
     public static function getExtensionManager()
     {
-        if (! isset(static::$extensionManager)) {
-            static::setExtensionManager(new StandaloneExtensionManager());
+        $manager = static::$extensionManager;
+        if (! $manager instanceof ExtensionManagerInterface) {
+            $manager = new StandaloneExtensionManager();
+            static::setExtensionManager($manager);
         }
-        return static::$extensionManager;
+
+        return $manager;
     }
 
     /**
@@ -750,7 +754,9 @@ protected static function registerCoreExtensions()
      * Utility method to apply array_unique operation to a multidimensional
      * array.
      *
-     * @return array
+     * @template TInput of array
+     * @param TInput $array
+     * @return TInput
      */
     public static function arrayUnique(array $array)
     {
diff --git a/vendor/laminas/laminas-feed/src/Reader/ReaderImportInterface.php b/vendor/laminas/laminas-feed/src/Reader/ReaderImportInterface.php
index 2d61a7fcc0d8f3f8b2a09d8cb552699f72df4fb3..2a48e2b39fe00ab7d93d1e72ffa4186ba3b26b6c 100644
--- a/vendor/laminas/laminas-feed/src/Reader/ReaderImportInterface.php
+++ b/vendor/laminas/laminas-feed/src/Reader/ReaderImportInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 interface ReaderImportInterface
@@ -25,7 +27,7 @@ public static function import($uri, $etag = null, $lastModified = null);
      * HTTP client implementations.
      *
      * @param  string $uri
-     * @return self
+     * @return Feed\FeedInterface
      * @throws Exception\RuntimeException If response is not an Http\ResponseInterface.
      */
     public static function importRemoteFeed($uri, Http\ClientInterface $client);
diff --git a/vendor/laminas/laminas-feed/src/Reader/StandaloneExtensionManager.php b/vendor/laminas/laminas-feed/src/Reader/StandaloneExtensionManager.php
index 89ba35e52d688fde67185d71ca5490030cb17f9c..d07d26ace11a2d14bdda4acb2e544539b87a8219 100644
--- a/vendor/laminas/laminas-feed/src/Reader/StandaloneExtensionManager.php
+++ b/vendor/laminas/laminas-feed/src/Reader/StandaloneExtensionManager.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Reader;
 
 use Laminas\Feed\Reader\Exception\InvalidArgumentException;
@@ -9,10 +11,14 @@
 use function is_string;
 use function sprintf;
 
+/**
+ * @final this class wasn't designed to be inherited from, but we can't assume that consumers haven't already
+ *        extended it, therefore we cannot add the final marker without a new major release.
+ */
 class StandaloneExtensionManager implements ExtensionManagerInterface
 {
     /** @var array<string, class-string> */
-    private $extensions = [
+    private array $extensions = [
         'Atom\Entry'              => Extension\Atom\Entry::class,
         'Atom\Feed'               => Extension\Atom\Feed::class,
         'Content\Entry'           => Extension\Content\Entry::class,
@@ -36,9 +42,8 @@ class StandaloneExtensionManager implements ExtensionManagerInterface
      * Do we have the extension?
      *
      * @param  string $extension
-     * @return bool
      */
-    public function has($extension)
+    public function has($extension): bool
     {
         return array_key_exists($extension, $this->extensions);
     }
diff --git a/vendor/laminas/laminas-feed/src/Uri.php b/vendor/laminas/laminas-feed/src/Uri.php
index 49fabab19c942163ce6e5110c533f3a528306e3e..956fb03f71a983ba03976c70e1eba25d07360bcf 100644
--- a/vendor/laminas/laminas-feed/src/Uri.php
+++ b/vendor/laminas/laminas-feed/src/Uri.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed;
 
 use function in_array;
@@ -73,7 +75,7 @@ public function __construct($uri)
      * Useful for chained validations
      *
      * @param  string $uri
-     * @return self
+     * @return static
      */
     public static function factory($uri)
     {
diff --git a/vendor/laminas/laminas-feed/src/Writer/AbstractFeed.php b/vendor/laminas/laminas-feed/src/Writer/AbstractFeed.php
index 970f9b46791287616fe175689062f9e1d1dc3bf8..47a32d8b38ccd4235d2dae18218e1d718cd5ecb5 100644
--- a/vendor/laminas/laminas-feed/src/Writer/AbstractFeed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/AbstractFeed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use DateTime;
@@ -136,7 +138,7 @@ public function setCopyright($copyright)
      * Set the feed creation date
      *
      * @param DateTime|DateTimeImmutable|int|null|string $date
-     * @return self
+     * @return $this
      * @throws Exception\InvalidArgumentException
      */
     public function setDateCreated($date = null)
@@ -161,7 +163,7 @@ public function setDateCreated($date = null)
      * Set the feed modification date
      *
      * @param DateTime|DateTimeImmutable|int|null|string $date
-     * @return self
+     * @return $this
      * @throws Exception\InvalidArgumentException
      */
     public function setDateModified($date = null)
@@ -186,7 +188,7 @@ public function setDateModified($date = null)
      * Set the feed last-build date. Ignored for Atom 1.0.
      *
      * @param DateTime|DateTimeImmutable|int|null|string $date
-     * @return self
+     * @return $this
      * @throws Exception\InvalidArgumentException
      */
     public function setLastBuildDate($date = null)
diff --git a/vendor/laminas/laminas-feed/src/Writer/Deleted.php b/vendor/laminas/laminas-feed/src/Writer/Deleted.php
index 4775001e76c24d535da3bb6910d6ee3ce311f00f..1b51e3f4d03cd2228dfa06bf4fcda892d7c554fd 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Deleted.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Deleted.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use DateTime;
@@ -31,7 +33,7 @@ class Deleted
      * Set the feed character encoding
      *
      * @param  null|string $encoding
-     * @return static
+     * @return $this
      * @throws Exception\InvalidArgumentException
      */
     public function setEncoding($encoding)
diff --git a/vendor/laminas/laminas-feed/src/Writer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Entry.php
index 5f0be8ef7941519e608bc9e52037a9934cc03b32..10e3cec893db4ea189c3b3ecc5ebf47a7770af51 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use BadMethodCallException;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Exception/BadMethodCallException.php b/vendor/laminas/laminas-feed/src/Writer/Exception/BadMethodCallException.php
index 28a591768758e6500b6bd11f15d4e3fdfccc823e..b1953ac44438f929dcab001fecbc625dad8ca8e6 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Exception/BadMethodCallException.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Exception/BadMethodCallException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Exception/ExceptionInterface.php b/vendor/laminas/laminas-feed/src/Writer/Exception/ExceptionInterface.php
index 11c249b0d1183f1ec824e890dd272456f5c48c5a..6e0e540aabb446c26ccb96d7cea718199dfdf434 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Exception/ExceptionInterface.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Exception/ExceptionInterface.php
@@ -1,12 +1,16 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Exception;
 
+use Throwable;
+
 /**
  * Feed exceptions
  *
  * Interface to represent exceptions that occur during Feed operations.
  */
-interface ExceptionInterface
+interface ExceptionInterface extends Throwable
 {
 }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Exception/InvalidArgumentException.php b/vendor/laminas/laminas-feed/src/Writer/Exception/InvalidArgumentException.php
index 5d34826730c673f4daf26a76c67c3cc22ca9a2d8..8e244f9bf27efe17dbf8f748c1567f344e5d616a 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Exception/InvalidArgumentException.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Exception/InvalidArgumentException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Exception/RuntimeException.php b/vendor/laminas/laminas-feed/src/Writer/Exception/RuntimeException.php
index 01d5bc8b619a80734bfebb37ff38b34a808cbb8c..ac2f8c306848e668ac3e58c976bead79aa9efec4 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Exception/RuntimeException.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Exception/RuntimeException.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Exception;
 
 use Laminas\Feed\Exception;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/AbstractRenderer.php b/vendor/laminas/laminas-feed/src/Writer/Extension/AbstractRenderer.php
index 1e080fdb8fe0911dd5c5257459f653836f3bf96a..eeb18de21daf24503882c6757b9af7019a5b02e6 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/AbstractRenderer.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/AbstractRenderer.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/Atom/Renderer/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/Atom/Renderer/Feed.php
index 62c281886afc2f2a03a1a659399ec2029907b029..19c7b9f362adfd5e0f195bb1a60f9c28200ce5c7 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/Atom/Renderer/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/Atom/Renderer/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\Atom\Renderer;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/Content/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/Content/Renderer/Entry.php
index 6978e88ef04813861de9c704b09601278735a3f1..2c0993e99ddcfb3fa941b2a722252ade84401fb2 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/Content/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/Content/Renderer/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\Content\Renderer;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Entry.php
index 118ef83df3f37fda362cd36b2f6fbcd3e95ec12e..4975c7cec592cd2f1d0d006a55f670c2a58bcfab 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\DublinCore\Renderer;
 
 use DOMDocument;
@@ -65,7 +67,7 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
         foreach ($authors as $data) {
             $author = $this->dom->createElement('dc:creator');
             if (array_key_exists('name', $data)) {
-                $text = $dom->createTextNode($data['name']);
+                $text = $dom->createTextNode((string) $data['name']);
                 $author->appendChild($text);
                 $root->appendChild($author);
             }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php
index c475e165789c30cd414d6faccb181bece0344208..0807a3cf0fadeccfb29c9b403f52f5ee158995a9 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\DublinCore\Renderer;
 
 use DOMDocument;
@@ -65,7 +67,7 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
         foreach ($authors as $data) {
             $author = $this->dom->createElement('dc:creator');
             if (array_key_exists('name', $data)) {
-                $text = $dom->createTextNode($data['name']);
+                $text = $dom->createTextNode((string) $data['name']);
                 $author->appendChild($text);
                 $root->appendChild($author);
             }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Entry.php
index e185f4d76c271c1105bbab52556c4697a946958a..741127e5e039e3fe6dd9165370610a8a57614338 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\GooglePlayPodcast;
 
 use Laminas\Feed\Writer;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Feed.php
index a133d6660ef92327baac45c15545183ec896cb9e..bc275cbf350fa988072d51f07291c75c5494ca1f 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\GooglePlayPodcast;
 
 use Laminas\Feed\Uri;
@@ -73,7 +75,7 @@ public function getEncoding()
      * Set a block value of "yes" or "no". You may also set an empty string.
      *
      * @param string $value
-     * @return self
+     * @return $this
      * @throws Writer\Exception\InvalidArgumentException
      */
     public function setPlayPodcastBlock($value)
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Entry.php
index 1e2464fd246eecbeb11e171e02bda299c999b66f..f6f903e49055859c4caec62314224cd3e383ab46 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\GooglePlayPodcast\Renderer;
 
 use DOMDocument;
@@ -59,7 +61,7 @@ protected function _setBlock(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('googleplay:block');
-        $text = $dom->createTextNode($block);
+        $text = $dom->createTextNode((string) $block);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -77,7 +79,7 @@ protected function _setExplicit(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('googleplay:explicit');
-        $text = $dom->createTextNode($explicit);
+        $text = $dom->createTextNode((string) $explicit);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -95,7 +97,7 @@ protected function _setDescription(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('googleplay:description');
-        $text = $dom->createTextNode($description);
+        $text = $dom->createTextNode((string) $description);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Feed.php
index 2ac0ced7bcbe429154009de5e1bc8e6d25129bee..025ac41e18a078b56a1a1371b597e2f85fe090be 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/GooglePlayPodcast/Renderer/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\GooglePlayPodcast\Renderer;
 
 use DOMDocument;
@@ -65,7 +67,7 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
         }
         foreach ($authors as $author) {
             $el   = $dom->createElement('googleplay:author');
-            $text = $dom->createTextNode($author);
+            $text = $dom->createTextNode((string) $author);
             $el->appendChild($text);
             $root->appendChild($el);
         }
@@ -84,7 +86,7 @@ protected function _setBlock(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('googleplay:block');
-        $text = $dom->createTextNode($block);
+        $text = $dom->createTextNode((string) $block);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -149,7 +151,7 @@ protected function _setExplicit(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('googleplay:explicit');
-        $text = $dom->createTextNode($explicit);
+        $text = $dom->createTextNode((string) $explicit);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -167,7 +169,7 @@ protected function _setDescription(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('googleplay:description');
-        $text = $dom->createTextNode($description);
+        $text = $dom->createTextNode((string) $description);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Entry.php
index 6f7eb4f4130fe424c452bfaae143d653bb83ae39..892fb47ef82bc13e882c4566a072cda5ea426239 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\ITunes;
 
 use Laminas\Feed\Uri;
@@ -11,7 +13,6 @@
 use function count;
 use function ctype_alpha;
 use function ctype_digit;
-use function get_class;
 use function gettype;
 use function implode;
 use function in_array;
@@ -324,7 +325,7 @@ public function setItunesEpisode($number)
         if (! is_numeric($number) || is_float($number)) {
             throw new Writer\Exception\InvalidArgumentException(sprintf(
                 'invalid parameter: "number" may only be an integer; received %s',
-                is_object($number) ? get_class($number) : gettype($number)
+                is_object($number) ? $number::class : gettype($number)
             ));
         }
 
@@ -347,7 +348,7 @@ public function setItunesEpisodeType($type)
             throw new Writer\Exception\InvalidArgumentException(sprintf(
                 'invalid parameter: "episodeType" MUST be one of the strings [%s]; received %s',
                 implode(', ', $validTypes),
-                is_object($type) ? get_class($type) : var_export($type, true)
+                is_object($type) ? $type::class : var_export($type, true)
             ));
         }
 
@@ -368,7 +369,7 @@ public function setItunesIsClosedCaptioned($status)
         if (! is_bool($status)) {
             throw new Writer\Exception\InvalidArgumentException(sprintf(
                 'invalid parameter: "isClosedCaptioned" MUST be a boolean; received %s',
-                is_object($status) ? get_class($status) : var_export($status, true)
+                is_object($status) ? $status::class : var_export($status, true)
             ));
         }
 
@@ -393,7 +394,7 @@ public function setItunesSeason($number)
         if (! is_numeric($number) || is_float($number)) {
             throw new Writer\Exception\InvalidArgumentException(sprintf(
                 'invalid parameter: "season" may only be an integer; received %s',
-                is_object($number) ? get_class($number) : gettype($number)
+                is_object($number) ? $number::class : gettype($number)
             ));
         }
 
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Feed.php
index 0b76d6e72e54d29b3348992a0e1835f22deb0f33..cbf98a3b63f321fdf7ee5b1be1b165e841fc2986 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\ITunes;
 
 use Laminas\Feed\Uri;
@@ -11,7 +13,6 @@
 use function count;
 use function ctype_alpha;
 use function ctype_digit;
-use function get_class;
 use function implode;
 use function in_array;
 use function is_array;
@@ -85,7 +86,7 @@ public function getEncoding()
      * Set a block value of "yes" or "no". You may also set an empty string.
      *
      * @param string $value
-     * @return self
+     * @return $this
      * @throws Writer\Exception\InvalidArgumentException
      */
     public function setItunesBlock($value)
@@ -403,7 +404,7 @@ public function setItunesType($type)
             throw new Writer\Exception\InvalidArgumentException(sprintf(
                 'invalid parameter: "type" MUST be one of [%s]; received %s',
                 implode(', ', $validTypes),
-                is_object($type) ? get_class($type) : var_export($type, true)
+                is_object($type) ? $type::class : var_export($type, true)
             ));
         }
         $this->data['type'] = $type;
@@ -422,7 +423,7 @@ public function setItunesComplete($status)
         if (! is_bool($status)) {
             throw new Writer\Exception\InvalidArgumentException(sprintf(
                 'invalid parameter: "complete" MUST be boolean; received %s',
-                is_object($status) ? get_class($status) : var_export($status, true)
+                is_object($status) ? $status::class : var_export($status, true)
             ));
         }
 
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Entry.php
index cf06168a0a3b59b539955c95e08be4c70efe3336..9da7bb19f445564ee5d2384084f6a29b3b199b32 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\ITunes\Renderer;
 
 use DOMDocument;
@@ -72,7 +74,7 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
         }
         foreach ($authors as $author) {
             $el   = $dom->createElement('itunes:author');
-            $text = $dom->createTextNode($author);
+            $text = $dom->createTextNode((string) $author);
             $el->appendChild($text);
             $root->appendChild($el);
             $this->called = true;
@@ -91,7 +93,7 @@ protected function _setBlock(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:block');
-        $text = $dom->createTextNode($block);
+        $text = $dom->createTextNode((string) $block);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -109,7 +111,7 @@ protected function _setDuration(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:duration');
-        $text = $dom->createTextNode($duration);
+        $text = $dom->createTextNode((string) $duration);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -144,7 +146,7 @@ protected function _setExplicit(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:explicit');
-        $text = $dom->createTextNode($explicit);
+        $text = $dom->createTextNode((string) $explicit);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -180,7 +182,7 @@ protected function _setTitle(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:title');
-        $text = $dom->createTextNode($title);
+        $text = $dom->createTextNode((string) $title);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -198,7 +200,7 @@ protected function _setSubtitle(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:subtitle');
-        $text = $dom->createTextNode($subtitle);
+        $text = $dom->createTextNode((string) $subtitle);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -216,7 +218,7 @@ protected function _setSummary(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:summary');
-        $text = $dom->createTextNode($summary);
+        $text = $dom->createTextNode((string) $summary);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -234,7 +236,7 @@ protected function _setEpisode(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:episode');
-        $text = $dom->createTextNode($episode);
+        $text = $dom->createTextNode((string) $episode);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -252,7 +254,7 @@ protected function _setEpisodeType(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:episodeType');
-        $text = $dom->createTextNode($type);
+        $text = $dom->createTextNode((string) $type);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -288,7 +290,7 @@ protected function _setSeason(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:season');
-        $text = $dom->createTextNode($season);
+        $text = $dom->createTextNode((string) $season);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Feed.php
index 2d64479cd5f3b1d2cef15369ef6439dcae6d1c58..bb0065e3193edac45e97f01bf3ec4960f112ac38 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/ITunes/Renderer/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\ITunes\Renderer;
 
 use DOMDocument;
@@ -73,7 +75,7 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
         }
         foreach ($authors as $author) {
             $el   = $dom->createElement('itunes:author');
-            $text = $dom->createTextNode($author);
+            $text = $dom->createTextNode((string) $author);
             $el->appendChild($text);
             $root->appendChild($el);
         }
@@ -92,7 +94,7 @@ protected function _setBlock(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:block');
-        $text = $dom->createTextNode($block);
+        $text = $dom->createTextNode((string) $block);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -157,7 +159,7 @@ protected function _setDuration(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:duration');
-        $text = $dom->createTextNode($duration);
+        $text = $dom->createTextNode((string) $duration);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -175,7 +177,7 @@ protected function _setExplicit(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:explicit');
-        $text = $dom->createTextNode($explicit);
+        $text = $dom->createTextNode((string) $explicit);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -211,7 +213,7 @@ protected function _setNewFeedUrl(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:new-feed-url');
-        $text = $dom->createTextNode($url);
+        $text = $dom->createTextNode((string) $url);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -231,10 +233,10 @@ protected function _setOwners(DOMDocument $dom, DOMElement $root)
         foreach ($owners as $owner) {
             $el   = $dom->createElement('itunes:owner');
             $name = $dom->createElement('itunes:name');
-            $text = $dom->createTextNode($owner['name']);
+            $text = $dom->createTextNode((string) $owner['name']);
             $name->appendChild($text);
             $email = $dom->createElement('itunes:email');
-            $text  = $dom->createTextNode($owner['email']);
+            $text  = $dom->createTextNode((string) $owner['email']);
             $email->appendChild($text);
             $root->appendChild($el);
             $el->appendChild($name);
@@ -255,7 +257,7 @@ protected function _setSubtitle(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:subtitle');
-        $text = $dom->createTextNode($subtitle);
+        $text = $dom->createTextNode((string) $subtitle);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -273,7 +275,7 @@ protected function _setSummary(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:summary');
-        $text = $dom->createTextNode($summary);
+        $text = $dom->createTextNode((string) $summary);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
@@ -291,7 +293,7 @@ protected function _setType(DOMDocument $dom, DOMElement $root)
             return;
         }
         $el   = $dom->createElement('itunes:type');
-        $text = $dom->createTextNode($type);
+        $text = $dom->createTextNode((string) $type);
         $el->appendChild($text);
         $root->appendChild($el);
         $this->called = true;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Entry.php
index 75545a71533cc81dd889311046792196b8f57b5f..bbabe6641c277999fbe7f73eb04038894d48957b 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\PodcastIndex;
 
 use Laminas\Feed\Writer;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Feed.php
index 69d9b9190b4b94ea599b630d99e6d8003bd10f29..af23d56f9931986c9ee5658310793247ac28b69a 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\PodcastIndex;
 
 use Laminas\Feed\Writer;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Entry.php
index 329deea97f51256dc0a6dc7d63a6b98d3548afe8..73969310743ec2296694117034c601d6d6969441 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\PodcastIndex\Renderer;
 
 use DOMDocument;
@@ -101,7 +103,7 @@ protected function setSoundbites(DOMDocument $dom, DOMElement $root): void
             /** @psalm-var array<string, string> $soundbite */
             $el = $dom->createElement('podcast:soundbite');
             if (array_key_exists('title', $soundbite)) {
-                $text = $dom->createTextNode($soundbite['title']);
+                $text = $dom->createTextNode((string) $soundbite['title']);
                 $el->appendChild($text);
             }
             $el->setAttribute('startTime', $soundbite['startTime']);
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Feed.php
index df18ba88f1ef0d49b7c7f09ee09be927ac06a7dc..d44f06ac469e94d14f5a778116d95fd3e96bcfe0 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/PodcastIndex/Renderer/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\PodcastIndex\Renderer;
 
 use DOMDocument;
@@ -55,7 +57,7 @@ protected function setLocked(DOMDocument $dom, DOMElement $root): void
             return;
         }
         $el   = $dom->createElement('podcast:locked');
-        $text = $dom->createTextNode($locked['value']);
+        $text = $dom->createTextNode((string) $locked['value']);
         $el->appendChild($text);
         $el->setAttribute('owner', $locked['owner']);
         $root->appendChild($el);
@@ -73,7 +75,7 @@ protected function setFunding(DOMDocument $dom, DOMElement $root): void
             return;
         }
         $el   = $dom->createElement('podcast:locked');
-        $text = $dom->createTextNode($funding['title']);
+        $text = $dom->createTextNode((string) $funding['title']);
         $el->appendChild($text);
         $el->setAttribute('url', $funding['url']);
         $root->appendChild($el);
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/RendererInterface.php b/vendor/laminas/laminas-feed/src/Writer/Extension/RendererInterface.php
index cf05068652e7f9fb548031fa7df52047d9c88df7..699b3f0ef4e5d3f15a0b326e713d8c079ff2d006 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/RendererInterface.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/RendererInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/Slash/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/Slash/Renderer/Entry.php
index 0f112d16d18b1c878e154cba1628da14454aa3e2..2fb4ad7ca8ed934a5117e8fe0a2de41de2645f71 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/Slash/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/Slash/Renderer/Entry.php
@@ -1,11 +1,14 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\Slash\Renderer;
 
 use DOMDocument;
 use DOMElement;
 use Laminas\Feed\Writer\Extension;
 
+use function is_numeric;
 use function strtolower;
 
 class Entry extends Extension\AbstractRenderer
@@ -58,11 +61,11 @@ protected function _appendNamespaces()
     protected function _setCommentCount(DOMDocument $dom, DOMElement $root)
     {
         $count = $this->getDataContainer()->getCommentCount();
-        if (! $count) {
+        if (! $count || ! is_numeric($count)) {
             $count = 0;
         }
         $tcount            = $this->dom->createElement('slash:comments');
-        $tcount->nodeValue = $count;
+        $tcount->nodeValue = (string) $count;
         $root->appendChild($tcount);
         $this->called = true;
     }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/Threading/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/Threading/Renderer/Entry.php
index 7b3d52f0c0fa38af9ca684fd8f2b1cf3ae61f29d..21439fcf0fe2afb04dd175e6e23449f462d72fce 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/Threading/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/Threading/Renderer/Entry.php
@@ -1,11 +1,14 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\Threading\Renderer;
 
 use DOMDocument;
 use DOMElement;
 use Laminas\Feed\Writer\Extension;
 
+use function is_numeric;
 use function strtolower;
 
 class Entry extends Extension\AbstractRenderer
@@ -108,11 +111,12 @@ protected function _setCommentFeedLinks(DOMDocument $dom, DOMElement $root)
     protected function _setCommentCount(DOMDocument $dom, DOMElement $root)
     {
         $count = $this->getDataContainer()->getCommentCount();
-        if ($count === null) {
+        if ($count === null || ! is_numeric($count)) {
             return;
         }
+
         $tcount            = $this->dom->createElement('thr:total');
-        $tcount->nodeValue = $count;
+        $tcount->nodeValue = (string) $count;
         $root->appendChild($tcount);
         $this->called = true;
     }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Extension/WellFormedWeb/Renderer/Entry.php b/vendor/laminas/laminas-feed/src/Writer/Extension/WellFormedWeb/Renderer/Entry.php
index acd7ed41257f75c7e5c3a6e1420d833f384de1ef..80ef1992c45a571a0ba2195b3708302121f72ee1 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Extension/WellFormedWeb/Renderer/Entry.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Extension/WellFormedWeb/Renderer/Entry.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Extension\WellFormedWeb\Renderer;
 
 use DOMDocument;
@@ -64,7 +66,7 @@ protected function _setCommentFeedLinks(DOMDocument $dom, DOMElement $root)
         foreach ($links as $link) {
             if ($link['type'] === 'rss') {
                 $flink = $this->dom->createElement('wfw:commentRss');
-                $text  = $dom->createTextNode($link['uri']);
+                $text  = $dom->createTextNode((string) $link['uri']);
                 $flink->appendChild($text);
                 $root->appendChild($flink);
             }
diff --git a/vendor/laminas/laminas-feed/src/Writer/ExtensionManager.php b/vendor/laminas/laminas-feed/src/Writer/ExtensionManager.php
index e3ca21421bc45ae6af25aafefdf689205e9a834d..e7aaef858be55f4ede0cc6b74503cdafa63799ce 100644
--- a/vendor/laminas/laminas-feed/src/Writer/ExtensionManager.php
+++ b/vendor/laminas/laminas-feed/src/Writer/ExtensionManager.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use function call_user_func_array;
diff --git a/vendor/laminas/laminas-feed/src/Writer/ExtensionManagerInterface.php b/vendor/laminas/laminas-feed/src/Writer/ExtensionManagerInterface.php
index 15d0cd1208eefcccb327fe3d92ea7255afc9734d..12ec9832bfdcfa374fdbdf33409496a64f617421 100644
--- a/vendor/laminas/laminas-feed/src/Writer/ExtensionManagerInterface.php
+++ b/vendor/laminas/laminas-feed/src/Writer/ExtensionManagerInterface.php
@@ -1,22 +1,20 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
+/**
+ * This interface exists to provide type inference for container implementations that retrieve extensions.
+ * Methods have been migrated from declared in PHP to being part of the docblock signature,
+ * in order to avoid conflicting with `psr/container` signatures, which are way stricter, and
+ * therefore incompatible with this one.
+ *
+ * @deprecated this interface is no longer needed, and shouldn't be relied upon
+ *
+ * @method has(string $extension): bool
+ * @method get(string $extension): mixed
+ */
 interface ExtensionManagerInterface
 {
-    /**
-     * Do we have the extension?
-     *
-     * @param  string $extension
-     * @return bool
-     */
-    public function has($extension);
-
-    /**
-     * Retrieve the extension
-     *
-     * @param  string $extension
-     * @return mixed
-     */
-    public function get($extension);
 }
diff --git a/vendor/laminas/laminas-feed/src/Writer/ExtensionPluginManager.php b/vendor/laminas/laminas-feed/src/Writer/ExtensionPluginManager.php
index 7bc4615a5c604018289ca79562679622b839ad04..8f1c63e8e6fa79877069e66903138a56982a0439 100644
--- a/vendor/laminas/laminas-feed/src/Writer/ExtensionPluginManager.php
+++ b/vendor/laminas/laminas-feed/src/Writer/ExtensionPluginManager.php
@@ -1,21 +1,30 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
+use Laminas\Feed\Writer\Extension\GooglePlayPodcast\Feed;
+use Laminas\Feed\Writer\Extension\ITunes\Entry;
 use Laminas\ServiceManager\AbstractPluginManager;
+use Laminas\ServiceManager\ConfigInterface;
 use Laminas\ServiceManager\Exception\InvalidServiceException;
 use Laminas\ServiceManager\Factory\InvokableFactory;
 
-use function get_class;
 use function gettype;
 use function is_object;
 use function sprintf;
 use function substr;
 
+// phpcs:disable Generic.Files.LineLength.TooLong
 /**
  * Plugin manager implementation for feed writer extensions
  *
  * Validation checks that we have an Entry, Feed, or Extension\AbstractRenderer.
+ *
+ * @psalm-import-type FactoriesConfigurationType from ConfigInterface
+ * @template InstanceType of Extension\AbstractRenderer|Entry|Feed|Entry|\Laminas\Feed\Writer\Extension\ITunes\Feed|\Laminas\Feed\Writer\Extension\PodcastIndex\Entry|\Laminas\Feed\Writer\Extension\PodcastIndex\Feed
+ * @template-extends AbstractPluginManager<InstanceType>
  */
 class ExtensionPluginManager extends AbstractPluginManager implements ExtensionManagerInterface
 {
@@ -52,12 +61,12 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
         'GooglePlayPodcastEntry'           => Extension\GooglePlayPodcast\Entry::class,
         'Googleplaypodcast\Entry'          => Extension\GooglePlayPodcast\Entry::class,
         'GooglePlayPodcast\Entry'          => Extension\GooglePlayPodcast\Entry::class,
-        'googleplaypodcastfeed'            => Extension\GooglePlayPodcast\Feed::class,
-        'googleplaypodcastFeed'            => Extension\GooglePlayPodcast\Feed::class,
-        'googlePlayPodcastFeed'            => Extension\GooglePlayPodcast\Feed::class,
-        'GooglePlayPodcastFeed'            => Extension\GooglePlayPodcast\Feed::class,
-        'Googleplaypodcast\Feed'           => Extension\GooglePlayPodcast\Feed::class,
-        'GooglePlayPodcast\Feed'           => Extension\GooglePlayPodcast\Feed::class,
+        'googleplaypodcastfeed'            => Feed::class,
+        'googleplaypodcastFeed'            => Feed::class,
+        'googlePlayPodcastFeed'            => Feed::class,
+        'GooglePlayPodcastFeed'            => Feed::class,
+        'Googleplaypodcast\Feed'           => Feed::class,
+        'GooglePlayPodcast\Feed'           => Feed::class,
         'googleplaypodcastrendererentry'   => Extension\GooglePlayPodcast\Renderer\Entry::class,
         'googleplaypodcastRendererEntry'   => Extension\GooglePlayPodcast\Renderer\Entry::class,
         'googlePlayPodcastRendererEntry'   => Extension\GooglePlayPodcast\Renderer\Entry::class,
@@ -70,12 +79,12 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
         'GooglePlayPodcastRendererFeed'    => Extension\GooglePlayPodcast\Renderer\Feed::class,
         'GoogleplaypodcastRenderer\Feed'   => Extension\GooglePlayPodcast\Renderer\Feed::class,
         'GooglePlayPodcast\Renderer\Feed'  => Extension\GooglePlayPodcast\Renderer\Feed::class,
-        'itunesentry'                      => Extension\ITunes\Entry::class,
-        'itunesEntry'                      => Extension\ITunes\Entry::class,
-        'iTunesEntry'                      => Extension\ITunes\Entry::class,
-        'ItunesEntry'                      => Extension\ITunes\Entry::class,
-        'Itunes\Entry'                     => Extension\ITunes\Entry::class,
-        'ITunes\Entry'                     => Extension\ITunes\Entry::class,
+        'itunesentry'                      => Entry::class,
+        'itunesEntry'                      => Entry::class,
+        'iTunesEntry'                      => Entry::class,
+        'ItunesEntry'                      => Entry::class,
+        'Itunes\Entry'                     => Entry::class,
+        'ITunes\Entry'                     => Entry::class,
         'itunesfeed'                       => Extension\ITunes\Feed::class,
         'itunesFeed'                       => Extension\ITunes\Feed::class,
         'iTunesFeed'                       => Extension\ITunes\Feed::class,
@@ -129,23 +138,21 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
         'WellFormedWeb\Renderer\Entry'     => Extension\WellFormedWeb\Renderer\Entry::class,
 
         // Legacy Zend Framework aliases
-        // phpcs:disable SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly.ReferenceViaFullyQualifiedName
-        \Zend\Feed\Writer\Extension\Atom\Renderer\Feed::class               => Extension\Atom\Renderer\Feed::class,
-        \Zend\Feed\Writer\Extension\Content\Renderer\Entry::class           => Extension\Content\Renderer\Entry::class,
-        \Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry::class        => Extension\DublinCore\Renderer\Entry::class,
-        \Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed::class         => Extension\DublinCore\Renderer\Feed::class,
-        \Zend\Feed\Writer\Extension\GooglePlayPodcast\Entry::class          => Extension\GooglePlayPodcast\Entry::class,
-        \Zend\Feed\Writer\Extension\GooglePlayPodcast\Feed::class           => Extension\GooglePlayPodcast\Feed::class,
-        \Zend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\Entry::class => Extension\GooglePlayPodcast\Renderer\Entry::class,
-        \Zend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\Feed::class  => Extension\GooglePlayPodcast\Renderer\Feed::class,
-        \Zend\Feed\Writer\Extension\ITunes\Entry::class                     => Extension\ITunes\Entry::class,
-        \Zend\Feed\Writer\Extension\ITunes\Feed::class                      => Extension\ITunes\Feed::class,
-        \Zend\Feed\Writer\Extension\ITunes\Renderer\Entry::class            => Extension\ITunes\Renderer\Entry::class,
-        \Zend\Feed\Writer\Extension\ITunes\Renderer\Feed::class             => Extension\ITunes\Renderer\Feed::class,
-        \Zend\Feed\Writer\Extension\Slash\Renderer\Entry::class             => Extension\Slash\Renderer\Entry::class,
-        \Zend\Feed\Writer\Extension\Threading\Renderer\Entry::class         => Extension\Threading\Renderer\Entry::class,
-        \Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry::class     => Extension\WellFormedWeb\Renderer\Entry::class,
-        // phpcs:enable SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly.ReferenceViaFullyQualifiedName
+        'Zend\Feed\Writer\Extension\Atom\Renderer\Feed'               => Extension\Atom\Renderer\Feed::class,
+        'Zend\Feed\Writer\Extension\Content\Renderer\Entry'           => Extension\Content\Renderer\Entry::class,
+        'Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry'        => Extension\DublinCore\Renderer\Entry::class,
+        'Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed'         => Extension\DublinCore\Renderer\Feed::class,
+        'Zend\Feed\Writer\Extension\GooglePlayPodcast\Entry'          => Extension\GooglePlayPodcast\Entry::class,
+        'Zend\Feed\Writer\Extension\GooglePlayPodcast\Feed'           => Feed::class,
+        'Zend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\Entry' => Extension\GooglePlayPodcast\Renderer\Entry::class,
+        'Zend\Feed\Writer\Extension\GooglePlayPodcast\Renderer\Feed'  => Extension\GooglePlayPodcast\Renderer\Feed::class,
+        'Zend\Feed\Writer\Extension\ITunes\Entry'                     => Entry::class,
+        'Zend\Feed\Writer\Extension\ITunes\Feed'                      => Extension\ITunes\Feed::class,
+        'Zend\Feed\Writer\Extension\ITunes\Renderer\Entry'            => Extension\ITunes\Renderer\Entry::class,
+        'Zend\Feed\Writer\Extension\ITunes\Renderer\Feed'             => Extension\ITunes\Renderer\Feed::class,
+        'Zend\Feed\Writer\Extension\Slash\Renderer\Entry'             => Extension\Slash\Renderer\Entry::class,
+        'Zend\Feed\Writer\Extension\Threading\Renderer\Entry'         => Extension\Threading\Renderer\Entry::class,
+        'Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry'     => Extension\WellFormedWeb\Renderer\Entry::class,
 
         // v2 normalized FQCNs
         'zendfeedwriterextensionatomrendererfeed'               => Extension\Atom\Renderer\Feed::class,
@@ -153,10 +160,10 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
         'zendfeedwriterextensiondublincorerendererentry'        => Extension\DublinCore\Renderer\Entry::class,
         'zendfeedwriterextensiondublincorerendererfeed'         => Extension\DublinCore\Renderer\Feed::class,
         'zendfeedwriterextensiongoogleplaypodcastentry'         => Extension\GooglePlayPodcast\Entry::class,
-        'zendfeedwriterextensiongoogleplaypodcastfeed'          => Extension\GooglePlayPodcast\Feed::class,
+        'zendfeedwriterextensiongoogleplaypodcastfeed'          => Feed::class,
         'zendfeedwriterextensiongoogleplaypodcastrendererentry' => Extension\GooglePlayPodcast\Renderer\Entry::class,
         'zendfeedwriterextensiongoogleplaypodcastrendererfeed'  => Extension\GooglePlayPodcast\Renderer\Feed::class,
-        'zendfeedwriterextensionitunesentry'                    => Extension\ITunes\Entry::class,
+        'zendfeedwriterextensionitunesentry'                    => Entry::class,
         'zendfeedwriterextensionitunesfeed'                     => Extension\ITunes\Feed::class,
         'zendfeedwriterextensionitunesrendererentry'            => Extension\ITunes\Renderer\Entry::class,
         'zendfeedwriterextensionitunesrendererfeed'             => Extension\ITunes\Renderer\Feed::class,
@@ -169,7 +176,7 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
     /**
      * Factories for default set of extension classes
      *
-     * @var array<array-key, callable|string>
+     * @var FactoriesConfigurationType
      */
     protected $factories = [
         Extension\Atom\Renderer\Feed::class               => InvokableFactory::class,
@@ -177,10 +184,10 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
         Extension\DublinCore\Renderer\Entry::class        => InvokableFactory::class,
         Extension\DublinCore\Renderer\Feed::class         => InvokableFactory::class,
         Extension\GooglePlayPodcast\Entry::class          => InvokableFactory::class,
-        Extension\GooglePlayPodcast\Feed::class           => InvokableFactory::class,
+        Feed::class                                       => InvokableFactory::class,
         Extension\GooglePlayPodcast\Renderer\Entry::class => InvokableFactory::class,
         Extension\GooglePlayPodcast\Renderer\Feed::class  => InvokableFactory::class,
-        Extension\ITunes\Entry::class                     => InvokableFactory::class,
+        Entry::class                                      => InvokableFactory::class,
         Extension\ITunes\Feed::class                      => InvokableFactory::class,
         Extension\ITunes\Renderer\Entry::class            => InvokableFactory::class,
         Extension\ITunes\Renderer\Feed::class             => InvokableFactory::class,
@@ -229,28 +236,20 @@ class ExtensionPluginManager extends AbstractPluginManager implements ExtensionM
      */
     protected $sharedByDefault = false;
 
-    /**
-     * Validate the plugin (v3)
-     *
-     * Checks that the extension loaded is of a valid type.
-     *
-     * @param  object $instance
-     * @return void
-     * @throws InvalidServiceException If invalid.
-     */
-    public function validate($instance)
+    /** @inheritDoc */
+    public function validate(mixed $instance)
     {
         if ($instance instanceof Extension\AbstractRenderer) {
             // we're okay
             return;
         }
 
-        if ('Feed' === substr(get_class($instance), -4)) {
+        if (is_object($instance) && 'Feed' === substr($instance::class, -4)) {
             // we're okay
             return;
         }
 
-        if ('Entry' === substr(get_class($instance), -5)) {
+        if (is_object($instance) && 'Entry' === substr($instance::class, -5)) {
             // we're okay
             return;
         }
@@ -258,7 +257,7 @@ public function validate($instance)
         throw new InvalidServiceException(sprintf(
             'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface '
             . 'or the classname must end in "Feed" or "Entry"',
-            is_object($instance) ? get_class($instance) : gettype($instance),
+            is_object($instance) ? $instance::class : gettype($instance),
             __NAMESPACE__
         ));
     }
@@ -278,7 +277,7 @@ public function validatePlugin($plugin)
             throw new Exception\InvalidArgumentException(sprintf(
                 'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface '
                 . 'or the classname must end in "Feed" or "Entry"',
-                is_object($plugin) ? get_class($plugin) : gettype($plugin),
+                is_object($plugin) ? $plugin::class : gettype($plugin),
                 __NAMESPACE__
             ));
         }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Feed.php b/vendor/laminas/laminas-feed/src/Writer/Feed.php
index d4f521773f36fa5dd432957b0dca4afe0686420a..8d1d4308b0ab80c34966ba99ad301ce3b2246a8e 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Feed.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Feed.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use Countable;
@@ -16,12 +18,13 @@
 
 use const SORT_NUMERIC;
 
+/** @template-implements Iterator<int, Entry> */
 class Feed extends AbstractFeed implements Iterator, Countable
 {
     /**
      * Contains all entry objects
      *
-     * @var array
+     * @var array<int, Entry>
      */
     protected $entries = [];
 
@@ -158,7 +161,7 @@ public function orderByDate()
      * Get the number of feed entries.
      * Required by the Iterator interface.
      *
-     * @return int
+     * @return positive-int|0
      */
     #[ReturnTypeWillChange]
     public function count()
@@ -180,7 +183,7 @@ public function current()
     /**
      * Return the current feed key
      *
-     * @return mixed
+     * @return int
      */
     #[ReturnTypeWillChange]
     public function key()
diff --git a/vendor/laminas/laminas-feed/src/Writer/FeedFactory.php b/vendor/laminas/laminas-feed/src/Writer/FeedFactory.php
index 1530cd9e347901fe1bcd4c5f2e0a093988a7e59a..f162a11ca14d90ccdcb045c9f685e86ca0e10ac8 100644
--- a/vendor/laminas/laminas-feed/src/Writer/FeedFactory.php
+++ b/vendor/laminas/laminas-feed/src/Writer/FeedFactory.php
@@ -1,11 +1,12 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use Traversable;
 
 use function array_key_exists;
-use function get_class;
 use function gettype;
 use function is_array;
 use function is_object;
@@ -30,7 +31,7 @@ public static function factory($data)
             throw new Exception\InvalidArgumentException(sprintf(
                 '%s expects an array or Traversable argument; received "%s"',
                 __METHOD__,
-                is_object($data) ? get_class($data) : gettype($data)
+                is_object($data) ? $data::class : gettype($data)
             ));
         }
 
@@ -95,7 +96,7 @@ protected static function createEntries($entries, Feed $feed)
             throw new Exception\InvalidArgumentException(sprintf(
                 '%s::factory expects the "entries" value to be an array or Traversable; received "%s"',
                 static::class,
-                is_object($entries) ? get_class($entries) : gettype($entries)
+                is_object($entries) ? $entries::class : gettype($entries)
             ));
         }
 
@@ -104,7 +105,7 @@ protected static function createEntries($entries, Feed $feed)
                 throw new Exception\InvalidArgumentException(sprintf(
                     '%s expects an array, Traversable, or Laminas\Feed\Writer\Entry argument; received "%s"',
                     __METHOD__,
-                    is_object($data) ? get_class($data) : gettype($data)
+                    is_object($data) ? $data::class : gettype($data)
                 ));
             }
 
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/AbstractRenderer.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/AbstractRenderer.php
index ee5e7dc8538b272f3dac10cd24de68166c791443..cb2369f05a006a43e1c73d193f078e8edd647568 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/AbstractRenderer.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/AbstractRenderer.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom.php
index 85d9a1594997280232ea1ea73adb9de682e6bf8d..fd3f06c8ee620250212115d09395a0d09c327ee1 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Entry;
 
 use DateTime;
@@ -19,9 +21,6 @@
 use function str_replace;
 use function strlen;
 use function strtotime;
-use function version_compare;
-
-use const PHP_VERSION;
 
 class Atom extends Renderer\AbstractRenderer implements Renderer\RendererInterface
 {
@@ -177,18 +176,18 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
             $name   = $this->dom->createElement('name');
             $author->appendChild($name);
             $root->appendChild($author);
-            $text = $dom->createTextNode($data['name']);
+            $text = $dom->createTextNode((string) $data['name']);
             $name->appendChild($text);
             if (array_key_exists('email', $data)) {
                 $email = $this->dom->createElement('email');
                 $author->appendChild($email);
-                $text = $dom->createTextNode($data['email']);
+                $text = $dom->createTextNode((string) $data['email']);
                 $email->appendChild($text);
             }
             if (array_key_exists('uri', $data)) {
                 $uri = $this->dom->createElement('uri');
                 $author->appendChild($uri);
-                $text = $dom->createTextNode($data['uri']);
+                $text = $dom->createTextNode((string) $data['uri']);
                 $uri->appendChild($text);
             }
         }
@@ -274,7 +273,7 @@ protected function _setId(DOMDocument $dom, DOMElement $root)
         }
         $id = $dom->createElement('id');
         $root->appendChild($id);
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getId());
         $id->appendChild($text);
     }
 
@@ -342,8 +341,7 @@ protected function _setContent(DOMDocument $dom, DOMElement $root)
         $element = $dom->createElement('content');
         $element->setAttribute('type', 'xhtml');
         $xhtmlElement = $this->_loadXhtml($content);
-        $deep         = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-        $xhtml        = $dom->importNode($xhtmlElement, $deep);
+        $xhtml        = $dom->importNode($xhtmlElement, true);
         $element->appendChild($xhtml);
         $root->appendChild($element);
     }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom/Deleted.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom/Deleted.php
index fd1c2dc6c48d95da2dfda2de0ca1b955dd1d2baf..946df407f6b5b3fb88daf01d0fb5bc80af0560ec 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom/Deleted.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Atom/Deleted.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Entry\Atom;
 
 use DateTime;
@@ -72,18 +74,18 @@ protected function _setBy(DOMDocument $dom, DOMElement $root)
         $name   = $this->dom->createElement('name');
         $author->appendChild($name);
         $root->appendChild($author);
-        $text = $dom->createTextNode($data['name']);
+        $text = $dom->createTextNode((string) $data['name']);
         $name->appendChild($text);
         if (array_key_exists('email', $data)) {
             $email = $this->dom->createElement('email');
             $author->appendChild($email);
-            $text = $dom->createTextNode($data['email']);
+            $text = $dom->createTextNode((string) $data['email']);
             $email->appendChild($text);
         }
         if (array_key_exists('uri', $data)) {
             $uri = $this->dom->createElement('uri');
             $author->appendChild($uri);
-            $text = $dom->createTextNode($data['uri']);
+            $text = $dom->createTextNode((string) $data['uri']);
             $uri->appendChild($text);
         }
     }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/AtomDeleted.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/AtomDeleted.php
index 6601d516b022e0536c520f5d81e8b6219c8abea7..6d97d197511be70995bbb859c351c0551e2fd8e5 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/AtomDeleted.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/AtomDeleted.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Entry;
 
 use DateTime;
@@ -72,18 +74,18 @@ protected function _setBy(DOMDocument $dom, DOMElement $root)
         $name   = $this->dom->createElement('name');
         $author->appendChild($name);
         $root->appendChild($author);
-        $text = $dom->createTextNode($data['name']);
+        $text = $dom->createTextNode((string) $data['name']);
         $name->appendChild($text);
         if (array_key_exists('email', $data)) {
             $email = $this->dom->createElement('email');
             $author->appendChild($email);
-            $text = $dom->createTextNode($data['email']);
+            $text = $dom->createTextNode((string) $data['email']);
             $email->appendChild($text);
         }
         if (array_key_exists('uri', $data)) {
             $uri = $this->dom->createElement('uri');
             $author->appendChild($uri);
-            $text = $dom->createTextNode($data['uri']);
+            $text = $dom->createTextNode((string) $data['uri']);
             $uri->appendChild($text);
         }
     }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Rss.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Rss.php
index d1d89534d42bec707b6c9450968bb6a65223c701..450f27fe89356a4dea06638ba61b02feb46566a0 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Rss.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Entry/Rss.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Entry;
 
 use DateTime;
@@ -79,7 +81,7 @@ protected function _setTitle(DOMDocument $dom, DOMElement $root)
         }
         $title = $dom->createElement('title');
         $root->appendChild($title);
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getTitle());
         $title->appendChild($text);
     }
 
@@ -169,7 +171,7 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
             if (array_key_exists('email', $data)) {
                 $name = $data['email'] . ' (' . $data['name'] . ')';
             }
-            $text = $dom->createTextNode($name);
+            $text = $dom->createTextNode((string) $name);
             $author->appendChild($text);
             $root->appendChild($author);
         }
@@ -218,7 +220,7 @@ protected function _setEnclosure(DOMDocument $dom, DOMElement $root)
         }
         $enclosure = $this->dom->createElement('enclosure');
         $enclosure->setAttribute('type', $data['type']);
-        $enclosure->setAttribute('length', $data['length']);
+        $enclosure->setAttribute('length', (string) $data['length']);
         $enclosure->setAttribute('url', $data['uri']);
         $root->appendChild($enclosure);
     }
@@ -235,7 +237,7 @@ protected function _setLink(DOMDocument $dom, DOMElement $root)
         }
         $link = $dom->createElement('link');
         $root->appendChild($link);
-        $text = $dom->createTextNode($this->getDataContainer()->getLink());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getLink());
         $link->appendChild($text);
     }
 
@@ -260,7 +262,7 @@ protected function _setId(DOMDocument $dom, DOMElement $root)
                 $this->getDataContainer()->getLink()
             );
         }
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getId());
         $id->appendChild($text);
 
         $uri = Uri::factory($this->getDataContainer()->getId());
@@ -282,7 +284,7 @@ protected function _setCommentLink(DOMDocument $dom, DOMElement $root)
             return;
         }
         $clink = $this->dom->createElement('comments');
-        $text  = $dom->createTextNode($link);
+        $text  = $dom->createTextNode((string) $link);
         $clink->appendChild($text);
         $root->appendChild($clink);
     }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AbstractAtom.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AbstractAtom.php
index 545b87f1436db43634426a7901261a7ee9644441..96bd49060b6248b8264fafd7e6eadcbe6f377c0e 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AbstractAtom.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AbstractAtom.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Feed;
 
 use DateTime;
@@ -59,7 +61,7 @@ protected function _setTitle(DOMDocument $dom, DOMElement $root)
         $title = $dom->createElement('title');
         $root->appendChild($title);
         $title->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getTitle());
         $title->appendChild($text);
     }
 
@@ -76,7 +78,7 @@ protected function _setDescription(DOMDocument $dom, DOMElement $root)
         $subtitle = $dom->createElement('subtitle');
         $root->appendChild($subtitle);
         $subtitle->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getDescription());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getDescription());
         $subtitle->appendChild($text);
     }
 
@@ -126,7 +128,7 @@ protected function _setGenerator(DOMDocument $dom, DOMElement $root)
         $gdata     = $this->getDataContainer()->getGenerator();
         $generator = $dom->createElement('generator');
         $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
+        $text = $dom->createTextNode((string) $gdata['name']);
         $generator->appendChild($text);
         if (array_key_exists('uri', $gdata)) {
             $generator->setAttribute('uri', $gdata['uri']);
@@ -207,18 +209,18 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
             $name   = $this->dom->createElement('name');
             $author->appendChild($name);
             $root->appendChild($author);
-            $text = $dom->createTextNode($data['name']);
+            $text = $dom->createTextNode((string) $data['name']);
             $name->appendChild($text);
             if (array_key_exists('email', $data)) {
                 $email = $this->dom->createElement('email');
                 $author->appendChild($email);
-                $text = $dom->createTextNode($data['email']);
+                $text = $dom->createTextNode((string) $data['email']);
                 $email->appendChild($text);
             }
             if (array_key_exists('uri', $data)) {
                 $uri = $this->dom->createElement('uri');
                 $author->appendChild($uri);
-                $text = $dom->createTextNode($data['uri']);
+                $text = $dom->createTextNode((string) $data['uri']);
                 $uri->appendChild($text);
             }
         }
@@ -256,7 +258,7 @@ protected function _setId(DOMDocument $dom, DOMElement $root)
         }
         $id = $dom->createElement('id');
         $root->appendChild($id);
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getId());
         $id->appendChild($text);
     }
 
@@ -290,7 +292,7 @@ protected function _setImage(DOMDocument $dom, DOMElement $root)
         }
         $img = $dom->createElement('logo');
         $root->appendChild($img);
-        $text = $dom->createTextNode($image['uri']);
+        $text = $dom->createTextNode((string) $image['uri']);
         $img->appendChild($text);
     }
 
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom.php
index e18bd5d857e946ba542b5ebee00329e4e3e14c48..33b7ad96729c288f7aa5941b8bac521f226f77af 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom.php
@@ -1,15 +1,13 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Feed;
 
 use DOMDocument;
 use Laminas\Feed\Writer;
 use Laminas\Feed\Writer\Renderer;
 
-use function version_compare;
-
-use const PHP_VERSION;
-
 class Atom extends AbstractAtom implements Renderer\RendererInterface
 {
     public function __construct(Writer\Feed $container)
@@ -80,8 +78,7 @@ public function render()
             $renderer->setRootElement($this->dom->documentElement);
             $renderer->render();
             $element  = $renderer->getElement();
-            $deep     = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-            $imported = $this->dom->importNode($element, $deep);
+            $imported = $this->dom->importNode($element, true);
             $root->appendChild($imported);
         }
         return $this;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/AbstractAtom.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/AbstractAtom.php
index 318fc71a0f03b4030d941c15e8ab16dd1e5cc54f..5e9d0975c68abb1bf7b9b053a485e60ee3476ae0 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/AbstractAtom.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/AbstractAtom.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Feed\Atom;
 
 use DateTime;
@@ -58,7 +60,7 @@ protected function _setTitle(DOMDocument $dom, DOMElement $root)
         $title = $dom->createElement('title');
         $root->appendChild($title);
         $title->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getTitle());
         $title->appendChild($text);
     }
 
@@ -75,7 +77,7 @@ protected function _setDescription(DOMDocument $dom, DOMElement $root)
         $subtitle = $dom->createElement('subtitle');
         $root->appendChild($subtitle);
         $subtitle->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getDescription());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getDescription());
         $subtitle->appendChild($text);
     }
 
@@ -125,7 +127,7 @@ protected function _setGenerator(DOMDocument $dom, DOMElement $root)
         $gdata     = $this->getDataContainer()->getGenerator();
         $generator = $dom->createElement('generator');
         $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
+        $text = $dom->createTextNode((string) $gdata['name']);
         $generator->appendChild($text);
         if (array_key_exists('uri', $gdata)) {
             $generator->setAttribute('uri', $gdata['uri']);
@@ -206,18 +208,18 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
             $name   = $this->dom->createElement('name');
             $author->appendChild($name);
             $root->appendChild($author);
-            $text = $dom->createTextNode($data['name']);
+            $text = $dom->createTextNode((string) $data['name']);
             $name->appendChild($text);
             if (array_key_exists('email', $data)) {
                 $email = $this->dom->createElement('email');
                 $author->appendChild($email);
-                $text = $dom->createTextNode($data['email']);
+                $text = $dom->createTextNode((string) $data['email']);
                 $email->appendChild($text);
             }
             if (array_key_exists('uri', $data)) {
                 $uri = $this->dom->createElement('uri');
                 $author->appendChild($uri);
-                $text = $dom->createTextNode($data['uri']);
+                $text = $dom->createTextNode((string) $data['uri']);
                 $uri->appendChild($text);
             }
         }
@@ -255,7 +257,7 @@ protected function _setId(DOMDocument $dom, DOMElement $root)
         }
         $id = $dom->createElement('id');
         $root->appendChild($id);
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getId());
         $id->appendChild($text);
     }
 
@@ -289,7 +291,7 @@ protected function _setImage(DOMDocument $dom, DOMElement $root)
         }
         $img = $dom->createElement('logo');
         $root->appendChild($img);
-        $text = $dom->createTextNode($image['uri']);
+        $text = $dom->createTextNode((string) $image['uri']);
         $img->appendChild($text);
     }
 
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/Source.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/Source.php
index f3e73d39912fb2a15463e2c6281537bee58a96ab..9fae242e55e2cf0cec167804a1e1866ca5a9ba5c 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/Source.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Atom/Source.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Feed\Atom;
 
 use DOMDocument;
@@ -69,7 +71,7 @@ protected function _setGenerator(DOMDocument $dom, DOMElement $root)
         $gdata     = $this->getDataContainer()->getGenerator();
         $generator = $dom->createElement('generator');
         $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
+        $text = $dom->createTextNode((string) $gdata['name']);
         $generator->appendChild($text);
         if (array_key_exists('uri', $gdata)) {
             $generator->setAttribute('uri', $gdata['uri']);
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AtomSource.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AtomSource.php
index 83916c88cece861cf0c88f03cbdfee3b445f2e2c..bc32f047d1c520c89007cec4231821d1bdfc1597 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AtomSource.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/AtomSource.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Feed;
 
 use DOMDocument;
@@ -69,7 +71,7 @@ protected function _setGenerator(DOMDocument $dom, DOMElement $root)
         $gdata     = $this->getDataContainer()->getGenerator();
         $generator = $dom->createElement('generator');
         $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
+        $text = $dom->createTextNode((string) $gdata['name']);
         $generator->appendChild($text);
         if (array_key_exists('uri', $gdata)) {
             $generator->setAttribute('uri', $gdata['uri']);
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Rss.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Rss.php
index 3abe3889e53520a1f847bb01e7af4c3b8818324c..53c2096b9ef9210f0f19e6483f5a9b7d327f6dfe 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Rss.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/Feed/Rss.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer\Feed;
 
 use DateTime;
@@ -13,9 +15,6 @@
 use function array_key_exists;
 use function ctype_digit;
 use function is_string;
-use function version_compare;
-
-use const PHP_VERSION;
 
 class Rss extends Renderer\AbstractRenderer implements Renderer\RendererInterface
 {
@@ -78,8 +77,7 @@ public function render()
             $renderer->setRootElement($this->dom->documentElement);
             $renderer->render();
             $element  = $renderer->getElement();
-            $deep     = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-            $imported = $this->dom->importNode($element, $deep);
+            $imported = $this->dom->importNode($element, true);
             $channel->appendChild($imported);
         }
         return $this;
@@ -125,7 +123,7 @@ protected function _setTitle(DOMDocument $dom, DOMElement $root)
 
         $title = $dom->createElement('title');
         $root->appendChild($title);
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getTitle());
         $title->appendChild($text);
     }
 
@@ -150,7 +148,7 @@ protected function _setDescription(DOMDocument $dom, DOMElement $root)
         }
         $subtitle = $dom->createElement('description');
         $root->appendChild($subtitle);
-        $text = $dom->createTextNode($this->getDataContainer()->getDescription());
+        $text = $dom->createTextNode((string) $this->getDataContainer()->getDescription());
         $subtitle->appendChild($text);
     }
 
@@ -198,7 +196,7 @@ protected function _setGenerator(DOMDocument $dom, DOMElement $root)
         if (array_key_exists('uri', $gdata)) {
             $name .= ' (' . $gdata['uri'] . ')';
         }
-        $text = $dom->createTextNode($name);
+        $text = $dom->createTextNode((string) $name);
         $generator->appendChild($text);
     }
 
@@ -248,7 +246,7 @@ protected function _setAuthors(DOMDocument $dom, DOMElement $root)
             if (array_key_exists('email', $data)) {
                 $name = $data['email'] . ' (' . $data['name'] . ')';
             }
-            $text = $dom->createTextNode($name);
+            $text = $dom->createTextNode((string) $name);
             $author->appendChild($text);
             $root->appendChild($author);
         }
@@ -317,7 +315,7 @@ protected function _setImage(DOMDocument $dom, DOMElement $root)
         $root->appendChild($img);
 
         $url  = $dom->createElement('url');
-        $text = $dom->createTextNode($image['uri']);
+        $text = $dom->createTextNode((string) $image['uri']);
         $url->appendChild($text);
 
         $title = $dom->createElement('title');
@@ -345,7 +343,7 @@ protected function _setImage(DOMDocument $dom, DOMElement $root)
                 }
             }
             $height = $dom->createElement('height');
-            $text   = $dom->createTextNode($image['height']);
+            $text   = $dom->createTextNode((string) $image['height']);
             $height->appendChild($text);
             $img->appendChild($height);
         }
@@ -362,7 +360,7 @@ protected function _setImage(DOMDocument $dom, DOMElement $root)
                 }
             }
             $width = $dom->createElement('width');
-            $text  = $dom->createTextNode($image['width']);
+            $text  = $dom->createTextNode((string) $image['width']);
             $width->appendChild($text);
             $img->appendChild($width);
         }
@@ -451,7 +449,7 @@ protected function _setCategories(DOMDocument $dom, DOMElement $root)
             if (isset($cat['scheme'])) {
                 $category->setAttribute('domain', $cat['scheme']);
             }
-            $text = $dom->createTextNode($cat['term']);
+            $text = $dom->createTextNode((string) $cat['term']);
             $category->appendChild($text);
             $root->appendChild($category);
         }
diff --git a/vendor/laminas/laminas-feed/src/Writer/Renderer/RendererInterface.php b/vendor/laminas/laminas-feed/src/Writer/Renderer/RendererInterface.php
index c1d47e625e80102529d246d58d5f47f9abbe1f5a..ac8dcc649e996879bfd56804b7143585ee1ca19b 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Renderer/RendererInterface.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Renderer/RendererInterface.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer\Renderer;
 
 use DOMDocument;
diff --git a/vendor/laminas/laminas-feed/src/Writer/Source.php b/vendor/laminas/laminas-feed/src/Writer/Source.php
index 41e633a7b942de18a65af70d00c0f2adad5407d9..5f935ad997883be73990bd0abfbfd2966c2a7efe 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Source.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Source.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 class Source extends AbstractFeed
diff --git a/vendor/laminas/laminas-feed/src/Writer/StandaloneExtensionManager.php b/vendor/laminas/laminas-feed/src/Writer/StandaloneExtensionManager.php
index 9990ff5ad78e17fdb66f4ab033fcefdab8cf199e..e248e1857e588e76fc88d9c3466f95616429c274 100644
--- a/vendor/laminas/laminas-feed/src/Writer/StandaloneExtensionManager.php
+++ b/vendor/laminas/laminas-feed/src/Writer/StandaloneExtensionManager.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use Laminas\Feed\Writer\Exception\InvalidArgumentException;
@@ -13,7 +15,7 @@
 class StandaloneExtensionManager implements ExtensionManagerInterface
 {
     /** @var array<string, class-string> */
-    private $extensions = [
+    private array $extensions = [
         'Atom\Renderer\Feed'               => Extension\Atom\Renderer\Feed::class,
         'Content\Renderer\Entry'           => Extension\Content\Renderer\Entry::class,
         'DublinCore\Renderer\Entry'        => Extension\DublinCore\Renderer\Entry::class,
diff --git a/vendor/laminas/laminas-feed/src/Writer/Version.php b/vendor/laminas/laminas-feed/src/Writer/Version.php
index 11853188ed1af2f478b1eb11235013e0186d797d..49900a781f8b26c6c7327b939b8354b3cef43f74 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Version.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Version.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 // phpcs:ignore WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix
diff --git a/vendor/laminas/laminas-feed/src/Writer/Writer.php b/vendor/laminas/laminas-feed/src/Writer/Writer.php
index 2dab3764c30db75cb576a7527033d068fd05daf8..4f5660c55b65d4499dec140bc670bff66ce9c8fe 100644
--- a/vendor/laminas/laminas-feed/src/Writer/Writer.php
+++ b/vendor/laminas/laminas-feed/src/Writer/Writer.php
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace Laminas\Feed\Writer;
 
 use function in_array;
diff --git a/vendor/laminas/laminas-servicemanager/COPYRIGHT.md b/vendor/laminas/laminas-servicemanager/COPYRIGHT.md
new file mode 100644
index 0000000000000000000000000000000000000000..0a8cccc06bfa04935c37edde9b9923507da6126b
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/COPYRIGHT.md
@@ -0,0 +1 @@
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. (https://getlaminas.org/)
diff --git a/vendor/laminas/laminas-servicemanager/LICENSE.md b/vendor/laminas/laminas-servicemanager/LICENSE.md
new file mode 100644
index 0000000000000000000000000000000000000000..10b40f1423b53b3138f9eb7db2db0698ba102c9a
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/LICENSE.md
@@ -0,0 +1,26 @@
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+- Neither the name of Laminas Foundation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/laminas/laminas-servicemanager/README.md b/vendor/laminas/laminas-servicemanager/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..794a3402985b2b5c379b32e398db7282e466064c
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/README.md
@@ -0,0 +1,40 @@
+# laminas-servicemanager
+
+[![Build Status](https://github.com/laminas/laminas-servicemanager/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/laminas/laminas-servicemanager/actions/workflows/continuous-integration.yml)
+[![Psalm coverage](https://shepherd.dev/github/laminas/laminas-servicemanager/coverage.svg?)](https://shepherd.dev/github/laminas/laminas-servicemanager)
+
+> ## 🇷🇺 Русским гражданам
+> 
+> Мы, участники Laminas, родились и живем в разных странах. У многих из нас есть друзья, родственники и коллеги как в России, так и в Украине. Некоторые из нас родились в России. Некоторые из нас живут в России. У некоторых бабушки и дедушки сражались с фашистами во Второй мировой войне. Здесь никто не поддерживает фашизм.
+> 
+> У одного из нас есть украинская родственница, которая спаслась из дома вместе с сыном. Поезд задержался из-за бомбежки на дороге впереди. У нас есть друзья, которые прячутся в бомбоубежищах. Мы с тревогой ждем весточки от них после воздушных налетов, которые беспорядочно наносят удары и попадают по больницам, школам, детским садам и домам. Мы не берем это из каких-либо СМИ. Мы наблюдаем это напрямую.
+> 
+> Вы доверяете нам достаточно, чтоб использовать наши программы, и мы просим вас довериться нам вновь. Мы нуждаемся в помощи. Выходите и протестуйте против этой бесполезной войны. Остановите кровопролитие. Скажите "Нет войне!"
+> 
+> ## 🇺🇸 To Citizens of Russia
+> 
+> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism.
+> 
+> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences.
+> 
+> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!"
+
+The Service Locator design pattern is implemented by the `Laminas\ServiceManager`
+component. The Service Locator is a service/object locator, tasked with
+retrieving other objects.
+
+- File issues at https://github.com/laminas/laminas-servicemanager/issues
+- [Online documentation](https://docs.laminas.dev/laminas-servicemanager)
+- [Documentation source files](docs/book/)
+
+## Benchmarks
+
+We provide scripts for benchmarking laminas-servicemanager using the
+[PHPBench](https://github.com/phpbench/phpbench) framework; these can be
+found in the `benchmarks/` directory.
+
+To execute the benchmarks you can run the following command:
+
+```bash
+$ vendor/bin/phpbench run --report=aggregate
+```
diff --git a/vendor/laminas/laminas-servicemanager/bin/generate-deps-for-config-factory b/vendor/laminas/laminas-servicemanager/bin/generate-deps-for-config-factory
new file mode 100755
index 0000000000000000000000000000000000000000..8ee1105a53fac66b63e62f6b3b5a2ecb7b770db8
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/bin/generate-deps-for-config-factory
@@ -0,0 +1,22 @@
+#!/usr/bin/env php
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+// Setup/verify autoloading
+if (file_exists($a = getcwd() . '/vendor/autoload.php')) {
+    require $a;
+} elseif (file_exists($a = __DIR__ . '/../../../autoload.php')) {
+    require $a;
+} elseif (file_exists($a = __DIR__ . '/../vendor/autoload.php')) {
+    require $a;
+} else {
+    fwrite(STDERR, 'Cannot locate autoloader; please run "composer install"' . PHP_EOL);
+    exit(1);
+}
+
+$command = new Tool\ConfigDumperCommand($argv[0]);
+$status = $command(array_slice($argv, 1));
+exit($status);
diff --git a/vendor/laminas/laminas-servicemanager/bin/generate-factory-for-class b/vendor/laminas/laminas-servicemanager/bin/generate-factory-for-class
new file mode 100755
index 0000000000000000000000000000000000000000..a02701429b71c6fd32471ccbf41ac9ebf3bb7eb4
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/bin/generate-factory-for-class
@@ -0,0 +1,22 @@
+#!/usr/bin/env php
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+// Setup/verify autoloading
+if (file_exists($a = getcwd() . '/vendor/autoload.php')) {
+    require $a;
+} elseif (file_exists($a = __DIR__ . '/../../../autoload.php')) {
+    require $a;
+} elseif (file_exists($a = __DIR__ . '/../vendor/autoload.php')) {
+    require $a;
+} else {
+    fwrite(STDERR, 'Cannot locate autoloader; please run "composer install"' . PHP_EOL);
+    exit(1);
+}
+
+$command = new Tool\FactoryCreatorCommand($argv[0]);
+$status = $command(array_slice($argv, 1));
+exit($status);
diff --git a/vendor/laminas/laminas-servicemanager/composer.json b/vendor/laminas/laminas-servicemanager/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..34a5c58c833fab99263df4aa19ba085a48b6f29a
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/composer.json
@@ -0,0 +1,97 @@
+{
+    "name": "laminas/laminas-servicemanager",
+    "description": "Factory-Driven Dependency Injection Container",
+    "license": "BSD-3-Clause",
+    "keywords": [
+        "laminas",
+        "di",
+        "dic",
+        "dependency-injection",
+        "psr-11",
+        "servicemanager",
+        "service-manager"
+    ],
+    "homepage": "https://laminas.dev",
+    "support": {
+        "docs": "https://docs.laminas.dev/laminas-servicemanager/",
+        "issues": "https://github.com/laminas/laminas-servicemanager/issues",
+        "source": "https://github.com/laminas/laminas-servicemanager",
+        "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom",
+        "chat": "https://laminas.dev/chat",
+        "forum": "https://discourse.laminas.dev"
+    },
+    "config": {
+        "platform": {
+            "php": "8.0.99"
+        },
+        "sort-packages": true,
+        "allow-plugins": {
+            "dealerdirect/phpcodesniffer-composer-installer": true,
+            "composer/package-versions-deprecated": true,
+            "laminas/laminas-dependency-plugin": true
+        }
+    },
+    "require": {
+        "php": "~8.0.0 || ~8.1.0 || ~8.2.0",
+        "laminas/laminas-stdlib": "^3.2.1",
+        "psr/container": "^1.0"
+    },
+    "require-dev": {
+        "composer/package-versions-deprecated": "^1.11.99.5",
+        "laminas/laminas-coding-standard": "~2.4.0",
+        "laminas/laminas-container-config-test": "^0.8",
+        "laminas/laminas-dependency-plugin": "^2.2",
+        "mikey179/vfsstream": "^1.6.11@alpha",
+        "ocramius/proxy-manager": "^2.14.1",
+        "phpbench/phpbench": "^1.2.7",
+        "phpunit/phpunit": "^9.5.26",
+        "psalm/plugin-phpunit": "^0.18.0",
+        "vimeo/psalm": "^5.0.0"
+    },
+    "provide": {
+        "psr/container-implementation": "^1.0"
+    },
+    "conflict": {
+        "ext-psr": "*",
+        "laminas/laminas-code": "<3.3.1",
+        "zendframework/zend-code": "<3.3.1",
+        "zendframework/zend-servicemanager": "*"
+    },
+    "suggest": {
+        "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services"
+    },
+    "autoload": {
+        "psr-4": {
+            "Laminas\\ServiceManager\\": "src/"
+        },
+        "files": ["src/autoload.php"]
+    },
+    "autoload-dev": {
+        "files": [
+            "test/autoload.php"
+        ],
+        "psr-4": {
+            "LaminasTest\\ServiceManager\\": "test/",
+            "LaminasBench\\ServiceManager\\": "benchmarks/"
+        }
+    },
+    "bin": [
+        "bin/generate-deps-for-config-factory",
+        "bin/generate-factory-for-class"
+    ],
+    "scripts": {
+        "benchmark": "phpbench run --revs=2 --iterations=2 --report=aggregate",
+        "check": [
+            "@cs-check",
+            "@test"
+        ],
+        "cs-check": "phpcs",
+        "cs-fix": "phpcbf",
+        "test": "phpunit --colors=always",
+        "test-coverage": "phpunit --colors=always --coverage-clover clover.xml",
+        "static-analysis" : "psalm --shepherd --stats"
+    },
+    "replace": {
+        "container-interop/container-interop": "^1.2.0"
+    }
+}
diff --git a/vendor/laminas/laminas-stdlib/composer.lock b/vendor/laminas/laminas-servicemanager/composer.lock
similarity index 84%
rename from vendor/laminas/laminas-stdlib/composer.lock
rename to vendor/laminas/laminas-servicemanager/composer.lock
index 97fd81ae2ebc6383c56f0ea65c4b6cbc5c956aee..961c136e54b09bea180842994bd101ddcdfabb1f 100644
--- a/vendor/laminas/laminas-stdlib/composer.lock
+++ b/vendor/laminas/laminas-servicemanager/composer.lock
@@ -4,8 +4,116 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "6e30b2107ea2ce3d7f7cd961f0c31a84",
-    "packages": [],
+    "content-hash": "42755a420dd48f27f0839d1c3dc4f748",
+    "packages": [
+        {
+            "name": "laminas/laminas-stdlib",
+            "version": "3.15.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-stdlib.git",
+                "reference": "63b66bd4b696f024f42616b9d95cdb10e5109c27"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/63b66bd4b696f024f42616b9d95cdb10e5109c27",
+                "reference": "63b66bd4b696f024f42616b9d95cdb10e5109c27",
+                "shasum": ""
+            },
+            "require": {
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
+            },
+            "conflict": {
+                "zendframework/zend-stdlib": "*"
+            },
+            "require-dev": {
+                "laminas/laminas-coding-standard": "^2.4.0",
+                "phpbench/phpbench": "^1.2.6",
+                "phpunit/phpunit": "^9.5.25",
+                "psalm/plugin-phpunit": "^0.17.0",
+                "vimeo/psalm": "^4.28"
+            },
+            "type": "library",
+            "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"
+                }
+            ],
+            "time": "2022-10-10T19:10:24+00:00"
+        },
+        {
+            "name": "psr/container",
+            "version": "1.1.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
+                "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.4.0"
+            },
+            "type": "library",
+            "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/1.1.2"
+            },
+            "time": "2021-11-05T16:50:12+00:00"
+        }
+    ],
     "packages-dev": [
         {
             "name": "amphp/amp",
@@ -248,20 +356,20 @@
         },
         {
             "name": "composer/pcre",
-            "version": "2.0.0",
+            "version": "3.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/pcre.git",
-                "reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe"
+                "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/pcre/zipball/c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
-                "reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
+                "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+                "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.2 || ^8.0"
+                "php": "^7.4 || ^8.0"
             },
             "require-dev": {
                 "phpstan/phpstan": "^1.3",
@@ -271,7 +379,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "2.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -299,7 +407,7 @@
             ],
             "support": {
                 "issues": "https://github.com/composer/pcre/issues",
-                "source": "https://github.com/composer/pcre/tree/2.0.0"
+                "source": "https://github.com/composer/pcre/tree/3.1.0"
             },
             "funding": [
                 {
@@ -315,7 +423,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-02-25T20:05:29+00:00"
+            "time": "2022-11-17T09:50:14+00:00"
         },
         {
             "name": "composer/semver",
@@ -896,27 +1004,96 @@
             },
             "time": "2022-03-02T22:36:06+00:00"
         },
+        {
+            "name": "laminas/laminas-code",
+            "version": "4.7.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-code.git",
+                "reference": "91aabc066d5620428120800c0eafc0411e441a62"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-code/zipball/91aabc066d5620428120800c0eafc0411e441a62",
+                "reference": "91aabc066d5620428120800c0eafc0411e441a62",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.4, <8.2"
+            },
+            "require-dev": {
+                "doctrine/annotations": "^1.13.2",
+                "ext-phar": "*",
+                "laminas/laminas-coding-standard": "^2.3.0",
+                "laminas/laminas-stdlib": "^3.6.1",
+                "phpunit/phpunit": "^9.5.10",
+                "psalm/plugin-phpunit": "^0.17.0",
+                "vimeo/psalm": "^4.13.1"
+            },
+            "suggest": {
+                "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
+                "laminas/laminas-stdlib": "Laminas\\Stdlib component"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "polyfill/ReflectionEnumPolyfill.php"
+                ],
+                "psr-4": {
+                    "Laminas\\Code\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
+            "homepage": "https://laminas.dev",
+            "keywords": [
+                "code",
+                "laminas",
+                "laminasframework"
+            ],
+            "support": {
+                "chat": "https://laminas.dev/chat",
+                "docs": "https://docs.laminas.dev/laminas-code/",
+                "forum": "https://discourse.laminas.dev",
+                "issues": "https://github.com/laminas/laminas-code/issues",
+                "rss": "https://github.com/laminas/laminas-code/releases.atom",
+                "source": "https://github.com/laminas/laminas-code"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "time": "2022-11-21T01:32:31+00:00"
+        },
         {
             "name": "laminas/laminas-coding-standard",
-            "version": "2.3.0",
+            "version": "2.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laminas/laminas-coding-standard.git",
-                "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251"
+                "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/bcf6e07fe4690240be7beb6d884d0b0fafa6a251",
-                "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251",
+                "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/eb076dd86aa93dd424856b150c9b6f76c1fdfabc",
+                "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc",
                 "shasum": ""
             },
             "require": {
                 "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
-                "php": "^7.3 || ^8.0",
+                "php": "^7.4 || ^8.0",
                 "slevomat/coding-standard": "^7.0",
                 "squizlabs/php_codesniffer": "^3.6",
                 "webimpress/coding-standard": "^1.2"
             },
+            "conflict": {
+                "phpstan/phpdoc-parser": ">=1.6.0"
+            },
             "type": "phpcodesniffer-standard",
             "autoload": {
                 "psr-4": {
@@ -947,7 +1124,178 @@
                     "type": "community_bridge"
                 }
             ],
-            "time": "2021-05-29T15:53:59+00:00"
+            "time": "2022-08-24T17:45:47+00:00"
+        },
+        {
+            "name": "laminas/laminas-container-config-test",
+            "version": "0.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-container-config-test.git",
+                "reference": "06474faed18a2732b21355297fa8c56f1aff2e91"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-container-config-test/zipball/06474faed18a2732b21355297fa8c56f1aff2e91",
+                "reference": "06474faed18a2732b21355297fa8c56f1aff2e91",
+                "shasum": ""
+            },
+            "require": {
+                "php": "~8.0.0 || ~8.1.0 || ~8.2.0",
+                "psr/container": "^1.0 || ^2.0"
+            },
+            "conflict": {
+                "zendframework/zend-container-config-test": "*"
+            },
+            "require-dev": {
+                "laminas/laminas-coding-standard": "^2.3",
+                "phpunit/phpunit": "^9.5.26",
+                "psalm/plugin-phpunit": "^0.18.0",
+                "vimeo/psalm": "^4.29.0"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/TestAsset/function-factory.php",
+                    "src/TestAsset/function-factory-with-name.php",
+                    "src/TestAsset/function-factory.legacy.php",
+                    "src/TestAsset/function-factory-with-name.legacy.php"
+                ],
+                "psr-4": {
+                    "Laminas\\ContainerConfigTest\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Mezzio PSR-11 container configuration tests",
+            "homepage": "https://laminas.dev",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "laminas",
+                "mezzio",
+                "test"
+            ],
+            "support": {
+                "chat": "https://laminas.dev/chat",
+                "forum": "https://discourse.laminas.dev",
+                "issues": "https://github.com/laminas/laminas-container-config-test/issues",
+                "rss": "https://github.com/laminas/laminas-container-config-test/releases.atom",
+                "source": "https://github.com/laminas/laminas-container-config-test"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "time": "2022-11-16T00:42:21+00:00"
+        },
+        {
+            "name": "laminas/laminas-dependency-plugin",
+            "version": "2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-dependency-plugin.git",
+                "reference": "73cfb63ddca9d6bfedad5e0a038f6d55063975a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-dependency-plugin/zipball/73cfb63ddca9d6bfedad5e0a038f6d55063975a3",
+                "reference": "73cfb63ddca9d6bfedad5e0a038f6d55063975a3",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.1 || ^2.0",
+                "php": "^7.3 || ~8.0.0 || ~8.1.0"
+            },
+            "require-dev": {
+                "composer/composer": "^1.9 || ^2.0",
+                "laminas/laminas-coding-standard": "^2.2.1",
+                "mikey179/vfsstream": "^1.6.10@alpha",
+                "phpunit/phpunit": "^9.5.5",
+                "psalm/plugin-phpunit": "^0.15.1",
+                "roave/security-advisories": "dev-master",
+                "vimeo/psalm": "^4.5"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "Laminas\\DependencyPlugin\\DependencyRewriterPluginDelegator"
+            },
+            "autoload": {
+                "psr-4": {
+                    "Laminas\\DependencyPlugin\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Replace zendframework and zfcampus packages with their Laminas Project equivalents.",
+            "support": {
+                "issues": "https://github.com/laminas/laminas-dependency-plugin/issues",
+                "source": "https://github.com/laminas/laminas-dependency-plugin/tree/2.2.0"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "time": "2021-09-08T17:51:35+00:00"
+        },
+        {
+            "name": "mikey179/vfsstream",
+            "version": "v1.6.11",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/bovigo/vfsStream.git",
+                "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
+                "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.5|^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.6.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "org\\bovigo\\vfs\\": "src/main/php"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Frank Kleine",
+                    "homepage": "http://frankkleine.de/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Virtual file system to mock the real file system in unit tests.",
+            "homepage": "http://vfs.bovigo.org/",
+            "support": {
+                "issues": "https://github.com/bovigo/vfsStream/issues",
+                "source": "https://github.com/bovigo/vfsStream/tree/master",
+                "wiki": "https://github.com/bovigo/vfsStream/wiki"
+            },
+            "time": "2022-02-23T02:02:42+00:00"
         },
         {
             "name": "myclabs/deep-copy",
@@ -1061,16 +1409,16 @@
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.14.0",
+            "version": "v4.15.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
+                "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
-                "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc",
+                "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc",
                 "shasum": ""
             },
             "require": {
@@ -1109,11 +1457,92 @@
                 "parser",
                 "php"
             ],
-            "support": {
-                "issues": "https://github.com/nikic/PHP-Parser/issues",
-                "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
-            },
-            "time": "2022-05-31T20:59:12+00:00"
+            "support": {
+                "issues": "https://github.com/nikic/PHP-Parser/issues",
+                "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2"
+            },
+            "time": "2022-11-12T15:38:23+00:00"
+        },
+        {
+            "name": "ocramius/proxy-manager",
+            "version": "2.14.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Ocramius/ProxyManager.git",
+                "reference": "3990d60ef79001badbab4927a6a811682274a0d1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/3990d60ef79001badbab4927a6a811682274a0d1",
+                "reference": "3990d60ef79001badbab4927a6a811682274a0d1",
+                "shasum": ""
+            },
+            "require": {
+                "composer-runtime-api": "^2.1.0",
+                "laminas/laminas-code": "^4.4.2",
+                "php": "~8.0.0",
+                "webimpress/safe-writer": "^2.2.0"
+            },
+            "conflict": {
+                "thecodingmachine/safe": "<1.3.3"
+            },
+            "require-dev": {
+                "codelicia/xulieta": "^0.1.6",
+                "doctrine/coding-standard": "^9.0.0",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^1.0.3",
+                "phpunit/phpunit": "^9.5.6",
+                "roave/infection-static-analysis-plugin": "^1.8",
+                "squizlabs/php_codesniffer": "^3.6.0",
+                "vimeo/psalm": "^4.8.1"
+            },
+            "suggest": {
+                "laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)",
+                "laminas/laminas-soap": "To have the Soap adapter (Remote Object feature)",
+                "laminas/laminas-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)",
+                "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "ProxyManager\\": "src/ProxyManager"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "https://ocramius.github.io/"
+                }
+            ],
+            "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
+            "homepage": "https://github.com/Ocramius/ProxyManager",
+            "keywords": [
+                "aop",
+                "lazy loading",
+                "proxy",
+                "proxy pattern",
+                "service proxies"
+            ],
+            "support": {
+                "issues": "https://github.com/Ocramius/ProxyManager/issues",
+                "source": "https://github.com/Ocramius/ProxyManager/tree/2.14.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/Ocramius",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-03-05T18:43:14+00:00"
         },
         {
             "name": "openlss/lib-array2xml",
@@ -1383,16 +1812,16 @@
         },
         {
             "name": "phpbench/phpbench",
-            "version": "1.2.6",
+            "version": "1.2.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpbench/phpbench.git",
-                "reference": "c30fac992e72b505a1f131790583647f4d3255c3"
+                "reference": "dce145304abbb16c8d9af69c19d96f47e9d0e670"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpbench/phpbench/zipball/c30fac992e72b505a1f131790583647f4d3255c3",
-                "reference": "c30fac992e72b505a1f131790583647f4d3255c3",
+                "url": "https://api.github.com/repos/phpbench/phpbench/zipball/dce145304abbb16c8d9af69c19d96f47e9d0e670",
+                "reference": "dce145304abbb16c8d9af69c19d96f47e9d0e670",
                 "shasum": ""
             },
             "require": {
@@ -1413,14 +1842,16 @@
                 "symfony/finder": "^4.2 || ^5.0 || ^6.0",
                 "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0",
                 "symfony/process": "^4.2 || ^5.0 || ^6.0",
-                "webmozart/path-util": "^2.3"
+                "webmozart/glob": "^4.6"
             },
             "require-dev": {
                 "dantleech/invoke": "^2.0",
                 "friendsofphp/php-cs-fixer": "^3.0",
-                "jangregor/phpstan-prophecy": "^0.8.1",
+                "jangregor/phpstan-prophecy": "^1.0",
                 "phpspec/prophecy": "^1.12",
-                "phpstan/phpstan": "^0.12.7",
+                "phpstan/extension-installer": "^1.1",
+                "phpstan/phpstan": "^1.0",
+                "phpstan/phpstan-phpunit": "^1.0",
                 "phpunit/phpunit": "^8.5.8 || ^9.0",
                 "symfony/error-handler": "^5.2 || ^6.0",
                 "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0"
@@ -1459,7 +1890,7 @@
             "description": "PHP Benchmarking Framework",
             "support": {
                 "issues": "https://github.com/phpbench/phpbench/issues",
-                "source": "https://github.com/phpbench/phpbench/tree/1.2.6"
+                "source": "https://github.com/phpbench/phpbench/tree/1.2.7"
             },
             "funding": [
                 {
@@ -1467,7 +1898,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-07-19T19:52:39+00:00"
+            "time": "2022-10-15T09:57:51+00:00"
         },
         {
             "name": "phpdocumentor/reflection-common",
@@ -1581,25 +2012,30 @@
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "1.6.1",
+            "version": "1.6.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "77a32518733312af16a44300404e945338981de3"
+                "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
-                "reference": "77a32518733312af16a44300404e945338981de3",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
+                "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.2 || ^8.0",
+                "php": "^7.4 || ^8.0",
                 "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
                 "ext-tokenizer": "*",
-                "psalm/phar": "^4.8"
+                "phpstan/extension-installer": "^1.1",
+                "phpstan/phpstan": "^1.8",
+                "phpstan/phpstan-phpunit": "^1.1",
+                "phpunit/phpunit": "^9.5",
+                "rector/rector": "^0.13.9",
+                "vimeo/psalm": "^4.25"
             },
             "type": "library",
             "extra": {
@@ -1625,89 +2061,22 @@
             "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
             "support": {
                 "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
-            },
-            "time": "2022-03-15T21:29:03+00:00"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "v1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
-                "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.2",
-                "php": "^7.2 || ~8.0, <8.2",
-                "phpdocumentor/reflection-docblock": "^5.2",
-                "sebastian/comparator": "^3.0 || ^4.0",
-                "sebastian/recursion-context": "^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "phpspec/phpspec": "^6.0 || ^7.0",
-                "phpunit/phpunit": "^8.0 || ^9.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Prophecy\\": "src/Prophecy"
-                }
+                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2"
             },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
-                },
-                {
-                    "name": "Marcello Duarte",
-                    "email": "marcello.duarte@gmail.com"
-                }
-            ],
-            "description": "Highly opinionated mocking framework for PHP 5.3+",
-            "homepage": "https://github.com/phpspec/prophecy",
-            "keywords": [
-                "Double",
-                "Dummy",
-                "fake",
-                "mock",
-                "spy",
-                "stub"
-            ],
-            "support": {
-                "issues": "https://github.com/phpspec/prophecy/issues",
-                "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
-            },
-            "time": "2021-12-08T12:19:24+00:00"
+            "time": "2022-10-14T12:47:21+00:00"
         },
         {
             "name": "phpstan/phpdoc-parser",
-            "version": "1.6.4",
+            "version": "1.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpdoc-parser.git",
-                "reference": "135607f9ccc297d6923d49c2bcf309f509413215"
+                "reference": "981cc368a216c988e862a75e526b6076987d1b50"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/135607f9ccc297d6923d49c2bcf309f509413215",
-                "reference": "135607f9ccc297d6923d49c2bcf309f509413215",
+                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50",
+                "reference": "981cc368a216c988e862a75e526b6076987d1b50",
                 "shasum": ""
             },
             "require": {
@@ -1717,7 +2086,6 @@
                 "php-parallel-lint/php-parallel-lint": "^1.2",
                 "phpstan/extension-installer": "^1.0",
                 "phpstan/phpstan": "^1.5",
-                "phpstan/phpstan-phpunit": "^1.1",
                 "phpstan/phpstan-strict-rules": "^1.0",
                 "phpunit/phpunit": "^9.5",
                 "symfony/process": "^5.2"
@@ -1737,29 +2105,29 @@
             "description": "PHPDoc parser with support for nullable, intersection and generic types",
             "support": {
                 "issues": "https://github.com/phpstan/phpdoc-parser/issues",
-                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.6.4"
+                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1"
             },
-            "time": "2022-06-26T13:09:08+00:00"
+            "time": "2022-05-05T11:32:40+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "9.2.15",
+            "version": "9.2.19",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
+                "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
-                "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c77b56b63e3d2031bd8997fcec43c1925ae46559",
+                "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-libxml": "*",
                 "ext-xmlwriter": "*",
-                "nikic/php-parser": "^4.13.0",
+                "nikic/php-parser": "^4.14",
                 "php": ">=7.3",
                 "phpunit/php-file-iterator": "^3.0.3",
                 "phpunit/php-text-template": "^2.0.2",
@@ -1808,7 +2176,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.19"
             },
             "funding": [
                 {
@@ -1816,7 +2184,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-03-07T09:28:20+00:00"
+            "time": "2022-11-18T07:47:47+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
@@ -2061,16 +2429,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "9.5.21",
+            "version": "9.5.26",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1"
+                "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1",
-                "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/851867efcbb6a1b992ec515c71cdcf20d895e9d2",
+                "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2",
                 "shasum": ""
             },
             "require": {
@@ -2085,7 +2453,6 @@
                 "phar-io/manifest": "^2.0.3",
                 "phar-io/version": "^3.0.2",
                 "php": ">=7.3",
-                "phpspec/prophecy": "^1.12.1",
                 "phpunit/php-code-coverage": "^9.2.13",
                 "phpunit/php-file-iterator": "^3.0.5",
                 "phpunit/php-invoker": "^3.1.1",
@@ -2093,19 +2460,16 @@
                 "phpunit/php-timer": "^5.0.2",
                 "sebastian/cli-parser": "^1.0.1",
                 "sebastian/code-unit": "^1.0.6",
-                "sebastian/comparator": "^4.0.5",
+                "sebastian/comparator": "^4.0.8",
                 "sebastian/diff": "^4.0.3",
                 "sebastian/environment": "^5.1.3",
-                "sebastian/exporter": "^4.0.3",
+                "sebastian/exporter": "^4.0.5",
                 "sebastian/global-state": "^5.0.1",
                 "sebastian/object-enumerator": "^4.0.3",
                 "sebastian/resource-operations": "^3.0.3",
-                "sebastian/type": "^3.0",
+                "sebastian/type": "^3.2",
                 "sebastian/version": "^3.0.2"
             },
-            "require-dev": {
-                "phpspec/prophecy-phpunit": "^2.0.1"
-            },
             "suggest": {
                 "ext-soap": "*",
                 "ext-xdebug": "*"
@@ -2147,7 +2511,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21"
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.26"
             },
             "funding": [
                 {
@@ -2157,22 +2521,26 @@
                 {
                     "url": "https://github.com/sebastianbergmann",
                     "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+                    "type": "tidelift"
                 }
             ],
-            "time": "2022-06-19T12:14:25+00:00"
+            "time": "2022-10-28T06:00:21+00:00"
         },
         {
             "name": "psalm/plugin-phpunit",
-            "version": "0.17.0",
+            "version": "0.18.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
-                "reference": "45951541beef07e93e3ad197daf01da88e85c31d"
+                "reference": "057c1cdf7546c1e427f6fd83b635d0cc18c252bf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/45951541beef07e93e3ad197daf01da88e85c31d",
-                "reference": "45951541beef07e93e3ad197daf01da88e85c31d",
+                "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/057c1cdf7546c1e427f6fd83b635d0cc18c252bf",
+                "reference": "057c1cdf7546c1e427f6fd83b635d0cc18c252bf",
                 "shasum": ""
             },
             "require": {
@@ -2180,7 +2548,7 @@
                 "composer/semver": "^1.4 || ^2.0 || ^3.0",
                 "ext-simplexml": "*",
                 "php": "^7.1 || ^8.0",
-                "vimeo/psalm": "dev-master || dev-4.x || ^4.5"
+                "vimeo/psalm": "dev-master || dev-4.x || ^4.5 || ^5@beta"
             },
             "conflict": {
                 "phpunit/phpunit": "<7.5"
@@ -2217,26 +2585,26 @@
             "description": "Psalm plugin for PHPUnit",
             "support": {
                 "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
-                "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.17.0"
+                "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.3"
             },
-            "time": "2022-06-14T17:05:57+00:00"
+            "time": "2022-11-03T18:17:28+00:00"
         },
         {
             "name": "psr/cache",
-            "version": "1.0.1",
+            "version": "3.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/cache.git",
-                "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+                "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
-                "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+                "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+                "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": ">=8.0.0"
             },
             "type": "library",
             "extra": {
@@ -2256,7 +2624,7 @@
             "authors": [
                 {
                     "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
+                    "homepage": "https://www.php-fig.org/"
                 }
             ],
             "description": "Common interface for caching libraries",
@@ -2266,89 +2634,36 @@
                 "psr-6"
             ],
             "support": {
-                "source": "https://github.com/php-fig/cache/tree/master"
-            },
-            "time": "2016-08-06T20:24:11+00:00"
-        },
-        {
-            "name": "psr/container",
-            "version": "2.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/container.git",
-                "reference": "2ae37329ee82f91efadc282cc2d527fd6065a5ef"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/container/zipball/2ae37329ee82f91efadc282cc2d527fd6065a5ef",
-                "reference": "2ae37329ee82f91efadc282cc2d527fd6065a5ef",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Container\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "https://www.php-fig.org/"
-                }
-            ],
-            "description": "Common Container Interface (PHP FIG PSR-11)",
-            "homepage": "https://github.com/php-fig/container",
-            "keywords": [
-                "PSR-11",
-                "container",
-                "container-interface",
-                "container-interop",
-                "psr"
-            ],
-            "support": {
-                "issues": "https://github.com/php-fig/container/issues",
-                "source": "https://github.com/php-fig/container/tree/2.0.1"
+                "source": "https://github.com/php-fig/cache/tree/3.0.0"
             },
-            "time": "2021-03-24T13:40:57+00:00"
+            "time": "2021-02-03T23:26:27+00:00"
         },
         {
             "name": "psr/log",
-            "version": "1.1.4",
+            "version": "3.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
-                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": ">=8.0.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.1.x-dev"
+                    "dev-master": "3.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
+                    "Psr\\Log\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2369,9 +2684,9 @@
                 "psr-3"
             ],
             "support": {
-                "source": "https://github.com/php-fig/log/tree/1.1.4"
+                "source": "https://github.com/php-fig/log/tree/3.0.0"
             },
-            "time": "2021-05-03T11:20:27+00:00"
+            "time": "2021-07-14T16:46:02+00:00"
         },
         {
             "name": "sebastian/cli-parser",
@@ -2542,16 +2857,16 @@
         },
         {
             "name": "sebastian/comparator",
-            "version": "4.0.6",
+            "version": "4.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
                 "shasum": ""
             },
             "require": {
@@ -2604,7 +2919,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/comparator/issues",
-                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
             },
             "funding": [
                 {
@@ -2612,7 +2927,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-10-26T15:49:45+00:00"
+            "time": "2022-09-14T12:41:17+00:00"
         },
         {
             "name": "sebastian/complexity",
@@ -2802,16 +3117,16 @@
         },
         {
             "name": "sebastian/exporter",
-            "version": "4.0.4",
+            "version": "4.0.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
-                "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
                 "shasum": ""
             },
             "require": {
@@ -2867,7 +3182,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/exporter/issues",
-                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
             },
             "funding": [
                 {
@@ -2875,7 +3190,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2021-11-11T14:18:36+00:00"
+            "time": "2022-09-14T06:03:37+00:00"
         },
         {
             "name": "sebastian/global-state",
@@ -3230,16 +3545,16 @@
         },
         {
             "name": "sebastian/type",
-            "version": "3.0.0",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/type.git",
-                "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
+                "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
-                "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
+                "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
                 "shasum": ""
             },
             "require": {
@@ -3251,7 +3566,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.0-dev"
+                    "dev-master": "3.2-dev"
                 }
             },
             "autoload": {
@@ -3274,7 +3589,7 @@
             "homepage": "https://github.com/sebastianbergmann/type",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/type/issues",
-                "source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
+                "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
             },
             "funding": [
                 {
@@ -3282,7 +3597,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-03-15T09:54:48+00:00"
+            "time": "2022-09-12T14:47:03+00:00"
         },
         {
             "name": "sebastian/version",
@@ -3520,46 +3835,42 @@
         },
         {
             "name": "symfony/console",
-            "version": "v5.4.10",
+            "version": "v6.0.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000"
+                "reference": "be294423f337dda97c810733138c0caec1bb0575"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/4d671ab4ddac94ee439ea73649c69d9d200b5000",
-                "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000",
+                "url": "https://api.github.com/repos/symfony/console/zipball/be294423f337dda97c810733138c0caec1bb0575",
+                "reference": "be294423f337dda97c810733138c0caec1bb0575",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.2.5",
-                "symfony/deprecation-contracts": "^2.1|^3",
+                "php": ">=8.0.2",
                 "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php73": "^1.9",
-                "symfony/polyfill-php80": "^1.16",
                 "symfony/service-contracts": "^1.1|^2|^3",
-                "symfony/string": "^5.1|^6.0"
+                "symfony/string": "^5.4|^6.0"
             },
             "conflict": {
-                "psr/log": ">=3",
-                "symfony/dependency-injection": "<4.4",
-                "symfony/dotenv": "<5.1",
-                "symfony/event-dispatcher": "<4.4",
-                "symfony/lock": "<4.4",
-                "symfony/process": "<4.4"
+                "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"
+                "psr/log-implementation": "1.0|2.0|3.0"
             },
             "require-dev": {
-                "psr/log": "^1|^2",
-                "symfony/config": "^4.4|^5.0|^6.0",
-                "symfony/dependency-injection": "^4.4|^5.0|^6.0",
-                "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
-                "symfony/lock": "^4.4|^5.0|^6.0",
-                "symfony/process": "^4.4|^5.0|^6.0",
-                "symfony/var-dumper": "^4.4|^5.0|^6.0"
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^5.4|^6.0",
+                "symfony/dependency-injection": "^5.4|^6.0",
+                "symfony/event-dispatcher": "^5.4|^6.0",
+                "symfony/lock": "^5.4|^6.0",
+                "symfony/process": "^5.4|^6.0",
+                "symfony/var-dumper": "^5.4|^6.0"
             },
             "suggest": {
                 "psr/log": "For using the console logger",
@@ -3599,7 +3910,7 @@
                 "terminal"
             ],
             "support": {
-                "source": "https://github.com/symfony/console/tree/v5.4.10"
+                "source": "https://github.com/symfony/console/tree/v6.0.16"
             },
             "funding": [
                 {
@@ -3615,29 +3926,29 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-06-26T13:00:04+00:00"
+            "time": "2022-11-25T18:58:46+00:00"
         },
         {
             "name": "symfony/deprecation-contracts",
-            "version": "v2.5.2",
+            "version": "v3.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+                "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
-                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+                "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.1"
+                "php": ">=8.0.2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "2.5-dev"
+                    "dev-main": "3.0-dev"
                 },
                 "thanks": {
                     "name": "symfony/contracts",
@@ -3666,7 +3977,7 @@
             "description": "A generic function and convention to trigger deprecation notices",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2"
             },
             "funding": [
                 {
@@ -3682,27 +3993,26 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-01-02T09:53:40+00:00"
+            "time": "2022-01-02T09:55:41+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v5.4.9",
+            "version": "v6.0.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "36a017fa4cce1eff1b8e8129ff53513abcef05ba"
+                "reference": "3adca49133bd055ebe6011ed1e012be3c908af79"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/36a017fa4cce1eff1b8e8129ff53513abcef05ba",
-                "reference": "36a017fa4cce1eff1b8e8129ff53513abcef05ba",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/3adca49133bd055ebe6011ed1e012be3c908af79",
+                "reference": "3adca49133bd055ebe6011ed1e012be3c908af79",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.2.5",
+                "php": ">=8.0.2",
                 "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-mbstring": "~1.8",
-                "symfony/polyfill-php80": "^1.16"
+                "symfony/polyfill-mbstring": "~1.8"
             },
             "type": "library",
             "autoload": {
@@ -3730,7 +4040,7 @@
             "description": "Provides basic utilities for the filesystem",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/filesystem/tree/v5.4.9"
+                "source": "https://github.com/symfony/filesystem/tree/v6.0.13"
             },
             "funding": [
                 {
@@ -3746,26 +4056,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-05-20T13:55:35+00:00"
+            "time": "2022-09-21T20:25:27+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v5.4.8",
+            "version": "v6.0.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9"
+                "reference": "09cb683ba5720385ea6966e5e06be2a34f2568b1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/9b630f3427f3ebe7cd346c277a1408b00249dad9",
-                "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/09cb683ba5720385ea6966e5e06be2a34f2568b1",
+                "reference": "09cb683ba5720385ea6966e5e06be2a34f2568b1",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.2.5",
-                "symfony/deprecation-contracts": "^2.1|^3",
-                "symfony/polyfill-php80": "^1.16"
+                "php": ">=8.0.2"
             },
             "type": "library",
             "autoload": {
@@ -3793,7 +4101,7 @@
             "description": "Finds files and directories via an intuitive fluent interface",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/finder/tree/v5.4.8"
+                "source": "https://github.com/symfony/finder/tree/v6.0.11"
             },
             "funding": [
                 {
@@ -3809,27 +4117,25 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-04-15T08:07:45+00:00"
+            "time": "2022-07-29T07:39:48+00:00"
         },
         {
             "name": "symfony/options-resolver",
-            "version": "v5.4.3",
+            "version": "v6.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/options-resolver.git",
-                "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8"
+                "reference": "51f7006670febe4cbcbae177cbffe93ff833250d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8",
-                "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d",
+                "reference": "51f7006670febe4cbcbae177cbffe93ff833250d",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.2.5",
-                "symfony/deprecation-contracts": "^2.1|^3",
-                "symfony/polyfill-php73": "~1.0",
-                "symfony/polyfill-php80": "^1.16"
+                "php": ">=8.0.2",
+                "symfony/deprecation-contracts": "^2.1|^3"
             },
             "type": "library",
             "autoload": {
@@ -3862,7 +4168,7 @@
                 "options"
             ],
             "support": {
-                "source": "https://github.com/symfony/options-resolver/tree/v5.4.3"
+                "source": "https://github.com/symfony/options-resolver/tree/v6.0.3"
             },
             "funding": [
                 {
@@ -3878,20 +4184,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-01-02T09:53:40+00:00"
+            "time": "2022-01-02T09:55:41+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.26.0",
+            "version": "v1.27.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
+                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
-                "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
+                "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
                 "shasum": ""
             },
             "require": {
@@ -3906,7 +4212,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "1.26-dev"
+                    "dev-main": "1.27-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -3944,7 +4250,7 @@
                 "portable"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
             },
             "funding": [
                 {
@@ -3960,20 +4266,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-05-24T11:49:31+00:00"
+            "time": "2022-11-03T14:55:06+00:00"
         },
         {
             "name": "symfony/polyfill-intl-grapheme",
-            "version": "v1.26.0",
+            "version": "v1.27.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
-                "reference": "433d05519ce6990bf3530fba6957499d327395c2"
+                "reference": "511a08c03c1960e08a883f4cffcacd219b758354"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
-                "reference": "433d05519ce6990bf3530fba6957499d327395c2",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
+                "reference": "511a08c03c1960e08a883f4cffcacd219b758354",
                 "shasum": ""
             },
             "require": {
@@ -3985,7 +4291,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "1.26-dev"
+                    "dev-main": "1.27-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -4025,7 +4331,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
             },
             "funding": [
                 {
@@ -4041,20 +4347,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-05-24T11:49:31+00:00"
+            "time": "2022-11-03T14:55:06+00:00"
         },
         {
             "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.26.0",
+            "version": "v1.27.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
+                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
-                "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
                 "shasum": ""
             },
             "require": {
@@ -4066,7 +4372,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "1.26-dev"
+                    "dev-main": "1.27-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -4109,7 +4415,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
             },
             "funding": [
                 {
@@ -4125,20 +4431,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-05-24T11:49:31+00:00"
+            "time": "2022-11-03T14:55:06+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.26.0",
+            "version": "v1.27.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
-                "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
                 "shasum": ""
             },
             "require": {
@@ -4153,7 +4459,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "1.26-dev"
+                    "dev-main": "1.27-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -4192,86 +4498,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-05-24T11:49:31+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php73",
-            "version": "v1.26.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
-                "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.26-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php73\\": ""
-                },
-                "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 7.3+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0"
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
             },
             "funding": [
                 {
@@ -4287,20 +4514,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-05-24T11:49:31+00:00"
+            "time": "2022-11-03T14:55:06+00:00"
         },
         {
             "name": "symfony/polyfill-php80",
-            "version": "v1.26.0",
+            "version": "v1.27.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
-                "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
                 "shasum": ""
             },
             "require": {
@@ -4309,7 +4536,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "1.26-dev"
+                    "dev-main": "1.27-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -4354,7 +4581,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
             },
             "funding": [
                 {
@@ -4370,25 +4597,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-05-10T07:21:04+00:00"
+            "time": "2022-11-03T14:55:06+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v5.4.8",
+            "version": "v6.0.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3"
+                "reference": "44270a08ccb664143dede554ff1c00aaa2247a43"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3",
-                "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3",
+                "url": "https://api.github.com/repos/symfony/process/zipball/44270a08ccb664143dede554ff1c00aaa2247a43",
+                "reference": "44270a08ccb664143dede554ff1c00aaa2247a43",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-php80": "^1.16"
+                "php": ">=8.0.2"
             },
             "type": "library",
             "autoload": {
@@ -4416,7 +4642,7 @@
             "description": "Executes commands in sub-processes",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/process/tree/v5.4.8"
+                "source": "https://github.com/symfony/process/tree/v6.0.11"
             },
             "funding": [
                 {
@@ -4432,33 +4658,41 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-04-08T05:07:18+00:00"
+            "time": "2022-06-27T17:10:44+00:00"
         },
         {
             "name": "symfony/service-contracts",
-            "version": "v1.1.2",
+            "version": "v2.5.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0"
+                "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0",
-                "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+                "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.2.5",
+                "psr/container": "^1.1",
+                "symfony/deprecation-contracts": "^2.1|^3"
+            },
+            "conflict": {
+                "ext-psr": "<1.1|>=2"
             },
             "suggest": {
-                "psr/container": "",
                 "symfony/service-implementation": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.1-dev"
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
@@ -4491,40 +4725,53 @@
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/service-contracts/tree/v1.1.2"
+                "source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
             },
-            "time": "2019-05-28T07:50:59+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-05-30T19:17:29+00:00"
         },
         {
             "name": "symfony/string",
-            "version": "v5.4.10",
+            "version": "v6.0.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/string.git",
-                "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097"
+                "reference": "51ac0fa0ccf132a00519b87c97e8f775fa14e771"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/4432bc7df82a554b3e413a8570ce2fea90e94097",
-                "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097",
+                "url": "https://api.github.com/repos/symfony/string/zipball/51ac0fa0ccf132a00519b87c97e8f775fa14e771",
+                "reference": "51ac0fa0ccf132a00519b87c97e8f775fa14e771",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.2.5",
+                "php": ">=8.0.2",
                 "symfony/polyfill-ctype": "~1.8",
                 "symfony/polyfill-intl-grapheme": "~1.0",
                 "symfony/polyfill-intl-normalizer": "~1.0",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php80": "~1.15"
+                "symfony/polyfill-mbstring": "~1.0"
             },
             "conflict": {
-                "symfony/translation-contracts": ">=3.0"
+                "symfony/translation-contracts": "<2.0"
             },
             "require-dev": {
-                "symfony/error-handler": "^4.4|^5.0|^6.0",
-                "symfony/http-client": "^4.4|^5.0|^6.0",
-                "symfony/translation-contracts": "^1.1|^2",
-                "symfony/var-exporter": "^4.4|^5.0|^6.0"
+                "symfony/error-handler": "^5.4|^6.0",
+                "symfony/http-client": "^5.4|^6.0",
+                "symfony/translation-contracts": "^2.0|^3.0",
+                "symfony/var-exporter": "^5.4|^6.0"
             },
             "type": "library",
             "autoload": {
@@ -4563,7 +4810,7 @@
                 "utf8"
             ],
             "support": {
-                "source": "https://github.com/symfony/string/tree/v5.4.10"
+                "source": "https://github.com/symfony/string/tree/v6.0.15"
             },
             "funding": [
                 {
@@ -4579,7 +4826,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-06-26T15:57:47+00:00"
+            "time": "2022-10-10T09:34:08+00:00"
         },
         {
             "name": "theseer/tokenizer",
@@ -4633,24 +4880,24 @@
         },
         {
             "name": "vimeo/psalm",
-            "version": "4.24.0",
+            "version": "5.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/vimeo/psalm.git",
-                "reference": "06dd975cb55d36af80f242561738f16c5f58264f"
+                "reference": "4e177bf0c9f03c17d2fbfd83b7cc9c47605274d8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/vimeo/psalm/zipball/06dd975cb55d36af80f242561738f16c5f58264f",
-                "reference": "06dd975cb55d36af80f242561738f16c5f58264f",
+                "url": "https://api.github.com/repos/vimeo/psalm/zipball/4e177bf0c9f03c17d2fbfd83b7cc9c47605274d8",
+                "reference": "4e177bf0c9f03c17d2fbfd83b7cc9c47605274d8",
                 "shasum": ""
             },
             "require": {
                 "amphp/amp": "^2.4.2",
                 "amphp/byte-stream": "^1.5",
-                "composer/package-versions-deprecated": "^1.8.0",
+                "composer/package-versions-deprecated": "^1.10.0",
                 "composer/semver": "^1.4 || ^2.0 || ^3.0",
-                "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0",
+                "composer/xdebug-handler": "^2.0 || ^3.0",
                 "dnoegel/php-xdg-base-dir": "^0.1.1",
                 "ext-ctype": "*",
                 "ext-dom": "*",
@@ -4659,34 +4906,34 @@
                 "ext-mbstring": "*",
                 "ext-simplexml": "*",
                 "ext-tokenizer": "*",
-                "felixfbecker/advanced-json-rpc": "^3.0.3",
-                "felixfbecker/language-server-protocol": "^1.5",
+                "felixfbecker/advanced-json-rpc": "^3.1",
+                "felixfbecker/language-server-protocol": "^1.5.2",
                 "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
                 "nikic/php-parser": "^4.13",
                 "openlss/lib-array2xml": "^1.0",
-                "php": "^7.1|^8",
-                "sebastian/diff": "^3.0 || ^4.0",
-                "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0",
-                "symfony/polyfill-php80": "^1.25",
-                "webmozart/path-util": "^2.3"
+                "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0",
+                "sebastian/diff": "^4.0",
+                "symfony/console": "^4.1.6 || ^5.0 || ^6.0",
+                "symfony/filesystem": "^5.4 || ^6.0",
+                "symfony/polyfill-php80": "^1.25"
             },
             "provide": {
                 "psalm/psalm": "self.version"
             },
             "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.2",
-                "brianium/paratest": "^4.0||^6.0",
+                "bamarni/composer-bin-plugin": "^1.4",
+                "brianium/paratest": "^6.0",
                 "ext-curl": "*",
+                "mockery/mockery": "^1.5",
+                "nunomaduro/mock-final-classes": "^1.1",
                 "php-parallel-lint/php-parallel-lint": "^1.2",
-                "phpdocumentor/reflection-docblock": "^5",
-                "phpmyadmin/sql-parser": "5.1.0||dev-master",
-                "phpspec/prophecy": ">=1.9.0",
-                "phpunit/phpunit": "^9.0",
-                "psalm/plugin-phpunit": "^0.16",
-                "slevomat/coding-standard": "^7.0",
-                "squizlabs/php_codesniffer": "^3.5",
-                "symfony/process": "^4.3 || ^5.0 || ^6.0",
-                "weirdan/prophecy-shim": "^1.0 || ^2.0"
+                "phpstan/phpdoc-parser": "^1.6",
+                "phpunit/phpunit": "^9.5",
+                "psalm/plugin-mockery": "^1.1",
+                "psalm/plugin-phpunit": "^0.18",
+                "slevomat/coding-standard": "^8.4",
+                "squizlabs/php_codesniffer": "^3.6",
+                "symfony/process": "^4.4 || ^5.0 || ^6.0"
             },
             "suggest": {
                 "ext-curl": "In order to send data to shepherd",
@@ -4702,17 +4949,14 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.x-dev",
+                    "dev-master": "5.x-dev",
+                    "dev-4.x": "4.x-dev",
                     "dev-3.x": "3.x-dev",
                     "dev-2.x": "2.x-dev",
                     "dev-1.x": "1.x-dev"
                 }
             },
             "autoload": {
-                "files": [
-                    "src/functions.php",
-                    "src/spl_object_id.php"
-                ],
                 "psr-4": {
                     "Psalm\\": "src/Psalm/"
                 }
@@ -4734,9 +4978,9 @@
             ],
             "support": {
                 "issues": "https://github.com/vimeo/psalm/issues",
-                "source": "https://github.com/vimeo/psalm/tree/4.24.0"
+                "source": "https://github.com/vimeo/psalm/tree/5.0.0"
             },
-            "time": "2022-06-26T11:47:54+00:00"
+            "time": "2022-11-30T06:06:01+00:00"
         },
         {
             "name": "webimpress/coding-standard",
@@ -4793,6 +5037,65 @@
             ],
             "time": "2022-02-15T19:52:12+00:00"
         },
+        {
+            "name": "webimpress/safe-writer",
+            "version": "2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webimpress/safe-writer.git",
+                "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
+                "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.3 || ^8.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.5.4",
+                "vimeo/psalm": "^4.7",
+                "webimpress/coding-standard": "^1.2.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.2.x-dev",
+                    "dev-develop": "2.3.x-dev",
+                    "dev-release-1.0": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Webimpress\\SafeWriter\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "description": "Tool to write files safely, to avoid race conditions",
+            "keywords": [
+                "concurrent write",
+                "file writer",
+                "race condition",
+                "safe writer",
+                "webimpress"
+            ],
+            "support": {
+                "issues": "https://github.com/webimpress/safe-writer/issues",
+                "source": "https://github.com/webimpress/safe-writer/tree/2.2.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/michalbundyra",
+                    "type": "github"
+                }
+            ],
+            "time": "2021-04-19T16:34:45+00:00"
+        },
         {
             "name": "webmozart/assert",
             "version": "1.11.0",
@@ -4852,36 +5155,35 @@
             "time": "2022-06-03T18:03:27+00:00"
         },
         {
-            "name": "webmozart/path-util",
-            "version": "2.3.0",
+            "name": "webmozart/glob",
+            "version": "4.6.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/webmozart/path-util.git",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
+                "url": "https://github.com/webmozarts/glob.git",
+                "reference": "3c17f7dec3d9d0e87b575026011f2e75a56ed655"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+                "url": "https://api.github.com/repos/webmozarts/glob/zipball/3c17f7dec3d9d0e87b575026011f2e75a56ed655",
+                "reference": "3c17f7dec3d9d0e87b575026011f2e75a56ed655",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3",
-                "webmozart/assert": "~1.0"
+                "php": "^7.3 || ^8.0.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^9.5",
+                "symfony/filesystem": "^5.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.3-dev"
+                    "dev-master": "4.1-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Webmozart\\PathUtil\\": "src/"
+                    "Webmozart\\Glob\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -4894,26 +5196,27 @@
                     "email": "bschussek@gmail.com"
                 }
             ],
-            "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
+            "description": "A PHP implementation of Ant's glob.",
             "support": {
-                "issues": "https://github.com/webmozart/path-util/issues",
-                "source": "https://github.com/webmozart/path-util/tree/2.3.0"
+                "issues": "https://github.com/webmozarts/glob/issues",
+                "source": "https://github.com/webmozarts/glob/tree/4.6.0"
             },
-            "abandoned": "symfony/filesystem",
-            "time": "2015-12-17T08:42:14+00:00"
+            "time": "2022-05-24T19:45:58+00:00"
         }
     ],
     "aliases": [],
     "minimum-stability": "stable",
-    "stability-flags": [],
+    "stability-flags": {
+        "mikey179/vfsstream": 15
+    },
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": {
-        "php": "^7.3 || ~8.0.0 || ~8.1.0"
+        "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
     },
     "platform-dev": [],
     "platform-overrides": {
-        "php": "7.3.99"
+        "php": "8.0.99"
     },
     "plugin-api-version": "2.3.0"
 }
diff --git a/vendor/laminas/laminas-servicemanager/src/AbstractFactory/ConfigAbstractFactory.php b/vendor/laminas/laminas-servicemanager/src/AbstractFactory/ConfigAbstractFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..3b58ad8f622634066cb5bc1c462d161b0e868f21
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/AbstractFactory/ConfigAbstractFactory.php
@@ -0,0 +1,78 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\AbstractFactory;
+
+use ArrayObject;
+use Laminas\ServiceManager\Exception\ServiceNotCreatedException;
+use Laminas\ServiceManager\Factory\AbstractFactoryInterface;
+use Psr\Container\ContainerInterface;
+
+use function array_key_exists;
+use function array_map;
+use function array_values;
+use function is_array;
+use function json_encode;
+
+final class ConfigAbstractFactory implements AbstractFactoryInterface
+{
+    /**
+     * Factory can create the service if there is a key for it in the config
+     *
+     * {@inheritdoc}
+     */
+    public function canCreate(ContainerInterface $container, $requestedName)
+    {
+        if (! $container->has('config')) {
+            return false;
+        }
+        $config = $container->get('config');
+        if (! isset($config[self::class])) {
+            return false;
+        }
+        $dependencies = $config[self::class];
+
+        return is_array($dependencies) && array_key_exists($requestedName, $dependencies);
+    }
+
+    /** {@inheritDoc} */
+    public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null)
+    {
+        if (! $container->has('config')) {
+            throw new ServiceNotCreatedException('Cannot find a config array in the container');
+        }
+
+        $config = $container->get('config');
+
+        if (! (is_array($config) || $config instanceof ArrayObject)) {
+            throw new ServiceNotCreatedException('Config must be an array or an instance of ArrayObject');
+        }
+        if (! isset($config[self::class])) {
+            throw new ServiceNotCreatedException('Cannot find a `' . self::class . '` key in the config array');
+        }
+
+        $dependencies = $config[self::class];
+
+        if (
+            ! is_array($dependencies)
+            || ! array_key_exists($requestedName, $dependencies)
+            || ! is_array($dependencies[$requestedName])
+        ) {
+            throw new ServiceNotCreatedException('Service dependencies config must exist and be an array');
+        }
+
+        $serviceDependencies = $dependencies[$requestedName];
+
+        if ($serviceDependencies !== array_values(array_map('strval', $serviceDependencies))) {
+            $problem = json_encode(array_map('gettype', $serviceDependencies));
+            throw new ServiceNotCreatedException(
+                'Service dependencies config must be an array of strings, ' . $problem . ' given'
+            );
+        }
+
+        $arguments = array_map([$container, 'get'], $serviceDependencies);
+
+        return new $requestedName(...$arguments);
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/AbstractFactory/ReflectionBasedAbstractFactory.php b/vendor/laminas/laminas-servicemanager/src/AbstractFactory/ReflectionBasedAbstractFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..4f4654bd5599f3b513b5dc587e37504703c8896c
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/AbstractFactory/ReflectionBasedAbstractFactory.php
@@ -0,0 +1,245 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\AbstractFactory;
+
+use Laminas\ServiceManager\Exception\ServiceNotFoundException;
+use Laminas\ServiceManager\Factory\AbstractFactoryInterface;
+use Psr\Container\ContainerInterface;
+use ReflectionClass;
+use ReflectionNamedType;
+use ReflectionParameter;
+
+use function array_map;
+use function class_exists;
+use function interface_exists;
+use function is_string;
+use function sprintf;
+
+/**
+ * Reflection-based factory.
+ *
+ * To ease development, this factory may be used for classes with
+ * type-hinted arguments that resolve to services in the application
+ * container; this allows omitting the step of writing a factory for
+ * each controller.
+ *
+ * You may use it as either an abstract factory:
+ *
+ * <code>
+ * 'service_manager' => [
+ *     'abstract_factories' => [
+ *         ReflectionBasedAbstractFactory::class,
+ *     ],
+ * ],
+ * </code>
+ *
+ * Or as a factory, mapping a class name to it:
+ *
+ * <code>
+ * 'service_manager' => [
+ *     'factories' => [
+ *         MyClassWithDependencies::class => ReflectionBasedAbstractFactory::class,
+ *     ],
+ * ],
+ * </code>
+ *
+ * The latter approach is more explicit, and also more performant.
+ *
+ * The factory has the following constraints/features:
+ *
+ * - A parameter named `$config` typehinted as an array will receive the
+ *   application "config" service (i.e., the merged configuration).
+ * - Parameters type-hinted against array, but not named `$config` will
+ *   be injected with an empty array.
+ * - Scalar parameters will result in an exception being thrown, unless
+ *   a default value is present; if the default is present, that will be used.
+ * - If a service cannot be found for a given typehint, the factory will
+ *   raise an exception detailing this.
+ * - Some services provided by Laminas components do not have
+ *   entries based on their class name (for historical reasons); the
+ *   factory allows defining a map of these class/interface names to the
+ *   corresponding service name to allow them to resolve.
+ *
+ * `$options` passed to the factory are ignored in all cases, as we cannot
+ * make assumptions about which argument(s) they might replace.
+ *
+ * Based on the LazyControllerAbstractFactory from laminas-mvc.
+ */
+class ReflectionBasedAbstractFactory implements AbstractFactoryInterface
+{
+    /**
+     * Maps known classes/interfaces to the service that provides them; only
+     * required for those services with no entry based on the class/interface
+     * name.
+     *
+     * Extend the class if you wish to add to the list.
+     *
+     * Example:
+     *
+     * <code>
+     * [
+     *     \Laminas\Filter\FilterPluginManager::class       => 'FilterManager',
+     *     \Laminas\Validator\ValidatorPluginManager::class => 'ValidatorManager',
+     * ]
+     * </code>
+     *
+     * @var string[]
+     */
+    protected $aliases = [];
+
+    /**
+     * Allows overriding the internal list of aliases. These should be of the
+     * form `class name => well-known service name`; see the documentation for
+     * the `$aliases` property for details on what is accepted.
+     *
+     * @param string[] $aliases
+     */
+    public function __construct(array $aliases = [])
+    {
+        if (! empty($aliases)) {
+            $this->aliases = $aliases;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @return DispatchableInterface
+     */
+    public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null)
+    {
+        $reflectionClass = new ReflectionClass($requestedName);
+
+        if (null === ($constructor = $reflectionClass->getConstructor())) {
+            return new $requestedName();
+        }
+
+        $reflectionParameters = $constructor->getParameters();
+
+        if (empty($reflectionParameters)) {
+            return new $requestedName();
+        }
+
+        $resolver = $container->has('config')
+            ? $this->resolveParameterWithConfigService($container, $requestedName)
+            : $this->resolveParameterWithoutConfigService($container, $requestedName);
+
+        $parameters = array_map($resolver, $reflectionParameters);
+
+        return new $requestedName(...$parameters);
+    }
+
+    /** {@inheritDoc} */
+    public function canCreate(ContainerInterface $container, $requestedName)
+    {
+        return class_exists($requestedName) && $this->canCallConstructor($requestedName);
+    }
+
+    private function canCallConstructor(string $requestedName): bool
+    {
+        $constructor = (new ReflectionClass($requestedName))->getConstructor();
+
+        return $constructor === null || $constructor->isPublic();
+    }
+
+    /**
+     * Resolve a parameter to a value.
+     *
+     * Returns a callback for resolving a parameter to a value, but without
+     * allowing mapping array `$config` arguments to the `config` service.
+     *
+     * @param string $requestedName
+     * @return callable
+     */
+    private function resolveParameterWithoutConfigService(ContainerInterface $container, $requestedName)
+    {
+        /**
+         * @param ReflectionParameter $parameter
+         * @return mixed
+         * @throws ServiceNotFoundException If type-hinted parameter cannot be
+         *   resolved to a service in the container.
+         * @psalm-suppress MissingClosureReturnType
+         */
+        return fn(ReflectionParameter $parameter) => $this->resolveParameter($parameter, $container, $requestedName);
+    }
+
+    /**
+     * Returns a callback for resolving a parameter to a value, including mapping 'config' arguments.
+     *
+     * Unlike resolveParameter(), this version will detect `$config` array
+     * arguments and have them return the 'config' service.
+     *
+     * @param string $requestedName
+     * @return callable
+     */
+    private function resolveParameterWithConfigService(ContainerInterface $container, $requestedName)
+    {
+        /**
+         * @param ReflectionParameter $parameter
+         * @return mixed
+         * @throws ServiceNotFoundException If type-hinted parameter cannot be
+         *   resolved to a service in the container.
+         */
+        return function (ReflectionParameter $parameter) use ($container, $requestedName) {
+            if ($parameter->getName() === 'config') {
+                $type = $parameter->getType();
+                if ($type instanceof ReflectionNamedType && $type->getName() === 'array') {
+                    return $container->get('config');
+                }
+            }
+            return $this->resolveParameter($parameter, $container, $requestedName);
+        };
+    }
+
+    /**
+     * Logic common to all parameter resolution.
+     *
+     * @param string $requestedName
+     * @return mixed
+     * @throws ServiceNotFoundException If type-hinted parameter cannot be
+     *   resolved to a service in the container.
+     */
+    private function resolveParameter(ReflectionParameter $parameter, ContainerInterface $container, $requestedName)
+    {
+        $type = $parameter->getType();
+        $type = $type instanceof ReflectionNamedType ? $type->getName() : null;
+
+        if ($type === 'array') {
+            return [];
+        }
+
+        if ($type === null || (is_string($type) && ! class_exists($type) && ! interface_exists($type))) {
+            if (! $parameter->isDefaultValueAvailable()) {
+                throw new ServiceNotFoundException(sprintf(
+                    'Unable to create service "%s"; unable to resolve parameter "%s" '
+                    . 'to a class, interface, or array type',
+                    $requestedName,
+                    $parameter->getName()
+                ));
+            }
+
+            return $parameter->getDefaultValue();
+        }
+
+        $type = $this->aliases[$type] ?? $type;
+
+        if ($container->has($type)) {
+            return $container->get($type);
+        }
+
+        if (! $parameter->isOptional()) {
+            throw new ServiceNotFoundException(sprintf(
+                'Unable to create service "%s"; unable to resolve parameter "%s" using type hint "%s"',
+                $requestedName,
+                $parameter->getName(),
+                $type
+            ));
+        }
+
+        // Type not available in container, but the value is optional and has a
+        // default defined.
+        return $parameter->getDefaultValue();
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/AbstractFactoryInterface.php b/vendor/laminas/laminas-servicemanager/src/AbstractFactoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..2a8ff71b2408228c57c1ae0c1f5ac776ed731939
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/AbstractFactoryInterface.php
@@ -0,0 +1,53 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+/**
+ * Backwards-compatibility shim for AbstractFactoryInterface.
+ *
+ * Implementations should update to implement only Laminas\ServiceManager\Factory\AbstractFactoryInterface.
+ *
+ * If upgrading from v2, take the following steps:
+ *
+ * - rename the method `canCreateServiceWithName()` to `canCreate()`, and:
+ *   - rename the `$serviceLocator` argument to `$container`, and change the
+ *     typehint to `Psr\Container\ContainerInterface`
+ *   - merge the `$name` and `$requestedName` arguments
+ * - rename the method `createServiceWithName()` to `__invoke()`, and:
+ *   - rename the `$serviceLocator` argument to `$container`, and change the
+ *     typehint to `Psr\Container\ContainerInterface`
+ *   - merge the `$name` and `$requestedName` arguments
+ *   - add the optional `array $options = null` argument.
+ * - create a `canCreateServiceWithName()` method as defined in this interface, and have it
+ *   proxy to `canCreate()`, passing `$requestedName` as the second argument.
+ * - create a `createServiceWithName()` method as defined in this interface, and have it
+ *   proxy to `__invoke()`, passing `$requestedName` as the second argument.
+ *
+ * Once you have tested your code, you can then update your class to only implement
+ * Laminas\ServiceManager\Factory\AbstractFactoryInterface, and remove the `canCreateServiceWithName()`
+ * and `createServiceWithName()` methods.
+ *
+ * @deprecated Use Laminas\ServiceManager\Factory\AbstractFactoryInterface instead.
+ */
+interface AbstractFactoryInterface extends Factory\AbstractFactoryInterface
+{
+    /**
+     * Determine if we can create a service with name
+     *
+     * @param string $name
+     * @param string $requestedName
+     * @return bool
+     */
+    public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName);
+
+    /**
+     * Create service with name
+     *
+     * @param string $name
+     * @param string $requestedName
+     * @return mixed
+     */
+    public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/AbstractPluginManager.php b/vendor/laminas/laminas-servicemanager/src/AbstractPluginManager.php
new file mode 100644
index 0000000000000000000000000000000000000000..1e113e124f8c1215c5cc59f19398c35a95580830
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/AbstractPluginManager.php
@@ -0,0 +1,221 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+use Laminas\ServiceManager\Exception\ContainerModificationsNotAllowedException;
+use Laminas\ServiceManager\Exception\InvalidServiceException;
+use Psr\Container\ContainerInterface;
+
+use function class_exists;
+use function gettype;
+use function is_object;
+use function method_exists;
+use function sprintf;
+use function trigger_error;
+
+use const E_USER_DEPRECATED;
+
+/**
+ * Abstract plugin manager.
+ *
+ * Abstract PluginManagerInterface implementation providing:
+ *
+ * - creation context support. The constructor accepts the parent container
+ *   instance, which is then used when creating instances.
+ * - plugin validation. Implementations may define the `$instanceOf` property
+ *   to indicate what class types constitute valid plugins, omitting the
+ *   requirement to define the `validate()` method.
+ *
+ * The implementation extends `ServiceManager`, thus providing the same set
+ * of capabilities as found in that implementation.
+ *
+ * @template InstanceType
+ * @implements PluginManagerInterface<InstanceType>
+ * @psalm-import-type ServiceManagerConfiguration from ServiceManager
+ * @psalm-suppress PropertyNotSetInConstructor
+ */
+abstract class AbstractPluginManager extends ServiceManager implements PluginManagerInterface
+{
+    /**
+     * Whether or not to auto-add a FQCN as an invokable if it exists.
+     *
+     * @var bool
+     */
+    protected $autoAddInvokableClass = true;
+
+    /**
+     * An object type that the created instance must be instanced of
+     *
+     * @var null|string
+     * @psalm-var null|class-string<InstanceType>
+     */
+    protected $instanceOf;
+
+    /**
+     * Sets the provided $parentLocator as the creation context for all
+     * factories; for $config, {@see \Laminas\ServiceManager\ServiceManager::configure()}
+     * for details on its accepted structure.
+     *
+     * @param null|ConfigInterface|ContainerInterface $configInstanceOrParentLocator
+     * @param array $config
+     * @psalm-param ServiceManagerConfiguration $config
+     */
+    public function __construct($configInstanceOrParentLocator = null, array $config = [])
+    {
+        /** @psalm-suppress DocblockTypeContradiction */
+        if (
+            null !== $configInstanceOrParentLocator
+            && ! $configInstanceOrParentLocator instanceof ConfigInterface
+            && ! $configInstanceOrParentLocator instanceof ContainerInterface
+        ) {
+            throw new Exception\InvalidArgumentException(sprintf(
+                '%s expects a ConfigInterface or ContainerInterface instance as the first argument; received %s',
+                self::class,
+                is_object($configInstanceOrParentLocator)
+                    ? $configInstanceOrParentLocator::class
+                    : gettype($configInstanceOrParentLocator)
+            ));
+        }
+
+        if ($configInstanceOrParentLocator instanceof ConfigInterface) {
+            trigger_error(sprintf(
+                'Usage of %s as a constructor argument for %s is now deprecated',
+                ConfigInterface::class,
+                static::class
+            ), E_USER_DEPRECATED);
+            $config = $configInstanceOrParentLocator->toArray();
+        }
+
+        parent::__construct($config);
+
+        if (! $configInstanceOrParentLocator instanceof ContainerInterface) {
+            trigger_error(sprintf(
+                '%s now expects a %s instance representing the parent container; please update your code',
+                __METHOD__,
+                ContainerInterface::class
+            ), E_USER_DEPRECATED);
+        }
+
+        $this->creationContext = $configInstanceOrParentLocator instanceof ContainerInterface
+            ? $configInstanceOrParentLocator
+            : $this;
+    }
+
+    /**
+     * Override configure() to validate service instances.
+     *
+     * @param  array $config
+     * @psalm-param ServiceManagerConfiguration $config
+     * @return self
+     * @throws InvalidServiceException If an instance passed in the `services` configuration is invalid for the
+     *                                 plugin manager.
+     * @throws ContainerModificationsNotAllowedException If the allow override flag has been toggled off, and a
+     *                                                   service instanceexists for a given service.
+     */
+    public function configure(array $config)
+    {
+        if (isset($config['services'])) {
+            /** @psalm-suppress MixedAssignment */
+            foreach ($config['services'] as $service) {
+                $this->validate($service);
+            }
+        }
+
+        parent::configure($config);
+
+        return $this;
+    }
+
+    /**
+     * Override setService for additional plugin validation.
+     *
+     * {@inheritDoc}
+     *
+     * @param string|class-string<InstanceType> $name
+     * @param InstanceType $service
+     */
+    public function setService($name, $service)
+    {
+        $this->validate($service);
+        parent::setService($name, $service);
+    }
+
+    /**
+     * @param class-string<InstanceType>|string $name Service name of plugin to retrieve.
+     * @param null|array<mixed> $options Options to use when creating the instance.
+     * @return mixed
+     * @psalm-return ($name is class-string<InstanceType> ? InstanceType : mixed)
+     * @throws Exception\ServiceNotFoundException If the manager does not have
+     *     a service definition for the instance, and the service is not
+     *     auto-invokable.
+     * @throws InvalidServiceException If the plugin created is invalid for the
+     *     plugin context.
+     */
+    public function get($name, ?array $options = null)
+    {
+        if (! $this->has($name)) {
+            if (! $this->autoAddInvokableClass || ! class_exists($name)) {
+                throw new Exception\ServiceNotFoundException(sprintf(
+                    'A plugin by the name "%s" was not found in the plugin manager %s',
+                    $name,
+                    static::class
+                ));
+            }
+
+            $this->setFactory($name, Factory\InvokableFactory::class);
+        }
+
+        $instance = ! $options ? parent::get($name) : $this->build($name, $options);
+        $this->validate($instance);
+        return $instance;
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @psalm-assert InstanceType $instance
+     */
+    public function validate(mixed $instance)
+    {
+        if (method_exists($this, 'validatePlugin')) {
+            trigger_error(sprintf(
+                '%s::validatePlugin() has been deprecated as of 3.0; please define validate() instead',
+                static::class
+            ), E_USER_DEPRECATED);
+            $this->validatePlugin($instance);
+            return;
+        }
+
+        if (empty($this->instanceOf) || $instance instanceof $this->instanceOf) {
+            return;
+        }
+
+        throw new InvalidServiceException(sprintf(
+            'Plugin manager "%s" expected an instance of type "%s", but "%s" was received',
+            self::class,
+            $this->instanceOf,
+            is_object($instance) ? $instance::class : gettype($instance)
+        ));
+    }
+
+    /**
+     * Implemented for backwards compatibility only.
+     *
+     * Returns the creation context.
+     *
+     * @deprecated since 3.0.0. The creation context should be passed during
+     *     instantiation instead.
+     *
+     * @return void
+     */
+    public function setServiceLocator(ContainerInterface $container)
+    {
+        trigger_error(sprintf(
+            'Usage of %s is deprecated since v3.0.0; please pass the container to the constructor instead',
+            __METHOD__
+        ), E_USER_DEPRECATED);
+        $this->creationContext = $container;
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Config.php b/vendor/laminas/laminas-servicemanager/src/Config.php
new file mode 100644
index 0000000000000000000000000000000000000000..8024bdc0ccad8b72c67ebd92db1910a1ad05a422
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Config.php
@@ -0,0 +1,102 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+use Laminas\Stdlib\ArrayUtils;
+
+use function array_keys;
+
+/**
+ * Object for defining configuration and configuring an existing service manager instance.
+ *
+ * In order to provide configuration merging capabilities, this class implements
+ * the same functionality as `Laminas\Stdlib\ArrayUtils::merge()`. That routine
+ * allows developers to specifically shape how values are merged:
+ *
+ * - A value which is an instance of `MergeRemoveKey` indicates the value should
+ *   be removed during merge.
+ * - A value that is an instance of `MergeReplaceKeyInterface` indicates that the
+ *   value it contains should be used to replace any previous versions.
+ *
+ * These features are advanced, and not typically used. If you wish to use them,
+ * you will need to require the laminas-stdlib package in your application.
+ *
+ * @psalm-import-type ServiceManagerConfigurationType from ConfigInterface
+ */
+class Config implements ConfigInterface
+{
+    /** @var array<string,bool> */
+    private array $allowedKeys = [
+        'abstract_factories' => true,
+        'aliases'            => true,
+        'delegators'         => true,
+        'factories'          => true,
+        'initializers'       => true,
+        'invokables'         => true,
+        'lazy_services'      => true,
+        'services'           => true,
+        'shared'             => true,
+    ];
+
+    /**
+     * @var array<string,array>
+     * @psalm-var ServiceManagerConfigurationType
+     */
+    protected $config = [
+        'abstract_factories' => [],
+        'aliases'            => [],
+        'delegators'         => [],
+        'factories'          => [],
+        'initializers'       => [],
+        'invokables'         => [],
+        'lazy_services'      => [],
+        'services'           => [],
+        'shared'             => [],
+    ];
+
+    /**
+     * @psalm-param ServiceManagerConfigurationType $config
+     */
+    public function __construct(array $config = [])
+    {
+        // Only merge keys we're interested in
+        foreach (array_keys($config) as $key) {
+            if (! isset($this->allowedKeys[$key])) {
+                unset($config[$key]);
+            }
+        }
+
+        /** @psalm-suppress ArgumentTypeCoercion */
+        $this->config = $this->merge($this->config, $config);
+    }
+
+    /**
+     * @inheritDoc
+     */
+    public function configureServiceManager(ServiceManager $serviceManager)
+    {
+        return $serviceManager->configure($this->config);
+    }
+
+    /**
+     * @inheritDoc
+     */
+    public function toArray()
+    {
+        return $this->config;
+    }
+
+    /**
+     * @psalm-param ServiceManagerConfigurationType $a
+     * @psalm-param ServiceManagerConfigurationType $b
+     * @psalm-return ServiceManagerConfigurationType
+     * @psalm-suppress MixedReturnTypeCoercion
+     */
+    private function merge(array $a, array $b)
+    {
+        /** @psalm-suppress MixedReturnTypeCoercion */
+        return ArrayUtils::merge($a, $b);
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/ConfigInterface.php b/vendor/laminas/laminas-servicemanager/src/ConfigInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..7d199f10cbd60b961c66bae792b7e7e244040f70
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/ConfigInterface.php
@@ -0,0 +1,91 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+use ArrayAccess;
+use Psr\Container\ContainerInterface;
+
+/**
+ * @see ContainerInterface
+ * @see ArrayAccess
+ *
+ * @psalm-type AbstractFactoriesConfigurationType = array<
+ *      array-key,
+ *      (class-string<Factory\AbstractFactoryInterface>|Factory\AbstractFactoryInterface)
+ * >
+ * @psalm-type DelegatorsConfigurationType = array<
+ *      string,
+ *      array<
+ *          array-key,
+ *          (class-string<Factory\DelegatorFactoryInterface>|Factory\DelegatorFactoryInterface)
+ *          |callable(ContainerInterface,string,callable():object,array<mixed>|null):object
+ *      >
+ * >
+ * @psalm-type FactoriesConfigurationType = array<
+ *      string,
+ *      (class-string<Factory\FactoryInterface>|Factory\FactoryInterface)
+ *      |callable(ContainerInterface,?string,?array<mixed>|null):object
+ * >
+ * @psalm-type InitializersConfigurationType = array<
+ *      array-key,
+ *      (class-string<Initializer\InitializerInterface>|Initializer\InitializerInterface)
+ *      |callable(ContainerInterface,object):void
+ * >
+ * @psalm-type LazyServicesConfigurationType = array{
+ *      class_map?:array<string,class-string>,
+ *      proxies_namespace?:non-empty-string,
+ *      proxies_target_dir?:non-empty-string,
+ *      write_proxy_files?:bool
+ * }
+ * @psalm-type ServiceManagerConfigurationType = array{
+ *     abstract_factories?: AbstractFactoriesConfigurationType,
+ *     aliases?: array<string,string>,
+ *     delegators?: DelegatorsConfigurationType,
+ *     factories?: FactoriesConfigurationType,
+ *     initializers?: InitializersConfigurationType,
+ *     invokables?: array<string,string>,
+ *     lazy_services?: LazyServicesConfigurationType,
+ *     services?: array<string,object|array>,
+ *     shared?:array<string,bool>,
+ *     ...
+ * }
+ */
+interface ConfigInterface
+{
+    /**
+     * Configure a service manager.
+     *
+     * Implementations should pull configuration from somewhere (typically
+     * local properties) and pass it to a ServiceManager's withConfig() method,
+     * returning a new instance.
+     *
+     * @return ServiceManager
+     */
+    public function configureServiceManager(ServiceManager $serviceManager);
+
+    /**
+     * Return configuration for a service manager instance as an array.
+     *
+     * Implementations MUST return an array compatible with ServiceManager::configure,
+     * containing one or more of the following keys:
+     *
+     * - abstract_factories
+     * - aliases
+     * - delegators
+     * - factories
+     * - initializers
+     * - invokables
+     * - lazy_services
+     * - services
+     * - shared
+     *
+     * In other words, this should return configuration that can be used to instantiate
+     * a service manager or plugin manager, or pass to its `withConfig()` method.
+     *
+     * @return array
+     * @psalm-return ServiceManagerConfigurationType
+     */
+    public function toArray();
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/DelegatorFactoryInterface.php b/vendor/laminas/laminas-servicemanager/src/DelegatorFactoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..1b30ecf6030602e757227aca299789872caae7e9
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/DelegatorFactoryInterface.php
@@ -0,0 +1,41 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+/**
+ * Backwards-compatibility shim for DelegatorFactoryInterface.
+ *
+ * Implementations should update to implement only Laminas\ServiceManager\Factory\DelegatorFactoryInterface.
+ *
+ * If upgrading from v2, take the following steps:
+ *
+ * - rename the method `createDelegatorWithName()` to `__invoke()`, and:
+ *   - rename the `$serviceLocator` argument to `$container`, and change the
+ *     typehint to `Psr\Container\ContainerInterface`
+ *   - merge the `$name` and `$requestedName` arguments
+ *   - add the `callable` typehint to the `$callback` argument
+ *   - add the optional `array $options = null` argument as a final argument
+ * - create a `createDelegatorWithName()` method as defined in this interface, and have it
+ *   proxy to `__invoke()`, passing `$requestedName` as the second argument.
+ *
+ * Once you have tested your code, you can then update your class to only implement
+ * Laminas\ServiceManager\Factory\DelegatorFactoryInterface, and remove the `createDelegatorWithName()`
+ * method.
+ *
+ * @deprecated Use Laminas\ServiceManager\Factory\DelegatorFactoryInterface instead.
+ */
+interface DelegatorFactoryInterface extends Factory\DelegatorFactoryInterface
+{
+    /**
+     * A factory that creates delegates of a given service
+     *
+     * @param ServiceLocatorInterface $serviceLocator the service locator which requested the service
+     * @param string                  $name           the normalized service name
+     * @param string                  $requestedName  the requested service name
+     * @param callable                $callback       the callback that is responsible for creating the service
+     * @return mixed
+     */
+    public function createDelegatorWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName, $callback);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Exception/ContainerModificationsNotAllowedException.php b/vendor/laminas/laminas-servicemanager/src/Exception/ContainerModificationsNotAllowedException.php
new file mode 100644
index 0000000000000000000000000000000000000000..82d834f5993f6ae228b6c14ca1a760731ec684c9
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Exception/ContainerModificationsNotAllowedException.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Exception;
+
+use DomainException;
+
+use function sprintf;
+
+class ContainerModificationsNotAllowedException extends DomainException implements ExceptionInterface
+{
+    /**
+     * @param string $service Name of service that already exists.
+     */
+    public static function fromExistingService(string $service): self
+    {
+        return new self(sprintf(
+            'The container does not allow replacing or updating a service'
+            . ' with existing instances; the following service'
+            . ' already exists in the container: %s',
+            $service
+        ));
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Exception/CyclicAliasException.php b/vendor/laminas/laminas-servicemanager/src/Exception/CyclicAliasException.php
new file mode 100644
index 0000000000000000000000000000000000000000..806da73c5e15ab5d024cf95cf2210a668d46ec9b
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Exception/CyclicAliasException.php
@@ -0,0 +1,152 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Exception;
+
+use function array_filter;
+use function array_keys;
+use function array_map;
+use function array_values;
+use function implode;
+use function reset;
+use function serialize;
+use function sort;
+use function sprintf;
+
+class CyclicAliasException extends InvalidArgumentException
+{
+    /**
+     * @param string   $alias conflicting alias key
+     * @param string[] $aliases map of referenced services, indexed by alias name (string)
+     */
+    public static function fromCyclicAlias(string $alias, array $aliases): self
+    {
+        $cycle  = $alias;
+        $cursor = $alias;
+        while (isset($aliases[$cursor]) && $aliases[$cursor] !== $alias) {
+            $cursor = $aliases[$cursor];
+            $cycle .= ' -> ' . $cursor;
+        }
+        $cycle .= ' -> ' . $alias . "\n";
+
+        return new self(sprintf(
+            "A cycle was detected within the aliases definitions:\n%s",
+            $cycle
+        ));
+    }
+
+    /**
+     * @param string[] $aliases map of referenced services, indexed by alias name (string)
+     * @return self
+     */
+    public static function fromAliasesMap(array $aliases)
+    {
+        $detectedCycles = array_filter(array_map(
+            static fn($alias): ?array => self::getCycleFor($aliases, $alias),
+            array_keys($aliases)
+        ));
+
+        if (! $detectedCycles) {
+            return new self(sprintf(
+                "A cycle was detected within the following aliases map:\n\n%s",
+                self::printReferencesMap($aliases)
+            ));
+        }
+
+        return new self(sprintf(
+            "Cycles were detected within the provided aliases:\n\n%s\n\n"
+            . "The cycle was detected in the following alias map:\n\n%s",
+            self::printCycles(self::deDuplicateDetectedCycles($detectedCycles)),
+            self::printReferencesMap($aliases)
+        ));
+    }
+
+    /**
+     * Retrieves the cycle detected for the given $alias, or `null` if no cycle was detected
+     *
+     * @param string[] $aliases
+     * @param string   $alias
+     * @return array|null
+     */
+    private static function getCycleFor(array $aliases, $alias)
+    {
+        $cycleCandidate = [];
+        $targetName     = $alias;
+
+        while (isset($aliases[$targetName])) {
+            if (isset($cycleCandidate[$targetName])) {
+                return $cycleCandidate;
+            }
+
+            $cycleCandidate[$targetName] = true;
+            $targetName                  = $aliases[$targetName];
+        }
+
+        return null;
+    }
+
+    /**
+     * @param string[] $aliases
+     * @return string
+     */
+    private static function printReferencesMap(array $aliases)
+    {
+        $map = [];
+
+        foreach ($aliases as $alias => $reference) {
+            $map[] = '"' . $alias . '" => "' . $reference . '"';
+        }
+
+        return "[\n" . implode("\n", $map) . "\n]";
+    }
+
+    /**
+     * @param string[][] $detectedCycles
+     * @return string
+     */
+    private static function printCycles(array $detectedCycles)
+    {
+        return "[\n" . implode("\n", array_map([self::class, 'printCycle'], $detectedCycles)) . "\n]";
+    }
+
+    /**
+     * @param string[] $detectedCycle
+     * @return string
+     * @phpcsSuppress SlevomatCodingStandard.Classes.UnusedPrivateElements.UnusedMethod
+     */
+    private static function printCycle(array $detectedCycle)
+    {
+        $fullCycle   = array_keys($detectedCycle);
+        $fullCycle[] = reset($fullCycle);
+
+        return implode(
+            ' => ',
+            array_map(
+                static fn($cycle): string => '"' . $cycle . '"',
+                $fullCycle
+            )
+        );
+    }
+
+    /**
+     * @param bool[][] $detectedCycles
+     * @return bool[][] de-duplicated
+     */
+    private static function deDuplicateDetectedCycles(array $detectedCycles)
+    {
+        $detectedCyclesByHash = [];
+
+        foreach ($detectedCycles as $detectedCycle) {
+            $cycleAliases = array_keys($detectedCycle);
+
+            sort($cycleAliases);
+
+            $hash = serialize($cycleAliases);
+
+            $detectedCyclesByHash[$hash] ??= $detectedCycle;
+        }
+
+        return array_values($detectedCyclesByHash);
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Exception/ExceptionInterface.php b/vendor/laminas/laminas-servicemanager/src/Exception/ExceptionInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..cccc42df50e649d8c29293ffd697a6ccabd88a12
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Exception/ExceptionInterface.php
@@ -0,0 +1,14 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Exception;
+
+use Psr\Container\ContainerExceptionInterface;
+
+/**
+ * Base exception for all Laminas\ServiceManager exceptions.
+ */
+interface ExceptionInterface extends ContainerExceptionInterface
+{
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Exception/InvalidArgumentException.php b/vendor/laminas/laminas-servicemanager/src/Exception/InvalidArgumentException.php
new file mode 100644
index 0000000000000000000000000000000000000000..dd8ee80871a38971c0c86e360e16adf28de1a979
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Exception/InvalidArgumentException.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Exception;
+
+use InvalidArgumentException as SplInvalidArgumentException;
+use Laminas\ServiceManager\AbstractFactoryInterface;
+use Laminas\ServiceManager\Initializer\InitializerInterface;
+
+use function gettype;
+use function is_object;
+use function sprintf;
+
+/**
+ * @inheritDoc
+ */
+class InvalidArgumentException extends SplInvalidArgumentException implements ExceptionInterface
+{
+    public static function fromInvalidInitializer(mixed $initializer): self
+    {
+        return new self(sprintf(
+            'An invalid initializer was registered. Expected a callable or an'
+            . ' instance of "%s"; received "%s"',
+            InitializerInterface::class,
+            is_object($initializer) ? $initializer::class : gettype($initializer)
+        ));
+    }
+
+    public static function fromInvalidAbstractFactory(mixed $abstractFactory): self
+    {
+        return new self(sprintf(
+            'An invalid abstract factory was registered. Expected an instance of or a valid'
+            . ' class name resolving to an implementation of "%s", but "%s" was received.',
+            AbstractFactoryInterface::class,
+            is_object($abstractFactory) ? $abstractFactory::class : gettype($abstractFactory)
+        ));
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Exception/InvalidServiceException.php b/vendor/laminas/laminas-servicemanager/src/Exception/InvalidServiceException.php
new file mode 100644
index 0000000000000000000000000000000000000000..1837b1d748dd0cc66d7e0222069ac1f4688d7070
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Exception/InvalidServiceException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Exception;
+
+use RuntimeException as SplRuntimeException;
+
+/**
+ * This exception is thrown by plugin managers when the created object does not match
+ * the plugin manager's conditions
+ */
+class InvalidServiceException extends SplRuntimeException implements ExceptionInterface
+{
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Exception/ServiceNotCreatedException.php b/vendor/laminas/laminas-servicemanager/src/Exception/ServiceNotCreatedException.php
new file mode 100644
index 0000000000000000000000000000000000000000..3b9a45635f14320eb7f141a782c2d2b6b61f5ca2
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Exception/ServiceNotCreatedException.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Exception;
+
+use RuntimeException as SplRuntimeException;
+
+/**
+ * This exception is thrown when the service locator do not manage to create
+ * the service (factory that has an error...)
+ */
+class ServiceNotCreatedException extends SplRuntimeException implements
+    ExceptionInterface
+{
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Exception/ServiceNotFoundException.php b/vendor/laminas/laminas-servicemanager/src/Exception/ServiceNotFoundException.php
new file mode 100644
index 0000000000000000000000000000000000000000..186f33cf7143b91d775ef51d77d7938233d6c17d
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Exception/ServiceNotFoundException.php
@@ -0,0 +1,18 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Exception;
+
+use InvalidArgumentException as SplInvalidArgumentException;
+use Psr\Container\NotFoundExceptionInterface;
+
+/**
+ * This exception is thrown when the service locator do not manage to find a
+ * valid factory to create a service
+ */
+class ServiceNotFoundException extends SplInvalidArgumentException implements
+    ExceptionInterface,
+    NotFoundExceptionInterface
+{
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Factory/AbstractFactoryInterface.php b/vendor/laminas/laminas-servicemanager/src/Factory/AbstractFactoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..f73af4f7f555134b8edc902f1472649307f85c50
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Factory/AbstractFactoryInterface.php
@@ -0,0 +1,28 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Factory;
+
+use Psr\Container\ContainerInterface;
+
+/**
+ * Interface for an abstract factory.
+ *
+ * An abstract factory extends the factory interface, but also has an
+ * additional "canCreate" method, which is called to check if the abstract
+ * factory has the ability to create an instance for the given service. You
+ * should limit the number of abstract factories to ensure good performance.
+ * Starting from ServiceManager v3, remember that you can also attach multiple
+ * names to the same factory, which reduces the need for abstract factories.
+ */
+interface AbstractFactoryInterface extends FactoryInterface
+{
+    /**
+     * Can the factory create an instance for the service?
+     *
+     * @param  string $requestedName
+     * @return bool
+     */
+    public function canCreate(ContainerInterface $container, $requestedName);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Factory/DelegatorFactoryInterface.php b/vendor/laminas/laminas-servicemanager/src/Factory/DelegatorFactoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..755cf8a464c7d72613b9684bf24b284abe28bdf2
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Factory/DelegatorFactoryInterface.php
@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Factory;
+
+use Laminas\ServiceManager\Exception\ServiceNotCreatedException;
+use Laminas\ServiceManager\Exception\ServiceNotFoundException;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
+
+/**
+ * Delegator factory interface.
+ *
+ * Defines the capabilities required by a delegator factory. Delegator
+ * factories are used to either decorate a service instance, or to allow
+ * decorating the instantiation of a service instance (for instance, to
+ * provide optional dependencies via setters, etc.).
+ */
+interface DelegatorFactoryInterface
+{
+    /**
+     * A factory that creates delegates of a given service
+     *
+     * @param  string                $name
+     * @psalm-param callable():mixed $callback
+     * @param  null|array<mixed>     $options
+     * @return object
+     * @throws ServiceNotFoundException If unable to resolve the service.
+     * @throws ServiceNotCreatedException If an exception is raised when creating a service.
+     * @throws ContainerExceptionInterface If any other error occurs.
+     */
+    public function __invoke(ContainerInterface $container, $name, callable $callback, ?array $options = null);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Factory/FactoryInterface.php b/vendor/laminas/laminas-servicemanager/src/Factory/FactoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..68e61671d950b97e54c5af37b7f66103cf37e43e
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Factory/FactoryInterface.php
@@ -0,0 +1,33 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Factory;
+
+use Laminas\ServiceManager\Exception\ServiceNotCreatedException;
+use Laminas\ServiceManager\Exception\ServiceNotFoundException;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
+
+/**
+ * Interface for a factory
+ *
+ * A factory is an callable object that is able to create an object. It is
+ * given the instance of the service locator, the requested name of the class
+ * you want to create, and any additional options that could be used to
+ * configure the instance state.
+ */
+interface FactoryInterface
+{
+    /**
+     * Create an object
+     *
+     * @param  string             $requestedName
+     * @param  null|array<mixed>  $options
+     * @return object
+     * @throws ServiceNotFoundException If unable to resolve the service.
+     * @throws ServiceNotCreatedException If an exception is raised when creating a service.
+     * @throws ContainerExceptionInterface If any other error occurs.
+     */
+    public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Factory/InvokableFactory.php b/vendor/laminas/laminas-servicemanager/src/Factory/InvokableFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..6f80c8944ebd1e2d4d6151352b69668072e4e9de
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Factory/InvokableFactory.php
@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Factory;
+
+use Psr\Container\ContainerInterface;
+
+/**
+ * Factory for instantiating classes with no dependencies or which accept a single array.
+ *
+ * The InvokableFactory can be used for any class that:
+ *
+ * - has no constructor arguments;
+ * - accepts a single array of arguments via the constructor.
+ *
+ * It replaces the "invokables" and "invokable class" functionality of the v2
+ * service manager.
+ */
+final class InvokableFactory implements FactoryInterface
+{
+    /** {@inheritDoc} */
+    public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null)
+    {
+        return null === $options ? new $requestedName() : new $requestedName($options);
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/FactoryInterface.php b/vendor/laminas/laminas-servicemanager/src/FactoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..f22069ee71e486a99800c65259224e3134bac316
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/FactoryInterface.php
@@ -0,0 +1,36 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+/**
+ * Backwards-compatibility shim for FactoryInterface.
+ *
+ * Implementations should update to implement only Laminas\ServiceManager\Factory\FactoryInterface.
+ *
+ * If upgrading from v2, take the following steps:
+ *
+ * - rename the method `createService()` to `__invoke()`, and:
+ *   - rename the `$serviceLocator` argument to `$container`, and change the
+ *     typehint to `Psr\Container\ContainerInterface`
+ *   - add the `$requestedName` as a second argument
+ *   - add the optional `array $options = null` argument as a final argument
+ * - create a `createService()` method as defined in this interface, and have it
+ *   proxy to `__invoke()`.
+ *
+ * Once you have tested your code, you can then update your class to only implement
+ * Laminas\ServiceManager\Factory\FactoryInterface, and remove the `createService()`
+ * method.
+ *
+ * @deprecated Use Laminas\ServiceManager\Factory\FactoryInterface instead.
+ */
+interface FactoryInterface extends Factory\FactoryInterface
+{
+    /**
+     * Create service
+     *
+     * @return mixed
+     */
+    public function createService(ServiceLocatorInterface $serviceLocator);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Initializer/InitializerInterface.php b/vendor/laminas/laminas-servicemanager/src/Initializer/InitializerInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..794f1dc5b581a3c26001ca175d523829c1adcf30
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Initializer/InitializerInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Initializer;
+
+use Psr\Container\ContainerInterface;
+
+/**
+ * Interface for an initializer
+ *
+ * An initializer can be registered to a service locator, and are run after an instance is created
+ * to inject additional dependencies through setters
+ */
+interface InitializerInterface
+{
+    /**
+     * Initialize the given instance
+     *
+     * @param  object             $instance
+     * @return void
+     */
+    public function __invoke(ContainerInterface $container, $instance);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/InitializerInterface.php b/vendor/laminas/laminas-servicemanager/src/InitializerInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..dc29dd6fe6c801e6268076c752666dc05f2c8dad
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/InitializerInterface.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+/**
+ * Backwards-compatibility shim for InitializerInterface.
+ *
+ * Implementations should update to implement only Laminas\ServiceManager\Initializer\InitializerInterface.
+ *
+ * If upgrading from v2, take the following steps:
+ *
+ * - rename the method `initialize()` to `__invoke()`, and:
+ *   - rename the `$serviceLocator` argument to `$container`, and change the
+ *     typehint to `Psr\Container\ContainerInterface`
+ *   - swap the order of the arguments (so that `$instance` comes second)
+ * - create an `initialize()` method as defined in this interface, and have it
+ *   proxy to `__invoke()`, passing the arguments in the new order.
+ *
+ * Once you have tested your code, you can then update your class to only implement
+ * Laminas\ServiceManager\Initializer\InitializerInterface, and remove the `initialize()`
+ * method.
+ *
+ * @deprecated Use Laminas\ServiceManager\Initializer\InitializerInterface instead.
+ */
+interface InitializerInterface extends Initializer\InitializerInterface
+{
+    /**
+     * Initialize
+     *
+     * @return mixed
+     */
+    public function initialize(mixed $instance, ServiceLocatorInterface $serviceLocator);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/PluginManagerInterface.php b/vendor/laminas/laminas-servicemanager/src/PluginManagerInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..cb82d4e620a97389ed612d92b3ed1347d7aa86c8
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/PluginManagerInterface.php
@@ -0,0 +1,29 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+use Laminas\ServiceManager\Exception\InvalidServiceException;
+use Psr\Container\ContainerExceptionInterface;
+
+/**
+ * Interface for a plugin manager
+ *
+ * A plugin manager is a specialized service locator used to create homogeneous objects
+ *
+ * @template InstanceType
+ */
+interface PluginManagerInterface extends ServiceLocatorInterface
+{
+    /**
+     * Validate an instance
+     *
+     * @return void
+     * @throws InvalidServiceException If created instance does not respect the
+     *     constraint on type imposed by the plugin manager.
+     * @throws ContainerExceptionInterface If any other error occurs.
+     * @psalm-assert InstanceType $instance
+     */
+    public function validate(mixed $instance);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Proxy/LazyServiceFactory.php b/vendor/laminas/laminas-servicemanager/src/Proxy/LazyServiceFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..65b04465a6ae9c577ed60b79b00f48c927814fe3
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Proxy/LazyServiceFactory.php
@@ -0,0 +1,55 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Proxy;
+
+use Laminas\ServiceManager\Exception;
+use Laminas\ServiceManager\Factory\DelegatorFactoryInterface;
+use ProxyManager\Factory\LazyLoadingValueHolderFactory;
+use ProxyManager\Proxy\LazyLoadingInterface;
+use ProxyManager\Proxy\VirtualProxyInterface;
+use Psr\Container\ContainerInterface;
+
+use function sprintf;
+
+/**
+ * Delegator factory responsible of instantiating lazy loading value holder proxies of
+ * given services at runtime
+ *
+ * @link https://github.com/Ocramius/ProxyManager/blob/master/docs/lazy-loading-value-holder.md
+ */
+final class LazyServiceFactory implements DelegatorFactoryInterface
+{
+    /**
+     * @param array<string, class-string> $servicesMap A map of service names to
+     *     class names of their respective classes
+     */
+    public function __construct(private LazyLoadingValueHolderFactory $proxyFactory, private array $servicesMap)
+    {
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @param string $name
+     * @return VirtualProxyInterface
+     */
+    public function __invoke(ContainerInterface $container, $name, callable $callback, ?array $options = null)
+    {
+        if (isset($this->servicesMap[$name])) {
+            $initializer = static function (&$wrappedInstance, LazyLoadingInterface $proxy) use ($callback): bool {
+                $proxy->setProxyInitializer(null);
+                $wrappedInstance = $callback();
+
+                return true;
+            };
+
+            return $this->proxyFactory->createProxy($this->servicesMap[$name], $initializer);
+        }
+
+        throw new Exception\ServiceNotFoundException(
+            sprintf('The requested service "%s" was not found in the provided services map', $name)
+        );
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/ServiceLocatorInterface.php b/vendor/laminas/laminas-servicemanager/src/ServiceLocatorInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..3d4bd447b11e457ff51c0e3b523a626e3ca631af
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/ServiceLocatorInterface.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
+
+/**
+ * Interface for service locator
+ */
+interface ServiceLocatorInterface extends ContainerInterface
+{
+    /**
+     * Build a service by its name, using optional options (such services are NEVER cached).
+     *
+     * @template T of object
+     * @param  string|class-string<T> $name
+     * @param  null|array<mixed>  $options
+     * @return mixed
+     * @psalm-return ($name is class-string<T> ? T : mixed)
+     * @throws Exception\ServiceNotFoundException If no factory/abstract
+     *     factory could be found to create the instance.
+     * @throws Exception\ServiceNotCreatedException If factory/delegator fails
+     *     to create the instance.
+     * @throws ContainerExceptionInterface If any other error occurs.
+     */
+    public function build($name, ?array $options = null);
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/ServiceManager.php b/vendor/laminas/laminas-servicemanager/src/ServiceManager.php
new file mode 100644
index 0000000000000000000000000000000000000000..de94d202531611489226ff5ac99e48c077983db1
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/ServiceManager.php
@@ -0,0 +1,988 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager;
+
+use Exception;
+use Laminas\ServiceManager\Exception\ContainerModificationsNotAllowedException;
+use Laminas\ServiceManager\Exception\CyclicAliasException;
+use Laminas\ServiceManager\Exception\InvalidArgumentException;
+use Laminas\ServiceManager\Exception\ServiceNotCreatedException;
+use Laminas\ServiceManager\Exception\ServiceNotFoundException;
+use Laminas\ServiceManager\Proxy\LazyServiceFactory;
+use Laminas\Stdlib\ArrayUtils;
+use ProxyManager\Configuration as ProxyConfiguration;
+use ProxyManager\Factory\LazyLoadingValueHolderFactory;
+use ProxyManager\FileLocator\FileLocator;
+use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy;
+use ProxyManager\GeneratorStrategy\FileWriterGeneratorStrategy;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
+
+use function array_intersect;
+use function array_key_exists;
+use function array_keys;
+use function class_exists;
+use function gettype;
+use function in_array;
+use function is_callable;
+use function is_object;
+use function is_string;
+use function spl_autoload_register;
+use function spl_object_hash;
+use function sprintf;
+use function trigger_error;
+
+use const E_USER_DEPRECATED;
+
+/**
+ * Service Manager.
+ *
+ * Default implementation of the ServiceLocatorInterface, providing capabilities
+ * for object creation via:
+ *
+ * - factories
+ * - abstract factories
+ * - delegator factories
+ * - lazy service factories (generated proxies)
+ * - initializers (interface injection)
+ *
+ * It also provides the ability to inject specific service instances and to
+ * define aliases.
+ *
+ * @see ConfigInterface
+ *
+ * @psalm-import-type ServiceManagerConfigurationType from ConfigInterface
+ * @psalm-import-type AbstractFactoriesConfigurationType from ConfigInterface
+ * @psalm-import-type DelegatorsConfigurationType from ConfigInterface
+ * @psalm-import-type FactoriesConfigurationType from ConfigInterface
+ * @psalm-import-type InitializersConfigurationType from ConfigInterface
+ * @psalm-import-type LazyServicesConfigurationType from ConfigInterface
+ * @psalm-type ServiceManagerConfiguration = array{
+ *     abstract_factories?: AbstractFactoriesConfigurationType,
+ *     aliases?: array<string,string>,
+ *     delegators?: DelegatorsConfigurationType,
+ *     factories?: FactoriesConfigurationType,
+ *     initializers?: InitializersConfigurationType,
+ *     invokables?: array<string,string>,
+ *     lazy_services?: LazyServicesConfigurationType,
+ *     services?: array<string,object|array>,
+ *     shared?:array<string,bool>,
+ *     shared_by_default?:bool,
+ *     ...
+ * }
+ */
+class ServiceManager implements ServiceLocatorInterface
+{
+    /** @var Factory\AbstractFactoryInterface[] */
+    protected $abstractFactories = [];
+
+    /**
+     * A list of aliases
+     *
+     * Should map one alias to a service name, or another alias (aliases are recursively resolved)
+     *
+     * @var string[]
+     */
+    protected $aliases = [];
+
+    /**
+     * Whether or not changes may be made to this instance.
+     *
+     * @var bool
+     */
+    protected $allowOverride = false;
+
+    /** @var ContainerInterface */
+    protected $creationContext;
+
+    /**
+     * @var string[][]|Factory\DelegatorFactoryInterface[][]
+     * @psalm-var DelegatorsConfigurationType
+     */
+    protected $delegators = [];
+
+    /**
+     * A list of factories (either as string name or callable)
+     *
+     * @var string[]|callable[]
+     * @psalm-var FactoriesConfigurationType
+     */
+    protected $factories = [];
+
+    /**
+     * @var Initializer\InitializerInterface[]|callable[]
+     * @psalm-var InitializersConfigurationType
+     */
+    protected $initializers = [];
+
+    /**
+     * @var array
+     * @psalm-var LazyServicesConfigurationType
+     */
+    protected $lazyServices = [];
+
+    private ?LazyServiceFactory $lazyServicesDelegator = null;
+
+    /**
+     * A list of already loaded services (this act as a local cache)
+     *
+     * @var array<string,array|object>
+     */
+    protected $services = [];
+
+    /**
+     * Enable/disable shared instances by service name.
+     *
+     * Example configuration:
+     *
+     * 'shared' => [
+     *     MyService::class => true, // will be shared, even if "sharedByDefault" is false
+     *     MyOtherService::class => false // won't be shared, even if "sharedByDefault" is true
+     * ]
+     *
+     * @var array<string,bool>
+     */
+    protected $shared = [];
+
+    /**
+     * Should the services be shared by default?
+     *
+     * @var bool
+     */
+    protected $sharedByDefault = true;
+
+    /**
+     * Service manager was already configured?
+     *
+     * @var bool
+     */
+    protected $configured = false;
+
+    /**
+     * Cached abstract factories from string.
+     */
+    private array $cachedAbstractFactories = [];
+
+    /**
+     * See {@see \Laminas\ServiceManager\ServiceManager::configure()} for details
+     * on what $config accepts.
+     *
+     * @psalm-param ServiceManagerConfiguration $config
+     */
+    public function __construct(array $config = [])
+    {
+        $this->creationContext = $this;
+        $this->configure($config);
+    }
+
+    /**
+     * Implemented for backwards compatibility with previous plugin managers only.
+     *
+     * Returns the creation context.
+     *
+     * @deprecated since 3.0.0. Factories using 3.0 should use the container
+     *     instance passed to the factory instead.
+     *
+     * @return ContainerInterface
+     */
+    public function getServiceLocator()
+    {
+        trigger_error(sprintf(
+            'Usage of %s is deprecated since v3.0.0; please use the container passed to the factory instead',
+            __METHOD__
+        ), E_USER_DEPRECATED);
+        return $this->creationContext;
+    }
+
+    /** {@inheritDoc} */
+    public function get($name)
+    {
+        // We start by checking if we have cached the requested service;
+        // this is the fastest method.
+        if (isset($this->services[$name])) {
+            return $this->services[$name];
+        }
+
+        // Determine if the service should be shared.
+        $sharedService = $this->shared[$name] ?? $this->sharedByDefault;
+
+        // We achieve better performance if we can let all alias
+        // considerations out.
+        if (! $this->aliases) {
+            $object = $this->doCreate($name);
+
+            // Cache the object for later, if it is supposed to be shared.
+            if ($sharedService) {
+                $this->services[$name] = $object;
+            }
+            return $object;
+        }
+
+        // We now deal with requests which may be aliases.
+        $resolvedName = $this->aliases[$name] ?? $name;
+
+        // Update shared service information as we checked if the alias was shared before.
+        if ($resolvedName !== $name) {
+            $sharedService = $this->shared[$resolvedName] ?? $sharedService;
+        }
+
+        // The following is only true if the requested service is a shared alias.
+        $sharedAlias = $sharedService && isset($this->services[$resolvedName]);
+
+        // If the alias is configured as a shared service, we are done.
+        if ($sharedAlias) {
+            $this->services[$name] = $this->services[$resolvedName];
+            return $this->services[$resolvedName];
+        }
+
+        // At this point, we have to create the object.
+        // We use the resolved name for that.
+        $object = $this->doCreate($resolvedName);
+
+        // Cache the object for later, if it is supposed to be shared.
+        if ($sharedService) {
+            $this->services[$resolvedName] = $object;
+        }
+
+        // Also cache under the alias name; this allows sharing based on the
+        // service name used.
+        if ($sharedAlias) {
+            $this->services[$name] = $object;
+        }
+
+        return $object;
+    }
+
+    /** {@inheritDoc} */
+    public function build($name, ?array $options = null)
+    {
+        // We never cache when using "build".
+        $name = $this->aliases[$name] ?? $name;
+        return $this->doCreate($name, $options);
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @param string|class-string $name
+     * @return bool
+     */
+    public function has($name)
+    {
+        // Check static services and factories first to speedup the most common requests.
+        return $this->staticServiceOrFactoryCanCreate($name) || $this->abstractFactoryCanCreate($name);
+    }
+
+    /**
+     * Indicate whether or not the instance is immutable.
+     *
+     * @param bool $flag
+     */
+    public function setAllowOverride($flag)
+    {
+        $this->allowOverride = (bool) $flag;
+    }
+
+    /**
+     * Retrieve the flag indicating immutability status.
+     *
+     * @return bool
+     */
+    public function getAllowOverride()
+    {
+        return $this->allowOverride;
+    }
+
+    /**
+     * @psalm-param ServiceManagerConfiguration $config
+     * @return self
+     * @throws ContainerModificationsNotAllowedException If the allow
+     *     override flag has been toggled off, and a service instance
+     *     exists for a given service.
+     */
+    public function configure(array $config)
+    {
+        // This is a bulk update/initial configuration,
+        // so we check all definitions up front.
+        $this->validateServiceNames($config);
+
+        if (isset($config['services'])) {
+            $this->services = $config['services'] + $this->services;
+        }
+
+        if (isset($config['invokables']) && ! empty($config['invokables'])) {
+            $newAliases = $this->createAliasesAndFactoriesForInvokables($config['invokables']);
+            // override existing aliases with those created by invokables to ensure
+            // that they are still present after merging aliases later on
+            $config['aliases'] = $newAliases + ($config['aliases'] ?? []);
+        }
+
+        if (isset($config['factories'])) {
+            $this->factories = $config['factories'] + $this->factories;
+        }
+
+        if (isset($config['delegators'])) {
+            $this->mergeDelegators($config['delegators']);
+        }
+
+        if (isset($config['shared'])) {
+            $this->shared = $config['shared'] + $this->shared;
+        }
+
+        if (! empty($config['aliases'])) {
+            $this->aliases = $config['aliases'] + $this->aliases;
+            $this->mapAliasesToTargets();
+        } elseif (! $this->configured && ! empty($this->aliases)) {
+            $this->mapAliasesToTargets();
+        }
+
+        if (isset($config['shared_by_default'])) {
+            $this->sharedByDefault = $config['shared_by_default'];
+        }
+
+        // If lazy service configuration was provided, reset the lazy services
+        // delegator factory.
+        if (isset($config['lazy_services']) && ! empty($config['lazy_services'])) {
+            /** @psalm-suppress MixedPropertyTypeCoercion */
+            $this->lazyServices          = ArrayUtils::merge($this->lazyServices, $config['lazy_services']);
+            $this->lazyServicesDelegator = null;
+        }
+
+        // For abstract factories and initializers, we always directly
+        // instantiate them to avoid checks during service construction.
+        if (isset($config['abstract_factories'])) {
+            $abstractFactories = $config['abstract_factories'];
+            // $key not needed, but foreach is faster than foreach + array_values.
+            foreach ($abstractFactories as $key => $abstractFactory) {
+                $this->resolveAbstractFactoryInstance($abstractFactory);
+            }
+        }
+
+        if (isset($config['initializers'])) {
+            $this->resolveInitializers($config['initializers']);
+        }
+
+        $this->configured = true;
+
+        return $this;
+    }
+
+    /**
+     * Add an alias.
+     *
+     * @param string $alias
+     * @param string $target
+     * @throws ContainerModificationsNotAllowedException If $alias already
+     *     exists as a service and overrides are disallowed.
+     */
+    public function setAlias($alias, $target)
+    {
+        if (isset($this->services[$alias]) && ! $this->allowOverride) {
+            throw ContainerModificationsNotAllowedException::fromExistingService($alias);
+        }
+
+        $this->mapAliasToTarget($alias, $target);
+    }
+
+    /**
+     * Add an invokable class mapping.
+     *
+     * @param string $name Service name
+     * @param null|string $class Class to which to map; if omitted, $name is
+     *     assumed.
+     * @throws ContainerModificationsNotAllowedException If $name already
+     *     exists as a service and overrides are disallowed.
+     */
+    public function setInvokableClass($name, $class = null)
+    {
+        if (isset($this->services[$name]) && ! $this->allowOverride) {
+            throw ContainerModificationsNotAllowedException::fromExistingService($name);
+        }
+
+        $this->createAliasesAndFactoriesForInvokables([$name => $class ?? $name]);
+    }
+
+    /**
+     * Specify a factory for a given service name.
+     *
+     * @param string $name Service name
+     * @param string|callable|Factory\FactoryInterface $factory  Factory to which to map.
+     * phpcs:disable Generic.Files.LineLength.TooLong
+     * @psalm-param class-string<Factory\FactoryInterface>|callable(ContainerInterface,string,array<mixed>|null):object|Factory\FactoryInterface $factory
+     * phpcs:enable Generic.Files.LineLength.TooLong
+     * @return void
+     * @throws ContainerModificationsNotAllowedException If $name already
+     *     exists as a service and overrides are disallowed.
+     */
+    public function setFactory($name, $factory)
+    {
+        if (isset($this->services[$name]) && ! $this->allowOverride) {
+            throw ContainerModificationsNotAllowedException::fromExistingService($name);
+        }
+
+        $this->factories[$name] = $factory;
+    }
+
+    /**
+     * Create a lazy service mapping to a class.
+     *
+     * @param string $name Service name to map
+     * @param null|string $class Class to which to map; if not provided, $name
+     *     will be used for the mapping.
+     */
+    public function mapLazyService($name, $class = null)
+    {
+        $this->configure(['lazy_services' => ['class_map' => [$name => $class ?: $name]]]);
+    }
+
+    /**
+     * Add an abstract factory for resolving services.
+     *
+     * @param string|Factory\AbstractFactoryInterface $factory Abstract factory
+     *     instance or class name.
+     * @psalm-param class-string<Factory\AbstractFactoryInterface>|Factory\AbstractFactoryInterface $factory
+     */
+    public function addAbstractFactory($factory)
+    {
+        $this->resolveAbstractFactoryInstance($factory);
+    }
+
+    /**
+     * Add a delegator for a given service.
+     *
+     * @param string $name Service name
+     * @param string|callable|Factory\DelegatorFactoryInterface $factory Delegator
+     *     factory to assign.
+     * @psalm-param class-string<Factory\DelegatorFactoryInterface>
+     *     |callable(ContainerInterface,string,callable,array<mixed>|null) $factory
+     */
+    public function addDelegator($name, $factory)
+    {
+        $this->configure(['delegators' => [$name => [$factory]]]);
+    }
+
+    /**
+     * Add an initializer.
+     *
+     * @param string|callable|Initializer\InitializerInterface $initializer
+     * @psalm-param class-string<Initializer\InitializerInterface>
+     *     |callable(ContainerInterface,mixed):void
+     *     |Initializer\InitializerInterface $initializer
+     */
+    public function addInitializer($initializer)
+    {
+        $this->configure(['initializers' => [$initializer]]);
+    }
+
+    /**
+     * Map a service.
+     *
+     * @param string $name Service name
+     * @param array|object $service
+     * @throws ContainerModificationsNotAllowedException If $name already
+     *     exists as a service and overrides are disallowed.
+     */
+    public function setService($name, $service)
+    {
+        if (isset($this->services[$name]) && ! $this->allowOverride) {
+            throw ContainerModificationsNotAllowedException::fromExistingService($name);
+        }
+        $this->services[$name] = $service;
+    }
+
+    /**
+     * Add a service sharing rule.
+     *
+     * @param string $name Service name
+     * @param bool $flag Whether or not the service should be shared.
+     * @throws ContainerModificationsNotAllowedException If $name already
+     *     exists as a service and overrides are disallowed.
+     */
+    public function setShared($name, $flag)
+    {
+        if (isset($this->services[$name]) && ! $this->allowOverride) {
+            throw ContainerModificationsNotAllowedException::fromExistingService($name);
+        }
+
+        $this->shared[$name] = (bool) $flag;
+    }
+
+    /**
+     * Instantiate initializers for to avoid checks during service construction.
+     *
+     * @psalm-param InitializersConfigurationType $initializers
+     */
+    private function resolveInitializers(array $initializers): void
+    {
+        foreach ($initializers as $initializer) {
+            if (is_string($initializer) && class_exists($initializer)) {
+                $initializer = new $initializer();
+            }
+
+            if (is_callable($initializer)) {
+                $this->initializers[] = $initializer;
+                continue;
+            }
+
+            throw InvalidArgumentException::fromInvalidInitializer($initializer);
+        }
+    }
+
+    /**
+     * Get a factory for the given service name
+     *
+     * @psalm-return (callable(ContainerInterface,string,array<mixed>|null):object)|Factory\FactoryInterface
+     * @throws ServiceNotFoundException
+     */
+    private function getFactory(string $name): callable
+    {
+        $factory = $this->factories[$name] ?? null;
+
+        $lazyLoaded = false;
+        if (is_string($factory) && class_exists($factory)) {
+            $factory    = new $factory();
+            $lazyLoaded = true;
+        }
+
+        if (is_callable($factory)) {
+            if ($lazyLoaded) {
+                $this->factories[$name] = $factory;
+            }
+
+            return $factory;
+        }
+
+        // Check abstract factories
+        foreach ($this->abstractFactories as $abstractFactory) {
+            if ($abstractFactory->canCreate($this->creationContext, $name)) {
+                return $abstractFactory;
+            }
+        }
+
+        throw new ServiceNotFoundException(sprintf(
+            'Unable to resolve service "%s" to a factory; are you certain you provided it during configuration?',
+            $name
+        ));
+    }
+
+    /**
+     * @return object
+     */
+    private function createDelegatorFromName(string $name, ?array $options = null)
+    {
+        $creationCallback = function () use ($name, $options) {
+            // Code is inlined for performance reason, instead of abstracting the creation
+            $factory = $this->getFactory($name);
+            return $factory($this->creationContext, $name, $options);
+        };
+
+        $initialCreationContext = $this->creationContext;
+
+        foreach ($this->delegators[$name] as $index => $delegatorFactory) {
+            $delegatorFactory = $this->delegators[$name][$index];
+
+            if ($delegatorFactory === LazyServiceFactory::class) {
+                $delegatorFactory = $this->createLazyServiceDelegatorFactory();
+            } elseif (is_string($delegatorFactory) && class_exists($delegatorFactory)) {
+                $delegatorFactory = new $delegatorFactory();
+            }
+
+            $this->assertCallableDelegatorFactory($delegatorFactory);
+
+            $this->delegators[$name][$index] = $delegatorFactory;
+
+            $creationCallback =
+                /** @return object */
+                static fn() => $delegatorFactory($initialCreationContext, $name, $creationCallback, $options);
+        }
+
+        return $creationCallback();
+    }
+
+    /**
+     * Create a new instance with an already resolved name
+     *
+     * This is a highly performance sensitive method, do not modify if you have not benchmarked it carefully
+     *
+     * @return object
+     * @throws ServiceNotFoundException If unable to resolve the service.
+     * @throws ServiceNotCreatedException If an exception is raised when creating a service.
+     * @throws ContainerExceptionInterface If any other error occurs.
+     */
+    private function doCreate(string $resolvedName, ?array $options = null)
+    {
+        try {
+            if (! isset($this->delegators[$resolvedName])) {
+                // Let's create the service by fetching the factory
+                $factory = $this->getFactory($resolvedName);
+                $object  = $factory($this->creationContext, $resolvedName, $options);
+            } else {
+                $object = $this->createDelegatorFromName($resolvedName, $options);
+            }
+        } catch (ContainerExceptionInterface $exception) {
+            throw $exception;
+        } catch (Exception $exception) {
+            throw new ServiceNotCreatedException(sprintf(
+                'Service with name "%s" could not be created. Reason: %s',
+                $resolvedName,
+                $exception->getMessage()
+            ), (int) $exception->getCode(), $exception);
+        }
+
+        foreach ($this->initializers as $initializer) {
+            $initializer($this->creationContext, $object);
+        }
+
+        return $object;
+    }
+
+    /**
+     * Create the lazy services delegator factory.
+     *
+     * Creates the lazy services delegator factory based on the lazy_services
+     * configuration present.
+     *
+     * @throws ServiceNotCreatedException When the lazy service class_map configuration is missing.
+     */
+    private function createLazyServiceDelegatorFactory(): LazyServiceFactory
+    {
+        if ($this->lazyServicesDelegator) {
+            return $this->lazyServicesDelegator;
+        }
+
+        if (! isset($this->lazyServices['class_map'])) {
+            throw new ServiceNotCreatedException('Missing "class_map" config key in "lazy_services"');
+        }
+
+        $factoryConfig = new ProxyConfiguration();
+
+        if (isset($this->lazyServices['proxies_namespace'])) {
+            $factoryConfig->setProxiesNamespace($this->lazyServices['proxies_namespace']);
+        }
+
+        if (isset($this->lazyServices['proxies_target_dir'])) {
+            $factoryConfig->setProxiesTargetDir($this->lazyServices['proxies_target_dir']);
+        }
+
+        if (! isset($this->lazyServices['write_proxy_files']) || ! $this->lazyServices['write_proxy_files']) {
+            $factoryConfig->setGeneratorStrategy(new EvaluatingGeneratorStrategy());
+        } else {
+            $factoryConfig->setGeneratorStrategy(new FileWriterGeneratorStrategy(
+                new FileLocator($factoryConfig->getProxiesTargetDir())
+            ));
+        }
+
+        spl_autoload_register($factoryConfig->getProxyAutoloader());
+
+        $this->lazyServicesDelegator = new LazyServiceFactory(
+            new LazyLoadingValueHolderFactory($factoryConfig),
+            $this->lazyServices['class_map']
+        );
+
+        return $this->lazyServicesDelegator;
+    }
+
+    /**
+     * Merge delegators avoiding multiple same delegators for the same service.
+     * It works with strings and class instances.
+     * It's not possible to de-duple anonymous functions
+     *
+     * @psalm-param DelegatorsConfigurationType $config
+     * @psalm-return DelegatorsConfigurationType
+     */
+    private function mergeDelegators(array $config): array
+    {
+        foreach ($config as $key => $delegators) {
+            if (! array_key_exists($key, $this->delegators)) {
+                $this->delegators[$key] = $delegators;
+                continue;
+            }
+
+            foreach ($delegators as $delegator) {
+                if (! in_array($delegator, $this->delegators[$key], true)) {
+                    $this->delegators[$key][] = $delegator;
+                }
+            }
+        }
+
+        return $this->delegators;
+    }
+
+    /**
+     * Create aliases and factories for invokable classes.
+     *
+     * If an invokable service name does not match the class it maps to, this
+     * creates an alias to the class (which will later be mapped as an
+     * invokable factory). The newly created aliases will be returned as an array.
+     *
+     * @param array<string,string> $invokables
+     * @return array<string,string>
+     */
+    private function createAliasesAndFactoriesForInvokables(array $invokables): array
+    {
+        $newAliases = [];
+
+        foreach ($invokables as $name => $class) {
+            $this->factories[$class] = Factory\InvokableFactory::class;
+            if ($name !== $class) {
+                $this->aliases[$name] = $class;
+                $newAliases[$name]    = $class;
+            }
+        }
+
+        return $newAliases;
+    }
+
+    /**
+     * Determine if a service for any name provided by a service
+     * manager configuration(services, aliases, factories, ...)
+     * already exists, and if it exists, determine if is it allowed
+     * to get overriden.
+     *
+     * Validation in the context of this class means, that for
+     * a given service name we do not have a service instance
+     * in the cache OR override is explicitly allowed.
+     *
+     * @psalm-param ServiceManagerConfigurationType $config
+     * @throws ContainerModificationsNotAllowedException If any
+     *     service key is invalid.
+     */
+    private function validateServiceNames(array $config): void
+    {
+        if ($this->allowOverride || ! $this->configured) {
+            return;
+        }
+
+        if (isset($config['services'])) {
+            foreach (array_keys($config['services']) as $service) {
+                if (isset($this->services[$service])) {
+                    throw ContainerModificationsNotAllowedException::fromExistingService($service);
+                }
+            }
+        }
+
+        if (isset($config['aliases'])) {
+            foreach (array_keys($config['aliases']) as $service) {
+                if (isset($this->services[$service])) {
+                    throw ContainerModificationsNotAllowedException::fromExistingService($service);
+                }
+            }
+        }
+
+        if (isset($config['invokables'])) {
+            foreach (array_keys($config['invokables']) as $service) {
+                if (isset($this->services[$service])) {
+                    throw ContainerModificationsNotAllowedException::fromExistingService($service);
+                }
+            }
+        }
+
+        if (isset($config['factories'])) {
+            foreach (array_keys($config['factories']) as $service) {
+                if (isset($this->services[$service])) {
+                    throw ContainerModificationsNotAllowedException::fromExistingService($service);
+                }
+            }
+        }
+
+        if (isset($config['delegators'])) {
+            foreach (array_keys($config['delegators']) as $service) {
+                if (isset($this->services[$service])) {
+                    throw ContainerModificationsNotAllowedException::fromExistingService($service);
+                }
+            }
+        }
+
+        if (isset($config['shared'])) {
+            foreach (array_keys($config['shared']) as $service) {
+                if (isset($this->services[$service])) {
+                    throw ContainerModificationsNotAllowedException::fromExistingService($service);
+                }
+            }
+        }
+
+        if (isset($config['lazy_services']['class_map'])) {
+            foreach (array_keys($config['lazy_services']['class_map']) as $service) {
+                if (isset($this->services[$service])) {
+                    throw ContainerModificationsNotAllowedException::fromExistingService($service);
+                }
+            }
+        }
+    }
+
+    /**
+     * Assuming that the alias name is valid (see above) resolve/add it.
+     *
+     * This is done differently from bulk mapping aliases for performance reasons, as the
+     * algorithms for mapping a single item efficiently are different from those of mapping
+     * many.
+     */
+    private function mapAliasToTarget(string $alias, string $target): void
+    {
+        // $target is either an alias or something else
+        // if it is an alias, resolve it
+        $this->aliases[$alias] = $this->aliases[$target] ?? $target;
+
+        // a self-referencing alias indicates a cycle
+        if ($alias === $this->aliases[$alias]) {
+            throw CyclicAliasException::fromCyclicAlias($alias, $this->aliases);
+        }
+
+        // finally we have to check if existing incomplete alias definitions
+        // exist which can get resolved by the new alias
+        if (in_array($alias, $this->aliases)) {
+            $r = array_intersect($this->aliases, [$alias]);
+            // found some, resolve them
+            foreach ($r as $name => $service) {
+                $this->aliases[$name] = $target;
+            }
+        }
+    }
+
+    /**
+     * Assuming that all provided alias keys are valid resolve them.
+     *
+     * This function maps $this->aliases in place.
+     *
+     * This algorithm is an adaptated version of Tarjans Strongly
+     * Connected Components. Instead of returning the strongly
+     * connected components (i.e. cycles in our case), we throw.
+     * If nodes are not strongly connected (i.e. resolvable in
+     * our case), they get resolved.
+     *
+     * This algorithm is fast for mass updates through configure().
+     * It is not appropriate if just a single alias is added.
+     *
+     * @see mapAliasToTarget above
+     */
+    private function mapAliasesToTargets(): void
+    {
+        $tagged = [];
+        foreach ($this->aliases as $alias => $target) {
+            if (isset($tagged[$alias])) {
+                continue;
+            }
+
+            $tCursor = $this->aliases[$alias];
+            $aCursor = $alias;
+            if ($aCursor === $tCursor) {
+                throw CyclicAliasException::fromCyclicAlias($alias, $this->aliases);
+            }
+            if (! isset($this->aliases[$tCursor])) {
+                continue;
+            }
+
+            $stack = [];
+
+            while (isset($this->aliases[$tCursor])) {
+                $stack[] = $aCursor;
+                if ($aCursor === $this->aliases[$tCursor]) {
+                    throw CyclicAliasException::fromCyclicAlias($alias, $this->aliases);
+                }
+                $aCursor = $tCursor;
+                $tCursor = $this->aliases[$tCursor];
+            }
+
+            $tagged[$aCursor] = true;
+
+            foreach ($stack as $alias) {
+                if ($alias === $tCursor) {
+                    throw CyclicAliasException::fromCyclicAlias($alias, $this->aliases);
+                }
+                $this->aliases[$alias] = $tCursor;
+                $tagged[$alias]        = true;
+            }
+        }
+    }
+
+    /**
+     * Instantiate abstract factories in order to avoid checks during service construction.
+     *
+     * @param string|Factory\AbstractFactoryInterface $abstractFactory
+     * @psalm-param class-string<Factory\AbstractFactoryInterface>|Factory\AbstractFactoryInterface $abstractFactory
+     */
+    private function resolveAbstractFactoryInstance($abstractFactory): void
+    {
+        if (is_string($abstractFactory) && class_exists($abstractFactory)) {
+            // Cached string factory name
+            if (! isset($this->cachedAbstractFactories[$abstractFactory])) {
+                $this->cachedAbstractFactories[$abstractFactory] = new $abstractFactory();
+            }
+
+            $abstractFactory = $this->cachedAbstractFactories[$abstractFactory];
+        }
+
+        if (! $abstractFactory instanceof Factory\AbstractFactoryInterface) {
+            throw InvalidArgumentException::fromInvalidAbstractFactory($abstractFactory);
+        }
+
+        $abstractFactoryObjHash                           = spl_object_hash($abstractFactory);
+        $this->abstractFactories[$abstractFactoryObjHash] = $abstractFactory;
+    }
+
+    /**
+     * Check if a static service or factory exists for the given name.
+     */
+    private function staticServiceOrFactoryCanCreate(string $name): bool
+    {
+        if (isset($this->services[$name]) || isset($this->factories[$name])) {
+            return true;
+        }
+
+        $resolvedName = $this->aliases[$name] ?? $name;
+        if ($resolvedName !== $name) {
+            return $this->staticServiceOrFactoryCanCreate($resolvedName);
+        }
+
+        return false;
+    }
+
+    /**
+     * Check if an abstract factory exists that can create a service for the given name.
+     */
+    private function abstractFactoryCanCreate(string $name): bool
+    {
+        foreach ($this->abstractFactories as $abstractFactory) {
+            if ($abstractFactory->canCreate($this->creationContext, $name)) {
+                return true;
+            }
+        }
+
+        $resolvedName = $this->aliases[$name] ?? $name;
+        if ($resolvedName !== $name) {
+            return $this->abstractFactoryCanCreate($resolvedName);
+        }
+
+        return false;
+    }
+
+    /**
+     * @psalm-param mixed $delegatorFactory
+     * @psalm-assert callable(ContainerInterface,string,callable():object,array<mixed>|null):object $delegatorFactory
+     */
+    private function assertCallableDelegatorFactory($delegatorFactory): void
+    {
+        if (
+            $delegatorFactory instanceof Factory\DelegatorFactoryInterface
+            || is_callable($delegatorFactory)
+        ) {
+            return;
+        }
+        if (is_string($delegatorFactory)) {
+            throw new ServiceNotCreatedException(sprintf(
+                'An invalid delegator factory was registered; resolved to class or function "%s"'
+                . ' which does not exist; please provide a valid function name or class name resolving'
+                . ' to an implementation of %s',
+                $delegatorFactory,
+                DelegatorFactoryInterface::class
+            ));
+        }
+        throw new ServiceNotCreatedException(sprintf(
+            'A non-callable delegator, "%s", was provided; expected a callable or instance of "%s"',
+            is_object($delegatorFactory) ? $delegatorFactory::class : gettype($delegatorFactory),
+            DelegatorFactoryInterface::class
+        ));
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Test/CommonPluginManagerTrait.php b/vendor/laminas/laminas-servicemanager/src/Test/CommonPluginManagerTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..fc16d7f24832850a5adadf3ba9c4f31e1367f7cf
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Test/CommonPluginManagerTrait.php
@@ -0,0 +1,123 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Test;
+
+use Laminas\ServiceManager\AbstractPluginManager;
+use Laminas\ServiceManager\Exception\InvalidServiceException;
+use ReflectionClass;
+use ReflectionProperty;
+
+use function method_exists;
+
+/**
+ * Trait for testing plugin managers for v2-v3 compatibility
+ *
+ * To use this trait:
+ *   * implement the `getPluginManager()` method to return your plugin manager
+ *   * implement the `getV2InvalidPluginException()` method to return the class `validatePlugin()` throws under v2
+ */
+trait CommonPluginManagerTrait
+{
+    public function testInstanceOfMatches()
+    {
+        $manager    = $this->getPluginManager();
+        $reflection = new ReflectionProperty($manager, 'instanceOf');
+        $reflection->setAccessible(true);
+        $this->assertEquals($this->getInstanceOf(), $reflection->getValue($manager), 'instanceOf does not match');
+    }
+
+    public function testShareByDefaultAndSharedByDefault()
+    {
+        $manager        = $this->getPluginManager();
+        $reflection     = new ReflectionClass($manager);
+        $shareByDefault = $sharedByDefault = true;
+
+        foreach ($reflection->getProperties() as $prop) {
+            if ($prop->getName() === 'shareByDefault') {
+                $prop->setAccessible(true);
+                $shareByDefault = $prop->getValue($manager);
+            }
+            if ($prop->getName() === 'sharedByDefault') {
+                $prop->setAccessible(true);
+                $sharedByDefault = $prop->getValue($manager);
+            }
+        }
+
+        $this->assertSame(
+            $shareByDefault,
+            $sharedByDefault,
+            'Values of shareByDefault and sharedByDefault do not match'
+        );
+    }
+
+    public function testRegisteringInvalidElementRaisesException()
+    {
+        $this->expectException($this->getServiceNotFoundException());
+        $this->getPluginManager()->setService('test', $this);
+    }
+
+    public function testLoadingInvalidElementRaisesException()
+    {
+        $manager = $this->getPluginManager();
+        $manager->setInvokableClass('test', static::class);
+        $this->expectException($this->getServiceNotFoundException());
+        $manager->get('test');
+    }
+
+    /**
+     * @dataProvider aliasProvider
+     * @param string $alias
+     * @param string $expected
+     */
+    public function testPluginAliasesResolve($alias, $expected)
+    {
+        $this->assertInstanceOf($expected, $this->getPluginManager()->get($alias), "Alias '$alias' does not resolve'");
+    }
+
+    /**
+     * @return array
+     */
+    public function aliasProvider()
+    {
+        $manager    = $this->getPluginManager();
+        $reflection = new ReflectionProperty($manager, 'aliases');
+        $reflection->setAccessible(true);
+        $data = [];
+        foreach ($reflection->getValue($manager) as $alias => $expected) {
+            $data[] = [$alias, $expected];
+        }
+        return $data;
+    }
+
+    protected function getServiceNotFoundException(): string
+    {
+        $manager = $this->getPluginManager();
+        if (method_exists($manager, 'configure')) {
+            return InvalidServiceException::class;
+        }
+        return $this->getV2InvalidPluginException();
+    }
+
+    /**
+     * Returns the plugin manager to test
+     *
+     * @return AbstractPluginManager
+     */
+    abstract protected function getPluginManager();
+
+    /**
+     * Returns the FQCN of the exception thrown under v2 by `validatePlugin()`
+     *
+     * @return mixed
+     */
+    abstract protected function getV2InvalidPluginException();
+
+    /**
+     * Returns the value the instanceOf property has been set to
+     *
+     * @return string
+     */
+    abstract protected function getInstanceOf();
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Tool/ConfigDumper.php b/vendor/laminas/laminas-servicemanager/src/Tool/ConfigDumper.php
new file mode 100644
index 0000000000000000000000000000000000000000..6dd6b7f6d872e34d3fbb428219ebcb8cc9f28f44
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Tool/ConfigDumper.php
@@ -0,0 +1,255 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Tool;
+
+use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory;
+use Laminas\ServiceManager\Exception\InvalidArgumentException;
+use Psr\Container\ContainerInterface;
+use ReflectionClass;
+use ReflectionNamedType;
+use ReflectionParameter;
+use Traversable;
+
+use function array_filter;
+use function array_key_exists;
+use function class_exists;
+use function date;
+use function gettype;
+use function implode;
+use function interface_exists;
+use function is_array;
+use function is_int;
+use function is_string;
+use function sprintf;
+use function str_repeat;
+use function var_export;
+
+class ConfigDumper
+{
+    public const CONFIG_TEMPLATE = <<<EOC
+<?php
+
+/**
+ * This file generated by %s.
+ * Generated %s
+ */
+
+return %s;
+EOC;
+
+    public function __construct(private ?ContainerInterface $container = null)
+    {
+    }
+
+    /**
+     * @param string $className
+     * @param bool $ignoreUnresolved
+     * @return array
+     * @throws InvalidArgumentException For invalid $className.
+     */
+    public function createDependencyConfig(array $config, $className, $ignoreUnresolved = false)
+    {
+        $this->validateClassName($className);
+
+        $reflectionClass = new ReflectionClass($className);
+
+        // class is an interface; do nothing
+        if ($reflectionClass->isInterface()) {
+            return $config;
+        }
+
+        // class has no constructor, treat it as an invokable
+        if (! $reflectionClass->getConstructor()) {
+            return $this->createInvokable($config, $className);
+        }
+
+        $constructorArguments = $reflectionClass->getConstructor()->getParameters();
+        $constructorArguments = array_filter(
+            $constructorArguments,
+            static fn(ReflectionParameter $argument): bool => ! $argument->isOptional()
+        );
+
+        // has no required parameters, treat it as an invokable
+        if (empty($constructorArguments)) {
+            return $this->createInvokable($config, $className);
+        }
+
+        $classConfig = [];
+
+        foreach ($constructorArguments as $constructorArgument) {
+            $type         = $constructorArgument->getType();
+            $argumentType = $type instanceof ReflectionNamedType && ! $type->isBuiltin() ? $type->getName() : null;
+
+            if ($argumentType === null) {
+                if ($ignoreUnresolved) {
+                    // don't throw an exception, just return the previous config
+                    return $config;
+                }
+                // don't throw an exception if the class is an already defined service
+                if ($this->container && $this->container->has($className)) {
+                    return $config;
+                }
+                throw new InvalidArgumentException(sprintf(
+                    'Cannot create config for constructor argument "%s", '
+                    . 'it has no type hint, or non-class/interface type hint',
+                    $constructorArgument->getName()
+                ));
+            }
+            $config        = $this->createDependencyConfig($config, $argumentType, $ignoreUnresolved);
+            $classConfig[] = $argumentType;
+        }
+
+        $config[ConfigAbstractFactory::class][$className] = $classConfig;
+
+        return $config;
+    }
+
+    /**
+     * @param string $className
+     * @throws InvalidArgumentException If class name is not a string or does
+     *     not exist.
+     */
+    private function validateClassName($className)
+    {
+        if (! is_string($className)) {
+            throw new InvalidArgumentException('Class name must be a string, ' . gettype($className) . ' given');
+        }
+
+        if (! class_exists($className) && ! interface_exists($className)) {
+            throw new InvalidArgumentException('Cannot find class or interface with name ' . $className);
+        }
+    }
+
+    /**
+     * @param string $className
+     * @return array
+     */
+    private function createInvokable(array $config, $className)
+    {
+        $config[ConfigAbstractFactory::class][$className] = [];
+        return $config;
+    }
+
+    /**
+     * @return array
+     * @throws InvalidArgumentException If ConfigAbstractFactory configuration
+     *     value is not an array.
+     */
+    public function createFactoryMappingsFromConfig(array $config)
+    {
+        if (! array_key_exists(ConfigAbstractFactory::class, $config)) {
+            return $config;
+        }
+
+        if (! is_array($config[ConfigAbstractFactory::class])) {
+            throw new InvalidArgumentException(
+                'Config key for ' . ConfigAbstractFactory::class . ' should be an array, ' . gettype(
+                    $config[ConfigAbstractFactory::class]
+                ) . ' given'
+            );
+        }
+
+        foreach ($config[ConfigAbstractFactory::class] as $className => $dependency) {
+            $config = $this->createFactoryMappings($config, $className);
+        }
+        return $config;
+    }
+
+    /**
+     * @param string $className
+     * @return array
+     */
+    public function createFactoryMappings(array $config, $className)
+    {
+        $this->validateClassName($className);
+
+        if (
+            array_key_exists('service_manager', $config)
+            && array_key_exists('factories', $config['service_manager'])
+            && array_key_exists($className, $config['service_manager']['factories'])
+        ) {
+            return $config;
+        }
+
+        $config['service_manager']['factories'][$className] = ConfigAbstractFactory::class;
+        return $config;
+    }
+
+    /**
+     * @return string
+     */
+    public function dumpConfigFile(array $config)
+    {
+        $prepared = $this->prepareConfig($config);
+        return sprintf(
+            self::CONFIG_TEMPLATE,
+            static::class,
+            date('Y-m-d H:i:s'),
+            $prepared
+        );
+    }
+
+    /**
+     * @param array|Traversable $config
+     * @param int $indentLevel
+     * @return string
+     */
+    private function prepareConfig($config, $indentLevel = 1)
+    {
+        $indent  = str_repeat(' ', $indentLevel * 4);
+        $entries = [];
+        foreach ($config as $key => $value) {
+            $key       = $this->createConfigKey($key);
+            $entries[] = sprintf(
+                '%s%s%s,',
+                $indent,
+                $key ? sprintf('%s => ', $key) : '',
+                $this->createConfigValue($value, $indentLevel)
+            );
+        }
+
+        $outerIndent = str_repeat(' ', ($indentLevel - 1) * 4);
+
+        return sprintf(
+            "[\n%s\n%s]",
+            implode("\n", $entries),
+            $outerIndent
+        );
+    }
+
+    /**
+     * @param string|int|null $key
+     * @return null|string
+     */
+    private function createConfigKey($key)
+    {
+        if (is_string($key) && class_exists($key)) {
+            return sprintf('\\%s::class', $key);
+        }
+
+        if (is_int($key)) {
+            return null;
+        }
+
+        return sprintf("'%s'", $key);
+    }
+
+    /**
+     * @param int $indentLevel
+     * @return string
+     */
+    private function createConfigValue(mixed $value, $indentLevel)
+    {
+        if (is_array($value) || $value instanceof Traversable) {
+            return $this->prepareConfig($value, $indentLevel + 1);
+        }
+
+        if (is_string($value) && class_exists($value)) {
+            return sprintf('\\%s::class', $value);
+        }
+
+        return var_export($value, true);
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Tool/ConfigDumperCommand.php b/vendor/laminas/laminas-servicemanager/src/Tool/ConfigDumperCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..f974786862d468d1514ed889dea53c83815a1d6f
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Tool/ConfigDumperCommand.php
@@ -0,0 +1,244 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Tool;
+
+use Laminas\ServiceManager\Exception;
+use Laminas\Stdlib\ConsoleHelper;
+
+use function array_shift;
+use function class_exists;
+use function dirname;
+use function file_exists;
+use function file_put_contents;
+use function in_array;
+use function is_array;
+use function is_writable;
+use function sprintf;
+
+use const STDERR;
+use const STDOUT;
+
+/**
+ * @psalm-type HelpObject = object{
+ *     command: string
+ * }
+ * @psalm-type ErrorObject = object{
+ *     command: string,
+ *     message: string
+ * }
+ * @psalm-type ArgumentObject = object{
+ *     command: string,
+ *     configFile: string,
+ *     config: array<array-key, mixed>,
+ *     class: string,
+ *     ignoreUnresolved: bool
+ * }
+ */
+class ConfigDumperCommand
+{
+    public const COMMAND_DUMP  = 'dump';
+    public const COMMAND_ERROR = 'error';
+    public const COMMAND_HELP  = 'help';
+
+    public const DEFAULT_SCRIPT_NAME = self::class;
+
+    public const HELP_TEMPLATE = <<<EOH
+<info>Usage:</info>
+
+  %s [-h|--help|help] [-i|--ignore-unresolved] <configFile> <className>
+
+<info>Arguments:</info>
+
+  <info>-h|--help|help</info>          This usage message
+  <info>-i|--ignore-unresolved</info>  Ignore classes with unresolved direct dependencies.
+  <info><configFile></info>            Path to a config file for which to generate
+                          configuration. If the file does not exist, it will
+                          be created. If it does exist, it must return an
+                          array, and the file will be updated with new
+                          configuration.
+  <info><className></info>             Name of the class to reflect and for which to
+                          generate dependency configuration.
+
+Reads the provided configuration file (creating it if it does not exist),
+and injects it with ConfigAbstractFactory dependency configuration for
+the provided class name, writing the changes back to the file.
+EOH;
+
+    private ConsoleHelper $helper;
+
+    /**
+     * @param string $scriptName
+     */
+    public function __construct(private $scriptName = self::DEFAULT_SCRIPT_NAME, ?ConsoleHelper $helper = null)
+    {
+        $this->helper = $helper ?: new ConsoleHelper();
+    }
+
+    /**
+     * @param array $args Argument list, minus script name
+     * @return int Exit status
+     */
+    public function __invoke(array $args)
+    {
+        $arguments = $this->parseArgs($args);
+
+        switch ($arguments->command) {
+            case self::COMMAND_HELP:
+                $this->help();
+                return 0;
+            case self::COMMAND_ERROR:
+                $this->helper->writeErrorMessage($arguments->message);
+                $this->help(STDERR);
+                return 1;
+            case self::COMMAND_DUMP:
+                // fall-through
+            default:
+                break;
+        }
+
+        $dumper = new ConfigDumper();
+        try {
+            $config = $dumper->createDependencyConfig(
+                $arguments->config,
+                $arguments->class,
+                $arguments->ignoreUnresolved
+            );
+        } catch (Exception\InvalidArgumentException $e) {
+            $this->helper->writeErrorMessage(sprintf(
+                'Unable to create config for "%s": %s',
+                $arguments->class,
+                $e->getMessage()
+            ));
+            $this->help(STDERR);
+            return 1;
+        }
+
+        file_put_contents($arguments->configFile, $dumper->dumpConfigFile($config));
+
+        $this->helper->writeLine(sprintf(
+            '<info>[DONE]</info> Changes written to %s',
+            $arguments->configFile
+        ));
+        return 0;
+    }
+
+    /**
+     * @return object
+     */
+    private function parseArgs(array $args)
+    {
+        if (! $args) {
+            return $this->createHelpArgument();
+        }
+
+        $arg1 = array_shift($args);
+
+        if (in_array($arg1, ['-h', '--help', 'help'], true)) {
+            return $this->createHelpArgument();
+        }
+
+        $ignoreUnresolved = false;
+        if (in_array($arg1, ['-i', '--ignore-unresolved'], true)) {
+            $ignoreUnresolved = true;
+            $arg1             = array_shift($args);
+        }
+
+        if (! $args) {
+            return $this->createErrorArgument('Missing class name');
+        }
+
+        $configFile = $arg1;
+        switch (file_exists($configFile)) {
+            case true:
+                $config = require $configFile;
+
+                if (! is_array($config)) {
+                    return $this->createErrorArgument(sprintf(
+                        'Configuration at path "%s" does not return an array.',
+                        $configFile
+                    ));
+                }
+
+                break;
+            case false:
+                // fall-through
+            default:
+                if (! is_writable(dirname($configFile))) {
+                    return $this->createErrorArgument(sprintf(
+                        'Cannot create configuration at path "%s"; not writable.',
+                        $configFile
+                    ));
+                }
+
+                $config = [];
+                break;
+        }
+
+        $class = array_shift($args);
+
+        if (! class_exists($class)) {
+            return $this->createErrorArgument(sprintf(
+                'Class "%s" does not exist or could not be autoloaded.',
+                $class
+            ));
+        }
+
+        return $this->createArguments(self::COMMAND_DUMP, $configFile, $config, $class, $ignoreUnresolved);
+    }
+
+    /**
+     * @param resource $resource Defaults to STDOUT
+     * @return void
+     */
+    private function help($resource = STDOUT)
+    {
+        $this->helper->writeLine(sprintf(
+            self::HELP_TEMPLATE,
+            $this->scriptName
+        ), true, $resource);
+    }
+
+    /**
+     * @param string $command
+     * @param string $configFile File from which config originates, and to
+     *     which it will be written.
+     * @param array $config Parsed configuration.
+     * @param string $class Name of class to reflect.
+     * @param bool $ignoreUnresolved If to ignore classes with unresolved direct dependencies.
+     * @return ArgumentObject
+     */
+    private function createArguments($command, $configFile, $config, $class, $ignoreUnresolved)
+    {
+        return (object) [
+            'command'          => $command,
+            'configFile'       => $configFile,
+            'config'           => $config,
+            'class'            => $class,
+            'ignoreUnresolved' => $ignoreUnresolved,
+        ];
+    }
+
+    /**
+     * @param string $message
+     * @return ErrorObject
+     */
+    private function createErrorArgument($message)
+    {
+        return (object) [
+            'command' => self::COMMAND_ERROR,
+            'message' => $message,
+        ];
+    }
+
+    /**
+     * @return HelpObject
+     */
+    private function createHelpArgument()
+    {
+        return (object) [
+            'command' => self::COMMAND_HELP,
+        ];
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Tool/FactoryCreator.php b/vendor/laminas/laminas-servicemanager/src/Tool/FactoryCreator.php
new file mode 100644
index 0000000000000000000000000000000000000000..6abcbf696f6e2ff4767538443cff5d9dfa2eba07
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Tool/FactoryCreator.php
@@ -0,0 +1,165 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Tool;
+
+use Laminas\ServiceManager\Exception\InvalidArgumentException;
+use Laminas\ServiceManager\Factory\FactoryInterface;
+use Psr\Container\ContainerInterface;
+use ReflectionClass;
+use ReflectionNamedType;
+use ReflectionParameter;
+
+use function array_filter;
+use function array_map;
+use function array_merge;
+use function array_shift;
+use function count;
+use function implode;
+use function preg_replace;
+use function sort;
+use function sprintf;
+use function str_repeat;
+use function strrpos;
+use function substr;
+
+class FactoryCreator
+{
+    public const FACTORY_TEMPLATE = <<<'EOT'
+        <?php
+
+        declare(strict_types=1);
+
+        namespace %s;
+
+        %s
+
+        class %sFactory implements FactoryInterface
+        {
+            /**
+             * @param ContainerInterface $container
+             * @param string $requestedName
+             * @param null|array $options
+             * @return %s
+             */
+            public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
+            {
+                return new %s(%s);
+            }
+        }
+
+        EOT;
+
+    private const IMPORT_ALWAYS = [
+        FactoryInterface::class,
+        ContainerInterface::class,
+    ];
+
+    /**
+     * @param string $className
+     * @return string
+     */
+    public function createFactory($className)
+    {
+        $class = $this->getClassName($className);
+
+        return sprintf(
+            self::FACTORY_TEMPLATE,
+            preg_replace('/\\\\' . $class . '$/', '', $className),
+            $this->createImportStatements($className),
+            $class,
+            $class,
+            $class,
+            $this->createArgumentString($className)
+        );
+    }
+
+    private function getClassName(string $className): string
+    {
+        return substr($className, strrpos($className, '\\') + 1);
+    }
+
+    /**
+     * @param string $className
+     * @return array
+     */
+    private function getConstructorParameters($className)
+    {
+        $reflectionClass = new ReflectionClass($className);
+
+        if (! $reflectionClass->getConstructor()) {
+            return [];
+        }
+
+        $constructorParameters = $reflectionClass->getConstructor()->getParameters();
+
+        if (empty($constructorParameters)) {
+            return [];
+        }
+
+        $constructorParameters = array_filter(
+            $constructorParameters,
+            static function (ReflectionParameter $argument): bool {
+                if ($argument->isOptional()) {
+                    return false;
+                }
+
+                $type  = $argument->getType();
+                $class = $type instanceof ReflectionNamedType && ! $type->isBuiltin() ? $type->getName() : null;
+
+                if (null === $class) {
+                    throw new InvalidArgumentException(sprintf(
+                        'Cannot identify type for constructor argument "%s"; '
+                        . 'no type hint, or non-class/interface type hint',
+                        $argument->getName()
+                    ));
+                }
+
+                return true;
+            }
+        );
+
+        if (empty($constructorParameters)) {
+            return [];
+        }
+
+        return array_map(static function (ReflectionParameter $parameter): ?string {
+            $type = $parameter->getType();
+            return $type instanceof ReflectionNamedType && ! $type->isBuiltin() ? $type->getName() : null;
+        }, $constructorParameters);
+    }
+
+    /**
+     * @param string $className
+     * @return string
+     */
+    private function createArgumentString($className)
+    {
+        $arguments = array_map(static fn(string $dependency): string
+            => sprintf('$container->get(\\%s::class)', $dependency), $this->getConstructorParameters($className));
+
+        switch (count($arguments)) {
+            case 0:
+                return '';
+            case 1:
+                return array_shift($arguments);
+            default:
+                $argumentPad = str_repeat(' ', 12);
+                $closePad    = str_repeat(' ', 8);
+                return sprintf(
+                    "\n%s%s\n%s",
+                    $argumentPad,
+                    implode(",\n" . $argumentPad, $arguments),
+                    $closePad
+                );
+        }
+    }
+
+    private function createImportStatements(string $className): string
+    {
+        $imports = array_merge(self::IMPORT_ALWAYS, [$className]);
+        sort($imports);
+        return implode("\n", array_map(static fn(string $import): string => sprintf('use %s;', $import), $imports));
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/Tool/FactoryCreatorCommand.php b/vendor/laminas/laminas-servicemanager/src/Tool/FactoryCreatorCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..a89df16521d0a1108cd29c686be8c1465d294a1e
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/Tool/FactoryCreatorCommand.php
@@ -0,0 +1,150 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\ServiceManager\Tool;
+
+use Laminas\ServiceManager\Exception;
+use Laminas\Stdlib\ConsoleHelper;
+
+use function array_shift;
+use function assert;
+use function class_exists;
+use function in_array;
+use function is_string;
+use function sprintf;
+
+use const STDERR;
+use const STDOUT;
+
+/**
+ * @psalm-type ArgumentObject = object{command:string, class:null|string, message:null|string}
+ */
+class FactoryCreatorCommand
+{
+    public const COMMAND_DUMP  = 'dump';
+    public const COMMAND_ERROR = 'error';
+    public const COMMAND_HELP  = 'help';
+
+    public const DEFAULT_SCRIPT_NAME = self::class;
+
+    public const HELP_TEMPLATE = <<<EOH
+<info>Usage:</info>
+
+  %s [-h|--help|help] <className>
+
+<info>Arguments:</info>
+
+  <info>-h|--help|help</info>    This usage message
+  <info><className></info>       Name of the class to reflect and for which to generate
+                    a factory.
+
+Generates to STDOUT a factory for creating the specified class; this may then
+be added to your application, and configured as a factory for the class.
+EOH;
+
+    private ConsoleHelper $helper;
+
+    /**
+     * @param string $scriptName
+     */
+    public function __construct(private $scriptName = self::DEFAULT_SCRIPT_NAME, ?ConsoleHelper $helper = null)
+    {
+        $this->helper = $helper ?: new ConsoleHelper();
+    }
+
+    /**
+     * @param array $args Argument list, minus script name
+     * @return int Exit status
+     */
+    public function __invoke(array $args)
+    {
+        $arguments = $this->parseArgs($args);
+
+        switch ($arguments->command) {
+            case self::COMMAND_HELP:
+                $this->help();
+                return 0;
+            case self::COMMAND_ERROR:
+                assert(is_string($arguments->message));
+                $this->helper->writeErrorMessage($arguments->message);
+                $this->help(STDERR);
+                return 1;
+            case self::COMMAND_DUMP:
+                // fall-through
+            default:
+                break;
+        }
+
+        $generator = new FactoryCreator();
+        assert(is_string($arguments->class));
+        try {
+            $factory = $generator->createFactory($arguments->class);
+        } catch (Exception\InvalidArgumentException $e) {
+            $this->helper->writeErrorMessage(sprintf(
+                'Unable to create factory for "%s": %s',
+                $arguments->class,
+                $e->getMessage()
+            ));
+            $this->help(STDERR);
+            return 1;
+        }
+
+        $this->helper->write($factory, false);
+        return 0;
+    }
+
+    /**
+     * @return ArgumentObject
+     */
+    private function parseArgs(array $args)
+    {
+        if (! $args) {
+            return $this->createArguments(self::COMMAND_HELP);
+        }
+
+        $arg1 = array_shift($args);
+
+        if (in_array($arg1, ['-h', '--help', 'help'], true)) {
+            return $this->createArguments(self::COMMAND_HELP);
+        }
+
+        $class = $arg1;
+
+        if (! class_exists($class)) {
+            return $this->createArguments(self::COMMAND_ERROR, null, sprintf(
+                'Class "%s" does not exist or could not be autoloaded.',
+                $class
+            ));
+        }
+
+        return $this->createArguments(self::COMMAND_DUMP, $class);
+    }
+
+    /**
+     * @param resource $resource Defaults to STDOUT
+     * @return void
+     */
+    private function help($resource = STDOUT)
+    {
+        $this->helper->writeLine(sprintf(
+            self::HELP_TEMPLATE,
+            $this->scriptName
+        ), true, $resource);
+    }
+
+    /**
+     * @param string $command
+     * @param string|null $class Name of class to reflect.
+     * @param string|null $error Error message, if any.
+     * @return ArgumentObject
+     */
+    private function createArguments($command, $class = null, $error = null)
+    {
+        return (object) [
+            'command' => $command,
+            'class'   => $class,
+            'message' => $error,
+        ];
+    }
+}
diff --git a/vendor/laminas/laminas-servicemanager/src/autoload.php b/vendor/laminas/laminas-servicemanager/src/autoload.php
new file mode 100644
index 0000000000000000000000000000000000000000..76bd64e0795ce1830bfd6aeda2aa53107a4799b4
--- /dev/null
+++ b/vendor/laminas/laminas-servicemanager/src/autoload.php
@@ -0,0 +1,21 @@
+<?php // phpcs:disable WebimpressCodingStandard.PHP.CorrectClassNameCase.Invalid
+
+
+declare(strict_types=1);
+
+use Interop\Container\Containerinterface as InteropContainerInterface;
+use Interop\Container\Exception\ContainerException as InteropContainerException;
+use Interop\Container\Exception\NotFoundException as InteropNotFoundException;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
+use Psr\Container\NotFoundExceptionInterface;
+
+if (! interface_exists(InteropContainerInterface::class, false)) {
+    class_alias(ContainerInterface::class, InteropContainerInterface::class);
+}
+if (! interface_exists(InteropContainerException::class, false)) {
+    class_alias(ContainerExceptionInterface::class, InteropContainerException::class);
+}
+if (! interface_exists(InteropNotFoundException::class, false)) {
+    class_alias(NotFoundExceptionInterface::class, InteropNotFoundException::class);
+}
diff --git a/vendor/laminas/laminas-stdlib/README.md b/vendor/laminas/laminas-stdlib/README.md
index 764f96573132d6c99d9d52951287ab72b817010b..ccfba354373134b9ebb45fab8b2f47b0bb681a89 100644
--- a/vendor/laminas/laminas-stdlib/README.md
+++ b/vendor/laminas/laminas-stdlib/README.md
@@ -1,7 +1,7 @@
 # laminas-stdlib
 
 [![Build Status](https://github.com/laminas/laminas-stdlib/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/laminas/laminas-stdlib/actions/workflows/continuous-integration.yml)
-[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-stdlib/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-stdlib?branch=master)
+[![Type Coverage](https://shepherd.dev/github/laminas/laminas-stdlib/coverage.svg)](https://shepherd.dev/github/laminas/laminas-stdlib)
 
 > ## 🇷🇺 Русским гражданам
 >
diff --git a/vendor/laminas/laminas-stdlib/composer.json b/vendor/laminas/laminas-stdlib/composer.json
index 05c5052452c7c773db4828e266313d6bd6ddc26b..9c244113ad4c46cfd53712b25ad2e40bf9ed1a2f 100644
--- a/vendor/laminas/laminas-stdlib/composer.json
+++ b/vendor/laminas/laminas-stdlib/composer.json
@@ -18,7 +18,7 @@
     "config": {
         "sort-packages": true,
         "platform": {
-            "php": "7.3.99"
+            "php": "8.0.99"
         },
         "allow-plugins": {
             "dealerdirect/phpcodesniffer-composer-installer": true
@@ -27,14 +27,14 @@
     "extra": {
     },
     "require": {
-        "php": "^7.3 || ~8.0.0 || ~8.1.0"
+        "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
     },
     "require-dev": {
-        "laminas/laminas-coding-standard": "~2.3.0",
-        "phpbench/phpbench": "^1.0",
-        "phpunit/phpunit": "^9.3.7",
-        "psalm/plugin-phpunit": "^0.17.0",
-        "vimeo/psalm": "^4.7"
+        "laminas/laminas-coding-standard": "^2.4.0",
+        "phpbench/phpbench": "^1.2.7",
+        "phpunit/phpunit": "^9.5.26",
+        "psalm/plugin-phpunit": "^0.18.0",
+        "vimeo/psalm": "^5.0.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/vendor/laminas/laminas-stdlib/src/AbstractOptions.php b/vendor/laminas/laminas-stdlib/src/AbstractOptions.php
index 76beff4e046d9872773b3ca6eebfb530b6c9fa31..d02221ab163646ee03c0c5bc3a39b6bda5b0bc27 100644
--- a/vendor/laminas/laminas-stdlib/src/AbstractOptions.php
+++ b/vendor/laminas/laminas-stdlib/src/AbstractOptions.php
@@ -84,7 +84,7 @@ public function toArray()
         $array = [];
 
         /** @param string[] $letters */
-        $transform = function (array $letters): string {
+        $transform = static function (array $letters): string {
             $letter = array_shift($letters);
             return '_' . strtolower($letter);
         };
diff --git a/vendor/laminas/laminas-stdlib/src/ArrayObject.php b/vendor/laminas/laminas-stdlib/src/ArrayObject.php
index 6cc195ddd91b36a6ca2a046ba27c9a3abb15049d..55635c7b0866aa7494ffffa69f841d063773ec24 100644
--- a/vendor/laminas/laminas-stdlib/src/ArrayObject.php
+++ b/vendor/laminas/laminas-stdlib/src/ArrayObject.php
@@ -4,7 +4,9 @@
 
 namespace Laminas\Stdlib;
 
+use AllowDynamicProperties;
 use ArrayAccess;
+use ArrayIterator;
 use Countable;
 use Iterator;
 use IteratorAggregate;
@@ -17,7 +19,7 @@
 use function asort;
 use function class_exists;
 use function count;
-use function get_class;
+use function get_debug_type;
 use function get_object_vars;
 use function gettype;
 use function in_array;
@@ -30,7 +32,7 @@
 use function natsort;
 use function serialize;
 use function sprintf;
-use function strpos;
+use function str_starts_with;
 use function uasort;
 use function uksort;
 use function unserialize;
@@ -39,7 +41,13 @@
  * Custom framework ArrayObject implementation
  *
  * Extends version-specific "abstract" implementation.
+ *
+ * @template TKey of array-key
+ * @template TValue
+ * @template-implements IteratorAggregate<TKey, TValue>
+ * @template-implements ArrayAccess<TKey, TValue>
  */
+#[AllowDynamicProperties]
 class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Countable
 {
     /**
@@ -53,26 +61,24 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count
      */
     public const ARRAY_AS_PROPS = 2;
 
-    /** @var array */
+    /** @var array<TKey, TValue> */
     protected $storage;
 
-    /** @var int */
+    /** @var self::STD_PROP_LIST|self::ARRAY_AS_PROPS */
     protected $flag;
 
-    /** @var string */
+    /** @var class-string<Iterator> */
     protected $iteratorClass;
 
-    /** @var array */
+    /** @var list<string> */
     protected $protectedProperties;
 
     /**
-     * Constructor
-     *
-     * @param array|object $input Object values must act like ArrayAccess
-     * @param int          $flags
-     * @param string       $iteratorClass
+     * @param array<TKey, TValue>|object               $input Object values must act like ArrayAccess
+     * @param self::STD_PROP_LIST|self::ARRAY_AS_PROPS $flags
+     * @param class-string<Iterator>                   $iteratorClass
      */
-    public function __construct($input = [], $flags = self::STD_PROP_LIST, $iteratorClass = 'ArrayIterator')
+    public function __construct($input = [], $flags = self::STD_PROP_LIST, $iteratorClass = ArrayIterator::class)
     {
         $this->setFlags($flags);
         $this->storage = $input;
@@ -83,10 +89,10 @@ public function __construct($input = [], $flags = self::STD_PROP_LIST, $iterator
     /**
      * Returns whether the requested key exists
      *
-     * @param  mixed $key
+     * @param TKey $key
      * @return bool
      */
-    public function __isset($key)
+    public function __isset(mixed $key)
     {
         if ($this->flag === self::ARRAY_AS_PROPS) {
             return $this->offsetExists($key);
@@ -102,11 +108,11 @@ public function __isset($key)
     /**
      * Sets the value at the specified key to value
      *
-     * @param  mixed $key
-     * @param  mixed $value
+     * @param TKey $key
+     * @param TValue $value
      * @return void
      */
-    public function __set($key, $value)
+    public function __set(mixed $key, mixed $value)
     {
         if ($this->flag === self::ARRAY_AS_PROPS) {
             $this->offsetSet($key, $value);
@@ -123,10 +129,10 @@ public function __set($key, $value)
     /**
      * Unsets the value at the specified key
      *
-     * @param  mixed $key
+     * @param TKey $key
      * @return void
      */
-    public function __unset($key)
+    public function __unset(mixed $key)
     {
         if ($this->flag === self::ARRAY_AS_PROPS) {
             $this->offsetUnset($key);
@@ -143,10 +149,10 @@ public function __unset($key)
     /**
      * Returns the value at the specified key by reference
      *
-     * @param  mixed $key
-     * @return mixed
+     * @param TKey $key
+     * @return TValue|null
      */
-    public function &__get($key)
+    public function &__get(mixed $key)
     {
         if ($this->flag === self::ARRAY_AS_PROPS) {
             $ret = &$this->offsetGet($key);
@@ -164,10 +170,10 @@ public function &__get($key)
     /**
      * Appends the value
      *
-     * @param  mixed $value
+     * @param TValue $value
      * @return void
      */
-    public function append($value)
+    public function append(mixed $value)
     {
         $this->storage[] = $value;
     }
@@ -185,7 +191,7 @@ public function asort()
     /**
      * Get the number of public properties in the ArrayObject
      *
-     * @return int
+     * @return positive-int|0
      */
     #[ReturnTypeWillChange]
     public function count()
@@ -196,8 +202,8 @@ public function count()
     /**
      * Exchange the array for another one.
      *
-     * @param  array|ArrayObject|ArrayIterator|object $data
-     * @return array
+     * @param array<TKey, TValue>|ArrayObject<TKey, TValue>|ArrayIterator<TKey, TValue>|object $data
+     * @return array<TKey, TValue>
      */
     public function exchangeArray($data)
     {
@@ -224,7 +230,7 @@ public function exchangeArray($data)
     /**
      * Creates a copy of the ArrayObject.
      *
-     * @return array
+     * @return array<TKey, TValue>
      */
     public function getArrayCopy()
     {
@@ -234,7 +240,7 @@ public function getArrayCopy()
     /**
      * Gets the behavior flags.
      *
-     * @return int
+     * @return self::STD_PROP_LIST|self::ARRAY_AS_PROPS
      */
     public function getFlags()
     {
@@ -244,7 +250,7 @@ public function getFlags()
     /**
      * Create a new iterator from an ArrayObject instance
      *
-     * @return Iterator
+     * @return Iterator<TKey, TValue>
      */
     #[ReturnTypeWillChange]
     public function getIterator()
@@ -257,7 +263,7 @@ public function getIterator()
     /**
      * Gets the iterator classname for the ArrayObject.
      *
-     * @return string
+     * @return class-string<Iterator>
      */
     public function getIteratorClass()
     {
@@ -297,23 +303,23 @@ public function natsort()
     /**
      * Returns whether the requested key exists
      *
-     * @param  mixed $key
+     * @param TKey $key
      * @return bool
      */
     #[ReturnTypeWillChange]
-    public function offsetExists($key)
+    public function offsetExists(mixed $key)
     {
         return isset($this->storage[$key]);
     }
 
     /**
-     * Returns the value at the specified key
+     * {@inheritDoc}
      *
-     * @param  mixed $key
-     * @return mixed
+     * @param TKey $key
+     * @return TValue|null
      */
     #[ReturnTypeWillChange]
-    public function &offsetGet($key)
+    public function &offsetGet(mixed $key)
     {
         $ret = null;
         if (! $this->offsetExists($key)) {
@@ -327,12 +333,12 @@ public function &offsetGet($key)
     /**
      * Sets the value at the specified key to value
      *
-     * @param  mixed $key
-     * @param  mixed $value
+     * @param TKey $key
+     * @param TValue $value
      * @return void
      */
     #[ReturnTypeWillChange]
-    public function offsetSet($key, $value)
+    public function offsetSet(mixed $key, mixed $value)
     {
         $this->storage[$key] = $value;
     }
@@ -340,11 +346,11 @@ public function offsetSet($key, $value)
     /**
      * Unsets the value at the specified key
      *
-     * @param  mixed $key
+     * @param TKey $key
      * @return void
      */
     #[ReturnTypeWillChange]
-    public function offsetUnset($key)
+    public function offsetUnset(mixed $key)
     {
         if ($this->offsetExists($key)) {
             unset($this->storage[$key]);
@@ -364,7 +370,7 @@ public function serialize()
     /**
      * Magic method used for serializing of an instance.
      *
-     * @return array
+     * @return array<string, mixed>
      */
     public function __serialize()
     {
@@ -374,7 +380,7 @@ public function __serialize()
     /**
      * Sets the behavior flags
      *
-     * @param  int  $flags
+     * @param self::STD_PROP_LIST|self::ARRAY_AS_PROPS $flags
      * @return void
      */
     public function setFlags($flags)
@@ -385,7 +391,7 @@ public function setFlags($flags)
     /**
      * Sets the iterator classname for the ArrayObject
      *
-     * @param  string $class
+     * @param  class-string<Iterator> $class
      * @return void
      */
     public function setIteratorClass($class)
@@ -396,7 +402,7 @@ public function setIteratorClass($class)
             return;
         }
 
-        if (strpos($class, '\\') === 0) {
+        if (str_starts_with($class, '\\')) {
             $class = '\\' . $class;
             if (class_exists($class)) {
                 $this->iteratorClass = $class;
@@ -411,7 +417,7 @@ public function setIteratorClass($class)
     /**
      * Sort the entries with a user-defined comparison function and maintain key association
      *
-     * @param  callable $function
+     * @param  callable(TValue, TValue): int $function
      * @return void
      */
     public function uasort($function)
@@ -424,7 +430,7 @@ public function uasort($function)
     /**
      * Sort the entries by keys using a user-defined comparison function
      *
-     * @param  callable $function
+     * @param  callable(TKey, TKey): int $function
      * @return void
      */
     public function uksort($function)
@@ -486,9 +492,7 @@ public function __unserialize($data)
                 throw new UnexpectedValueException(sprintf(
                     'Cannot deserialize %s instance: invalid iteratorClass; expected string, received %s',
                     self::class,
-                    is_object($data['iteratorClass'])
-                        ? get_class($data['iteratorClass'])
-                        : gettype($data['iteratorClass'])
+                    get_debug_type($data['iteratorClass'])
                 ));
             }
             $this->setIteratorClass($data['iteratorClass']);
diff --git a/vendor/laminas/laminas-stdlib/src/ArraySerializableInterface.php b/vendor/laminas/laminas-stdlib/src/ArraySerializableInterface.php
index f2544535ba75fb0c7d013e825f5cd359f6eec3c1..adb5231f2a9e943a1a32588b617980c1ed75dc94 100644
--- a/vendor/laminas/laminas-stdlib/src/ArraySerializableInterface.php
+++ b/vendor/laminas/laminas-stdlib/src/ArraySerializableInterface.php
@@ -9,7 +9,6 @@ interface ArraySerializableInterface
     /**
      * Exchange internal values from provided array
      *
-     * @param  array $array
      * @return void
      */
     public function exchangeArray(array $array);
diff --git a/vendor/laminas/laminas-stdlib/src/ArrayStack.php b/vendor/laminas/laminas-stdlib/src/ArrayStack.php
index d25ba5a6e75e1aea9281e2c328ae650f6ea89545..ea87244e3f1e1bbbcfb78109b10d8d1ef224929a 100644
--- a/vendor/laminas/laminas-stdlib/src/ArrayStack.php
+++ b/vendor/laminas/laminas-stdlib/src/ArrayStack.php
@@ -12,6 +12,10 @@
 
 /**
  * ArrayObject that acts as a stack with regards to iteration
+ *
+ * @template TKey of array-key
+ * @template TValue
+ * @template-extends PhpArrayObject<TKey, TValue>
  */
 class ArrayStack extends PhpArrayObject
 {
@@ -21,7 +25,7 @@ class ArrayStack extends PhpArrayObject
      * Retrieve an array copy of the object, reverse its order, and return an
      * ArrayIterator with that reversed array.
      *
-     * @return ArrayIterator
+     * @return ArrayIterator<TKey, TValue>
      */
     #[ReturnTypeWillChange]
     public function getIterator()
diff --git a/vendor/laminas/laminas-stdlib/src/ArrayUtils.php b/vendor/laminas/laminas-stdlib/src/ArrayUtils.php
index 285e644dd24d72b7c45e1d7db700947ca210f857..75ddd529f041f84f3b1c0328aa99b344d9cef1d7 100644
--- a/vendor/laminas/laminas-stdlib/src/ArrayUtils.php
+++ b/vendor/laminas/laminas-stdlib/src/ArrayUtils.php
@@ -46,11 +46,10 @@ abstract class ArrayUtils
     /**
      * Test whether an array contains one or more string keys
      *
-     * @param  mixed $value
      * @param  bool  $allowEmpty    Should an empty array() return true
      * @return bool
      */
-    public static function hasStringKeys($value, $allowEmpty = false)
+    public static function hasStringKeys(mixed $value, $allowEmpty = false)
     {
         if (! is_array($value)) {
             return false;
@@ -66,11 +65,10 @@ public static function hasStringKeys($value, $allowEmpty = false)
     /**
      * Test whether an array contains one or more integer keys
      *
-     * @param  mixed $value
      * @param  bool  $allowEmpty    Should an empty array() return true
      * @return bool
      */
-    public static function hasIntegerKeys($value, $allowEmpty = false)
+    public static function hasIntegerKeys(mixed $value, $allowEmpty = false)
     {
         if (! is_array($value)) {
             return false;
@@ -93,11 +91,10 @@ public static function hasIntegerKeys($value, $allowEmpty = false)
      * - a float: 2.2120, -78.150999
      * - a string with float:  '4000.99999', '-10.10'
      *
-     * @param  mixed $value
      * @param  bool  $allowEmpty    Should an empty array() return true
      * @return bool
      */
-    public static function hasNumericKeys($value, $allowEmpty = false)
+    public static function hasNumericKeys(mixed $value, $allowEmpty = false)
     {
         if (! is_array($value)) {
             return false;
@@ -126,11 +123,10 @@ public static function hasNumericKeys($value, $allowEmpty = false)
      * );
      * </code>
      *
-     * @param  mixed $value
      * @param  bool  $allowEmpty    Is an empty list a valid list?
      * @return bool
      */
-    public static function isList($value, $allowEmpty = false)
+    public static function isList(mixed $value, $allowEmpty = false)
     {
         if (! is_array($value)) {
             return false;
@@ -168,11 +164,10 @@ public static function isList($value, $allowEmpty = false)
      * );
      * </code>
      *
-     * @param  mixed $value
      * @param  bool  $allowEmpty    Is an empty array() a valid hash table?
      * @return bool
      */
-    public static function isHashTable($value, $allowEmpty = false)
+    public static function isHashTable(mixed $value, $allowEmpty = false)
     {
         if (! is_array($value)) {
             return false;
@@ -193,12 +188,11 @@ public static function isHashTable($value, $allowEmpty = false)
      * non-strict check is implemented. if $strict = -1, the default in_array
      * non-strict behaviour is used.
      *
-     * @param mixed $needle
      * @param array $haystack
      * @param int|bool $strict
      * @return bool
      */
-    public static function inArray($needle, array $haystack, $strict = false)
+    public static function inArray(mixed $needle, array $haystack, $strict = false)
     {
         if (! $strict) {
             if (is_int($needle) || is_float($needle)) {
@@ -318,7 +312,6 @@ public static function merge(array $a, array $b, $preserveNumericKeys = false)
     /**
      * @deprecated Since 3.2.0; use the native array_filter methods
      *
-     * @param array $data
      * @param callable $callback
      * @param null|int $flag
      * @return array
diff --git a/vendor/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php b/vendor/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php
index 6092747da4cb10e6e4e2e824073ec920a5b807cf..063e0681c811e89f72f8b847ee5721ece6ca2d9f 100644
--- a/vendor/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php
+++ b/vendor/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php
@@ -6,15 +6,8 @@
 
 final class MergeReplaceKey implements MergeReplaceKeyInterface
 {
-    /** @var mixed */
-    protected $data;
-
-    /**
-     * @param mixed $data
-     */
-    public function __construct($data)
+    public function __construct(protected mixed $data)
     {
-        $this->data = $data;
     }
 
     /**
diff --git a/vendor/laminas/laminas-stdlib/src/ConsoleHelper.php b/vendor/laminas/laminas-stdlib/src/ConsoleHelper.php
index 94efdec82a5fb352680eb54cb62c1d10f073e925..ab876eb2e47aef5bd73bb84b98cb92dd6bc3e022 100644
--- a/vendor/laminas/laminas-stdlib/src/ConsoleHelper.php
+++ b/vendor/laminas/laminas-stdlib/src/ConsoleHelper.php
@@ -44,23 +44,19 @@ class ConsoleHelper
     public const HIGHLIGHT_INFO  = 'info';
     public const HIGHLIGHT_ERROR = 'error';
 
-    /**
-     * @var array
-     * @psalm-var array<ConsoleHelper::HIGHLIGHT_*, ConsoleHelper::COLOR_GREEN|ConsoleHelper::COLOR_RED>
-     */
-    private $highlightMap = [
+    /** @psalm-var array<ConsoleHelper::HIGHLIGHT_*, ConsoleHelper::COLOR_GREEN|ConsoleHelper::COLOR_RED> */
+    private array $highlightMap = [
         self::HIGHLIGHT_INFO  => self::COLOR_GREEN,
         self::HIGHLIGHT_ERROR => self::COLOR_RED,
     ];
 
     /** @var string Exists only for testing. */
-    private $eol = PHP_EOL;
+    private string $eol = PHP_EOL;
 
     /** @var resource Exists only for testing. */
     private $stderr = STDERR;
 
-    /** @var bool */
-    private $supportsColor;
+    private bool $supportsColor;
 
     /**
      * @param resource $resource
diff --git a/vendor/laminas/laminas-stdlib/src/ErrorHandler.php b/vendor/laminas/laminas-stdlib/src/ErrorHandler.php
index 39aa8cd7555caa7aff41ab4235d0718f1cf09139..42f309401b2e4543cc0325a7595ad9f3eec34364 100644
--- a/vendor/laminas/laminas-stdlib/src/ErrorHandler.php
+++ b/vendor/laminas/laminas-stdlib/src/ErrorHandler.php
@@ -23,7 +23,7 @@ abstract class ErrorHandler
     /**
      * Active stack
      *
-     * @var array
+     * @var list<ErrorException|null>
      */
     protected static $stack = [];
 
diff --git a/vendor/laminas/laminas-stdlib/src/FastPriorityQueue.php b/vendor/laminas/laminas-stdlib/src/FastPriorityQueue.php
index ae8f1d42a0933e048e79fa2983a2fe8e619402d5..e35aee10717c4fb855ef412cb687971a0df5bd51 100644
--- a/vendor/laminas/laminas-stdlib/src/FastPriorityQueue.php
+++ b/vendor/laminas/laminas-stdlib/src/FastPriorityQueue.php
@@ -30,6 +30,9 @@
  * elements from the queue and it also acts like an Iterator without removing
  * the elements. This behaviour can be used in mixed scenarios with high
  * performance boost.
+ *
+ * @template TValue of mixed
+ * @template-implements Iterator<int, TValue>
  */
 class FastPriorityQueue implements Iterator, Countable, Serializable
 {
@@ -37,20 +40,20 @@ class FastPriorityQueue implements Iterator, Countable, Serializable
     public const EXTR_PRIORITY = PhpSplPriorityQueue::EXTR_PRIORITY;
     public const EXTR_BOTH     = PhpSplPriorityQueue::EXTR_BOTH;
 
-    /** @var integer */
+    /** @var self::EXTR_* */
     protected $extractFlag = self::EXTR_DATA;
 
     /**
      * Elements of the queue, divided by priorities
      *
-     * @var array
+     * @var array<int, list<TValue>>
      */
     protected $values = [];
 
     /**
      * Array of priorities
      *
-     * @var array
+     * @var array<int, int>
      */
     protected $priorities = [];
 
@@ -64,28 +67,28 @@ class FastPriorityQueue implements Iterator, Countable, Serializable
     /**
      * Max priority
      *
-     * @var integer|null
+     * @var int|null
      */
     protected $maxPriority;
 
     /**
      * Total number of elements in the queue
      *
-     * @var integer
+     * @var int
      */
     protected $count = 0;
 
     /**
      * Index of the current element in the queue
      *
-     * @var integer
+     * @var int
      */
     protected $index = 0;
 
     /**
      * Sub index of the current element in the same priority level
      *
-     * @var integer
+     * @var int
      */
     protected $subIndex = 0;
 
@@ -112,11 +115,11 @@ public function __unserialize(array $data): void
     /**
      * Insert an element in the queue with a specified priority
      *
-     * @param mixed $value
-     * @param integer $priority
+     * @param TValue $value
+     * @param int    $priority
      * @return void
      */
-    public function insert($value, $priority)
+    public function insert(mixed $value, $priority)
     {
         if (! is_int($priority)) {
             throw new Exception\InvalidArgumentException('The priority must be an integer');
@@ -133,7 +136,7 @@ public function insert($value, $priority)
      * Extract an element in the queue according to the priority and the
      * order of insertion
      *
-     * @return mixed
+     * @return TValue|int|array{data: TValue, priority: int}|false
      */
     public function extract()
     {
@@ -155,10 +158,9 @@ public function extract()
      * the same item has been added multiple times, it will not remove other
      * instances.
      *
-     * @param  mixed $datum
      * @return bool False if the item was not found, true otherwise.
      */
-    public function remove($datum)
+    public function remove(mixed $datum)
     {
         $currentIndex    = $this->index;
         $currentSubIndex = $this->subIndex;
@@ -211,7 +213,7 @@ public function count()
     /**
      * Get the current element in the queue
      *
-     * @return mixed
+     * @return TValue|int|array{data: TValue|false, priority: int}|false
      */
     #[ReturnTypeWillChange]
     public function current()
@@ -308,7 +310,7 @@ public function rewind()
      *
      * Array will be priority => data pairs
      *
-     * @return array
+     * @return list<TValue|int|array{data: TValue, priority: int}>
      */
     public function toArray()
     {
@@ -351,26 +353,21 @@ public function unserialize($data)
     /**
      * Set the extract flag
      *
-     * @param integer $flag
+     * @param self::EXTR_* $flag
      * @return void
      */
     public function setExtractFlags($flag)
     {
-        switch ($flag) {
-            case self::EXTR_DATA:
-            case self::EXTR_PRIORITY:
-            case self::EXTR_BOTH:
-                $this->extractFlag = $flag;
-                break;
-            default:
-                throw new Exception\InvalidArgumentException("The extract flag specified is not valid");
-        }
+        $this->extractFlag = match ($flag) {
+            self::EXTR_DATA, self::EXTR_PRIORITY, self::EXTR_BOTH => $flag,
+            default => throw new Exception\InvalidArgumentException("The extract flag specified is not valid"),
+        };
     }
 
     /**
      * Check if the queue is empty
      *
-     * @return boolean
+     * @return bool
      */
     public function isEmpty()
     {
@@ -380,10 +377,9 @@ public function isEmpty()
     /**
      * Does the queue contain the given datum?
      *
-     * @param  mixed $datum
      * @return bool
      */
-    public function contains($datum)
+    public function contains(mixed $datum)
     {
         foreach ($this->values as $values) {
             if (in_array($datum, $values)) {
diff --git a/vendor/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php b/vendor/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php
index 392a88d3ef2dba41950dcbf73470a81a527a1d92..692e9a7b0331e2632d78f4eb0dba1b3fea8ee498 100644
--- a/vendor/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php
+++ b/vendor/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php
@@ -8,10 +8,8 @@
 use Laminas\Stdlib\Exception\InvalidArgumentException;
 use Traversable;
 
-use function get_class;
-use function gettype;
+use function get_debug_type;
 use function is_array;
-use function is_object;
 use function sprintf;
 
 /**
@@ -29,7 +27,7 @@ trait ArrayOrTraversableGuardTrait
      * @throws Exception
      */
     protected function guardForArrayOrTraversable(
-        $data,
+        mixed $data,
         $dataName = 'Argument',
         $exceptionClass = InvalidArgumentException::class
     ) {
@@ -37,7 +35,7 @@ protected function guardForArrayOrTraversable(
             $message = sprintf(
                 "%s must be an array or Traversable, [%s] given",
                 $dataName,
-                is_object($data) ? get_class($data) : gettype($data)
+                get_debug_type($data)
             );
             throw new $exceptionClass($message);
         }
diff --git a/vendor/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php b/vendor/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php
index bffaa38aeb3855639d333c27d3d93f7ee585c310..e8d35cc15b5867036d7c9f97da1157923b9a4dae 100644
--- a/vendor/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php
+++ b/vendor/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php
@@ -24,7 +24,7 @@ trait EmptyGuardTrait
      * @throws Exception
      */
     protected function guardAgainstEmpty(
-        $data,
+        mixed $data,
         $dataName = 'Argument',
         $exceptionClass = InvalidArgumentException::class
     ) {
diff --git a/vendor/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php b/vendor/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php
index 32ef3400f4a4168a64fc326f4251fedf2c4d6d52..763c36b3f1fddbf39ba33df3afd356333c28fcff 100644
--- a/vendor/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php
+++ b/vendor/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php
@@ -24,7 +24,7 @@ trait NullGuardTrait
      * @throws Exception
      */
     protected function guardAgainstNull(
-        $data,
+        mixed $data,
         $dataName = 'Argument',
         $exceptionClass = InvalidArgumentException::class
     ) {
diff --git a/vendor/laminas/laminas-stdlib/src/Message.php b/vendor/laminas/laminas-stdlib/src/Message.php
index d4f161407654f172e6ec12eec3d88f4f6ea0d03d..fad6e4b712139b3fa5e47845037b78c567df36c5 100644
--- a/vendor/laminas/laminas-stdlib/src/Message.php
+++ b/vendor/laminas/laminas-stdlib/src/Message.php
@@ -7,10 +7,8 @@
 use Traversable;
 
 use function array_key_exists;
-use function get_class;
-use function gettype;
+use function get_debug_type;
 use function is_array;
-use function is_object;
 use function is_scalar;
 use function sprintf;
 
@@ -42,7 +40,7 @@ public function setMetadata($spec, $value = null)
         if (! is_array($spec) && ! $spec instanceof Traversable) {
             throw new Exception\InvalidArgumentException(sprintf(
                 'Expected a string, array, or Traversable argument in first position; received "%s"',
-                is_object($spec) ? get_class($spec) : gettype($spec)
+                get_debug_type($spec)
             ));
         }
         foreach ($spec as $key => $value) {
diff --git a/vendor/laminas/laminas-stdlib/src/ParameterObjectInterface.php b/vendor/laminas/laminas-stdlib/src/ParameterObjectInterface.php
index 60f531a689ebb087cae5cf3de28e3a1296a5a154..b091c107e2db6ede3842583c4fa5490f0724b8fd 100644
--- a/vendor/laminas/laminas-stdlib/src/ParameterObjectInterface.php
+++ b/vendor/laminas/laminas-stdlib/src/ParameterObjectInterface.php
@@ -8,10 +8,9 @@ interface ParameterObjectInterface
 {
     /**
      * @param string $key
-     * @param mixed $value
      * @return void
      */
-    public function __set($key, $value);
+    public function __set($key, mixed $value);
 
     /**
      * @param string $key
diff --git a/vendor/laminas/laminas-stdlib/src/Parameters.php b/vendor/laminas/laminas-stdlib/src/Parameters.php
index 940cccaccf454166658e66615a4c3efc21ef298a..4f1e0d43862a333907da8b2d75d717efdb59ae48 100644
--- a/vendor/laminas/laminas-stdlib/src/Parameters.php
+++ b/vendor/laminas/laminas-stdlib/src/Parameters.php
@@ -10,6 +10,12 @@
 use function http_build_query;
 use function parse_str;
 
+/**
+ * @template TKey of array-key
+ * @template TValue
+ * @template-extends PhpArrayObject<TKey, TValue>
+ * @template-implements ParametersInterface<TKey, TValue>
+ */
 class Parameters extends PhpArrayObject implements ParametersInterface
 {
     /**
@@ -18,7 +24,7 @@ class Parameters extends PhpArrayObject implements ParametersInterface
      * Enforces that we have an array, and enforces parameter access to array
      * elements.
      *
-     * @param  array $values
+     * @param array<TKey, TValue>|null $values
      */
     public function __construct(?array $values = null)
     {
@@ -31,7 +37,7 @@ public function __construct(?array $values = null)
     /**
      * Populate from native PHP array
      *
-     * @param  array $values
+     * @param array<TKey, TValue> $values
      * @return void
      */
     public function fromArray(array $values)
@@ -55,7 +61,7 @@ public function fromString($string)
     /**
      * Serialize to native PHP array
      *
-     * @return array
+     * @return array<TKey, TValue>
      */
     public function toArray()
     {
@@ -77,8 +83,8 @@ public function toString()
      *
      * Returns null if the key does not exist.
      *
-     * @param  string $name
-     * @return mixed
+     * @param  TKey $name
+     * @return TValue|null
      */
     #[ReturnTypeWillChange]
     public function offsetGet($name)
@@ -91,9 +97,10 @@ public function offsetGet($name)
     }
 
     /**
-     * @param string $name
-     * @param mixed $default optional default value
-     * @return mixed
+     * @template TDefault
+     * @param TKey $name
+     * @param TDefault $default optional default value
+     * @return TValue|TDefault|null
      */
     public function get($name, $default = null)
     {
@@ -104,9 +111,9 @@ public function get($name, $default = null)
     }
 
     /**
-     * @param string $name
-     * @param mixed $value
-     * @return Parameters
+     * @param TKey   $name
+     * @param TValue $value
+     * @return $this
      */
     public function set($name, $value)
     {
diff --git a/vendor/laminas/laminas-stdlib/src/ParametersInterface.php b/vendor/laminas/laminas-stdlib/src/ParametersInterface.php
index 8e07e070de08bb9461477b1f005870dd207520c6..9b9a0c4cd15d6bbb9007e0409670d97a49cb09ed 100644
--- a/vendor/laminas/laminas-stdlib/src/ParametersInterface.php
+++ b/vendor/laminas/laminas-stdlib/src/ParametersInterface.php
@@ -9,17 +9,22 @@
 use Serializable;
 use Traversable;
 
-/*
+/**
  * Basically, an ArrayObject. You could simply define something like:
  *     class QueryParams extends ArrayObject implements Parameters {}
  * and have 90% of the functionality
+ *
+ * @template TKey
+ * @template TValue
+ * @template-extends ArrayAccess<TKey, TValue>
+ * @template-extends Traversable<TKey, TValue>
  */
 interface ParametersInterface extends ArrayAccess, Countable, Serializable, Traversable
 {
     /**
      * Constructor
      *
-     * @param array $values
+     * @param array<TKey, TValue>|null $values
      */
     public function __construct(?array $values = null);
 
@@ -28,7 +33,7 @@ public function __construct(?array $values = null);
      *
      * Allow deserialization from standard array
      *
-     * @param array $values
+     * @param array<TKey, TValue> $values
      * @return mixed
      */
     public function fromArray(array $values);
@@ -48,7 +53,7 @@ public function fromString($string);
      *
      * Allow serialization back to standard array
      *
-     * @return mixed
+     * @return array<TKey, TValue>
      */
     public function toArray();
 
@@ -57,24 +62,20 @@ public function toArray();
      *
      * Allow serialization to query format; e.g., for PUT or POST requests
      *
-     * @return mixed
+     * @return string
      */
     public function toString();
 
     /**
-     * Get
-     *
-     * @param string $name
-     * @param mixed|null $default
+     * @param TKey $name
+     * @param TValue|null $default
      * @return mixed
      */
     public function get($name, $default = null);
 
     /**
-     * Set
-     *
-     * @param string $name
-     * @param mixed $value
+     * @param TKey $name
+     * @param TValue $value
      * @return ParametersInterface
      */
     public function set($name, $value);
diff --git a/vendor/laminas/laminas-stdlib/src/PriorityList.php b/vendor/laminas/laminas-stdlib/src/PriorityList.php
index c8bb153ff86dc420adffd6ada7303c57120c10e4..8e2c6e5337d89b934855361b147b7fa901bb13e6 100644
--- a/vendor/laminas/laminas-stdlib/src/PriorityList.php
+++ b/vendor/laminas/laminas-stdlib/src/PriorityList.php
@@ -16,6 +16,11 @@
 use function reset;
 use function uasort;
 
+/**
+ * @template TKey of string
+ * @template TValue of mixed
+ * @template-implements Iterator<TKey, TValue>
+ */
 class PriorityList implements Iterator, Countable
 {
     public const EXTR_DATA     = 0x00000001;
@@ -25,14 +30,14 @@ class PriorityList implements Iterator, Countable
     /**
      * Internal list of all items.
      *
-     * @var array[]
+     * @var array<TKey, array{data: TValue, priority: int, serial: positive-int|0}>
      */
     protected $items = [];
 
     /**
      * Serial assigned to items to preserve LIFO.
      *
-     * @var int
+     * @var positive-int|0
      */
     protected $serial = 0;
 
@@ -64,12 +69,12 @@ class PriorityList implements Iterator, Countable
     /**
      * Insert a new item.
      *
-     * @param  string  $name
-     * @param  mixed   $value
-     * @param  int     $priority
+     * @param TKey   $name
+     * @param TValue $value
+     * @param int    $priority
      * @return void
      */
-    public function insert($name, $value, $priority = 0)
+    public function insert($name, mixed $value, $priority = 0)
     {
         if (! isset($this->items[$name])) {
             $this->count++;
@@ -85,7 +90,7 @@ public function insert($name, $value, $priority = 0)
     }
 
     /**
-     * @param string $name
+     * @param TKey   $name
      * @param int    $priority
      * @return $this
      * @throws Exception
@@ -105,7 +110,7 @@ public function setPriority($name, $priority)
     /**
      * Remove a item.
      *
-     * @param  string $name
+     * @param  TKey $name
      * @return void
      */
     public function remove($name)
@@ -133,8 +138,8 @@ public function clear()
     /**
      * Get a item.
      *
-     * @param  string $name
-     * @return mixed
+     * @param  TKey $name
+     * @return TValue|null
      */
     public function get($name)
     {
@@ -162,7 +167,6 @@ protected function sort()
      * Compare the priority of two items.
      *
      * @param  array $item1,
-     * @param  array $item2
      * @return int
      */
     protected function compare(array $item1, array $item2)
@@ -276,9 +280,7 @@ public function toArray($flag = self::EXTR_DATA)
         }
 
         return array_map(
-            function ($item) use ($flag) {
-                return $flag === PriorityList::EXTR_PRIORITY ? $item['priority'] : $item['data'];
-            },
+            static fn($item) => $flag === self::EXTR_PRIORITY ? $item['priority'] : $item['data'],
             $this->items
         );
     }
diff --git a/vendor/laminas/laminas-stdlib/src/PriorityQueue.php b/vendor/laminas/laminas-stdlib/src/PriorityQueue.php
index bdf01ab60b79ad014bc69d326539665aec7d3337..caec4848126afface5f511eb9af7a8cce5542628 100644
--- a/vendor/laminas/laminas-stdlib/src/PriorityQueue.php
+++ b/vendor/laminas/laminas-stdlib/src/PriorityQueue.php
@@ -12,7 +12,6 @@
 
 use function array_map;
 use function count;
-use function get_class;
 use function is_array;
 use function serialize;
 use function sprintf;
@@ -30,9 +29,9 @@
  * "inner" iterator in the form of an SplPriorityQueue object for performing
  * the actual iteration.
  *
- * @template T
+ * @template TValue
  * @template TPriority of int
- * @implements IteratorAggregate<array-key, T>
+ * @implements IteratorAggregate<array-key, TValue>
  */
 class PriorityQueue implements Countable, IteratorAggregate, Serializable
 {
@@ -51,14 +50,14 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable
      * Actual items aggregated in the priority queue. Each item is an array
      * with keys "data" and "priority".
      *
-     * @var list<array{data: T, priority: TPriority}>
+     * @var list<array{data: TValue, priority: TPriority}>
      */
     protected $items = [];
 
     /**
      * Inner queue object
      *
-     * @var \SplPriorityQueue<TPriority, T>|null
+     * @var \SplPriorityQueue<TPriority, TValue>|null
      */
     protected $queue;
 
@@ -67,7 +66,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable
      *
      * Priority defaults to 1 (low priority) if none provided.
      *
-     * @param  T         $data
+     * @param  TValue    $data
      * @param  TPriority $priority
      * @return $this
      */
@@ -96,10 +95,9 @@ public function insert($data, $priority = 1)
      * the same item has been added multiple times, it will not remove other
      * instances.
      *
-     * @param  mixed $datum
      * @return bool False if the item was not found, true otherwise.
      */
-    public function remove($datum)
+    public function remove(mixed $datum)
     {
         $found = false;
         $key   = null;
@@ -148,7 +146,7 @@ public function count()
     /**
      * Peek at the top node in the queue, based on priority.
      *
-     * @return T
+     * @return TValue
      */
     public function top()
     {
@@ -160,7 +158,7 @@ public function top()
     /**
      * Extract a node from the inner queue and sift up
      *
-     * @return T
+     * @return TValue
      */
     public function extract()
     {
@@ -204,7 +202,7 @@ public function extract()
      * retrieves the inner queue object, and clones it for purposes of
      * iteration.
      *
-     * @return \SplPriorityQueue<TPriority, T>
+     * @return \SplPriorityQueue<TPriority, TValue>
      */
     #[ReturnTypeWillChange]
     public function getIterator()
@@ -226,7 +224,7 @@ public function serialize()
     /**
      * Magic method used for serializing of an instance.
      *
-     * @return list<array{data: T, priority: TPriority}>
+     * @return list<array{data: TValue, priority: TPriority}>
      */
     public function __serialize()
     {
@@ -251,7 +249,7 @@ public function unserialize($data)
             ));
         }
 
-        /** @psalm-var list<array{data: T, priority: TPriority}> $toUnserialize */
+        /** @psalm-var list<array{data: TValue, priority: TPriority}> $toUnserialize */
 
         $this->__unserialize($toUnserialize);
     }
@@ -259,7 +257,7 @@ public function unserialize($data)
    /**
     * Magic method used to rebuild an instance.
     *
-    * @param list<array{data: T, priority: TPriority}> $data Data array.
+    * @param list<array{data: TValue, priority: TPriority}> $data Data array.
     * @return void
     */
     public function __unserialize($data)
@@ -278,27 +276,19 @@ public function __unserialize($data)
      * @param  int $flag
      * @return array<array-key, mixed>
      * @psalm-return ($flag is self::EXTR_BOTH
-     *                      ? list<array{data: T, priority: TPriority}>
+     *                      ? list<array{data: TValue, priority: TPriority}>
      *                      : $flag is self::EXTR_PRIORITY
      *                          ? list<TPriority>
-     *                          : list<T>
+     *                          : list<TValue>
      *               )
      */
     public function toArray($flag = self::EXTR_DATA)
     {
-        switch ($flag) {
-            case self::EXTR_BOTH:
-                return $this->items;
-            case self::EXTR_PRIORITY:
-                return array_map(function ($item) {
-                    return $item['priority'];
-                }, $this->items);
-            case self::EXTR_DATA:
-            default:
-                return array_map(function ($item) {
-                    return $item['data'];
-                }, $this->items);
-        }
+        return match ($flag) {
+            self::EXTR_BOTH => $this->items,
+            self::EXTR_PRIORITY => array_map(static fn($item): int => $item['priority'], $this->items),
+            default => array_map(static fn($item): mixed => $item['data'], $this->items),
+        };
     }
 
     /**
@@ -320,7 +310,7 @@ public function setInternalQueueClass($class)
     /**
      * Does the queue contain the given datum?
      *
-     * @param  T $datum
+     * @param  TValue $datum
      * @return bool
      */
     public function contains($datum)
@@ -353,7 +343,7 @@ public function hasPriority($priority)
      * Get the inner priority queue instance
      *
      * @throws Exception\DomainException
-     * @return \SplPriorityQueue<TPriority, T>
+     * @return \SplPriorityQueue<TPriority, TValue>
      * @psalm-assert !null $this->queue
      */
     protected function getQueue()
@@ -361,13 +351,13 @@ protected function getQueue()
         if (null === $this->queue) {
             /** @psalm-suppress UnsafeInstantiation */
             $queue = new $this->queueClass();
-            /** @psalm-var \SplPriorityQueue<TPriority, T> $queue */
+            /** @psalm-var \SplPriorityQueue<TPriority, TValue> $queue */
             $this->queue = $queue;
             /** @psalm-suppress DocblockTypeContradiction, MixedArgument */
             if (! $this->queue instanceof \SplPriorityQueue) {
                 throw new Exception\DomainException(sprintf(
                     'PriorityQueue expects an internal queue of type SplPriorityQueue; received "%s"',
-                    get_class($this->queue)
+                    $this->queue::class
                 ));
             }
         }
diff --git a/vendor/laminas/laminas-stdlib/src/SplPriorityQueue.php b/vendor/laminas/laminas-stdlib/src/SplPriorityQueue.php
index e55a0e9fd45ab2c857a4bf76ce08e844fc5bc546..82abcbb8916d83665870195f6bf3ee7eb6d2c927 100644
--- a/vendor/laminas/laminas-stdlib/src/SplPriorityQueue.php
+++ b/vendor/laminas/laminas-stdlib/src/SplPriorityQueue.php
@@ -8,10 +8,8 @@
 use UnexpectedValueException;
 
 use function array_key_exists;
-use function get_class;
-use function gettype;
+use function get_debug_type;
 use function is_array;
-use function is_object;
 use function serialize;
 use function sprintf;
 use function unserialize;
@@ -24,9 +22,8 @@
  * Also, provides predictable heap order for datums added with the same priority
  * (i.e., they will be emitted in the same order they are enqueued).
  *
- * @psalm-type InternalPriority = array{0: mixed, 1: int}
  * @template TValue
- * @template TPriority of InternalPriority
+ * @template TPriority of int
  * @extends \SplPriorityQueue<TPriority, TValue>
  */
 class SplPriorityQueue extends \SplPriorityQueue implements Serializable
@@ -40,8 +37,8 @@ class SplPriorityQueue extends \SplPriorityQueue implements Serializable
      * Utilizes {@var $serial} to ensure that values of equal priority are
      * emitted in the same order in which they are inserted.
      *
-     * @param  TValue          $datum
-     * @param  TPriority|mixed $priority
+     * @param  TValue    $datum
+     * @param  TPriority $priority
      * @return void
      */
     public function insert($datum, $priority)
@@ -50,8 +47,6 @@ public function insert($datum, $priority)
             $priority = [$priority, $this->serial--];
         }
 
-        /** @psalm-var TPriority $priority */
-
         parent::insert($datum, $priority);
     }
 
@@ -120,7 +115,7 @@ public function unserialize($data)
     /**
      * Magic method used to rebuild an instance.
      *
-     * @param array $data Data array.
+     * @param array<array-key, mixed> $data Data array.
      * @return void
      */
     public function __unserialize($data)
@@ -132,7 +127,7 @@ public function __unserialize($data)
                 throw new UnexpectedValueException(sprintf(
                     'Cannot deserialize %s instance: corrupt item; expected array, received %s',
                     self::class,
-                    is_object($item) ? get_class($item) : gettype($item)
+                    get_debug_type($item)
                 ));
             }
 
@@ -148,8 +143,6 @@ public function __unserialize($data)
                 $priority = (int) $item['priority'];
             }
 
-            /** @psalm-var TValue $item['data'] */
-
             $this->insert($item['data'], $priority);
         }
     }
diff --git a/vendor/laminas/laminas-stdlib/src/StringWrapper/Iconv.php b/vendor/laminas/laminas-stdlib/src/StringWrapper/Iconv.php
index d7d4c156a7317a4433a2014ca35e24a2cd4b4061..2f52b74e1bc57110b604d870eb442f6f695fa1d7 100644
--- a/vendor/laminas/laminas-stdlib/src/StringWrapper/Iconv.php
+++ b/vendor/laminas/laminas-stdlib/src/StringWrapper/Iconv.php
@@ -245,7 +245,7 @@ public function strlen($str)
      */
     public function substr($str, $offset = 0, $length = null)
     {
-        $length = $length ?? $this->strlen($str);
+        $length ??= $this->strlen($str);
         assert($length !== false);
 
         return iconv_substr($str, $offset, $length, $this->getEncoding());
diff --git a/web/core/MAINTAINERS.txt b/web/core/MAINTAINERS.txt
index 60e22d3d81d61896afe394c10189a723c756f843..5b67d9d696ea8e11999f1b9358dc4fe1ab877d28 100644
--- a/web/core/MAINTAINERS.txt
+++ b/web/core/MAINTAINERS.txt
@@ -18,8 +18,8 @@ BDFL
 
 Product managers
 - Dries Buytaert 'dries' https://www.drupal.org/u/dries
-- Angela Byron 'webchick' https://www.drupal.org/u/webchick
 - Gábor Hojtsy 'Gábor Hojtsy' https://www.drupal.org/u/gábor-hojtsy
+- Lauri Eskola 'lauriii' https://www.drupal.org/u/lauriii
 - Roy Scholten 'yoroy' https://www.drupal.org/u/yoroy
 
 Framework managers
@@ -31,17 +31,16 @@ Framework managers
   - Lee Rowlands 'larowlan' https://www.drupal.org/u/larowlan
 
   Frontend
-  - Lauri Eskola 'lauriii' https://www.drupal.org/u/lauriii
+  - Ben Mullins 'bnjmnm' https://www.drupal.org/u/bnjmnm
   - (provisional) Théodore Biadala 'nod_' https://www.drupal.org/u/nod_
   - (provisional) Cristina Chumillas 'ckrina' https://www.drupal.org/u/ckrina
-  - (provisional) Ben Mullins 'bnjmnm' https://www.drupal.org/u/bnjmnm
   - (provisional) Sally Young 'justafish' https://www.drupal.org/u/justafish
 
 Release managers
 - Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
 - Jess Myrbo 'xjm' https://www.drupal.org/u/xjm
+- Victoria Spagnolo 'quietone' https://www.drupal.org/u/quietone
 - (provisional) Dave Long 'longwave' https://www.drupal.org/u/longwave
-- (provisional) Victoria Spagnolo 'quietone' https://www.drupal.org/u/quietone
 
 Core JavaScript packages
  - Théodore Biadala 'nod_' https://www.drupal.org/u/nod_
@@ -84,7 +83,7 @@ Bartik
 - Emma Maria Karayiannis 'emma.maria' https://www.drupal.org/u/emma.maria
 
 Base system
-- ?
+- See "Framework managers" above.
 
 Basic Auth
 - Juampy Novillo Requena 'juampy' https://www.drupal.org/u/juampy
diff --git a/web/core/core.api.php b/web/core/core.api.php
index 1d2aa9106b46f4c927929f691b7f4d754dfe8887..b706145246b29ae47b0cce464d3ddc0c879956f0 100644
--- a/web/core/core.api.php
+++ b/web/core/core.api.php
@@ -1995,6 +1995,20 @@ function hook_queue_info_alter(&$queues) {
   $queues['aggregator_feeds']['cron']['time'] = 90;
 }
 
+/**
+ * Alter the information provided in \Drupal\Core\Condition\ConditionManager::getDefinitions().
+ *
+ * @param array $definitions
+ *   The array of condition definitions.
+ */
+function hook_condition_info_alter(array &$definitions) {
+  // Add custom or modify existing condition definitions.
+  if (isset($definitions['node_type']) && $definitions['node_type']['class'] == 'Drupal\node\Plugin\Condition\NodeType') {
+    // If the node_type's class is unaltered, use a custom implementation.
+    $definitions['node_type']['class'] = 'Drupal\mymodule\Plugin\Condition\NodeType';
+  }
+}
+
 /**
  * Alter an email message created with MailManagerInterface->mail().
  *
diff --git a/web/core/lib/Drupal.php b/web/core/lib/Drupal.php
index e8b85b5118c43d331440660b38a76394cbffc9d1..e4fe83b76dcff8c53280aaa9f167390d95acaac1 100644
--- a/web/core/lib/Drupal.php
+++ b/web/core/lib/Drupal.php
@@ -75,7 +75,7 @@ class Drupal {
   /**
    * The current system version.
    */
-  const VERSION = '9.5.9';
+  const VERSION = '9.5.10';
 
   /**
    * Core API compatibility.
diff --git a/web/core/lib/Drupal/Core/Asset/AssetResolver.php b/web/core/lib/Drupal/Core/Asset/AssetResolver.php
index 084c803eab00bb5ad070e77f3ff3488cd1362c0a..496237e51bfb9433dd3a9b0c21affa7f043fd76f 100644
--- a/web/core/lib/Drupal/Core/Asset/AssetResolver.php
+++ b/web/core/lib/Drupal/Core/Asset/AssetResolver.php
@@ -147,7 +147,7 @@ public function getCssAssets(AttachedAssetsInterface $assets, $optimize) {
 
           // Always add a tiny value to the weight, to conserve the insertion
           // order.
-          $options['weight'] += count($css) / 1000;
+          $options['weight'] += count($css) / 30000;
 
           // CSS files are being keyed by the full path.
           $css[$options['data']] = $options;
@@ -264,7 +264,7 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize) {
 
             // Always add a tiny value to the weight, to conserve the insertion
             // order.
-            $options['weight'] += count($javascript) / 1000;
+            $options['weight'] += count($javascript) / 30000;
 
             // Local and external files must keep their name as the associative
             // key so the same JavaScript file is not added twice.
diff --git a/web/core/lib/Drupal/Core/Controller/TitleResolver.php b/web/core/lib/Drupal/Core/Controller/TitleResolver.php
index cab95d27bad23c5e75da644c17b7569304c1da42..82c068113c3f30cd45facf475bf7ab4775db667b 100644
--- a/web/core/lib/Drupal/Core/Controller/TitleResolver.php
+++ b/web/core/lib/Drupal/Core/Controller/TitleResolver.php
@@ -66,8 +66,10 @@ public function getTitle(Request $request, Route $route) {
       $args = [];
       if (($raw_parameters = $request->attributes->get('_raw_variables'))) {
         foreach ($raw_parameters->all() as $key => $value) {
-          $args['@' . $key] = $value ?? '';
-          $args['%' . $key] = $value ?? '';
+          if (is_scalar($value)) {
+            $args['@' . $key] = $value;
+            $args['%' . $key] = $value;
+          }
         }
       }
       if ($title_arguments = $route->getDefault('_title_arguments')) {
diff --git a/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php b/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php
index 72af92f68d32da9ddfdf5cfd00354fd9f7bc483c..d30d3963279ff9cef29d8b4cb41e6195cbe268bb 100644
--- a/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php
+++ b/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php
@@ -3,6 +3,7 @@
 namespace Drupal\Core\Entity;
 
 use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Access\AccessResultReasonInterface;
 use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Session\AccountInterface;
@@ -92,11 +93,16 @@ public function access(Route $route, RouteMatchInterface $route_match, AccountIn
 
     // Check whether an entity of any bundle may be created.
     foreach ($bundles as $bundle) {
-      $access = $access->orIf($access_control_handler->createAccess($bundle, $account, [], TRUE));
-      // In case there is a least one bundle user can create entities for,
+      $bundle_access = $access_control_handler->createAccess($bundle, $account, [], TRUE);
+      $access->inheritCacheability($bundle_access);
+      if ($bundle_access instanceof AccessResultReasonInterface && $bundle_access->getReason() !== "" && $access->getReason() === "") {
+        $access->setReason($bundle_access->getReason());
+      }
+
+      // In case there is at least one bundle the user can create entities for,
       // access is allowed.
-      if ($access->isAllowed()) {
-        break;
+      if ($bundle_access->isAllowed()) {
+        return AccessResult::allowed()->inheritCacheability($access);
       }
     }
 
diff --git a/web/core/lib/Drupal/Core/File/FileSystemInterface.php b/web/core/lib/Drupal/Core/File/FileSystemInterface.php
index 325dee8b2df788d818061093f91a321ea5c3a90d..aa31372c17c94871a856823176cd501152f1607d 100644
--- a/web/core/lib/Drupal/Core/File/FileSystemInterface.php
+++ b/web/core/lib/Drupal/Core/File/FileSystemInterface.php
@@ -37,14 +37,14 @@ interface FileSystemInterface {
    *
    * @see \Drupal\Core\File\FileSystemInterface::INSECURE_EXTENSION_REGEX
    */
-  public const INSECURE_EXTENSIONS = ['phar', 'php', 'pl', 'py', 'cgi', 'asp', 'js', 'htaccess'];
+  public const INSECURE_EXTENSIONS = ['phar', 'php', 'pl', 'py', 'cgi', 'asp', 'js', 'htaccess', 'phtml'];
 
   /**
    * The regex pattern used when checking for insecure file types.
    *
    * @see \Drupal\Core\File\FileSystemInterface::INSECURE_EXTENSIONS
    */
-  public const INSECURE_EXTENSION_REGEX = '/\.(phar|php|pl|py|cgi|asp|js|htaccess)(\.|$)/i';
+  public const INSECURE_EXTENSION_REGEX = '/\.(phar|php|pl|py|cgi|asp|js|htaccess|phtml)(\.|$)/i';
 
   /**
    * Moves an uploaded file to a new location.
diff --git a/web/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php b/web/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
index 9d8b74ea6687da118744f1fc50be826f7dd94bf2..825433d59719a2a6242a5881ecf5cc7e50500aee 100644
--- a/web/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
+++ b/web/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
@@ -101,10 +101,20 @@ public function mail(array $message) {
     // line-ending format appropriate for your system. If you need to
     // override this, adjust $settings['mail_line_endings'] in settings.php.
     $mail_body = preg_replace('@\r?\n@', $line_endings, $message['body']);
-    // For headers, PHP's API suggests that we use CRLF normally,
-    // but some MTAs incorrectly replace LF with CRLF. See #234403.
-    $mail_headers = str_replace("\r\n", "\n", $headers->toString());
-    $mail_subject = str_replace("\r\n", "\n", $mail_subject);
+    $mail_headers = $headers->toString();
+
+    // Since Drupal 10+ does not support PHP < 8, this block is only relevant for Drupal 9.x.
+    // See: https://www.drupal.org/node/3270647
+    if (version_compare(PHP_VERSION, '8.0.0') < 0) {
+      // For headers, PHP's API suggests that we use CRLF normally,
+      // but some MTAs incorrectly replace LF with CRLF. See #234403.
+      // PHP 8+ requires headers to be separated by CRLF,
+      // so we'll replace CRLF by LF only when using PHP < 8. See:
+      // - https://bugs.php.net/bug.php?id=81158
+      // - https://github.com/php/php-src/commit/6983ae751cd301886c966b84367fc7aaa1273b2d#diff-c6922cd89f6f75912eb377833ca1eddb7dd41de088be821024b8a0e340fed3df
+      $mail_headers = str_replace("\r\n", "\n", $mail_headers);
+      $mail_subject = str_replace("\r\n", "\n", $mail_subject);
+    }
 
     if (substr(PHP_OS, 0, 3) != 'WIN') {
       // On most non-Windows systems, the "-f" option to the sendmail command
diff --git a/web/core/misc/vertical-tabs.es6.js b/web/core/misc/vertical-tabs.es6.js
index 85f200f5f80972442a1970fc7d4fed1ad298421f..67a9b3ea4de079c0f43bea0b003299c7934485e0 100644
--- a/web/core/misc/vertical-tabs.es6.js
+++ b/web/core/misc/vertical-tabs.es6.js
@@ -118,6 +118,21 @@
           }
         },
       );
+
+      // If a validation error is within a vertical tab, open that tab.
+      context.querySelectorAll('details .form-item .error').forEach((item) => {
+        const details = item.closest('details');
+
+        if (details.style.display === 'none') {
+          const tabSelect = document.querySelector(
+            "[href='#".concat(details.id, "']"),
+          );
+
+          if (tabSelect) {
+            tabSelect.click();
+          }
+        }
+      });
     },
   };
 
diff --git a/web/core/misc/vertical-tabs.js b/web/core/misc/vertical-tabs.js
index d873550624b69863383d0e8d28483797cfa44583..e63b638c95141c474918331fb8eb611d9e8b1f8a 100644
--- a/web/core/misc/vertical-tabs.js
+++ b/web/core/misc/vertical-tabs.js
@@ -55,6 +55,15 @@
           tabFocus.data('verticalTab').focus();
         }
       });
+      context.querySelectorAll('details .form-item .error').forEach(function (item) {
+        var details = item.closest('details');
+        if (details.style.display === 'none') {
+          var tabSelect = document.querySelector("[href='#".concat(details.id, "']"));
+          if (tabSelect) {
+            tabSelect.click();
+          }
+        }
+      });
     }
   };
   Drupal.verticalTab = function (settings) {
diff --git a/web/core/modules/ckeditor5/ckeditor5.libraries.yml b/web/core/modules/ckeditor5/ckeditor5.libraries.yml
index a0953c6235a99978cb01ee05beec055ab7f60ded..011bf5372f1bef7801b45b1bcf0d1db634d9717a 100644
--- a/web/core/modules/ckeditor5/ckeditor5.libraries.yml
+++ b/web/core/modules/ckeditor5/ckeditor5.libraries.yml
@@ -32,6 +32,7 @@ internal.drupal.ckeditor5:
     - core/jquery
     - core/once
     - core/drupal
+    - core/drupal.ajax
     - core/drupal.debounce
     - core/ckeditor5.editorClassic
     - core/ckeditor5.editorDecoupled
diff --git a/web/core/modules/ckeditor5/js/ckeditor5.admin.es6.js b/web/core/modules/ckeditor5/js/ckeditor5.admin.es6.js
index c996d2f506f127d82988863fff866b8b1813777c..5e79b7cd7465ff8c8a53fc5051c98fca53b8c5c2 100644
--- a/web/core/modules/ckeditor5/js/ckeditor5.admin.es6.js
+++ b/web/core/modules/ckeditor5/js/ckeditor5.admin.es6.js
@@ -1049,21 +1049,4 @@
     // Call the original behavior.
     originalFilterStatusAttach(context, settings);
   };
-
-  // Activates otherwise-inactive tabs that have form elements with validation
-  // errors.
-  // @todo Remove when https://www.drupal.org/project/drupal/issues/2911932 lands.
-  Drupal.behaviors.tabErrorsVisible = {
-    attach(context) {
-      context.querySelectorAll('details .form-item .error').forEach((item) => {
-        const details = item.closest('details');
-        if (details.style.display === 'none') {
-          const tabSelect = document.querySelector(`[href='#${details.id}']`);
-          if (tabSelect) {
-            tabSelect.click();
-          }
-        }
-      });
-    },
-  };
 })(Drupal, drupalSettings, jQuery, JSON, once, Sortable, tabbable);
diff --git a/web/core/modules/ckeditor5/js/ckeditor5.admin.js b/web/core/modules/ckeditor5/js/ckeditor5.admin.js
index 5ace5317f281efaebc05f5400eb675036283e843..d8c3e521dd8d288bc29f391a662394bfe26b516a 100644
--- a/web/core/modules/ckeditor5/js/ckeditor5.admin.js
+++ b/web/core/modules/ckeditor5/js/ckeditor5.admin.js
@@ -513,17 +513,4 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
     $(filterStatusCheckboxes).off('click.filterUpdate');
     originalFilterStatusAttach(context, settings);
   };
-  Drupal.behaviors.tabErrorsVisible = {
-    attach: function attach(context) {
-      context.querySelectorAll('details .form-item .error').forEach(function (item) {
-        var details = item.closest('details');
-        if (details.style.display === 'none') {
-          var tabSelect = document.querySelector("[href='#".concat(details.id, "']"));
-          if (tabSelect) {
-            tabSelect.click();
-          }
-        }
-      });
-    }
-  };
 })(Drupal, drupalSettings, jQuery, JSON, once, Sortable, tabbable);
\ No newline at end of file
diff --git a/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php b/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php
index 8610e9bd9c23c38f4e7dc804612a821df51ea3dd..fa5edd161a08820c65242854163e137a4744b349 100644
--- a/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php
+++ b/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php
@@ -683,7 +683,7 @@ public function validateConfigurationForm(array &$form, FormStateInterface $form
 
       // Special case: AJAX updates that do not submit the form (that cannot
       // result in configuration being saved).
-      if ($form_state->getSubmitHandlers() === ['editor_form_filter_admin_format_editor_configure']) {
+      if (in_array('editor_form_filter_admin_format_editor_configure', $form_state->getSubmitHandlers(), TRUE)) {
         // Ensure that plugins' validation constraints do not immediately
         // trigger a validation error: the user may choose to configure other
         // CKEditor 5 aspects first.
diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php
index 1241b7138d7dbbc880eecc173419db991e60af30..95abe11094d9600975907825c4eed9c861ac7518 100644
--- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php
+++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php
@@ -633,6 +633,7 @@ public function testEditableCaption() {
 
     // Ensure that caption can be linked.
     $this->assertNotEmpty($figcaption = $assert_session->waitForElement('css', '.drupal-media figcaption'));
+    $figcaption->click();
     $this->selectTextInsideElement('.drupal-media figcaption');
     $this->assertNotEmpty($assert_session->waitForElement('css', '.drupal-media figcaption.ck-editor__nested-editable'));
     $this->pressEditorButton('Link');
@@ -1059,6 +1060,12 @@ public function testLinkManualDecorator(bool $unrestricted) {
 
     $this->assertNotEmpty($drupalmedia = $assert_session->waitForElementVisible('css', '.ck-content .ck-widget.drupal-media'));
     $drupalmedia->click();
+    $this->assertVisibleBalloon('.ck-toolbar[aria-label="Drupal Media toolbar"]');
+
+    // Turn off caption, so we don't accidentally put our link in that text
+    // field instead of on the actual media.
+    $this->getBalloonButton('Toggle caption off')->click();
+    $assert_session->assertNoElementAfterWait('css', 'figure.drupal-media > figcaption');
 
     $this->assertVisibleBalloon('.ck-toolbar[aria-label="Drupal Media toolbar"]');
     $this->getBalloonButton('Link media')->click();
@@ -1501,7 +1508,7 @@ public function testViewMode(bool $with_alignment) {
     $drupal_media_element = $editor_dom->getElementsByTagName('drupal-media')
       ->item(0);
     $this->assertFalse($drupal_media_element->hasAttribute('data-view-mode'));
-    $assert_session->elementExists('css', 'article.media--view-mode-view-mode-1');
+    $assert_session->waitForElement('css', 'article.media--view-mode-view-mode-1');
 
     // Test that setting allowed_view_modes back to two items restores the
     // field.
@@ -1544,7 +1551,7 @@ public function testViewMode(bool $with_alignment) {
     $this->assertVisibleBalloon('[aria-label="Drupal Media toolbar"]');
     $this->getBalloonButton('View Mode 1')->click();
     $this->getBalloonButton('View Mode 2 has Numeric ID')->click();
-    $assert_session->elementExists('css', 'article.media--view-mode-_2222');
+    $assert_session->waitForElement('css', 'article.media--view-mode-_2222');
     $this->assertEmpty($assert_session->waitForElementVisible('css', '.drupal-media figcaption'));
 
     // Test that a media with no view modes configured will be
diff --git a/web/core/modules/field/migrations/d6_field.yml b/web/core/modules/field/migrations/d6_field.yml
index fa611f2ed69fd7c1b6db28558a8367f207137c40..8ede3cbf32a5fa506d4c4cf1ad231f0432dce9d3 100644
--- a/web/core/modules/field/migrations/d6_field.yml
+++ b/web/core/modules/field/migrations/d6_field.yml
@@ -28,6 +28,7 @@ process:
         userreference_autocomplete: entity_reference
       nodereference:
         nodereference_select: entity_reference
+        nodereference_url: entity_reference
       number_integer:
         number: integer
         optionwidgets_select: list_integer
diff --git a/web/core/modules/field/migrations/d6_field_instance_widget_settings.yml b/web/core/modules/field/migrations/d6_field_instance_widget_settings.yml
index 815e8316b581aec4d2902e2b8eb9bc32df425082..248c4289e5014d019ae24315d2a4624158113bb2 100644
--- a/web/core/modules/field/migrations/d6_field_instance_widget_settings.yml
+++ b/web/core/modules/field/migrations/d6_field_instance_widget_settings.yml
@@ -58,6 +58,7 @@ process:
         optionwidgets_buttons: options_buttons
         optionwidgets_select: options_select
         nodereference_select: options_select
+        nodereference_url: entity_reference_autocomplete
         nodereference_buttons: options_buttons
         nodereference_autocomplete: entity_reference_autocomplete_tags
         userreference_select: options_select
diff --git a/web/core/modules/field/migrations/state/field.migrate_drupal.yml b/web/core/modules/field/migrations/state/field.migrate_drupal.yml
index 0ec481972fdb8c43529d64e7ff12a850469bd062..1928868c021e0f45fc75fa6c3bb335df6e2ffeee 100644
--- a/web/core/modules/field/migrations/state/field.migrate_drupal.yml
+++ b/web/core/modules/field/migrations/state/field.migrate_drupal.yml
@@ -2,6 +2,7 @@
 finished:
   6:
     nodereference: core
+    nodereference_url: core
     userreference: core
     content: field
     email: core
diff --git a/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php b/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php
index e78c3506cc74f465d24ef0af12a2625a79eb0502..d931004b50f313798faea7529e39e65931058268 100644
--- a/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php
+++ b/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php
@@ -102,6 +102,12 @@ public function testFields() {
     $this->assertSame('entity_reference', $field_storage->getType());
     $this->assertSame('node', $field_storage->getSetting('target_type'));
 
+    // Test a second node reference field.
+    $field_storage = FieldStorageConfig::load('node.field_company_4');
+    $this->assertInstanceOf(FieldStorageConfig::class, $field_storage);
+    $this->assertSame('entity_reference', $field_storage->getType());
+    $this->assertSame('node', $field_storage->getSetting('target_type'));
+
     // Test a user reference field.
     $field_storage = FieldStorageConfig::load('node.field_commander');
     $this->assertInstanceOf(FieldStorageConfig::class, $field_storage);
diff --git a/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php b/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php
index c986b0c37365ec961ee702b244923c740ebf2cf0..b986260363b8164995ffa00bbdf3f3a624dfeafe 100644
--- a/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php
+++ b/web/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php
@@ -128,6 +128,11 @@ public function testWidgetSettings() {
     $this->assertIsArray($component);
     $this->assertSame('entity_reference_autocomplete_tags', $component['type']);
 
+    $component = $display_repository->getFormDisplay('node', 'employee', 'default')
+      ->getComponent('field_company_4');
+    $this->assertIsArray($component);
+    $this->assertSame('entity_reference_autocomplete', $component['type']);
+
     $component = $display_repository->getFormDisplay('node', 'employee', 'default')
       ->getComponent('field_commander');
     $this->assertIsArray($component);
diff --git a/web/core/modules/jsonapi/src/ResourceType/ResourceTypeRepositoryInterface.php b/web/core/modules/jsonapi/src/ResourceType/ResourceTypeRepositoryInterface.php
index 8a66abf5a5bafab4e6ccc8a9720e8f7f17b95f68..43db5b5122c450684cf0e53d2b8093557b49d021 100644
--- a/web/core/modules/jsonapi/src/ResourceType/ResourceTypeRepositoryInterface.php
+++ b/web/core/modules/jsonapi/src/ResourceType/ResourceTypeRepositoryInterface.php
@@ -30,7 +30,7 @@ public function all();
    *   The ID for the bundle to find. If the entity type does not have a bundle,
    *   then the entity type ID again.
    *
-   * @return \Drupal\jsonapi\ResourceType\ResourceType
+   * @return \Drupal\jsonapi\ResourceType\ResourceType|null
    *   The requested JSON:API resource type, if it exists. NULL otherwise.
    *
    * @see \Drupal\Core\Entity\EntityInterface::bundle()
diff --git a/web/core/modules/media/src/Controller/OEmbedIframeController.php b/web/core/modules/media/src/Controller/OEmbedIframeController.php
index 9da8f90502305f4e364d343db9a69d071dcdf554..3c5079f6204add211f1c1ea55d9160ed9242b09e 100644
--- a/web/core/modules/media/src/Controller/OEmbedIframeController.php
+++ b/web/core/modules/media/src/Controller/OEmbedIframeController.php
@@ -18,7 +18,7 @@
 use Psr\Log\LoggerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
+use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
 
 /**
  * Controller which renders an oEmbed resource in a bare page (without blocks).
@@ -115,7 +115,7 @@ public static function create(ContainerInterface $container) {
    * @return \Symfony\Component\HttpFoundation\Response
    *   The response object.
    *
-   * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
+   * @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException
    *   Will be thrown if either
    *   - the 'hash' parameter does not match the expected hash of the 'url'
    *     parameter;
@@ -129,7 +129,7 @@ public function render(Request $request) {
       $allowed_host = parse_url($allowed_domain, PHP_URL_HOST);
       $host = parse_url($request->getSchemeAndHttpHost(), PHP_URL_HOST);
       if ($allowed_host !== $host) {
-        throw new AccessDeniedHttpException('This resource is not available');
+        throw new BadRequestHttpException('This resource is not available');
       }
     }
 
@@ -141,7 +141,7 @@ public function render(Request $request) {
     // parameter passed in the query string.
     $hash = $this->iFrameUrlHelper->getHash($url, $max_width, $max_height);
     if (!hash_equals($hash, $request->query->get('hash', ''))) {
-      throw new AccessDeniedHttpException('This resource is not available');
+      throw new BadRequestHttpException('This resource is not available');
     }
 
     // Return a response instead of a render array so that the frame content
diff --git a/web/core/modules/media/tests/src/FunctionalJavascript/MediaSourceOEmbedVideoTest.php b/web/core/modules/media/tests/src/FunctionalJavascript/MediaSourceOEmbedVideoTest.php
index cab7e3073432822b4f483005c007e606b6521a54..62b7500be83356bde64cbbdf49d4a5b221bb3d5b 100644
--- a/web/core/modules/media/tests/src/FunctionalJavascript/MediaSourceOEmbedVideoTest.php
+++ b/web/core/modules/media/tests/src/FunctionalJavascript/MediaSourceOEmbedVideoTest.php
@@ -195,7 +195,7 @@ public function testMediaOEmbedVideoSource() {
     $no_hash_query = array_diff_key($query, ['hash' => '']);
     $this->drupalGet('media/oembed', ['query' => $no_hash_query]);
     $assert_session->pageTextNotContains('By the power of Grayskull, Vimeo works!');
-    $assert_session->pageTextContains('Access denied');
+    $assert_session->pageTextContains('Client error');
 
     // A correct query should be allowed because the anonymous role has the
     // 'view media' permission.
diff --git a/web/core/modules/media/tests/src/Kernel/OEmbedIframeControllerTest.php b/web/core/modules/media/tests/src/Kernel/OEmbedIframeControllerTest.php
index 1d618716a5aec809c49e4d8bd72b7bd5d7314d52..c71c2e32744659a86c12bccf950582a2363247c9 100644
--- a/web/core/modules/media/tests/src/Kernel/OEmbedIframeControllerTest.php
+++ b/web/core/modules/media/tests/src/Kernel/OEmbedIframeControllerTest.php
@@ -55,7 +55,7 @@ public function testBadHashParameter($hash) {
 
     $this->assertIsCallable($controller);
 
-    $this->expectException('\Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException');
+    $this->expectException('\Symfony\Component\HttpKernel\Exception\BadRequestHttpException');
     $this->expectExceptionMessage('This resource is not available');
     $request = new Request([
       'url' => 'https://example.com/path/to/resource',
diff --git a/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php b/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
index a1141ff9b520700b70b690ed7249ec6130831a9d..a94bb4ad46ed03f1dae99a4d8f05b5c48be9008c 100644
--- a/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
+++ b/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
@@ -1009,6 +1009,11 @@ public static function validateRequired(array $element, FormStateInterface $form
       return;
     }
 
+    // If user has no access, the validation isn't needed.
+    if (isset($element['#access']) && !$element['#access']) {
+      return;
+    }
+
     $field_state = static::getFieldState($element, $form_state);
     // Trigger error if the field is required and no media is present. Although
     // the Form API's default validation would also catch this, the validation
diff --git a/web/core/modules/media_library/tests/modules/media_library_test/media_library_test.module b/web/core/modules/media_library/tests/modules/media_library_test/media_library_test.module
index 26d0362e17fb1a581c8a0a24e106986a747b2520..bbebbb0f1e31a1e7449597a7b021018ab2d9caa3 100644
--- a/web/core/modules/media_library/tests/modules/media_library_test/media_library_test.module
+++ b/web/core/modules/media_library/tests/modules/media_library_test/media_library_test.module
@@ -27,7 +27,10 @@ function media_library_test_media_create_access(AccountInterface $account, array
  * Implements hook_entity_field_access().
  */
 function media_library_test_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) {
-  return AccessResult::forbiddenIf($field_definition->getName() === 'field_media_no_access', 'Field access denied by test module');
+  $deny_fields = \Drupal::state()->get('media_library_test_entity_field_access_deny_fields', []);
+  // Always deny the field_media_no_access field.
+  $deny_fields[] = 'field_media_no_access';
+  return AccessResult::forbiddenIf(in_array($field_definition->getName(), $deny_fields, TRUE), 'Field access denied by test module');
 }
 
 /**
diff --git a/web/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php b/web/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php
index c7a96e635baa5c5b0bc9757edd5957af66201cb3..0761bab5c9e22c9c27a3416507ec8b9bbeeb12ef 100644
--- a/web/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php
+++ b/web/core/modules/media_library/tests/src/FunctionalJavascript/WidgetAccessTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\media_library\FunctionalJavascript;
 
+use Drupal\field\Entity\FieldConfig;
 use Drupal\media\Entity\Media;
 use Drupal\media_library\MediaLibraryState;
 use Drupal\user\Entity\Role;
@@ -136,4 +137,37 @@ public function testWidgetAccess() {
     $assert_session->responseContains('Access denied');
   }
 
+  /**
+   * Tests the widget with a required field that the user can't access.
+   */
+  public function testRequiredFieldNoAccess() {
+    // Make field_single_media_type required.
+    $fieldConfig = FieldConfig::loadByName('node', 'basic_page', 'field_single_media_type');
+    assert($fieldConfig instanceof FieldConfig);
+    $fieldConfig->setRequired(TRUE)
+      ->save();
+
+    // Deny access to the field.
+    \Drupal::state()->set('media_library_test_entity_field_access_deny_fields', ['field_single_media_type']);
+
+    $user = $this->drupalCreateUser([
+      'access administration pages',
+      'access content',
+      'create basic_page content',
+      'create type_one media',
+      'view media',
+    ]);
+    $this->drupalLogin($user);
+    $this->drupalGet('node/add/basic_page');
+
+    $this->assertSession()->elementNotExists('css', '.field--name-field-single-media-type');
+
+    $this->submitForm([
+      'title[0][value]' => $this->randomMachineName(),
+    ], 'Save');
+
+    $this->assertSession()->elementNotExists('css', '.messages--error');
+    $this->assertSession()->pageTextNotContains('Single media type field is required.');
+  }
+
 }
diff --git a/web/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php b/web/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
index 8c0e5f13135a314b67cb47cbaa4b1a9746e352c6..103805feae45d3b54bd68eaac176aed0f9ee624d 100644
--- a/web/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
+++ b/web/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
@@ -342,9 +342,10 @@ protected function processStubRow(Row $row) {
       $row->setDestinationProperty($bundle_key, reset($this->bundles));
     }
 
+    $bundle = $row->getDestinationProperty($bundle_key) ?? $this->storage->getEntityTypeId();
     // Populate any required fields not already populated.
     $fields = $this->entityFieldManager
-      ->getFieldDefinitions($this->storage->getEntityTypeId(), $row->getDestinationProperty($bundle_key));
+      ->getFieldDefinitions($this->storage->getEntityTypeId(), $bundle);
     foreach ($fields as $field_name => $field_definition) {
       if ($field_definition->isRequired() && is_null($row->getDestinationProperty($field_name))) {
         // Use the configured default value for this specific field, if any.
diff --git a/web/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php b/web/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php
index b5fb3ec2502467158b1db2ac7e89fbac11324936..df326502bde7cd37aaeeae4e1ea0e1fda4cdc64e 100644
--- a/web/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php
+++ b/web/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\migrate\Kernel;
 
+use Drupal\Core\Entity\EntityFieldManager;
 use Drupal\entity_test\Entity\EntityTestMul;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
@@ -10,6 +11,7 @@
 use Drupal\migrate\Plugin\MigrateIdMapInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Tests\StubTestTrait;
 use Drupal\migrate_entity_test\Entity\StringIdEntityTest;
 
 /**
@@ -19,6 +21,8 @@
  */
 class MigrateEntityContentBaseTest extends KernelTestBase {
 
+  use StubTestTrait;
+
   /**
    * Modules to enable.
    *
@@ -324,4 +328,48 @@ public function testAccountSwitcherBackwardsCompatibility() {
     $this->assertInstanceOf(EntityContentBase::class, $destination);
   }
 
+  /**
+   * Tests bundle is properly provided for stubs without bundle support.
+   *
+   * @todo Remove this test in when native PHP type-hints will be added for
+   *   EntityFieldManagerInterface::getFieldDefinitions(). See
+   *   https://www.drupal.org/project/drupal/issues/3050720.
+   */
+  public function testBundleFallbackForStub(): void {
+    $this->enableModules(['migrate_entity_test']);
+    $this->installEntitySchema('migrate_string_id_entity_test');
+
+    $entity_type_manager = $this->container->get('entity_type.manager');
+    $entity_type_bundle_info = $this->container->get('entity_type.bundle.info');
+    $entity_display_repository = $this
+      ->container
+      ->get('entity_display.repository');
+    $typed_data_manager = $this->container->get('typed_data_manager');
+    $language_manager = $this->container->get('language_manager');
+    $keyvalue = $this->container->get('keyvalue');
+    $module_handler = $this->container->get('module_handler');
+    $cache_discovery = $this->container->get('cache.discovery');
+    $entity_last_installed_schema_repository = $this
+      ->container
+      ->get('entity.last_installed_schema.repository');
+
+    $decorated_entity_field_manager = new class ($entity_type_manager, $entity_type_bundle_info, $entity_display_repository, $typed_data_manager, $language_manager, $keyvalue, $module_handler, $cache_discovery, $entity_last_installed_schema_repository) extends EntityFieldManager {
+
+      /**
+       * {@inheritdoc}
+       */
+      public function getFieldDefinitions($entity_type_id, $bundle) {
+        if (\is_null($bundle)) {
+          throw new \Exception("Bundle value shouldn't be NULL.");
+        }
+
+        return parent::getFieldDefinitions($entity_type_id, $bundle);
+      }
+
+    };
+
+    $this->container->set('entity_field.manager', $decorated_entity_field_manager);
+    $this->createEntityStub('migrate_string_id_entity_test');
+  }
+
 }
diff --git a/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php
index 0badecba795212ab13f2fee99614b3232fe9fa1a..85503493cf74c8713263597e88780053bb3729b7 100644
--- a/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -2963,6 +2963,18 @@
   'active' => '1',
   'locked' => '0',
 ))
+->values(array(
+  'field_name' => 'field_company_4',
+  'type' => 'nodereference',
+  'global_settings' => 'a:1:{s:19:"referenceable_types";a:10:{s:7:"company";s:7:"company";s:7:"article";i:0;s:8:"employee";i:0;s:5:"forum";i:0;s:10:"test_event";i:0;s:9:"test_page";i:0;s:11:"test_planet";i:0;s:10:"test_story";i:0;s:7:"sponsor";i:0;s:5:"story";i:0;}}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'nodereference',
+  'db_columns' => 'a:1:{s:3:"nid";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:0;s:5:"index";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))
 ->values(array(
   'field_name' => 'field_multivalue',
   'type' => 'number_decimal',
@@ -3440,6 +3452,18 @@
   'widget_module' => 'nodereference',
   'widget_active' => '1',
 ))
+->values(array(
+  'field_name' => 'field_company_4',
+  'type_name' => 'employee',
+  'weight' => '36',
+  'label' => 'Company 4',
+  'widget_type' => 'nodereference_url',
+  'widget_settings' => 'a:7:{s:18:"autocomplete_match";s:8:"contains";s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:3:"nid";N;s:14:"_error_element";s:50:"default_value_widget][field_company_4][0][nid][nid";}}s:17:"default_value_php";N;s:9:"node_link";a:5:{s:6:"teaser";i:0;s:4:"full";i:1;s:5:"title";s:14:"Company create";s:11:"hover_title";s:0:"";s:11:"destination";s:4:"node";}s:8:"fallback";s:12:"autocomplete";s:13:"edit_fallback";i:1;}',
+  'display_settings' => 'a:5:{s:5:"label";a:2:{s:6:"format";s:5:"above";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+  'description' => '',
+  'widget_module' => 'nodereference',
+  'widget_active' => '1',
+))
 ->values(array(
   'field_name' => 'field_multivalue',
   'type_name' => 'test_planet',
@@ -3847,6 +3871,12 @@
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
+    'field_company_4_nid' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
     'field_sync_email' => array(
       'type' => 'varchar',
       'not null' => FALSE,
@@ -3869,6 +3899,9 @@
     'field_company_3_nid' => array(
       'field_company_3_nid',
     ),
+    'field_company_4_nid' => array(
+      'field_company_4_nid',
+    ),
   ),
   'mysql_character_set' => 'utf8',
 ));
@@ -3880,6 +3913,7 @@
   'field_commander_uid',
   'field_company_2_nid',
   'field_company_3_nid',
+  'field_company_4_nid',
   'field_sync_email',
 ))
 ->values(array(
@@ -3888,6 +3922,7 @@
   'field_commander_uid' => '8',
   'field_company_2_nid' => '15',
   'field_company_3_nid' => '16',
+  'field_company_4_nid' => '16',
   'field_sync_email' => NULL,
 ))
 ->values(array(
@@ -3896,6 +3931,7 @@
   'field_commander_uid' => NULL,
   'field_company_2_nid' => NULL,
   'field_company_3_nid' => NULL,
+  'field_company_4_nid' => NULL,
   'field_sync_email' => 'jsmith@example.com',
 ))
 ->values(array(
@@ -3904,6 +3940,7 @@
   'field_commander_uid' => NULL,
   'field_company_2_nid' => NULL,
   'field_company_3_nid' => NULL,
+  'field_company_4_nid' => NULL,
   'field_sync_email' => 'jsmith@example.com',
 ))
 ->execute();
@@ -48073,6 +48110,18 @@
   'weight' => '0',
   'info' => 'a:13:{s:4:"name";s:10:"Pushbutton";s:11:"description";s:52:"Tabled, multi-column theme in blue and orange tones.";s:7:"version";s:4:"6.38";s:4:"core";s:3:"6.x";s:6:"engine";s:11:"phptemplate";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1456343372";s:7:"regions";a:5:{s:4:"left";s:12:"Left sidebar";s:5:"right";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";}s:8:"features";a:10:{i:0;s:20:"comment_user_picture";i:1;s:7:"favicon";i:2;s:7:"mission";i:3;s:4:"logo";i:4;s:4:"name";i:5;s:17:"node_user_picture";i:6;s:6:"search";i:7;s:6:"slogan";i:8;s:13:"primary_links";i:9;s:15:"secondary_links";}s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:9:"style.css";s:27:"themes/pushbutton/style.css";}}s:7:"scripts";a:1:{s:9:"script.js";s:27:"themes/pushbutton/script.js";}s:10:"screenshot";s:32:"themes/pushbutton/screenshot.png";s:3:"php";s:5:"4.3.5";}',
 ))
+->values(array(
+  'filename' => 'sites/all/modules/nodereference_url/nodereference_url.module',
+  'name' => 'nodereference_url',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6100',
+  'weight' => '0',
+  'info' => 'a:8:{s:4:"name";s:25:"Node Reference URL Widget";s:11:"description";s:99:"Adds an additional widget to the CCK Node Reference field that prepopulates a reference by the URL.";s:12:"dependencies";a:1:{i:0;s:13:"nodereference";}s:7:"package";s:3:"CCK";s:4:"core";s:3:"6.x";s:10:"dependents";a:0:{}s:7:"version";N;s:3:"php";s:5:"4.3.5";}',
+))
 ->execute();
 $connection->schema()->createTable('term_data', array(
   'fields' => array(
diff --git a/web/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php b/web/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php
index 7085fa7239e5eb4738a1e93b2ad701d8fb64f9d5..d29d763ea5745605b7b71dfe1c7f890735ff3abb 100644
--- a/web/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php
+++ b/web/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php
@@ -89,6 +89,7 @@ public function testAddAllFieldProcesses() {
       'field_company',
       'field_company_2',
       'field_company_3',
+      'field_company_4',
       'field_sync',
       'field_multivalue',
       'field_test_text_single_checkbox',
diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
index 92136beb9ed21b822d74e8dd0bbff2f3fa6d3805..241c72964d9e62e7d1b62a3687459b8e1854e59b 100644
--- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
+++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
@@ -107,6 +107,7 @@ protected function getAvailablePaths() {
       'Menu translation',
       'Node',
       'Node Reference',
+      'Node Reference URL Widget',
       'Nodeaccess',
       'Number',
       'OpenID',
diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
index d00a238c01c777f3693f0fa9f8b589dccb7797f4..7fa0e217709a339ad9dd51f13aab6ecbb566d75b 100644
--- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
+++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
@@ -99,6 +99,7 @@ protected function getAvailablePaths() {
       'Node',
       'Nodeaccess',
       'Node Reference',
+      'Node Reference URL Widget',
       'Number',
       'OpenID',
       'PHP filter',
diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
index fb85520432ba3d569b588648b7ebbd399aa7a194..1da8b95b4f61cad1a07156808bf346b1360bb50a 100644
--- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
+++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
@@ -78,8 +78,8 @@ protected function getEntityCounts() {
       'contact_message' => 0,
       'configurable_language' => 5,
       'editor' => 2,
-      'field_config' => 103,
-      'field_storage_config' => 71,
+      'field_config' => 104,
+      'field_storage_config' => 72,
       'file' => 7,
       'filter_format' => 7,
       'image_style' => 6,
@@ -152,6 +152,7 @@ protected function getAvailablePaths() {
       'Menu translation',
       'Node',
       'Node Reference',
+      'Node Reference URL Widget',
       'Option Widgets',
       'Path',
       'Profile translation',
diff --git a/web/core/modules/node/node.module b/web/core/modules/node/node.module
index 0cbcc7a09e0b5d78370f7ace5695ee4ab77789c8..a09af6f03825f5716ce6d189d909c05427595ed8 100644
--- a/web/core/modules/node/node.module
+++ b/web/core/modules/node/node.module
@@ -554,9 +554,11 @@ function template_preprocess_node(&$variables) {
         // 'compact' view mode on the User entity. Note that the 'compact'
         // view mode might not be configured, so remember to always check the
         // theme setting first.
-        $variables['author_picture'] = \Drupal::entityTypeManager()
-          ->getViewBuilder('user')
-          ->view($node->getOwner(), 'compact');
+        if ($node_owner = $node->getOwner()) {
+          $variables['author_picture'] = \Drupal::entityTypeManager()
+            ->getViewBuilder('user')
+            ->view($node_owner, 'compact');
+        }
       }
     }
   }
diff --git a/web/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php b/web/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
index 47ea8800aea751710e42a5c883dc5f9328d40e20..9b5d24836dbb2b28dd724e71e9dd3c25fb0e6664 100644
--- a/web/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
+++ b/web/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
@@ -122,7 +122,7 @@ public function getResponseFormat(RouteMatchInterface $route_match, Request $req
       return $acceptable_formats[0];
     }
 
-    // Sometimes, there are no acceptable formats, e.g. DELETE routes.
+    // Sometimes, there are no acceptable formats.
     return NULL;
   }
 
@@ -141,8 +141,7 @@ public function getResponseFormat(RouteMatchInterface $route_match, Request $req
    * @param \Symfony\Component\Serializer\SerializerInterface $serializer
    *   The serializer to use.
    * @param string|null $format
-   *   The response format, or NULL in case the response does not need a format,
-   *   for example for the response to a DELETE request.
+   *   The response format, or NULL in case the response does not need a format.
    *
    * @todo Add test coverage for language negotiation contexts in
    *   https://www.drupal.org/node/2135829.
diff --git a/web/core/modules/rest/src/Routing/ResourceRoutes.php b/web/core/modules/rest/src/Routing/ResourceRoutes.php
index f8ebbff151d3d4f1b65d52cf5588a6fc756e16f4..83096eb447ff27e5dc9d560e1b6c8cafc3c979af 100644
--- a/web/core/modules/rest/src/Routing/ResourceRoutes.php
+++ b/web/core/modules/rest/src/Routing/ResourceRoutes.php
@@ -116,7 +116,7 @@ protected function getRoutesForResourceConfig(RestResourceConfigInterface $rest_
         // - set the allowed request body content types/formats for methods that
         //   allow request bodies to be sent (unless hardcoded by the plugin)
         // - set the allowed authentication providers
-        if (in_array($method, ['GET', 'HEAD', 'POST', 'PUT', 'PATCH'], TRUE) && !$route->hasRequirement('_format')) {
+        if (in_array($method, ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'], TRUE) && !$route->hasRequirement('_format')) {
           $route->addRequirements(['_format' => implode('|', $rest_resource_config->getFormats($method))]);
         }
         if (in_array($method, ['POST', 'PATCH', 'PUT'], TRUE) && !$route->hasRequirement('_content_type_format')) {
diff --git a/web/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php b/web/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php
index 8ff2eae36ef7b7bcae9f75df2f81b7bdbf1120ce..47625ace393dc19ef165d0d82bc75991ca0be444 100644
--- a/web/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php
+++ b/web/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php
@@ -136,7 +136,7 @@ public function testOnResponseWithCacheableResponse($methods, array $supported_r
       $route_match = new RouteMatch('test', new Route('/rest/test', ['_rest_resource_config' => $this->randomMachineName()], $route_requirements));
 
       // The RequestHandler must return a ResourceResponseInterface object.
-      $handler_response = new ResourceResponse($method !== 'DELETE' ? ['REST' => 'Drupal'] : NULL);
+      $handler_response = new ResourceResponse(['REST' => 'Drupal']);
       $this->assertInstanceOf(ResourceResponseInterface::class, $handler_response);
       $this->assertInstanceOf(CacheableResponseInterface::class, $handler_response);
 
@@ -186,7 +186,7 @@ public function testOnResponseWithUncacheableResponse($methods, array $supported
       $route_match = new RouteMatch('test', new Route('/rest/test', ['_rest_resource_config' => $this->randomMachineName()], $route_requirements));
 
       // The RequestHandler must return a ResourceResponseInterface object.
-      $handler_response = new ModifiedResourceResponse($method !== 'DELETE' ? ['REST' => 'Drupal'] : NULL);
+      $handler_response = new ModifiedResourceResponse(['REST' => 'Drupal']);
       $this->assertInstanceOf(ResourceResponseInterface::class, $handler_response);
       $this->assertNotInstanceOf(CacheableResponseInterface::class, $handler_response);
 
@@ -344,7 +344,7 @@ public function providerTestResponseFormat() {
     ];
 
     $unsafe_method_bodyless_test_cases = [
-      'unsafe methods without response bodies (DELETE): client requested no format, response should have no format' => [
+      'unsafe methods without request bodies (DELETE): client requested no format, response should have the first acceptable format' => [
         ['DELETE'],
         ['xml', 'json'],
         ['xml', 'json'],
@@ -352,10 +352,10 @@ public function providerTestResponseFormat() {
         ['Content-Type' => 'application/json'],
         NULL,
         'xml',
-        NULL,
-        '',
+        'text/xml',
+        $xml_encoded,
       ],
-      'unsafe methods without response bodies (DELETE): client requested format (XML), response should have no format' => [
+      'unsafe methods without request bodies (DELETE): client requested format (XML), response should have xml format' => [
         ['DELETE'],
         ['xml', 'json'],
         ['xml', 'json'],
@@ -363,10 +363,10 @@ public function providerTestResponseFormat() {
         ['Content-Type' => 'application/json'],
         NULL,
         'xml',
-        NULL,
-        '',
+        'text/xml',
+        $xml_encoded,
       ],
-      'unsafe methods without response bodies (DELETE): client requested format (JSON), response should have no format' => [
+      'unsafe methods without request bodies (DELETE): client requested format (JSON), response should have json format' => [
         ['DELETE'],
         ['xml', 'json'],
         ['xml', 'json'],
@@ -374,8 +374,8 @@ public function providerTestResponseFormat() {
         ['Content-Type' => 'application/json'],
         NULL,
         'json',
-        NULL,
-        '',
+        'application/json',
+        $json_encoded,
       ],
     ];
 
diff --git a/web/core/modules/system/tests/modules/entity_test/entity_test.module b/web/core/modules/system/tests/modules/entity_test/entity_test.module
index 52867f8508c9cb7032faeab6b5c8d814513e49c9..5644ef696b37b8cfa7512265635caad3583deeae 100644
--- a/web/core/modules/system/tests/modules/entity_test/entity_test.module
+++ b/web/core/modules/system/tests/modules/entity_test/entity_test.module
@@ -777,6 +777,12 @@ function entity_test_entity_create_access(AccountInterface $account, $context, $
   \Drupal::state()->set('entity_test_entity_create_access', TRUE);
   \Drupal::state()->set('entity_test_entity_create_access_context', $context);
 
+  if ($entity_bundle === 'forbidden_access_bundle') {
+    // We need to cover a case in which a bundle is specifically forbidden
+    // from creation (as opposed to neutral access).
+    return AccessResult::forbidden();
+  }
+
   // No opinion.
   return AccessResult::neutral();
 }
diff --git a/web/core/modules/system/tests/modules/form_test/src/Form/FormTestGroupVerticalTabsForm.php b/web/core/modules/system/tests/modules/form_test/src/Form/FormTestGroupVerticalTabsForm.php
index 7a29d7d7ee000c0136ad61253da23cc3029f6282..3e47c908c8c14763da53bca6ee1a862d4b62b3b5 100644
--- a/web/core/modules/system/tests/modules/form_test/src/Form/FormTestGroupVerticalTabsForm.php
+++ b/web/core/modules/system/tests/modules/form_test/src/Form/FormTestGroupVerticalTabsForm.php
@@ -44,9 +44,22 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       '#type' => 'textfield',
       '#title' => 'Second nested element in details element',
     ];
+    $form['submit'] = [
+      '#type' => 'submit',
+      '#value' => 'Save',
+    ];
     return $form;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function validateForm(array &$form, FormStateInterface $form_state) {
+    if ($form_state->getValue('element_2') === 'bad') {
+      $form_state->setErrorByName('element_2', $this->t('there was an error'));
+    }
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/noop.css b/web/core/modules/system/tests/modules/many_assets_test/css/noop.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/noop.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_a.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_a.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_a.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_b.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_b.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_b.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_c.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_c.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_114_c.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_115_a.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_115_a.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_115_a.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_115_b.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_115_b.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_115_b.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_a.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_a.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_a.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_b.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_b.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_b.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_c.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_c.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_c.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_d.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_d.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_d.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_e.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_e.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_e.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_f.css b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_f.css
new file mode 100644
index 0000000000000000000000000000000000000000..c2b35c03f1a0c0e3533fd43c53aabd082a671a23
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/css/weighted/weighted_116_f.css
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op CSS file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/noop.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/noop.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/noop.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/noop.js b/web/core/modules/system/tests/modules/many_assets_test/js/noop.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/noop.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_a.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_a.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_a.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_a.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_a.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_a.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_b.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_b.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_b.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_b.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_b.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_c.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_c.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_c.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_c.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_c.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_114_c.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_a.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_a.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_a.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_a.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_a.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_a.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_b.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_b.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_b.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_b.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_115_b.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_a.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_a.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_a.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_a.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_a.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_a.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_b.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_b.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_b.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_b.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_b.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_c.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_c.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_c.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_c.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_c.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_c.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_d.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_d.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_d.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_d.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_d.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_d.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_e.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_e.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_e.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_e.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_e.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_e.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_f.es6.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_f.es6.js
new file mode 100644
index 0000000000000000000000000000000000000000..93cfe46cefffb80575df51fbffce517ec14e32c7
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_f.es6.js
@@ -0,0 +1,4 @@
+/**
+ * @file
+ * No-op JavaScript file.
+ */
diff --git a/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_f.js b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_f.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d11a7c1c32d8e2f616f63999bc27195d0fea8a4
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/js/weighted/weighted_116_f.js
@@ -0,0 +1,6 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
\ No newline at end of file
diff --git a/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.info.yml b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.info.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8d56a9ca83db9c1fadfc5c239ae5f9ba2d630c68
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.info.yml
@@ -0,0 +1,5 @@
+name: 'Many assets test'
+type: module
+description: 'Tests loading order of many assets'
+package: Testing
+version: VERSION
diff --git a/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.libraries.yml b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.libraries.yml
new file mode 100644
index 0000000000000000000000000000000000000000..be561e128a2c4d79cd8f1ae7c3ff0b1da8b1904c
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.libraries.yml
@@ -0,0 +1,39 @@
+many-dependencies:
+  version: VERSION
+  # JS and CSS dependencies will be populated in jqueryui_library_assets_test_library_info_build().
+  js: {}
+  css: {}
+
+weighted:
+  version: VERSION
+  js:
+    js/weighted/weighted_114_a.js: { weight: -11.4, attributes: { data-weight: '-11.4' } }
+    js/weighted/weighted_115_a.js: { weight: -11.5, attributes: { data-weight: '-11.5' } }
+    js/weighted/weighted_116_a.js: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+    js/weighted/weighted_116_b.js: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+    js/weighted/weighted_116_c.js: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+  css:
+    component:
+      css/weighted/weighted_114_a.css: { weight: -11.4, attributes: { data-weight: '-11.4' } }
+      css/weighted/weighted_115_a.css: { weight: -11.5, attributes: { data-weight: '-11.5' } }
+      css/weighted/weighted_116_a.css: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+      css/weighted/weighted_116_b.css: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+      css/weighted/weighted_116_c.css: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+
+weighted_again:
+  version: VERSION
+  js:
+    js/weighted/weighted_114_b.js: { weight: -11.4, attributes: { data-weight: '-11.4' } }
+    js/weighted/weighted_114_c.js: { weight: -11.4, attributes: { data-weight: '-11.4' } }
+    js/weighted/weighted_115_b.js: { weight: -11.5, attributes: { data-weight: '-11.5' } }
+    js/weighted/weighted_116_d.js: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+    js/weighted/weighted_116_e.js: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+    js/weighted/weighted_116_f.js: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+  css:
+    component:
+      css/weighted/weighted_114_b.css: { weight: -11.4, attributes: { data-weight: '-11.4' } }
+      css/weighted/weighted_114_c.css: { weight: -11.4, attributes: { data-weight: '-11.4' } }
+      css/weighted/weighted_115_b.css: { weight: -11.5, attributes: { data-weight: '-11.5' } }
+      css/weighted/weighted_116_d.css: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+      css/weighted/weighted_116_e.css: { weight: -11.6, attributes: { data-weight: '-11.6' } }
+      css/weighted/weighted_116_f.css: { weight: -11.6, attributes: { data-weight: '-11.6' } }
diff --git a/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.module b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.module
new file mode 100644
index 0000000000000000000000000000000000000000..e6812866654a0135c77d7afe9bfd3da87127cf6e
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.module
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @file
+ * Helper module for asset load order test.
+ */
+
+/**
+ * Implements hook_library_info_build().
+ */
+function many_assets_test_library_info_build() {
+  $libraries = [];
+  // Load the local javascript as an "external" asset varied by query string.
+  $base_javascript = \Drupal::request()->getBasePath() . '/' . \Drupal::service('extension.list.module')->getPath('many_assets_test') . '/js/noop.js';
+  $base_css = \Drupal::request()->getBasePath() . '/' . \Drupal::service('extension.list.module')->getPath('many_assets_test') . '/css/noop.css';
+
+  // Build a library dependency containing 100 javascript assets.
+  for ($i = 1; $i <= 150; $i++) {
+    $libraries['many-dependencies']['js'][$base_javascript . '?dep' . $i] = [
+      'type' => 'external',
+    ];
+    $libraries['many-dependencies']['css']['component'][$base_css . '?dep' . $i] = [
+      'type' => 'external',
+    ];
+  }
+
+  return $libraries;
+}
diff --git a/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.routing.yml b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.routing.yml
new file mode 100644
index 0000000000000000000000000000000000000000..785710a597dd5cead88c21b172615aabe5442437
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/many_assets_test.routing.yml
@@ -0,0 +1,7 @@
+many_assets_test_page:
+  path: '/many_assets_test'
+  defaults:
+    _controller: '\Drupal\many_assets_test\Controller\ManyAssetsTestController::build'
+    _title: 'Test jQuery UI asset loading order'
+  requirements:
+    _access: 'TRUE'
diff --git a/web/core/modules/system/tests/modules/many_assets_test/src/Controller/ManyAssetsTestController.php b/web/core/modules/system/tests/modules/many_assets_test/src/Controller/ManyAssetsTestController.php
new file mode 100644
index 0000000000000000000000000000000000000000..4ba10500ceac04de4e67062d7efeb095b78167ff
--- /dev/null
+++ b/web/core/modules/system/tests/modules/many_assets_test/src/Controller/ManyAssetsTestController.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Drupal\many_assets_test\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+
+class ManyAssetsTestController extends ControllerBase {
+
+  /**
+   * The render array of the assets testing page.
+   *
+   * @return array
+   */
+  public function build() {
+    return [
+      '#markup' => 'I am a page that tests loading order of many dependencies',
+      '#attached' => [
+        'library' => [
+          'many_assets_test/weighted',
+          'many_assets_test/many-dependencies',
+          'many_assets_test/weighted_again',
+        ],
+      ],
+    ];
+  }
+
+}
diff --git a/web/core/modules/system/tests/src/Functional/Entity/EntityAddUITest.php b/web/core/modules/system/tests/src/Functional/Entity/EntityAddUITest.php
index bab3d7760f980d715d232dc4a25a6d932b1cd963..3e867098145fb60b89a462ef2193542c8d3511c8 100644
--- a/web/core/modules/system/tests/src/Functional/Entity/EntityAddUITest.php
+++ b/web/core/modules/system/tests/src/Functional/Entity/EntityAddUITest.php
@@ -92,9 +92,19 @@ public function testAddPageWithBundleEntities() {
       'label' => 'Test3 label',
       'description' => 'My test3 description',
     ])->save();
+
+    // Create a bundle that the user is forbidden from creating (always).
+    EntityTestBundle::create([
+      'id' => 'forbidden_access_bundle',
+      'label' => 'Forbidden to create bundle',
+      'description' => 'A bundle that can never be created',
+    ])->save();
+
     $this->drupalGet('/entity_test_with_bundle/add');
+    $this->assertSession()->statusCodeEquals(200);
     $this->assertSession()->linkExists('Test label');
     $this->assertSession()->linkExists('Test2 label');
+    $this->assertSession()->linkNotExists('Forbidden to create bundle');
     $this->assertSession()->linkNotExists('Test3 label');
     $this->clickLink('Test label');
     $this->assertSession()->statusCodeEquals(200);
@@ -114,6 +124,7 @@ public function testAddPageWithBundleEntities() {
     // does not have bundle specific permissions. The add bundle message is
     // present as the user has bundle create permissions.
     $this->drupalGet('/entity_test_with_bundle/add');
+    $this->assertSession()->linkNotExists('Forbidden to create bundle');
     $this->assertSession()->linkNotExists('Test label');
     $this->assertSession()->linkNotExists('Test2 label');
     $this->assertSession()->linkNotExists('Test3 label');
diff --git a/web/core/modules/system/tests/src/Unit/Event/SecurityFileUploadEventSubscriberTest.php b/web/core/modules/system/tests/src/Unit/Event/SecurityFileUploadEventSubscriberTest.php
index ffeaa0de152a5b1ed47fd9937c62865d3c92e4d9..8b6b8de50342cebd553b4975197137178700eff7 100644
--- a/web/core/modules/system/tests/src/Unit/Event/SecurityFileUploadEventSubscriberTest.php
+++ b/web/core/modules/system/tests/src/Unit/Event/SecurityFileUploadEventSubscriberTest.php
@@ -86,6 +86,9 @@ public function provideFilenames() {
       'null bytes are removed' => ['foo' . chr(0) . '.txt' . chr(0), '', 'foo.txt'],
       'dot files are renamed' => ['.git', '', 'git'],
       'htaccess files are renamed even if allowed' => ['.htaccess', 'htaccess txt', '.htaccess_.txt', '.htaccess'],
+      '.phtml extension allowed with .phtml file' => ['foo.phtml', 'phtml', 'foo.phtml'],
+      '.phtml, .txt extension allowed with .phtml file' => ['foo.phtml', 'phtml txt', 'foo.phtml_.txt', 'foo.phtml'],
+      'All extensions allowed with .phtml file' => ['foo.phtml', '', 'foo.phtml_.txt', 'foo.phtml'],
     ];
   }
 
diff --git a/web/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php b/web/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php
index b864b603ea9dc4adfe10fc34d0bae5b509e37ba1..5370e4e14947b019540692ab3e33afac8c2b381e 100644
--- a/web/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php
+++ b/web/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\views\Plugin\views\argument_default;
 
+use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheableDependencyInterface;
 use Drupal\Core\Form\FormStateInterface;
@@ -64,9 +65,12 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    */
   public function getArgument() {
     $current_request = $this->view->getRequest();
+    // Convert a[b][c][d] into ['a', 'b', 'c', 'd'].
+    $path = array_filter(preg_split('#(\[|\]\[|\])#', $this->options['query_param']));
 
-    if ($current_request->query->has($this->options['query_param'])) {
-      $param = $current_request->query->all()[$this->options['query_param']];
+    if ($current_request->query->has($path[0])) {
+      $query = $current_request->query->all();
+      $param = NestedArray::getValue($query, $path);
       if (is_array($param)) {
         $conjunction = ($this->options['multiple'] == 'and') ? ',' : '+';
         $param = implode($conjunction, $param);
diff --git a/web/core/modules/views/src/Plugin/views/field/EntityField.php b/web/core/modules/views/src/Plugin/views/field/EntityField.php
index d697d52031915160c967b53e4142e24c0a8ec034..972703ec56968c90da9703f6bd92bb5df98596a2 100644
--- a/web/core/modules/views/src/Plugin/views/field/EntityField.php
+++ b/web/core/modules/views/src/Plugin/views/field/EntityField.php
@@ -749,7 +749,7 @@ protected function prepareItemsByDelta(array $all_values) {
         $offset = 0;
       }
       else {
-        $delta_limit = $this->options['delta_limit'];
+        $delta_limit = (int) $this->options['delta_limit'];
         $offset = intval($this->options['delta_offset']);
 
         // We should only get here in this case if there is an offset, and in
diff --git a/web/core/modules/views/tests/src/Unit/Plugin/argument_default/QueryParameterTest.php b/web/core/modules/views/tests/src/Unit/Plugin/argument_default/QueryParameterTest.php
index 8d7aa0f02e9c707c4e4321d0cd3a6597a8b8d417..3d86373b8d48f15a6658eb6b40761d80111deece 100644
--- a/web/core/modules/views/tests/src/Unit/Plugin/argument_default/QueryParameterTest.php
+++ b/web/core/modules/views/tests/src/Unit/Plugin/argument_default/QueryParameterTest.php
@@ -69,6 +69,24 @@ public function providerGetArgument() {
       'blub',
     ];
 
+    $data[] = [
+      ['query_param' => 'test[tier1][tier2][tier3]'],
+      new Request(['test' => ['tier1' => ['tier2' => ['tier3' => 'foo']]]]),
+      'foo',
+    ];
+
+    $data[] = [
+      ['query_param' => 'test[tier1][tier2]'],
+      new Request(['test' => ['tier1' => ['tier2' => ['foo', 'bar']]]]),
+      'foo,bar',
+    ];
+
+    $data[] = [
+      ['query_param' => 'test[tier1][tier2]'],
+      new Request(['test' => 'foo']),
+      NULL,
+    ];
+
     return $data;
   }
 
diff --git a/web/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php b/web/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php
index f3549c4621f888de36f48ceaab6d19b53eb2dfd7..c60e91447f0fc1ae6a14fc5a4c0306ce5f13fefd 100644
--- a/web/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php
+++ b/web/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php
@@ -649,6 +649,11 @@ public function providerTestPrepareItemsByDelta() {
     $data[] = [['group_rows' => TRUE, 'delta_limit' => 1, 'delta_first_last' => TRUE], [3]];
     $data[] = [['group_rows' => TRUE, 'delta_offset' => 1, 'delta_first_last' => TRUE], [1, 9]];
 
+    // Test with string values where we would expect integers to be provided.
+    $data[] = [['group_rows' => TRUE, 'delta_limit' => 'All'], [3, 1, 4, 1, 5, 9]];
+    $data[] = [['group_rows' => TRUE, 'delta_limit' => 'three'], [3, 1, 4, 1, 5, 9]];
+    $data[] = [['group_rows' => TRUE, 'delta_limit' => 'three', 'delta_offset' => 'two'], [3, 1, 4, 1, 5, 9]];
+
     return $data;
   }
 
diff --git a/web/core/tests/Drupal/FunctionalJavascriptTests/Core/Form/FormGroupingElementsTest.php b/web/core/tests/Drupal/FunctionalJavascriptTests/Core/Form/FormGroupingElementsTest.php
index e4cfcb9bec236811e37c08d4135633f4cdbb415f..488e07d20a72840e697ef28ca588dce075000c1d 100644
--- a/web/core/tests/Drupal/FunctionalJavascriptTests/Core/Form/FormGroupingElementsTest.php
+++ b/web/core/tests/Drupal/FunctionalJavascriptTests/Core/Form/FormGroupingElementsTest.php
@@ -135,4 +135,33 @@ public function testDetailsChildVisibility() {
     $this->assertEquals('true', $summary->getAttribute('aria-pressed'));
   }
 
+  /**
+   * Confirms tabs containing a field with a validation error are open.
+   */
+  public function testVerticalTabValidationVisibility() {
+    $page = $this->getSession()->getPage();
+    $assert_session = $this->assertSession();
+
+    $this->drupalGet('form-test/group-vertical-tabs');
+    $page->clickLink('Second group element');
+    $input_field = $assert_session->waitForField('element_2');
+    $this->assertNotNull($input_field);
+
+    // Enter a value that will trigger a validation error.
+    $input_field->setValue('bad');
+
+    // Switch to a tab that does not have the error-causing field.
+    $page->clickLink('First group element');
+    $this->assertNotNull($assert_session->waitForElementVisible('css', '#edit-meta'));
+
+    // Submit the form.
+    $page->pressButton('Save');
+
+    // Confirm there is an error.
+    $assert_session->waitForText('there was an error');
+
+    // Confirm the tab containing the field with error is open.
+    $this->assertNotNull($assert_session->waitForElementVisible('css', '[name="element_2"].error'));
+  }
+
 }
diff --git a/web/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php b/web/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php
index f7c688c7956b736c33ac06285a1b6992d19f06f7..7ed125d0bfae2c9b140a15ced42ca98a9f1b8b0f 100644
--- a/web/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php
+++ b/web/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php
@@ -116,10 +116,10 @@ public function testJsWebAssert() {
     $this->assertEquals(TRUE, $result->isVisible());
 
     $this->drupalGet('js_webassert_test_page');
-    $result = $assert_session->waitForElementVisible('named', ['id', 'test_text']);
-    $this->assertSame('test_text', $result->getAttribute('id'));
     // Ensure that the javascript has replaced the element 1100 times.
-    $assert_session->pageTextContains('New Text!! 1100');
+    $assert_session->waitForText('New Text!! 1100');
+    $result = $page->find('named', ['id', 'test_text']);
+    $this->assertSame('test_text', $result->getAttribute('id'));
   }
 
 }
diff --git a/web/core/tests/Drupal/FunctionalTests/Libraries/ManyAssetsLoadOrderTest.php b/web/core/tests/Drupal/FunctionalTests/Libraries/ManyAssetsLoadOrderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c4079bb231d8d6871d89ee8e24ca72a5840587f6
--- /dev/null
+++ b/web/core/tests/Drupal/FunctionalTests/Libraries/ManyAssetsLoadOrderTest.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Drupal\FunctionalTests\Libraries;
+
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests the loading of many weighted assets.
+ *
+ * @group libraries
+ */
+class ManyAssetsLoadOrderTest extends BrowserTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['many_assets_test'];
+
+  /**
+   * Loads a page with many assets that have different but close weights.
+   *
+   * Confirms the load order reflects the configured weights for each asset.
+   */
+  public function testLoadOrder() {
+    $this->drupalGet('many_assets_test');
+
+    $js = $this->getSession()->getPage()->findAll('css', 'script[data-weight]');
+    $js_files = array_map(function ($item) {
+      return $item->getAttribute('data-weight');
+    }, $js);
+    $this->assertGreaterThan(0, count($js_files));
+    $js_files_sorted = $js_files;
+    asort($js_files_sorted);
+
+    // If the JavaScript files are loading in the proper order, the sorted array
+    // should match the unsorted one.
+    $this->assertSame($js_files_sorted, $js_files);
+
+    $css = $this->getSession()->getPage()->findAll('css', 'link[data-weight]');
+    $css_files = array_map(function ($item) {
+      return $item->getAttribute('data-weight');
+    }, $css);
+    $this->assertGreaterThan(0, count($css_files));
+    $css_files_sorted = $css_files;
+    asort($css_files_sorted);
+
+    // If the CSS files are loading in the proper order, the sorted array should
+    // match the unsorted one.
+    $this->assertSame($css_files_sorted, $css_files);
+  }
+
+}
diff --git a/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificDatabaseTestBase.php b/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificDatabaseTestBase.php
index 3f4c47db4ab74dac1c185117b83e572f5b977e2c..d29a6ecf4f9fc77e07739db7c697e309fb9358f3 100644
--- a/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificDatabaseTestBase.php
+++ b/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificDatabaseTestBase.php
@@ -11,12 +11,12 @@ abstract class DriverSpecificDatabaseTestBase extends DriverSpecificKernelTestBa
   use DatabaseTestSchemaInstallTrait;
 
   /**
-   * @inheritdoc
+   * {@inheritdoc}
    */
   protected static $modules = ['database_test'];
 
   /**
-   * @inheritdoc
+   * {@inheritdoc}
    */
   protected function setUp(): void {
     parent::setUp();
diff --git a/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificKernelTestBase.php b/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificKernelTestBase.php
index 9c69cbefcc8cec3426c57dbeacf21ccef9a6fe35..bf5e6c2be2d3323250f129d1bc0822ae1fe2b8eb 100644
--- a/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificKernelTestBase.php
+++ b/web/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificKernelTestBase.php
@@ -23,7 +23,7 @@ abstract class DriverSpecificKernelTestBase extends KernelTestBase {
   protected $connection;
 
   /**
-   * @inheritdoc
+   * {@inheritdoc}
    */
   protected function setUp(): void {
     parent::setUp();
diff --git a/web/core/tests/Drupal/KernelTests/KernelTestBase.php b/web/core/tests/Drupal/KernelTests/KernelTestBase.php
index 43d7e21f2be67fa730b262098061596abbcd19d8..90092cb363041c566adc85427108718d0b11a4fe 100644
--- a/web/core/tests/Drupal/KernelTests/KernelTestBase.php
+++ b/web/core/tests/Drupal/KernelTests/KernelTestBase.php
@@ -12,6 +12,7 @@
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\Entity\Sql\SqlEntityStorageInterface;
 use Drupal\Core\Extension\ExtensionDiscovery;
+use Drupal\Core\KeyValueStore\KeyValueMemoryFactory;
 use Drupal\Core\Language\Language;
 use Drupal\Core\Site\Settings;
 use Drupal\Core\Test\TestDatabase;
@@ -194,6 +195,13 @@ abstract class KernelTestBase extends TestCase implements ServiceProviderInterfa
    */
   protected $configImporter;
 
+  /**
+   * The key_value service that must persist between container rebuilds.
+   *
+   * @var \Drupal\Core\KeyValueStore\KeyValueMemoryFactory
+   */
+  protected $keyValue;
+
   /**
    * The app root.
    *
@@ -543,12 +551,14 @@ public function register(ContainerBuilder $container) {
       ->register('lock', 'Drupal\Core\Lock\NullLockBackend');
     $container
       ->register('cache_factory', 'Drupal\Core\Cache\MemoryBackendFactory');
-    $container
-      ->register('keyvalue.memory', 'Drupal\Core\KeyValueStore\KeyValueMemoryFactory')
-      // Must persist container rebuilds, or all data would vanish otherwise.
-      ->addTag('persist');
-    $container
-      ->setAlias('keyvalue', 'keyvalue.memory');
+
+    // Use memory for key value storages to avoid database queries. Store the
+    // key value factory on the test object so that key value storages persist
+    // container rebuilds, otherwise all state data would vanish.
+    if (!isset($this->keyValue)) {
+      $this->keyValue = new KeyValueMemoryFactory();
+    }
+    $container->set('keyvalue', $this->keyValue);
 
     // Set the default language on the minimal container.
     $container->setParameter('language.default_values', Language::$defaultValues);
diff --git a/web/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php b/web/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php
index 2058f3022eb1af9a8dd707a69999ce5c05d78b45..c1c4c364b0234609bc1d2089b615a4e5726fd134 100644
--- a/web/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php
+++ b/web/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php
@@ -117,21 +117,24 @@ public function providerTestStaticTitleWithParameter() {
   }
 
   /**
-   * Tests a static title with a NULL value parameter.
+   * Tests a static title with a non-scalar value parameter.
    *
    * @see \Drupal\Core\Controller\TitleResolver::getTitle()
    */
-  public function testStaticTitleWithNullValueParameter() {
-    $raw_variables = new ParameterBag(['test' => NULL, 'test2' => 'value']);
+  public function testStaticTitleWithNullAndArrayValueParameter() {
+    $raw_variables = new ParameterBag(['test1' => NULL, 'test2' => ['foo' => 'bar'], 'test3' => 'value']);
     $request = new Request();
     $request->attributes->set('_raw_variables', $raw_variables);
 
-    $route = new Route('/test-route', ['_title' => 'static title %test @test']);
+    $route = new Route('/test-route', ['_title' => 'static title %test1 @test1 %test2 @test2 %test3 @test3']);
     $translatable_markup = $this->titleResolver->getTitle($request, $route);
-    $this->assertSame('', $translatable_markup->getArguments()['@test']);
-    $this->assertSame('', $translatable_markup->getArguments()['%test']);
-    $this->assertSame('value', $translatable_markup->getArguments()['@test2']);
-    $this->assertSame('value', $translatable_markup->getArguments()['%test2']);
+    $arguments = $translatable_markup->getArguments();
+    $this->assertNotContains('@test1', $arguments);
+    $this->assertNotContains('%test1', $arguments);
+    $this->assertNotContains('@test2', $arguments);
+    $this->assertNotContains('%test2', $arguments);
+    $this->assertSame('value', $translatable_markup->getArguments()['@test3']);
+    $this->assertSame('value', $translatable_markup->getArguments()['%test3']);
   }
 
   /**
diff --git a/web/core/tests/Drupal/Tests/Core/Mail/Plugin/Mail/PhpMailTest.php b/web/core/tests/Drupal/Tests/Core/Mail/Plugin/Mail/PhpMailTest.php
index bdf97280cc0e6940d96e9ec8bfd1c96722f928e7..9e67eab08eb2cacba9837e2c6ee5b729fcc48b08 100644
--- a/web/core/tests/Drupal/Tests/Core/Mail/Plugin/Mail/PhpMailTest.php
+++ b/web/core/tests/Drupal/Tests/Core/Mail/Plugin/Mail/PhpMailTest.php
@@ -53,9 +53,6 @@ protected function createPhpMailInstance(): PhpMail {
       ->onlyMethods(['doMail'])
       ->getMock();
 
-    $mailer->expects($this->once())->method('doMail')
-      ->willReturn(TRUE);
-
     return $mailer;
   }
 
@@ -76,20 +73,44 @@ public function testMail() {
       'langcode' => 'en',
       'params' => [],
       'send' => TRUE,
-      'subject' => '',
+      'subject' => "test\r\nsubject",
       'body' => '',
       'headers' => [
         'MIME-Version' => '1.0',
         'Content-Type' => 'text/plain; charset=UTF-8; format=flowed; delsp=yes',
         'Content-Transfer-Encoding' => '8Bit',
         'X-Mailer' => 'Drupal',
-        'Return-Path' => 'from@example.org',
         'From' => '"Foo, Bar, and Baz" <from@example.org>',
         'Reply-to' => 'from@example.org',
+        'Return-Path' => 'from@example.org',
       ],
     ];
 
     $mailer = $this->createPhpMailInstance();
+
+    // Verify we use line endings consistent with the PHP mail() function, which
+    // changed with PHP 8. See:
+    // - https://www.drupal.org/node/3270647
+    // - https://bugs.php.net/bug.php?id=81158
+    // Since Drupal 10+ does not support PHP < 8, the PHP version check in the next line can be removed in Drupal 10+.
+    $line_end = PHP_MAJOR_VERSION < 8 ? "\n" : "\r\n";
+
+    $expected_headers = "MIME-Version: 1.0$line_end";
+    $expected_headers .= "Content-Type: text/plain; charset=UTF-8; format=flowed; delsp=yes$line_end";
+    $expected_headers .= "Content-Transfer-Encoding: 8Bit$line_end";
+    $expected_headers .= "X-Mailer: Drupal$line_end";
+    $expected_headers .= "From: \"Foo, Bar, and Baz\" <from@example.org>$line_end";
+    $expected_headers .= "Reply-to: from@example.org$line_end";
+
+    $mailer->expects($this->once())->method('doMail')
+      ->with(
+        $this->equalTo('to@example.org'),
+        $this->equalTo("=?utf-8?Q?test?={$line_end} =?utf-8?Q?subject?="),
+        $this->equalTo(''),
+        $this->stringStartsWith($expected_headers),
+      )
+      ->willReturn(TRUE);
+
     $this->assertTrue($mailer->mail($message));
   }
 
diff --git a/web/core/themes/claro/css/components/views-ui.css b/web/core/themes/claro/css/components/views-ui.css
index b6ef3b2db000d04986dd44e10b6a7b8fe029355a..fdc522c17d96b5fbd0f846dd324386fbd44d3e1c 100644
--- a/web/core/themes/claro/css/components/views-ui.css
+++ b/web/core/themes/claro/css/components/views-ui.css
@@ -117,11 +117,6 @@ details.fieldset-no-legend {
   background-position-y: 56%;
 }
 
-/**
- * Elements must communicate width to table rendering.
- * @todo revisit in https://drupal.org/node/3135457
- */
-
 .views-ui-dialog td .form-element {
   width: auto;
 }
diff --git a/web/core/themes/claro/css/components/views-ui.pcss.css b/web/core/themes/claro/css/components/views-ui.pcss.css
index c1ae90a025388799a27879eafd434d6a8b0527a9..1b06e88c80d9bb7aea71fad1651cc5c3811aebee 100644
--- a/web/core/themes/claro/css/components/views-ui.pcss.css
+++ b/web/core/themes/claro/css/components/views-ui.pcss.css
@@ -95,10 +95,6 @@ details.fieldset-no-legend {
   padding-inline-end: calc(2rem - var(--input-border-size));
   background-position-y: 56%;
 }
-/**
- * Elements must communicate width to table rendering.
- * @todo revisit in https://drupal.org/node/3135457
- */
 .views-ui-dialog td .form-element {
   width: auto;
 }