diff --git a/composer.lock b/composer.lock
index 87176746d239b1eefb33aacde21b479258c62fd2..c6fb649a3e08a419e8a83f37c377a9644cae50aa 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,31 +4,33 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "d908f7b1863f5836c88a010d83d20bb3",
+    "content-hash": "07e9ab44da6fe4d44a38b49361c384ed",
     "packages": [
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.3.3",
+            "version": "6.5.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
                 "shasum": ""
             },
             "require": {
+                "ext-json": "*",
                 "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.4",
-                "php": ">=5.5"
+                "guzzlehttp/psr7": "^1.6.1",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "^1.17.0"
             },
             "require-dev": {
                 "ext-curl": "*",
                 "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.0"
+                "psr/log": "^1.1"
             },
             "suggest": {
                 "psr/log": "Required for using the Log middleware"
@@ -36,16 +38,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "6.3-dev"
+                    "dev-master": "6.5-dev"
                 }
             },
             "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
                 "psr-4": {
                     "GuzzleHttp\\": "src/"
-                }
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -69,27 +71,31 @@
                 "rest",
                 "web service"
             ],
-            "time": "2018-04-22T15:46:56+00:00"
+            "support": {
+                "issues": "https://github.com/guzzle/guzzle/issues",
+                "source": "https://github.com/guzzle/guzzle/tree/6.5"
+            },
+            "time": "2020-06-16T21:01:06+00:00"
         },
         {
             "name": "guzzlehttp/promises",
-            "version": "v1.3.1",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/promises.git",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5.0"
+                "php": ">=5.5"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.0"
+                "symfony/phpunit-bridge": "^4.4 || ^5.1"
             },
             "type": "library",
             "extra": {
@@ -120,20 +126,24 @@
             "keywords": [
                 "promise"
             ],
-            "time": "2016-12-20T10:07:11+00:00"
+            "support": {
+                "issues": "https://github.com/guzzle/promises/issues",
+                "source": "https://github.com/guzzle/promises/tree/1.4.0"
+            },
+            "time": "2020-09-30T07:37:28+00:00"
         },
         {
             "name": "guzzlehttp/psr7",
-            "version": "1.6.1",
+            "version": "1.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/psr7.git",
-                "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
-                "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
                 "shasum": ""
             },
             "require": {
@@ -146,15 +156,15 @@
             },
             "require-dev": {
                 "ext-zlib": "*",
-                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
+                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
             },
             "suggest": {
-                "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
+                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.6-dev"
+                    "dev-master": "1.7-dev"
                 }
             },
             "autoload": {
@@ -191,16 +201,21 @@
                 "uri",
                 "url"
             ],
-            "time": "2019-07-01T23:21:34+00:00"
+            "support": {
+                "issues": "https://github.com/guzzle/psr7/issues",
+                "source": "https://github.com/guzzle/psr7/tree/1.7.0"
+            },
+            "time": "2020-09-30T07:37:11+00:00"
         },
         {
             "name": "hab/paginator",
             "version": "dev-master",
             "source": {
                 "type": "git",
-                "url": "git@github.com:dmj/php-paginator.git",
+                "url": "https://github.com/dmj/php-paginator.git",
                 "reference": "82429eeee25412b638da3b18d519fc9cb9b4568a"
             },
+            "default-branch": true,
             "type": "library",
             "autoload": {
                 "psr-4": {
@@ -214,45 +229,51 @@
             "version": "dev-master",
             "source": {
                 "type": "git",
-                "url": "git@github.com:dmj/php-solr.git",
-                "reference": "a54f2c7495dacc5cd0964fba25e1fa2b89cc03fe"
+                "url": "https://github.com/dmj/php-solr.git",
+                "reference": "ef528a52d57493ad2ae575037e42442075135f62"
             },
             "require": {
                 "guzzlehttp/guzzle": "~6.0"
             },
+            "require-dev": {
+                "phan/phan": "^2.4",
+                "phpstan/phpstan": "^0.11.19",
+                "phpunit/phpunit": "^8.4"
+            },
+            "default-branch": true,
             "type": "library",
             "autoload": {
                 "psr-0": {
                     "HAB": "src/"
                 }
             },
-            "time": "2019-08-07T06:46:21+00:00"
+            "time": "2020-07-16T13:14:20+00:00"
         },
         {
             "name": "pimple/pimple",
-            "version": "v3.2.3",
+            "version": "v3.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/silexphp/Pimple.git",
-                "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
-                "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
+                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930",
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0",
+                "php": "^7.2.5",
                 "psr/container": "^1.0"
             },
             "require-dev": {
-                "symfony/phpunit-bridge": "^3.2"
+                "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.2.x-dev"
+                    "dev-master": "3.3.x-dev"
                 }
             },
             "autoload": {
@@ -271,12 +292,16 @@
                 }
             ],
             "description": "Pimple, a simple Dependency Injection Container",
-            "homepage": "http://pimple.sensiolabs.org",
+            "homepage": "https://pimple.symfony.com",
             "keywords": [
                 "container",
                 "dependency injection"
             ],
-            "time": "2018-01-21T07:42:36+00:00"
+            "support": {
+                "issues": "https://github.com/silexphp/Pimple/issues",
+                "source": "https://github.com/silexphp/Pimple/tree/master"
+            },
+            "time": "2020-03-03T09:12:48+00:00"
         },
         {
             "name": "psr/container",
@@ -325,6 +350,10 @@
                 "container-interop",
                 "psr"
             ],
+            "support": {
+                "issues": "https://github.com/php-fig/container/issues",
+                "source": "https://github.com/php-fig/container/tree/master"
+            },
             "time": "2017-02-14T16:28:37+00:00"
         },
         {
@@ -375,20 +404,23 @@
                 "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.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -397,7 +429,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -422,7 +454,10 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "support": {
+                "source": "https://github.com/php-fig/log/tree/1.1.3"
+            },
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "ralouphie/getallheaders",
@@ -462,6 +497,10 @@
                 }
             ],
             "description": "A polyfill for getallheaders.",
+            "support": {
+                "issues": "https://github.com/ralouphie/getallheaders/issues",
+                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+            },
             "time": "2019-03-08T08:55:37+00:00"
         },
         {
@@ -548,39 +587,39 @@
             "keywords": [
                 "microframework"
             ],
+            "support": {
+                "issues": "https://github.com/silexphp/Silex/issues",
+                "source": "https://github.com/silexphp/Silex/tree/v2.3.0"
+            },
             "abandoned": "symfony/flex",
             "time": "2018-04-20T05:17:01+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe"
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
-                "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "psr/log": "~1.0"
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
             },
             "conflict": {
                 "symfony/http-kernel": "<3.4"
             },
             "require-dev": {
-                "symfony/http-kernel": "~3.4|~4.0"
+                "symfony/http-kernel": "^3.4|^4.0|^5.0"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Debug\\": ""
@@ -605,24 +644,110 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2019-09-19T15:51:53+00:00"
+            "support": {
+                "source": "https://github.com/symfony/debug/tree/v4.4.16"
+            },
+            "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": "2020-10-24T11:50:19+00:00"
+        },
+        {
+            "name": "symfony/error-handler",
+            "version": "v4.4.16",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/error-handler.git",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/363cca01cabf98e4f1c447b14d0a68617f003613",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/debug": "^4.4.5",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/var-dumper": "^4.4|^5.0"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "^4.4|^5.0",
+                "symfony/serializer": "^4.4|^5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\ErrorHandler\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony ErrorHandler Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/error-handler/tree/v4.4.16"
+            },
+            "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": "2020-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "6229f58993e5a157f6096fc7145c0717d0be8807"
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807",
-                "reference": "6229f58993e5a157f6096fc7145c0717d0be8807",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/event-dispatcher-contracts": "^1.1"
             },
             "conflict": {
@@ -634,23 +759,19 @@
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/config": "~3.4|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/http-foundation": "^3.4|^4.0",
-                "symfony/service-contracts": "^1.1",
-                "symfony/stopwatch": "~3.4|~4.0"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/dependency-injection": "",
                 "symfony/http-kernel": ""
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\EventDispatcher\\": ""
@@ -675,24 +796,41 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-01T16:40:32+00:00"
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.16"
+            },
+            "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": "2020-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/event-dispatcher-contracts",
-            "version": "v1.1.7",
+            "version": "v1.1.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-                "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
-                "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "suggest": {
                 "psr/event-dispatcher": "",
@@ -702,6 +840,10 @@
             "extra": {
                 "branch-alias": {
                     "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
@@ -733,37 +875,128 @@
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-09-17T09:54:03+00:00"
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9"
+            },
+            "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": "2020-07-06T13:19:58+00:00"
+        },
+        {
+            "name": "symfony/http-client-contracts",
+            "version": "v2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-client-contracts.git",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "suggest": {
+                "symfony/http-client-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-version": "2.3",
+                "branch-alias": {
+                    "dev-main": "2.3-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\HttpClient\\": ""
+                }
+            },
+            "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 HTTP clients",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/http-client-contracts/tree/v2.3.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": "2020-10-14T17:08:19+00:00"
         },
         {
             "name": "symfony/http-foundation",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-foundation.git",
-                "reference": "76590ced16d4674780863471bae10452b79210a5"
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/76590ced16d4674780863471bae10452b79210a5",
-                "reference": "76590ced16d4674780863471bae10452b79210a5",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/827a00811ef699e809a201ceafac0b2b246bf38a",
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/mime": "^4.3",
+                "php": ">=7.1.3",
+                "symfony/mime": "^4.3|^5.0",
                 "symfony/polyfill-mbstring": "~1.1"
             },
             "require-dev": {
                 "predis/predis": "~1.0",
-                "symfony/expression-language": "~3.4|~4.0"
+                "symfony/expression-language": "^3.4|^4.0|^5.0"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\HttpFoundation\\": ""
@@ -788,37 +1021,56 @@
             ],
             "description": "Symfony HttpFoundation Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-04T19:48:13+00:00"
+            "support": {
+                "source": "https://github.com/symfony/http-foundation/tree/v4.4.16"
+            },
+            "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": "2020-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "5f08141850932e8019c01d8988bf3ed6367d2991"
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5f08141850932e8019c01d8988bf3ed6367d2991",
-                "reference": "5f08141850932e8019c01d8988bf3ed6367d2991",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "psr/log": "~1.0",
-                "symfony/debug": "~3.4|~4.0",
-                "symfony/event-dispatcher": "^4.3",
-                "symfony/http-foundation": "^4.1.1",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-php73": "^1.9"
+                "symfony/error-handler": "^4.4",
+                "symfony/event-dispatcher": "^4.4",
+                "symfony/http-client-contracts": "^1.1|^2",
+                "symfony/http-foundation": "^4.4|^5.0",
+                "symfony/polyfill-ctype": "^1.8",
+                "symfony/polyfill-php73": "^1.9",
+                "symfony/polyfill-php80": "^1.15"
             },
             "conflict": {
                 "symfony/browser-kit": "<4.3",
                 "symfony/config": "<3.4",
+                "symfony/console": ">=5",
                 "symfony/dependency-injection": "<4.3",
                 "symfony/translation": "<4.2",
-                "symfony/var-dumper": "<4.1.1",
                 "twig/twig": "<1.34|<2.4,>=2"
             },
             "provide": {
@@ -826,36 +1078,29 @@
             },
             "require-dev": {
                 "psr/cache": "~1.0",
-                "symfony/browser-kit": "^4.3",
-                "symfony/config": "~3.4|~4.0",
-                "symfony/console": "~3.4|~4.0",
-                "symfony/css-selector": "~3.4|~4.0",
-                "symfony/dependency-injection": "^4.3",
-                "symfony/dom-crawler": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/finder": "~3.4|~4.0",
-                "symfony/process": "~3.4|~4.0",
-                "symfony/routing": "~3.4|~4.0",
-                "symfony/stopwatch": "~3.4|~4.0",
-                "symfony/templating": "~3.4|~4.0",
-                "symfony/translation": "~4.2",
-                "symfony/translation-contracts": "^1.1",
-                "symfony/var-dumper": "^4.1.1",
-                "twig/twig": "^1.34|^2.4"
+                "symfony/browser-kit": "^4.3|^5.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/console": "^3.4|^4.0",
+                "symfony/css-selector": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^4.3|^5.0",
+                "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/routing": "^3.4|^4.0|^5.0",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0",
+                "symfony/templating": "^3.4|^4.0|^5.0",
+                "symfony/translation": "^4.2|^5.0",
+                "symfony/translation-contracts": "^1.1|^2",
+                "twig/twig": "^1.34|^2.4|^3.0"
             },
             "suggest": {
                 "symfony/browser-kit": "",
                 "symfony/config": "",
                 "symfony/console": "",
-                "symfony/dependency-injection": "",
-                "symfony/var-dumper": ""
+                "symfony/dependency-injection": ""
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\HttpKernel\\": ""
@@ -880,37 +1125,53 @@
             ],
             "description": "Symfony HttpKernel Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-07T15:06:41+00:00"
+            "support": {
+                "source": "https://github.com/symfony/http-kernel/tree/v4.4.16"
+            },
+            "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": "2020-10-28T05:50:56+00:00"
         },
         {
             "name": "symfony/mime",
-            "version": "v4.3.5",
+            "version": "v5.1.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mime.git",
-                "reference": "32f71570547b91879fdbd9cf50317d556ae86916"
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/32f71570547b91879fdbd9cf50317d556ae86916",
-                "reference": "32f71570547b91879fdbd9cf50317d556ae86916",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.2.5",
                 "symfony/polyfill-intl-idn": "^1.10",
-                "symfony/polyfill-mbstring": "^1.0"
+                "symfony/polyfill-mbstring": "^1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/mailer": "<4.4"
             },
             "require-dev": {
                 "egulias/email-validator": "^2.1.10",
-                "symfony/dependency-injection": "~3.4|^4.1"
+                "symfony/dependency-injection": "^4.4|^5.0"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Mime\\": ""
@@ -939,24 +1200,41 @@
                 "mime",
                 "mime-type"
             ],
-            "time": "2019-09-19T17:00:15+00:00"
+            "support": {
+                "source": "https://github.com/symfony/mime/tree/v5.1.8"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-24T12:01:57+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "550ebaac289296ce228a706d0867afc34687e3f4"
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
-                "reference": "550ebaac289296ce228a706d0867afc34687e3f4",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "suggest": {
                 "ext-ctype": "For best performance"
@@ -964,7 +1242,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -997,26 +1279,43 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.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": "2020-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-intl-idn",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2"
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
-                "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3",
-                "symfony/polyfill-mbstring": "^1.3",
-                "symfony/polyfill-php72": "^1.9"
+                "php": ">=7.1",
+                "symfony/polyfill-intl-normalizer": "^1.10",
+                "symfony/polyfill-php72": "^1.10"
             },
             "suggest": {
                 "ext-intl": "For best performance"
@@ -1024,7 +1323,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1044,6 +1347,10 @@
                     "name": "Laurent Bassin",
                     "email": "laurent@bassin.info"
                 },
+                {
+                    "name": "Trevor Rowbotham",
+                    "email": "trevor.rowbotham@pm.me"
+                },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
@@ -1059,24 +1366,125 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.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": "2020-10-23T14:02:19+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.20.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "727d1096295d807c309fb01a851577302394c897"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+                "reference": "727d1096295d807c309fb01a851577302394c897",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-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.20.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": "2020-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
-                "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "suggest": {
                 "ext-mbstring": "For best performance"
@@ -1084,7 +1492,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1118,29 +1530,50 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.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": "2020-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-php72",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "04ce3335667451138df4307d6a9b61565560199e"
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
-                "reference": "04ce3335667451138df4307d6a9b61565560199e",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1173,29 +1606,50 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.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": "2020-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-php73",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
-                "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1231,24 +1685,124 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.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": "2020-10-23T14:02:19+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.20.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-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.20.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": "2020-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/routing",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea"
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/3b174ef04fe66696524efad1e5f7a6c663d822ea",
-                "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/826794f2e9305fe73cba859c60d2a336851bd202",
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "conflict": {
                 "symfony/config": "<4.2",
@@ -1258,11 +1812,11 @@
             "require-dev": {
                 "doctrine/annotations": "~1.2",
                 "psr/log": "~1.0",
-                "symfony/config": "~4.2",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/http-foundation": "~3.4|~4.0",
-                "symfony/yaml": "~3.4|~4.0"
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "doctrine/annotations": "For using the annotation loader",
@@ -1272,11 +1826,6 @@
                 "symfony/yaml": "For using the YAML loader"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Routing\\": ""
@@ -1307,20 +1856,37 @@
                 "uri",
                 "url"
             ],
-            "time": "2019-10-04T20:57:10+00:00"
+            "support": {
+                "source": "https://github.com/symfony/routing/tree/v4.4.16"
+            },
+            "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": "2020-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/twig-bridge",
-            "version": "v3.4.32",
+            "version": "v3.4.46",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/twig-bridge.git",
-                "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259"
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9f55b34b539a3a0ea51c2ed96609173c5b326259",
-                "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259",
+                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
                 "shasum": ""
             },
             "require": {
@@ -1369,11 +1935,6 @@
                 "symfony/yaml": "For using the YamlExtension"
             },
             "type": "symfony-bridge",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Bridge\\Twig\\": ""
@@ -1398,35 +1959,139 @@
             ],
             "description": "Symfony Twig Bridge",
             "homepage": "https://symfony.com",
-            "time": "2019-10-01T15:13:36+00:00"
+            "support": {
+                "source": "https://github.com/symfony/twig-bridge/tree/v3.4.46"
+            },
+            "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": "2020-10-24T10:57:07+00:00"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v5.1.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<5.4.3",
+                "symfony/console": "<4.4"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "symfony/console": "^4.4|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "twig/twig": "^2.4|^3.0"
+            },
+            "suggest": {
+                "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+                "ext-intl": "To show region name in time zone dump",
+                "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+            },
+            "bin": [
+                "Resources/bin/var-dump-server"
+            ],
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "Resources/functions/dump.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\VarDumper\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony mechanism for exploring and dumping PHP variables",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "debug",
+                "dump"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-dumper/tree/v5.1.8"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-27T10:11:13+00:00"
         },
         {
             "name": "twig/twig",
-            "version": "v1.42.3",
+            "version": "v1.44.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/Twig.git",
-                "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e"
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/Twig/zipball/201baee843e0ffe8b0b956f336dd42b2a92fae4e",
-                "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5.0",
+                "php": ">=7.2.5",
                 "symfony/polyfill-ctype": "^1.8"
             },
             "require-dev": {
                 "psr/container": "^1.0",
-                "symfony/debug": "^3.4|^4.2",
-                "symfony/phpunit-bridge": "^4.4@dev|^5.0"
+                "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.42-dev"
+                    "dev-master": "1.44-dev"
                 }
             },
             "autoload": {
@@ -1450,7 +2115,6 @@
                 },
                 {
                     "name": "Twig Team",
-                    "homepage": "https://twig.symfony.com/contributors",
                     "role": "Contributors"
                 },
                 {
@@ -1464,7 +2128,21 @@
             "keywords": [
                 "templating"
             ],
-            "time": "2019-08-24T12:51:03+00:00"
+            "support": {
+                "issues": "https://github.com/twigphp/Twig/issues",
+                "source": "https://github.com/twigphp/Twig/tree/v1.44.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-27T19:22:48+00:00"
         }
     ],
     "packages-dev": [],
@@ -1477,5 +2155,6 @@
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": [],
-    "platform-dev": []
+    "platform-dev": [],
+    "plugin-api-version": "2.0.0"
 }
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index fce8549f0781bafdc7da2301b84d048286757445..1a58957d25d4a5fd00be8d9f086a4ece3bf8371e 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -37,8 +37,8 @@ namespace Composer\Autoload;
  *
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Jordi Boggiano <j.boggiano@seld.be>
- * @see    http://www.php-fig.org/psr/psr-0/
- * @see    http://www.php-fig.org/psr/psr-4/
+ * @see    https://www.php-fig.org/psr/psr-0/
+ * @see    https://www.php-fig.org/psr/psr-4/
  */
 class ClassLoader
 {
@@ -60,7 +60,7 @@ class ClassLoader
     public function getPrefixes()
     {
         if (!empty($this->prefixesPsr0)) {
-            return call_user_func_array('array_merge', $this->prefixesPsr0);
+            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
         }
 
         return array();
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 5db5c9773020f5c97a96b2be20c9dd954abb3458..83006fac3fa9590d383d60452538b15d91de7ba0 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -6,5 +6,11 @@ $vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 
 return array(
+    'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
     'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+    'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
+    'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+    'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+    'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
 );
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 78110623d87caf34799d5e507cd8232a32965a52..167ee059ec53f97c2879b5dfdb7b0dcb9f132b6f 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -7,10 +7,13 @@ $baseDir = dirname($vendorDir);
 
 return array(
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
+    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
     '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
     'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
     '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
     '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
+    '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
     '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
     'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
     'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 8f5ae4033a05dccfefcd4eb6dce4211d00a0e165..5adc4e2486e16ae7d0513fb3778f115306a7d2c1 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -7,17 +7,22 @@ $baseDir = dirname($vendorDir);
 
 return array(
     'Twig\\' => array($vendorDir . '/twig/twig/src'),
+    'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
     'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
     'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
     'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
+    'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
     'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
     'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
+    'Symfony\\Contracts\\HttpClient\\' => array($vendorDir . '/symfony/http-client-contracts'),
     'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'),
+    'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
     'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
     'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'),
     'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'),
     'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
     'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
+    'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'),
     'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'),
     'Symfony\\Bridge\\Twig\\' => array($vendorDir . '/symfony/twig-bridge'),
     'Silex\\' => array($vendorDir . '/silex/silex/src/Silex'),
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 9e4d4100a63429a379e249334a40022e1e6219d7..1a3ea5efd0f98b06206b1417cf19f4e8145ba58c 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -13,19 +13,24 @@ class ComposerAutoloaderInit8a9318ad96e1e6602a968c996fe31931
         }
     }
 
+    /**
+     * @return \Composer\Autoload\ClassLoader
+     */
     public static function getLoader()
     {
         if (null !== self::$loader) {
             return self::$loader;
         }
 
+        require __DIR__ . '/platform_check.php';
+
         spl_autoload_register(array('ComposerAutoloaderInit8a9318ad96e1e6602a968c996fe31931', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
         spl_autoload_unregister(array('ComposerAutoloaderInit8a9318ad96e1e6602a968c996fe31931', 'loadClassLoader'));
 
         $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
         if ($useStaticLoader) {
-            require_once __DIR__ . '/autoload_static.php';
+            require __DIR__ . '/autoload_static.php';
 
             call_user_func(\Composer\Autoload\ComposerStaticInit8a9318ad96e1e6602a968c996fe31931::getInitializer($loader));
         } else {
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index b33df1c81aeac4daefe475179ca243c3b41d671d..82dce8825086d4266bc2eac61bdd3ec7bec5fa65 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -8,10 +8,13 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
 {
     public static $files = array (
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
+        'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
         '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
         'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
         '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
         '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
+        '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
         'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
         'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
@@ -25,17 +28,22 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         ),
         'S' => 
         array (
+            'Symfony\\Polyfill\\Php80\\' => 23,
             'Symfony\\Polyfill\\Php73\\' => 23,
             'Symfony\\Polyfill\\Php72\\' => 23,
             'Symfony\\Polyfill\\Mbstring\\' => 26,
+            'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
             'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
             'Symfony\\Polyfill\\Ctype\\' => 23,
+            'Symfony\\Contracts\\HttpClient\\' => 29,
             'Symfony\\Contracts\\EventDispatcher\\' => 34,
+            'Symfony\\Component\\VarDumper\\' => 28,
             'Symfony\\Component\\Routing\\' => 26,
             'Symfony\\Component\\Mime\\' => 23,
             'Symfony\\Component\\HttpKernel\\' => 29,
             'Symfony\\Component\\HttpFoundation\\' => 33,
             'Symfony\\Component\\EventDispatcher\\' => 34,
+            'Symfony\\Component\\ErrorHandler\\' => 31,
             'Symfony\\Component\\Debug\\' => 24,
             'Symfony\\Bridge\\Twig\\' => 20,
             'Silex\\' => 6,
@@ -63,6 +71,10 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/twig/twig/src',
         ),
+        'Symfony\\Polyfill\\Php80\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
+        ),
         'Symfony\\Polyfill\\Php73\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
@@ -75,6 +87,10 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
         ),
+        'Symfony\\Polyfill\\Intl\\Normalizer\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
+        ),
         'Symfony\\Polyfill\\Intl\\Idn\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
@@ -83,10 +99,18 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
         ),
+        'Symfony\\Contracts\\HttpClient\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/http-client-contracts',
+        ),
         'Symfony\\Contracts\\EventDispatcher\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts',
         ),
+        'Symfony\\Component\\VarDumper\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/var-dumper',
+        ),
         'Symfony\\Component\\Routing\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/routing',
@@ -107,6 +131,10 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
         ),
+        'Symfony\\Component\\ErrorHandler\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/error-handler',
+        ),
         'Symfony\\Component\\Debug\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/debug',
@@ -178,7 +206,13 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
     );
 
     public static $classMap = array (
+        'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
         'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+        'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
+        'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+        'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+        'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
     );
 
     public static function getInitializer(ClassLoader $loader)
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 0ec583028611acdb6d60844fe6da1b99ea5aaefd..9d619da25ac4fa149867ffbb414c4b2d4e732bcf 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,1512 +1,2219 @@
-[
-    {
-        "name": "guzzlehttp/guzzle",
-        "version": "6.3.3",
-        "version_normalized": "6.3.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/guzzle.git",
-            "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-            "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-            "shasum": ""
-        },
-        "require": {
-            "guzzlehttp/promises": "^1.0",
-            "guzzlehttp/psr7": "^1.4",
-            "php": ">=5.5"
-        },
-        "require-dev": {
-            "ext-curl": "*",
-            "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-            "psr/log": "^1.0"
-        },
-        "suggest": {
-            "psr/log": "Required for using the Log middleware"
-        },
-        "time": "2018-04-22T15:46:56+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "6.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "files": [
-                "src/functions_include.php"
-            ],
-            "psr-4": {
-                "GuzzleHttp\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
-        ],
-        "description": "Guzzle is a PHP HTTP client library",
-        "homepage": "http://guzzlephp.org/",
-        "keywords": [
-            "client",
-            "curl",
-            "framework",
-            "http",
-            "http client",
-            "rest",
-            "web service"
-        ]
-    },
-    {
-        "name": "guzzlehttp/promises",
-        "version": "v1.3.1",
-        "version_normalized": "1.3.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/promises.git",
-            "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-            "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "^4.0"
-        },
-        "time": "2016-12-20T10:07:11+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Promise\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
-        ],
-        "description": "Guzzle promises library",
-        "keywords": [
-            "promise"
-        ]
-    },
-    {
-        "name": "guzzlehttp/psr7",
-        "version": "1.6.1",
-        "version_normalized": "1.6.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/psr7.git",
-            "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
-            "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.4.0",
-            "psr/http-message": "~1.0",
-            "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "1.0"
-        },
-        "require-dev": {
-            "ext-zlib": "*",
-            "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
-        },
-        "suggest": {
-            "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
-        },
-        "time": "2019-07-01T23:21:34+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.6-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Psr7\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            },
-            {
-                "name": "Tobias Schultze",
-                "homepage": "https://github.com/Tobion"
-            }
-        ],
-        "description": "PSR-7 message implementation that also provides common utility methods",
-        "keywords": [
-            "http",
-            "message",
-            "psr-7",
-            "request",
-            "response",
-            "stream",
-            "uri",
-            "url"
-        ]
-    },
-    {
-        "name": "hab/paginator",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "source": {
-            "type": "git",
-            "url": "git@github.com:dmj/php-paginator.git",
-            "reference": "82429eeee25412b638da3b18d519fc9cb9b4568a"
-        },
-        "time": "2017-03-22T08:37:43+00:00",
-        "type": "library",
-        "installation-source": "source",
-        "autoload": {
-            "psr-4": {
-                "HAB\\Paginator\\": "lib/"
-            }
-        }
-    },
-    {
-        "name": "hab/solr",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "source": {
-            "type": "git",
-            "url": "git@github.com:dmj/php-solr.git",
-            "reference": "a54f2c7495dacc5cd0964fba25e1fa2b89cc03fe"
-        },
-        "require": {
-            "guzzlehttp/guzzle": "~6.0"
-        },
-        "time": "2019-08-07T06:46:21+00:00",
-        "type": "library",
-        "installation-source": "source",
-        "autoload": {
-            "psr-0": {
-                "HAB": "src/"
-            }
-        }
-    },
-    {
-        "name": "pimple/pimple",
-        "version": "v3.2.3",
-        "version_normalized": "3.2.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/silexphp/Pimple.git",
-            "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
-            "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0",
-            "psr/container": "^1.0"
-        },
-        "require-dev": {
-            "symfony/phpunit-bridge": "^3.2"
-        },
-        "time": "2018-01-21T07:42:36+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.2.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Pimple": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            }
-        ],
-        "description": "Pimple, a simple Dependency Injection Container",
-        "homepage": "http://pimple.sensiolabs.org",
-        "keywords": [
-            "container",
-            "dependency injection"
-        ]
-    },
-    {
-        "name": "psr/container",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/php-fig/container.git",
-            "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
-            "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "time": "2017-02-14T16:28:37+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Psr\\Container\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "PHP-FIG",
-                "homepage": "http://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"
-        ]
-    },
-    {
-        "name": "psr/http-message",
-        "version": "1.0.1",
-        "version_normalized": "1.0.1.0",
-        "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"
-        },
-        "time": "2016-08-06T14:39:51+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Psr\\Http\\Message\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "PHP-FIG",
-                "homepage": "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"
-        ]
-    },
-    {
-        "name": "psr/log",
-        "version": "1.1.0",
-        "version_normalized": "1.1.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/php-fig/log.git",
-            "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-            "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "time": "2018-11-20T15:27:04+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Psr\\Log\\": "Psr/Log/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "PHP-FIG",
-                "homepage": "http://www.php-fig.org/"
-            }
-        ],
-        "description": "Common interface for logging libraries",
-        "homepage": "https://github.com/php-fig/log",
-        "keywords": [
-            "log",
-            "psr",
-            "psr-3"
-        ]
-    },
-    {
-        "name": "ralouphie/getallheaders",
-        "version": "3.0.3",
-        "version_normalized": "3.0.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/ralouphie/getallheaders.git",
-            "reference": "120b605dfeb996808c31b6477290a714d356e822"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
-            "reference": "120b605dfeb996808c31b6477290a714d356e822",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.6"
-        },
-        "require-dev": {
-            "php-coveralls/php-coveralls": "^2.1",
-            "phpunit/phpunit": "^5 || ^6.5"
-        },
-        "time": "2019-03-08T08:55:37+00:00",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "files": [
-                "src/getallheaders.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Ralph Khattar",
-                "email": "ralph.khattar@gmail.com"
-            }
-        ],
-        "description": "A polyfill for getallheaders."
-    },
-    {
-        "name": "silex/silex",
-        "version": "v2.3.0",
-        "version_normalized": "2.3.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/silexphp/Silex.git",
-            "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131",
-            "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=7.1.3",
-            "pimple/pimple": "^3.0",
-            "symfony/event-dispatcher": "^4.0",
-            "symfony/http-foundation": "^4.0",
-            "symfony/http-kernel": "^4.0",
-            "symfony/routing": "^4.0"
-        },
-        "replace": {
-            "silex/api": "self.version",
-            "silex/providers": "self.version"
-        },
-        "require-dev": {
-            "doctrine/dbal": "^2.2",
-            "monolog/monolog": "^1.4.1",
-            "swiftmailer/swiftmailer": "^5",
-            "symfony/asset": "^4.0",
-            "symfony/browser-kit": "^4.0",
-            "symfony/config": "^4.0",
-            "symfony/css-selector": "^4.0",
-            "symfony/debug": "^4.0",
-            "symfony/doctrine-bridge": "^4.0",
-            "symfony/dom-crawler": "^4.0",
-            "symfony/expression-language": "^4.0",
-            "symfony/finder": "^4.0",
-            "symfony/form": "^4.0",
-            "symfony/intl": "^4.0",
-            "symfony/monolog-bridge": "^4.0",
-            "symfony/options-resolver": "^4.0",
-            "symfony/phpunit-bridge": "^3.2",
-            "symfony/process": "^4.0",
-            "symfony/security": "^4.0",
-            "symfony/serializer": "^4.0",
-            "symfony/translation": "^4.0",
-            "symfony/twig-bridge": "^4.0",
-            "symfony/validator": "^4.0",
-            "symfony/var-dumper": "^4.0",
-            "symfony/web-link": "^4.0",
-            "twig/twig": "^2.0"
-        },
-        "time": "2018-04-20T05:17:01+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.3.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Silex\\": "src/Silex"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Igor Wiedler",
-                "email": "igor@wiedler.ch"
-            }
-        ],
-        "description": "The PHP micro-framework based on the Symfony Components",
-        "homepage": "http://silex.sensiolabs.org",
-        "keywords": [
-            "microframework"
-        ],
-        "abandoned": "symfony/flex"
-    },
-    {
-        "name": "symfony/debug",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/debug.git",
-            "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/debug/zipball/cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
-            "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "psr/log": "~1.0"
-        },
-        "conflict": {
-            "symfony/http-kernel": "<3.4"
-        },
-        "require-dev": {
-            "symfony/http-kernel": "~3.4|~4.0"
-        },
-        "time": "2019-09-19T15:51:53+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Debug\\": ""
-            },
-            "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": "Symfony Debug Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/event-dispatcher",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/event-dispatcher.git",
-            "reference": "6229f58993e5a157f6096fc7145c0717d0be8807"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807",
-            "reference": "6229f58993e5a157f6096fc7145c0717d0be8807",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "symfony/event-dispatcher-contracts": "^1.1"
-        },
-        "conflict": {
-            "symfony/dependency-injection": "<3.4"
-        },
-        "provide": {
-            "psr/event-dispatcher-implementation": "1.0",
-            "symfony/event-dispatcher-implementation": "1.1"
-        },
-        "require-dev": {
-            "psr/log": "~1.0",
-            "symfony/config": "~3.4|~4.0",
-            "symfony/dependency-injection": "~3.4|~4.0",
-            "symfony/expression-language": "~3.4|~4.0",
-            "symfony/http-foundation": "^3.4|^4.0",
-            "symfony/service-contracts": "^1.1",
-            "symfony/stopwatch": "~3.4|~4.0"
-        },
-        "suggest": {
-            "symfony/dependency-injection": "",
-            "symfony/http-kernel": ""
-        },
-        "time": "2019-10-01T16:40:32+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\EventDispatcher\\": ""
-            },
-            "exclude-from-classmap": [
-                "/Tests/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony EventDispatcher Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/event-dispatcher-contracts",
-        "version": "v1.1.7",
-        "version_normalized": "1.1.7.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-            "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
-            "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3"
-        },
-        "suggest": {
-            "psr/event-dispatcher": "",
-            "symfony/event-dispatcher-implementation": ""
-        },
-        "time": "2019-09-17T09:54:03+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Contracts\\EventDispatcher\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Nicolas Grekas",
-                "email": "p@tchwork.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Generic abstractions related to dispatching event",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "abstractions",
-            "contracts",
-            "decoupling",
-            "interfaces",
-            "interoperability",
-            "standards"
-        ]
-    },
-    {
-        "name": "symfony/http-foundation",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/http-foundation.git",
-            "reference": "76590ced16d4674780863471bae10452b79210a5"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-foundation/zipball/76590ced16d4674780863471bae10452b79210a5",
-            "reference": "76590ced16d4674780863471bae10452b79210a5",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "symfony/mime": "^4.3",
-            "symfony/polyfill-mbstring": "~1.1"
-        },
-        "require-dev": {
-            "predis/predis": "~1.0",
-            "symfony/expression-language": "~3.4|~4.0"
-        },
-        "time": "2019-10-04T19:48:13+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\HttpFoundation\\": ""
-            },
-            "exclude-from-classmap": [
-                "/Tests/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony HttpFoundation Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/http-kernel",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/http-kernel.git",
-            "reference": "5f08141850932e8019c01d8988bf3ed6367d2991"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5f08141850932e8019c01d8988bf3ed6367d2991",
-            "reference": "5f08141850932e8019c01d8988bf3ed6367d2991",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "psr/log": "~1.0",
-            "symfony/debug": "~3.4|~4.0",
-            "symfony/event-dispatcher": "^4.3",
-            "symfony/http-foundation": "^4.1.1",
-            "symfony/polyfill-ctype": "~1.8",
-            "symfony/polyfill-php73": "^1.9"
-        },
-        "conflict": {
-            "symfony/browser-kit": "<4.3",
-            "symfony/config": "<3.4",
-            "symfony/dependency-injection": "<4.3",
-            "symfony/translation": "<4.2",
-            "symfony/var-dumper": "<4.1.1",
-            "twig/twig": "<1.34|<2.4,>=2"
-        },
-        "provide": {
-            "psr/log-implementation": "1.0"
-        },
-        "require-dev": {
-            "psr/cache": "~1.0",
-            "symfony/browser-kit": "^4.3",
-            "symfony/config": "~3.4|~4.0",
-            "symfony/console": "~3.4|~4.0",
-            "symfony/css-selector": "~3.4|~4.0",
-            "symfony/dependency-injection": "^4.3",
-            "symfony/dom-crawler": "~3.4|~4.0",
-            "symfony/expression-language": "~3.4|~4.0",
-            "symfony/finder": "~3.4|~4.0",
-            "symfony/process": "~3.4|~4.0",
-            "symfony/routing": "~3.4|~4.0",
-            "symfony/stopwatch": "~3.4|~4.0",
-            "symfony/templating": "~3.4|~4.0",
-            "symfony/translation": "~4.2",
-            "symfony/translation-contracts": "^1.1",
-            "symfony/var-dumper": "^4.1.1",
-            "twig/twig": "^1.34|^2.4"
-        },
-        "suggest": {
-            "symfony/browser-kit": "",
-            "symfony/config": "",
-            "symfony/console": "",
-            "symfony/dependency-injection": "",
-            "symfony/var-dumper": ""
-        },
-        "time": "2019-10-07T15:06:41+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\HttpKernel\\": ""
-            },
-            "exclude-from-classmap": [
-                "/Tests/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony HttpKernel Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/mime",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/mime.git",
-            "reference": "32f71570547b91879fdbd9cf50317d556ae86916"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/mime/zipball/32f71570547b91879fdbd9cf50317d556ae86916",
-            "reference": "32f71570547b91879fdbd9cf50317d556ae86916",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "symfony/polyfill-intl-idn": "^1.10",
-            "symfony/polyfill-mbstring": "^1.0"
-        },
-        "require-dev": {
-            "egulias/email-validator": "^2.1.10",
-            "symfony/dependency-injection": "~3.4|^4.1"
-        },
-        "time": "2019-09-19T17:00:15+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Mime\\": ""
-            },
-            "exclude-from-classmap": [
-                "/Tests/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "A library to manipulate MIME messages",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "mime",
-            "mime-type"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-ctype",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-ctype.git",
-            "reference": "550ebaac289296ce228a706d0867afc34687e3f4"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
-            "reference": "550ebaac289296ce228a706d0867afc34687e3f4",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "suggest": {
-            "ext-ctype": "For best performance"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "installation-source": "dist",
-        "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"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-intl-idn",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-intl-idn.git",
-            "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
-            "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "symfony/polyfill-mbstring": "^1.3",
-            "symfony/polyfill-php72": "^1.9"
-        },
-        "suggest": {
-            "ext-intl": "For best performance"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Polyfill\\Intl\\Idn\\": ""
-            },
-            "files": [
-                "bootstrap.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Laurent Bassin",
-                "email": "laurent@bassin.info"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "compatibility",
-            "idn",
-            "intl",
-            "polyfill",
-            "portable",
-            "shim"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-mbstring",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-mbstring.git",
-            "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
-            "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "suggest": {
-            "ext-mbstring": "For best performance"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "installation-source": "dist",
-        "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"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-php72",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-php72.git",
-            "reference": "04ce3335667451138df4307d6a9b61565560199e"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
-            "reference": "04ce3335667451138df4307d6a9b61565560199e",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Polyfill\\Php72\\": ""
-            },
-            "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 backporting some PHP 7.2+ features to lower PHP versions",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "compatibility",
-            "polyfill",
-            "portable",
-            "shim"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-php73",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-php73.git",
-            "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
-            "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Polyfill\\Php73\\": ""
+{
+    "packages": [
+        {
+            "name": "guzzlehttp/guzzle",
+            "version": "6.5.5",
+            "version_normalized": "6.5.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "guzzlehttp/promises": "^1.0",
+                "guzzlehttp/psr7": "^1.6.1",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "^1.17.0"
+            },
+            "require-dev": {
+                "ext-curl": "*",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+                "psr/log": "^1.1"
+            },
+            "suggest": {
+                "psr/log": "Required for using the Log middleware"
             },
-            "files": [
-                "bootstrap.php"
+            "time": "2020-06-16T21:01:06+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "6.5-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
             ],
-            "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"
-        ]
-    },
-    {
-        "name": "symfony/routing",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/routing.git",
-            "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/routing/zipball/3b174ef04fe66696524efad1e5f7a6c663d822ea",
-            "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3"
-        },
-        "conflict": {
-            "symfony/config": "<4.2",
-            "symfony/dependency-injection": "<3.4",
-            "symfony/yaml": "<3.4"
-        },
-        "require-dev": {
-            "doctrine/annotations": "~1.2",
-            "psr/log": "~1.0",
-            "symfony/config": "~4.2",
-            "symfony/dependency-injection": "~3.4|~4.0",
-            "symfony/expression-language": "~3.4|~4.0",
-            "symfony/http-foundation": "~3.4|~4.0",
-            "symfony/yaml": "~3.4|~4.0"
-        },
-        "suggest": {
-            "doctrine/annotations": "For using the annotation loader",
-            "symfony/config": "For using the all-in-one router or any loader",
-            "symfony/expression-language": "For using expression matching",
-            "symfony/http-foundation": "For using a Symfony Request object",
-            "symfony/yaml": "For using the YAML loader"
-        },
-        "time": "2019-10-04T20:57:10+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Routing\\": ""
-            },
-            "exclude-from-classmap": [
-                "/Tests/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Routing Component",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "router",
-            "routing",
-            "uri",
-            "url"
-        ]
-    },
-    {
-        "name": "symfony/twig-bridge",
-        "version": "v3.4.32",
-        "version_normalized": "3.4.32.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/twig-bridge.git",
-            "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9f55b34b539a3a0ea51c2ed96609173c5b326259",
-            "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^5.5.9|>=7.0.8",
-            "twig/twig": "^1.41|^2.10"
-        },
-        "conflict": {
-            "symfony/console": "<3.4",
-            "symfony/form": "<3.4.31|>=4.0,<4.3.4"
-        },
-        "require-dev": {
-            "fig/link-util": "^1.0",
-            "symfony/asset": "~2.8|~3.0|~4.0",
-            "symfony/console": "~3.4|~4.0",
-            "symfony/dependency-injection": "~2.8|~3.0|~4.0",
-            "symfony/expression-language": "~2.8|~3.0|~4.0",
-            "symfony/finder": "~2.8|~3.0|~4.0",
-            "symfony/form": "^3.4.31|^4.3.4",
-            "symfony/http-foundation": "^3.3.11|~4.0",
-            "symfony/http-kernel": "~3.2|~4.0",
-            "symfony/polyfill-intl-icu": "~1.0",
-            "symfony/routing": "~2.8|~3.0|~4.0",
-            "symfony/security": "^2.8.31|^3.3.13|~4.0",
-            "symfony/security-acl": "~2.8|~3.0",
-            "symfony/stopwatch": "~2.8|~3.0|~4.0",
-            "symfony/templating": "~2.8|~3.0|~4.0",
-            "symfony/translation": "~2.8|~3.0|~4.0",
-            "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0",
-            "symfony/web-link": "~3.3|~4.0",
-            "symfony/workflow": "~3.3|~4.0",
-            "symfony/yaml": "~2.8|~3.0|~4.0"
-        },
-        "suggest": {
-            "symfony/asset": "For using the AssetExtension",
-            "symfony/expression-language": "For using the ExpressionExtension",
-            "symfony/finder": "",
-            "symfony/form": "For using the FormExtension",
-            "symfony/http-kernel": "For using the HttpKernelExtension",
-            "symfony/routing": "For using the RoutingExtension",
-            "symfony/security": "For using the SecurityExtension",
-            "symfony/stopwatch": "For using the StopwatchExtension",
-            "symfony/templating": "For using the TwigEngine",
-            "symfony/translation": "For using the TranslationExtension",
-            "symfony/var-dumper": "For using the DumpExtension",
-            "symfony/web-link": "For using the WebLinkExtension",
-            "symfony/yaml": "For using the YamlExtension"
-        },
-        "time": "2019-10-01T15:13:36+00:00",
-        "type": "symfony-bridge",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Bridge\\Twig\\": ""
-            },
-            "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": "Symfony Twig Bridge",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "twig/twig",
-        "version": "v1.42.3",
-        "version_normalized": "1.42.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/twigphp/Twig.git",
-            "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/twigphp/Twig/zipball/201baee843e0ffe8b0b956f336dd42b2a92fae4e",
-            "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5.0",
-            "symfony/polyfill-ctype": "^1.8"
-        },
-        "require-dev": {
-            "psr/container": "^1.0",
-            "symfony/debug": "^3.4|^4.2",
-            "symfony/phpunit-bridge": "^4.4@dev|^5.0"
-        },
-        "time": "2019-08-24T12:51:03+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.42-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Twig_": "lib/"
-            },
-            "psr-4": {
-                "Twig\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com",
-                "homepage": "http://fabien.potencier.org",
-                "role": "Lead Developer"
-            },
-            {
-                "name": "Twig Team",
-                "homepage": "https://twig.symfony.com/contributors",
-                "role": "Contributors"
-            },
-            {
-                "name": "Armin Ronacher",
-                "email": "armin.ronacher@active-4.com",
-                "role": "Project Founder"
-            }
-        ],
-        "description": "Twig, the flexible, fast, and secure template language for PHP",
-        "homepage": "https://twig.symfony.com",
-        "keywords": [
-            "templating"
-        ]
-    }
-]
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/guzzle/issues",
+                "source": "https://github.com/guzzle/guzzle/tree/6.5"
+            },
+            "install-path": "../guzzlehttp/guzzle"
+        },
+        {
+            "name": "guzzlehttp/promises",
+            "version": "1.4.0",
+            "version_normalized": "1.4.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/promises.git",
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^4.4 || ^5.1"
+            },
+            "time": "2020-09-30T07:37:28+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Promise\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle promises library",
+            "keywords": [
+                "promise"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/promises/issues",
+                "source": "https://github.com/guzzle/promises/tree/1.4.0"
+            },
+            "install-path": "../guzzlehttp/promises"
+        },
+        {
+            "name": "guzzlehttp/psr7",
+            "version": "1.7.0",
+            "version_normalized": "1.7.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/psr7.git",
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0",
+                "psr/http-message": "~1.0",
+                "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+            },
+            "provide": {
+                "psr/http-message-implementation": "1.0"
+            },
+            "require-dev": {
+                "ext-zlib": "*",
+                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+            },
+            "suggest": {
+                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+            },
+            "time": "2020-09-30T07:37:11+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.7-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Psr7\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "PSR-7 message implementation that also provides common utility methods",
+            "keywords": [
+                "http",
+                "message",
+                "psr-7",
+                "request",
+                "response",
+                "stream",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/psr7/issues",
+                "source": "https://github.com/guzzle/psr7/tree/1.7.0"
+            },
+            "install-path": "../guzzlehttp/psr7"
+        },
+        {
+            "name": "hab/paginator",
+            "version": "dev-master",
+            "version_normalized": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dmj/php-paginator.git",
+                "reference": "82429eeee25412b638da3b18d519fc9cb9b4568a"
+            },
+            "time": "2017-03-22T08:37:43+00:00",
+            "default-branch": true,
+            "type": "library",
+            "installation-source": "source",
+            "autoload": {
+                "psr-4": {
+                    "HAB\\Paginator\\": "lib/"
+                }
+            },
+            "install-path": "../hab/paginator"
+        },
+        {
+            "name": "hab/solr",
+            "version": "dev-master",
+            "version_normalized": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dmj/php-solr.git",
+                "reference": "ef528a52d57493ad2ae575037e42442075135f62"
+            },
+            "require": {
+                "guzzlehttp/guzzle": "~6.0"
+            },
+            "require-dev": {
+                "phan/phan": "^2.4",
+                "phpstan/phpstan": "^0.11.19",
+                "phpunit/phpunit": "^8.4"
+            },
+            "time": "2020-07-16T13:14:20+00:00",
+            "default-branch": true,
+            "type": "library",
+            "installation-source": "source",
+            "autoload": {
+                "psr-0": {
+                    "HAB": "src/"
+                }
+            },
+            "install-path": "../hab/solr"
+        },
+        {
+            "name": "pimple/pimple",
+            "version": "v3.3.0",
+            "version_normalized": "3.3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/silexphp/Pimple.git",
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930",
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5",
+                "psr/container": "^1.0"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
+            },
+            "time": "2020-03-03T09:12:48+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.3.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-0": {
+                    "Pimple": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "Pimple, a simple Dependency Injection Container",
+            "homepage": "https://pimple.symfony.com",
+            "keywords": [
+                "container",
+                "dependency injection"
+            ],
+            "support": {
+                "issues": "https://github.com/silexphp/Pimple/issues",
+                "source": "https://github.com/silexphp/Pimple/tree/master"
+            },
+            "install-path": "../pimple/pimple"
+        },
+        {
+            "name": "psr/container",
+            "version": "1.0.0",
+            "version_normalized": "1.0.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "time": "2017-02-14T16:28:37+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://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"
+            ],
+            "install-path": "../psr/container"
+        },
+        {
+            "name": "psr/http-message",
+            "version": "1.0.1",
+            "version_normalized": "1.0.1.0",
+            "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"
+            },
+            "time": "2016-08-06T14:39:51+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "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"
+            ],
+            "install-path": "../psr/http-message"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.3",
+            "version_normalized": "1.1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "time": "2020-03-23T09:12:05+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://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.3"
+            },
+            "install-path": "../psr/log"
+        },
+        {
+            "name": "ralouphie/getallheaders",
+            "version": "3.0.3",
+            "version_normalized": "3.0.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ralouphie/getallheaders.git",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "php-coveralls/php-coveralls": "^2.1",
+                "phpunit/phpunit": "^5 || ^6.5"
+            },
+            "time": "2019-03-08T08:55:37+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "src/getallheaders.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ralph Khattar",
+                    "email": "ralph.khattar@gmail.com"
+                }
+            ],
+            "description": "A polyfill for getallheaders.",
+            "install-path": "../ralouphie/getallheaders"
+        },
+        {
+            "name": "silex/silex",
+            "version": "v2.3.0",
+            "version_normalized": "2.3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/silexphp/Silex.git",
+                "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131",
+                "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "pimple/pimple": "^3.0",
+                "symfony/event-dispatcher": "^4.0",
+                "symfony/http-foundation": "^4.0",
+                "symfony/http-kernel": "^4.0",
+                "symfony/routing": "^4.0"
+            },
+            "replace": {
+                "silex/api": "self.version",
+                "silex/providers": "self.version"
+            },
+            "require-dev": {
+                "doctrine/dbal": "^2.2",
+                "monolog/monolog": "^1.4.1",
+                "swiftmailer/swiftmailer": "^5",
+                "symfony/asset": "^4.0",
+                "symfony/browser-kit": "^4.0",
+                "symfony/config": "^4.0",
+                "symfony/css-selector": "^4.0",
+                "symfony/debug": "^4.0",
+                "symfony/doctrine-bridge": "^4.0",
+                "symfony/dom-crawler": "^4.0",
+                "symfony/expression-language": "^4.0",
+                "symfony/finder": "^4.0",
+                "symfony/form": "^4.0",
+                "symfony/intl": "^4.0",
+                "symfony/monolog-bridge": "^4.0",
+                "symfony/options-resolver": "^4.0",
+                "symfony/phpunit-bridge": "^3.2",
+                "symfony/process": "^4.0",
+                "symfony/security": "^4.0",
+                "symfony/serializer": "^4.0",
+                "symfony/translation": "^4.0",
+                "symfony/twig-bridge": "^4.0",
+                "symfony/validator": "^4.0",
+                "symfony/var-dumper": "^4.0",
+                "symfony/web-link": "^4.0",
+                "twig/twig": "^2.0"
+            },
+            "time": "2018-04-20T05:17:01+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Silex\\": "src/Silex"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                }
+            ],
+            "description": "The PHP micro-framework based on the Symfony Components",
+            "homepage": "http://silex.sensiolabs.org",
+            "keywords": [
+                "microframework"
+            ],
+            "abandoned": "symfony/flex",
+            "install-path": "../silex/silex"
+        },
+        {
+            "name": "symfony/debug",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/debug.git",
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/http-kernel": "<3.4"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "^3.4|^4.0|^5.0"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Debug\\": ""
+                },
+                "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": "Symfony Debug Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/debug/tree/v4.4.16"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/debug"
+        },
+        {
+            "name": "symfony/error-handler",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/error-handler.git",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/363cca01cabf98e4f1c447b14d0a68617f003613",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/debug": "^4.4.5",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/var-dumper": "^4.4|^5.0"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "^4.4|^5.0",
+                "symfony/serializer": "^4.4|^5.0"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\ErrorHandler\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony ErrorHandler Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/error-handler/tree/v4.4.16"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/error-handler"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.16"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/event-dispatcher"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.9",
+            "version_normalized": "1.1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "suggest": {
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "time": "2020-07-06T13:19:58+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/event-dispatcher-contracts"
+        },
+        {
+            "name": "symfony/http-client-contracts",
+            "version": "v2.3.1",
+            "version_normalized": "2.3.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-client-contracts.git",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "suggest": {
+                "symfony/http-client-implementation": ""
+            },
+            "time": "2020-10-14T17:08:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-version": "2.3",
+                "branch-alias": {
+                    "dev-main": "2.3-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\HttpClient\\": ""
+                }
+            },
+            "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 HTTP clients",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/http-client-contracts/tree/v2.3.1"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/http-client-contracts"
+        },
+        {
+            "name": "symfony/http-foundation",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-foundation.git",
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/827a00811ef699e809a201ceafac0b2b246bf38a",
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/mime": "^4.3|^5.0",
+                "symfony/polyfill-mbstring": "~1.1"
+            },
+            "require-dev": {
+                "predis/predis": "~1.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\HttpFoundation\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony HttpFoundation Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/http-foundation/tree/v4.4.16"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/http-foundation"
+        },
+        {
+            "name": "symfony/http-kernel",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-kernel.git",
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/error-handler": "^4.4",
+                "symfony/event-dispatcher": "^4.4",
+                "symfony/http-client-contracts": "^1.1|^2",
+                "symfony/http-foundation": "^4.4|^5.0",
+                "symfony/polyfill-ctype": "^1.8",
+                "symfony/polyfill-php73": "^1.9",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/browser-kit": "<4.3",
+                "symfony/config": "<3.4",
+                "symfony/console": ">=5",
+                "symfony/dependency-injection": "<4.3",
+                "symfony/translation": "<4.2",
+                "twig/twig": "<1.34|<2.4,>=2"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
+            "require-dev": {
+                "psr/cache": "~1.0",
+                "symfony/browser-kit": "^4.3|^5.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/console": "^3.4|^4.0",
+                "symfony/css-selector": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^4.3|^5.0",
+                "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/routing": "^3.4|^4.0|^5.0",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0",
+                "symfony/templating": "^3.4|^4.0|^5.0",
+                "symfony/translation": "^4.2|^5.0",
+                "symfony/translation-contracts": "^1.1|^2",
+                "twig/twig": "^1.34|^2.4|^3.0"
+            },
+            "suggest": {
+                "symfony/browser-kit": "",
+                "symfony/config": "",
+                "symfony/console": "",
+                "symfony/dependency-injection": ""
+            },
+            "time": "2020-10-28T05:50:56+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\HttpKernel\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony HttpKernel Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/http-kernel/tree/v4.4.16"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/http-kernel"
+        },
+        {
+            "name": "symfony/mime",
+            "version": "v5.1.8",
+            "version_normalized": "5.1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/mime.git",
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-intl-idn": "^1.10",
+                "symfony/polyfill-mbstring": "^1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/mailer": "<4.4"
+            },
+            "require-dev": {
+                "egulias/email-validator": "^2.1.10",
+                "symfony/dependency-injection": "^4.4|^5.0"
+            },
+            "time": "2020-10-24T12:01:57+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Mime\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A library to manipulate MIME messages",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "mime",
+                "mime-type"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/mime/tree/v5.1.8"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/mime"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "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.20.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-ctype"
+        },
+        {
+            "name": "symfony/polyfill-intl-idn",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-idn.git",
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1",
+                "symfony/polyfill-intl-normalizer": "^1.10",
+                "symfony/polyfill-php72": "^1.10"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Laurent Bassin",
+                    "email": "laurent@bassin.info"
+                },
+                {
+                    "name": "Trevor Rowbotham",
+                    "email": "trevor.rowbotham@pm.me"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "idn",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-intl-idn"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "727d1096295d807c309fb01a851577302394c897"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+                "reference": "727d1096295d807c309fb01a851577302394c897",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "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.20.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-intl-normalizer"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "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.20.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-mbstring"
+        },
+        {
+            "name": "symfony/polyfill-php72",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php72\\": ""
+                },
+                "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 backporting some PHP 7.2+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-php72"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "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.20.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-php73"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "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.20.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-php80"
+        },
+        {
+            "name": "symfony/routing",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/routing.git",
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/826794f2e9305fe73cba859c60d2a336851bd202",
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "conflict": {
+                "symfony/config": "<4.2",
+                "symfony/dependency-injection": "<3.4",
+                "symfony/yaml": "<3.4"
+            },
+            "require-dev": {
+                "doctrine/annotations": "~1.2",
+                "psr/log": "~1.0",
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "doctrine/annotations": "For using the annotation loader",
+                "symfony/config": "For using the all-in-one router or any loader",
+                "symfony/expression-language": "For using expression matching",
+                "symfony/http-foundation": "For using a Symfony Request object",
+                "symfony/yaml": "For using the YAML loader"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Routing\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Routing Component",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "router",
+                "routing",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/routing/tree/v4.4.16"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/routing"
+        },
+        {
+            "name": "symfony/twig-bridge",
+            "version": "v3.4.46",
+            "version_normalized": "3.4.46.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/twig-bridge.git",
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "twig/twig": "^1.41|^2.10"
+            },
+            "conflict": {
+                "symfony/console": "<3.4",
+                "symfony/form": "<3.4.31|>=4.0,<4.3.4"
+            },
+            "require-dev": {
+                "fig/link-util": "^1.0",
+                "symfony/asset": "~2.8|~3.0|~4.0",
+                "symfony/console": "~3.4|~4.0",
+                "symfony/dependency-injection": "~2.8|~3.0|~4.0",
+                "symfony/expression-language": "~2.8|~3.0|~4.0",
+                "symfony/finder": "~2.8|~3.0|~4.0",
+                "symfony/form": "^3.4.31|^4.3.4",
+                "symfony/http-foundation": "^3.3.11|~4.0",
+                "symfony/http-kernel": "~3.2|~4.0",
+                "symfony/polyfill-intl-icu": "~1.0",
+                "symfony/routing": "~2.8|~3.0|~4.0",
+                "symfony/security": "^2.8.31|^3.3.13|~4.0",
+                "symfony/security-acl": "~2.8|~3.0",
+                "symfony/stopwatch": "~2.8|~3.0|~4.0",
+                "symfony/templating": "~2.8|~3.0|~4.0",
+                "symfony/translation": "~2.8|~3.0|~4.0",
+                "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0",
+                "symfony/web-link": "~3.3|~4.0",
+                "symfony/workflow": "~3.3|~4.0",
+                "symfony/yaml": "~2.8|~3.0|~4.0"
+            },
+            "suggest": {
+                "symfony/asset": "For using the AssetExtension",
+                "symfony/expression-language": "For using the ExpressionExtension",
+                "symfony/finder": "",
+                "symfony/form": "For using the FormExtension",
+                "symfony/http-kernel": "For using the HttpKernelExtension",
+                "symfony/routing": "For using the RoutingExtension",
+                "symfony/security": "For using the SecurityExtension",
+                "symfony/stopwatch": "For using the StopwatchExtension",
+                "symfony/templating": "For using the TwigEngine",
+                "symfony/translation": "For using the TranslationExtension",
+                "symfony/var-dumper": "For using the DumpExtension",
+                "symfony/web-link": "For using the WebLinkExtension",
+                "symfony/yaml": "For using the YamlExtension"
+            },
+            "time": "2020-10-24T10:57:07+00:00",
+            "type": "symfony-bridge",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Bridge\\Twig\\": ""
+                },
+                "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": "Symfony Twig Bridge",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/twig-bridge/tree/v3.4.46"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/twig-bridge"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v5.1.8",
+            "version_normalized": "5.1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<5.4.3",
+                "symfony/console": "<4.4"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "symfony/console": "^4.4|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "twig/twig": "^2.4|^3.0"
+            },
+            "suggest": {
+                "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+                "ext-intl": "To show region name in time zone dump",
+                "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+            },
+            "time": "2020-10-27T10:11:13+00:00",
+            "bin": [
+                "Resources/bin/var-dump-server"
+            ],
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "Resources/functions/dump.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\VarDumper\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony mechanism for exploring and dumping PHP variables",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "debug",
+                "dump"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-dumper/tree/v5.1.8"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/var-dumper"
+        },
+        {
+            "name": "twig/twig",
+            "version": "v1.44.1",
+            "version_normalized": "1.44.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/twigphp/Twig.git",
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "require-dev": {
+                "psr/container": "^1.0",
+                "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+            },
+            "time": "2020-10-27T19:22:48+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.44-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-0": {
+                    "Twig_": "lib/"
+                },
+                "psr-4": {
+                    "Twig\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
+                },
+                {
+                    "name": "Twig Team",
+                    "role": "Contributors"
+                },
+                {
+                    "name": "Armin Ronacher",
+                    "email": "armin.ronacher@active-4.com",
+                    "role": "Project Founder"
+                }
+            ],
+            "description": "Twig, the flexible, fast, and secure template language for PHP",
+            "homepage": "https://twig.symfony.com",
+            "keywords": [
+                "templating"
+            ],
+            "support": {
+                "issues": "https://github.com/twigphp/Twig/issues",
+                "source": "https://github.com/twigphp/Twig/tree/v1.44.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../twig/twig"
+        }
+    ],
+    "dev": true,
+    "dev-package-names": []
+}
diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md
index 17badd756062b2fbb6d893750da457b88117d2f1..464cf1c5007dc4048332b7209fef312e0a8d5e59 100644
--- a/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ b/vendor/guzzlehttp/guzzle/CHANGELOG.md
@@ -1,5 +1,56 @@
 # Change Log
 
+## 6.5.5 - 2020-06-16
+
+* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
+
+## 6.5.4 - 2020-05-25
+
+* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
+
+## 6.5.3 - 2020-04-18
+
+* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
+* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548)
+
+## 6.5.2 - 2019-12-23
+
+* idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489)
+
+## 6.5.1 - 2019-12-21
+
+* Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454)
+* IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424)
+
+## 6.5.0 - 2019-12-07
+
+* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
+* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
+* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
+* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
+  Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
+  **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
+  `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
+* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
+* Deprecated `ClientInterface::VERSION`
+
+## 6.4.1 - 2019-10-23
+
+* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that 
+* Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
+
+## 6.4.0 - 2019-10-23
+
+* Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108)
+* Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081)
+* Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161)
+* Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163)
+* Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242)
+* Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284)
+* Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273)
+* Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335)
+* Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362)
+
 ## 6.3.3 - 2018-04-22
 
 * Fix: Default headers when decode_content is specified
diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md
index bcd18b8e718bcfb922288cf6350eced1dbae966d..5fdb6c5f42dba76d7d29d51dd23512478ac3ccdb 100644
--- a/vendor/guzzlehttp/guzzle/README.md
+++ b/vendor/guzzlehttp/guzzle/README.md
@@ -21,19 +21,18 @@ trivial to integrate with web services.
 
 ```php
 $client = new \GuzzleHttp\Client();
-$res = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
-echo $res->getStatusCode();
-// 200
-echo $res->getHeaderLine('content-type');
-// 'application/json; charset=utf8'
-echo $res->getBody();
-// '{"id": 1420053, "name": "guzzle", ...}'
-
-// Send an asynchronous request.
+$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
+
+echo $response->getStatusCode(); # 200
+echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
+echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
+
+# Send an asynchronous request.
 $request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
 $promise = $client->sendAsync($request)->then(function ($response) {
     echo 'I completed! ' . $response->getBody();
 });
+
 $promise->wait();
 ```
 
@@ -57,7 +56,7 @@ curl -sS https://getcomposer.org/installer | php
 Next, run the Composer command to install the latest stable version of Guzzle:
 
 ```bash
-php composer.phar require guzzlehttp/guzzle
+composer require guzzlehttp/guzzle
 ```
 
 After installing, you need to require Composer's autoloader:
@@ -69,7 +68,7 @@ require 'vendor/autoload.php';
 You can then later update Guzzle using composer:
 
  ```bash
-composer.phar update
+composer update
  ```
 
 
@@ -79,13 +78,13 @@ composer.phar update
 |---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------|
 | 3.x     | EOL        | `guzzle/guzzle`     | `Guzzle`     | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No    | >= 5.3.3    |
 | 4.x     | EOL        | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A                 | No    | >= 5.4      |
-| 5.x     | Maintained | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >= 5.4      |
+| 5.x     | EOL        | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >= 5.4      |
 | 6.x     | Latest     | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   | >= 5.5      |
 
 [guzzle-3-repo]: https://github.com/guzzle/guzzle3
 [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
 [guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
 [guzzle-6-repo]: https://github.com/guzzle/guzzle
-[guzzle-3-docs]: http://guzzle3.readthedocs.org/en/latest/
+[guzzle-3-docs]: http://guzzle3.readthedocs.org
 [guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/
 [guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/
diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json
index 1f328e308cdbf05fd63eac1be11099a194d3cb1c..c01864f013fdb1462a4216b8e53993f713ce4e41 100644
--- a/vendor/guzzlehttp/guzzle/composer.json
+++ b/vendor/guzzlehttp/guzzle/composer.json
@@ -2,7 +2,15 @@
     "name": "guzzlehttp/guzzle",
     "type": "library",
     "description": "Guzzle is a PHP HTTP client library",
-    "keywords": ["framework", "http", "rest", "web service", "curl", "client", "HTTP client"],
+    "keywords": [
+        "framework",
+        "http",
+        "rest",
+        "web service",
+        "curl",
+        "client",
+        "HTTP client"
+    ],
     "homepage": "http://guzzlephp.org/",
     "license": "MIT",
     "authors": [
@@ -14,31 +22,38 @@
     ],
     "require": {
         "php": ">=5.5",
-        "guzzlehttp/psr7": "^1.4",
-        "guzzlehttp/promises": "^1.0"
+        "ext-json": "*",
+        "symfony/polyfill-intl-idn": "^1.17.0",
+        "guzzlehttp/promises": "^1.0",
+        "guzzlehttp/psr7": "^1.6.1"
     },
     "require-dev": {
         "ext-curl": "*",
         "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-        "psr/log": "^1.0"
+        "psr/log": "^1.1"
+    },
+    "suggest": {
+        "psr/log": "Required for using the Log middleware"
+    },
+    "config": {
+        "sort-packages": true
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "6.5-dev"
+        }
     },
     "autoload": {
-        "files": ["src/functions_include.php"],
         "psr-4": {
             "GuzzleHttp\\": "src/"
-        }
+        },
+        "files": [
+            "src/functions_include.php"
+        ]
     },
     "autoload-dev": {
         "psr-4": {
             "GuzzleHttp\\Tests\\": "tests/"
         }
-    },
-    "suggest": {
-        "psr/log": "Required for using the Log middleware"
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "6.3-dev"
-        }
     }
 }
diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php
index 80417918d053c720a6079496dc9dbf40d19c41d7..315a022cf4b74e69dfacdc0cd1b359b27cd2ef01 100644
--- a/vendor/guzzlehttp/guzzle/src/Client.php
+++ b/vendor/guzzlehttp/guzzle/src/Client.php
@@ -2,11 +2,12 @@
 namespace GuzzleHttp;
 
 use GuzzleHttp\Cookie\CookieJar;
+use GuzzleHttp\Exception\GuzzleException;
 use GuzzleHttp\Promise;
 use GuzzleHttp\Psr7;
-use Psr\Http\Message\UriInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\UriInterface;
 
 /**
  * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
@@ -46,9 +47,8 @@ class Client implements ClientInterface
      *   wire. The function is called with a Psr7\Http\Message\RequestInterface
      *   and array of transfer options, and must return a
      *   GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
-     *   Psr7\Http\Message\ResponseInterface on success. "handler" is a
-     *   constructor only option that cannot be overridden in per/request
-     *   options. If no handler is provided, a default handler will be created
+     *   Psr7\Http\Message\ResponseInterface on success.
+     *   If no handler is provided, a default handler will be created
      *   that enables all of the request options below by attaching all of the
      *   default middleware to the handler.
      * - base_uri: (string|UriInterface) Base URI of the client that is merged
@@ -75,6 +75,12 @@ class Client implements ClientInterface
         $this->configureDefaults($config);
     }
 
+    /**
+     * @param string $method
+     * @param array  $args
+     *
+     * @return Promise\PromiseInterface
+     */
     public function __call($method, $args)
     {
         if (count($args) < 1) {
@@ -89,6 +95,14 @@ class Client implements ClientInterface
             : $this->request($method, $uri, $opts);
     }
 
+    /**
+     * Asynchronously send an HTTP request.
+     *
+     * @param array $options Request options to apply to the given
+     *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
+     *
+     * @return Promise\PromiseInterface
+     */
     public function sendAsync(RequestInterface $request, array $options = [])
     {
         // Merge the base URI into the request URI if needed.
@@ -100,12 +114,35 @@ class Client implements ClientInterface
         );
     }
 
+    /**
+     * Send an HTTP request.
+     *
+     * @param array $options Request options to apply to the given
+     *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
+     *
+     * @return ResponseInterface
+     * @throws GuzzleException
+     */
     public function send(RequestInterface $request, array $options = [])
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->sendAsync($request, $options)->wait();
     }
 
+    /**
+     * Create and send an asynchronous HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string              $method  HTTP method
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
+     *
+     * @return Promise\PromiseInterface
+     */
     public function requestAsync($method, $uri = '', array $options = [])
     {
         $options = $this->prepareDefaults($options);
@@ -125,12 +162,37 @@ class Client implements ClientInterface
         return $this->transfer($request, $options);
     }
 
+    /**
+     * Create and send an HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string              $method  HTTP method.
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
+     *
+     * @return ResponseInterface
+     * @throws GuzzleException
+     */
     public function request($method, $uri = '', array $options = [])
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->requestAsync($method, $uri, $options)->wait();
     }
 
+    /**
+     * Get a client configuration option.
+     *
+     * These options include default request options of the client, a "handler"
+     * (if utilized by the concrete client), and a "base_uri" if utilized by
+     * the concrete client.
+     *
+     * @param string|null $option The config option to retrieve.
+     *
+     * @return mixed
+     */
     public function getConfig($option = null)
     {
         return $option === null
@@ -138,6 +200,11 @@ class Client implements ClientInterface
             : (isset($this->config[$option]) ? $this->config[$option] : null);
     }
 
+    /**
+     * @param  string|null $uri
+     *
+     * @return UriInterface
+     */
     private function buildUri($uri, array $config)
     {
         // for BC we accept null which would otherwise fail in uri_for
@@ -147,6 +214,11 @@ class Client implements ClientInterface
             $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
         }
 
+        if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
+            $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
+            $uri = Utils::idnUriConvert($uri, $idnOptions);
+        }
+
         return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri;
     }
 
@@ -154,6 +226,7 @@ class Client implements ClientInterface
      * Configures the default options for a client.
      *
      * @param array $config
+     * @return void
      */
     private function configureDefaults(array $config)
     {
@@ -162,7 +235,8 @@ class Client implements ClientInterface
             'http_errors'     => true,
             'decode_content'  => true,
             'verify'          => true,
-            'cookies'         => false
+            'cookies'         => false,
+            'idn_conversion'  => true,
         ];
 
         // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
@@ -170,7 +244,7 @@ class Client implements ClientInterface
         // We can only trust the HTTP_PROXY environment variable in a CLI
         // process due to the fact that PHP has no reliable mechanism to
         // get environment variables that start with "HTTP_".
-        if (php_sapi_name() == 'cli' && getenv('HTTP_PROXY')) {
+        if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
             $defaults['proxy']['http'] = getenv('HTTP_PROXY');
         }
 
@@ -210,7 +284,7 @@ class Client implements ClientInterface
      *
      * @return array
      */
-    private function prepareDefaults($options)
+    private function prepareDefaults(array $options)
     {
         $defaults = $this->config;
 
@@ -225,7 +299,7 @@ class Client implements ClientInterface
         if (array_key_exists('headers', $options)) {
             // Allows default headers to be unset.
             if ($options['headers'] === null) {
-                $defaults['_conditional'] = null;
+                $defaults['_conditional'] = [];
                 unset($options['headers']);
             } elseif (!is_array($options['headers'])) {
                 throw new \InvalidArgumentException('headers must be an array');
@@ -251,8 +325,7 @@ class Client implements ClientInterface
      * The URI of the request is not modified and the request options are used
      * as-is without merging in default options.
      *
-     * @param RequestInterface $request
-     * @param array            $options
+     * @param array $options See \GuzzleHttp\RequestOptions.
      *
      * @return Promise\PromiseInterface
      */
@@ -271,6 +344,7 @@ class Client implements ClientInterface
         }
 
         $request = $this->applyOptions($request, $options);
+        /** @var HandlerStack $handler */
         $handler = $options['handler'];
 
         try {
@@ -411,6 +485,11 @@ class Client implements ClientInterface
         return $request;
     }
 
+    /**
+     * Throw Exception with pre-set message.
+     * @return void
+     * @throws \InvalidArgumentException Invalid body.
+     */
     private function invalidBody()
     {
         throw new \InvalidArgumentException('Passing in the "body" request '
diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
index 2dbcffa492d0c4ade0b8bf7ba73756cdede249a0..638b75dca4d7eea4bae50396c112010aa16963ef 100644
--- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
@@ -1,8 +1,8 @@
 <?php
 namespace GuzzleHttp;
 
-use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Exception\GuzzleException;
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
@@ -12,7 +12,10 @@ use Psr\Http\Message\UriInterface;
  */
 interface ClientInterface
 {
-    const VERSION = '6.3.3';
+    /**
+     * @deprecated Will be removed in Guzzle 7.0.0
+     */
+    const VERSION = '6.5.5';
 
     /**
      * Send an HTTP request.
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
index 78f2b79fecb55316ad3b974e3293206d66e81590..38f98ad7c0c97fc1df0668c6639659e2870b4e4e 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
@@ -94,8 +94,8 @@ class CookieJar implements CookieJarInterface
      */
     public function getCookieByName($name)
     {
-        // don't allow a null name
-        if ($name === null) {
+        // don't allow a non string name
+        if ($name === null || !is_scalar($name)) {
             return null;
         }
         foreach ($this->cookies as $cookie) {
@@ -103,6 +103,8 @@ class CookieJar implements CookieJarInterface
                 return $cookie;
             }
         }
+
+        return null;
     }
 
     public function toArray()
@@ -120,7 +122,7 @@ class CookieJar implements CookieJarInterface
         } elseif (!$path) {
             $this->cookies = array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain) {
+                function (SetCookie $cookie) use ($domain) {
                     return !$cookie->matchesDomain($domain);
                 }
             );
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
index 2cf298a867b3713f6fa3143d5288ce2458c311c2..6ee11885e1f1f2cfc82ffc1d463966e24ddd9d25 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
@@ -58,9 +58,9 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * arguments, then the cookie with the specified name, path and domain is
      * removed.
      *
-     * @param string $domain Clears cookies matching a domain
-     * @param string $path   Clears cookies matching a domain and path
-     * @param string $name   Clears cookies matching a domain, path, and name
+     * @param string|null $domain Clears cookies matching a domain
+     * @param string|null $path   Clears cookies matching a domain and path
+     * @param string|null $name   Clears cookies matching a domain, path, and name
      *
      * @return CookieJarInterface
      */
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
index 9887c1d54b2db295e6d9e5dfc67510d54941d940..3fb8600ef07be182db6d8ad607b73582ec1746e3 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
@@ -23,6 +23,7 @@ class FileCookieJar extends CookieJar
      */
     public function __construct($cookieFile, $storeSessionCookies = false)
     {
+        parent::__construct();
         $this->filename = $cookieFile;
         $this->storeSessionCookies = $storeSessionCookies;
 
@@ -56,7 +57,7 @@ class FileCookieJar extends CookieJar
         }
 
         $jsonStr = \GuzzleHttp\json_encode($json);
-        if (false === file_put_contents($filename, $jsonStr)) {
+        if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
             throw new \RuntimeException("Unable to save file {$filename}");
         }
     }
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
index 4497bcf03e24ec69b443eff05ac56b2c94e62c9f..0224a2447b14c55eadac53831258e7bdc3041210 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
@@ -22,6 +22,7 @@ class SessionCookieJar extends CookieJar
      */
     public function __construct($sessionKey, $storeSessionCookies = false)
     {
+        parent::__construct();
         $this->sessionKey = $sessionKey;
         $this->storeSessionCookies = $storeSessionCookies;
         $this->load();
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
index f6993943e747c2d56218b343c74d7444bcb98cd8..3d776a70bc78c3eb5d7f10f325780eada7803244 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
@@ -227,7 +227,7 @@ class SetCookie
     /**
      * Get whether or not this is a secure cookie
      *
-     * @return null|bool
+     * @return bool|null
      */
     public function getSecure()
     {
@@ -247,7 +247,7 @@ class SetCookie
     /**
      * Get whether or not this is a session cookie
      *
-     * @return null|bool
+     * @return bool|null
      */
     public function getDiscard()
     {
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
index f95c09f2b1a50923056acbf108e1695e2a148bfa..4cfd393cc1a48c227f450caaf6f5eeac9bb7e214 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
@@ -4,4 +4,6 @@ namespace GuzzleHttp\Exception;
 /**
  * Exception when a client error is encountered (4xx codes)
  */
-class ClientException extends BadResponseException {}
+class ClientException extends BadResponseException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
index 510778f6eb2f6800eef95d903d0b5b3ff139b415..27b2722b0b6716d131b74631359cda86d3dcbbdb 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
@@ -1,13 +1,23 @@
 <?php
 namespace GuzzleHttp\Exception;
 
-/**
- * @method string getMessage()
- * @method \Throwable|null getPrevious()
- * @method mixed getCode()
- * @method string getFile()
- * @method int getLine()
- * @method array getTrace()
- * @method string getTraceAsString()
- */
-interface GuzzleException {}
+use Throwable;
+
+if (interface_exists(Throwable::class)) {
+    interface GuzzleException extends Throwable
+    {
+    }
+} else {
+    /**
+     * @method string getMessage()
+     * @method \Throwable|null getPrevious()
+     * @method mixed getCode()
+     * @method string getFile()
+     * @method int getLine()
+     * @method array getTrace()
+     * @method string getTraceAsString()
+     */
+    interface GuzzleException
+    {
+    }
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
index 39de327e7b6ea887f0ebb904faa3340c2c1d5d0f..12dd081eb6c2b99f9561e5bb37ffd51bd968ea7f 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
@@ -1,9 +1,9 @@
 <?php
 namespace GuzzleHttp\Exception;
 
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
-use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\UriInterface;
 
 /**
@@ -14,7 +14,7 @@ class RequestException extends TransferException
     /** @var RequestInterface */
     private $request;
 
-    /** @var ResponseInterface */
+    /** @var ResponseInterface|null */
     private $response;
 
     /** @var array */
@@ -124,42 +124,17 @@ class RequestException extends TransferException
      */
     public static function getResponseBodySummary(ResponseInterface $response)
     {
-        $body = $response->getBody();
-
-        if (!$body->isSeekable()) {
-            return null;
-        }
-
-        $size = $body->getSize();
-
-        if ($size === 0) {
-            return null;
-        }
-
-        $summary = $body->read(120);
-        $body->rewind();
-
-        if ($size > 120) {
-            $summary .= ' (truncated...)';
-        }
-
-        // Matches any printable character, including unicode characters:
-        // letters, marks, numbers, punctuation, spacing, and separators.
-        if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) {
-            return null;
-        }
-
-        return $summary;
+        return \GuzzleHttp\Psr7\get_message_body_summary($response);
     }
 
     /**
-     * Obfuscates URI if there is an username and a password present
+     * Obfuscates URI if there is a username and a password present
      *
      * @param UriInterface $uri
      *
      * @return UriInterface
      */
-    private static function obfuscateUri($uri)
+    private static function obfuscateUri(UriInterface $uri)
     {
         $userInfo = $uri->getUserInfo();
 
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
index 7cdd340866b63b318e78b38981565d3e78eaacdd..127094c149959a8c95be188f699bc3e5219e0e19 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
@@ -4,4 +4,6 @@ namespace GuzzleHttp\Exception;
 /**
  * Exception when a server error is encountered (5xx codes)
  */
-class ServerException extends BadResponseException {}
+class ServerException extends BadResponseException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
index b60a9678d650676bdecd6fab6740d0f9a39e7849..fff05251d502c010be4ad114381f8b5aa179d37f 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
@@ -1,4 +1,6 @@
 <?php
 namespace GuzzleHttp\Exception;
 
-class TooManyRedirectsException extends RequestException {}
+class TooManyRedirectsException extends RequestException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
index b92071ca20630d1a988249a9befc247ab4e3d2de..7c11db3abc1d8b5c5ec60c9f9b9d4fa9d5603817 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
@@ -1,4 +1,6 @@
 <?php
 namespace GuzzleHttp\Exception;
 
-class TransferException extends \RuntimeException implements GuzzleException {}
+class TransferException extends \RuntimeException implements GuzzleException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
index e0923714306af0cc5c92bfbd838503e872e4fc68..4a28a96ebce6dbd41d31c2e24c1216052644344c 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
@@ -1,8 +1,8 @@
 <?php
 namespace GuzzleHttp\Handler;
 
-use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Exception\ConnectException;
+use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Promise\FulfilledPromise;
 use GuzzleHttp\Psr7;
 use GuzzleHttp\Psr7\LazyOpenStream;
@@ -14,6 +14,9 @@ use Psr\Http\Message\RequestInterface;
  */
 class CurlFactory implements CurlFactoryInterface
 {
+    const CURL_VERSION_STR = 'curl_version';
+    const LOW_CURL_VERSION_NUMBER = '7.21.2';
+
     /** @var array */
     private $handles = [];
 
@@ -117,6 +120,7 @@ class CurlFactory implements CurlFactoryInterface
     private static function invokeStats(EasyHandle $easy)
     {
         $curlStats = curl_getinfo($easy->handle);
+        $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
         $stats = new TransferStats(
             $easy->request,
             $easy->response,
@@ -136,7 +140,9 @@ class CurlFactory implements CurlFactoryInterface
         $ctx = [
             'errno' => $easy->errno,
             'error' => curl_error($easy->handle),
+            'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
         ] + curl_getinfo($easy->handle);
+        $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
         $factory->release($easy);
 
         // Retry when nothing is present or when curl failed to rewind.
@@ -172,13 +178,22 @@ class CurlFactory implements CurlFactoryInterface
                 )
             );
         }
-
-        $message = sprintf(
-            'cURL error %s: %s (%s)',
-            $ctx['errno'],
-            $ctx['error'],
-            'see http://curl.haxx.se/libcurl/c/libcurl-errors.html'
-        );
+        if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
+            $message = sprintf(
+                'cURL error %s: %s (%s)',
+                $ctx['errno'],
+                $ctx['error'],
+                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
+            );
+        } else {
+            $message = sprintf(
+                'cURL error %s: %s (%s) for %s',
+                $ctx['errno'],
+                $ctx['error'],
+                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
+                $easy->request->getUri()
+            );
+        }
 
         // Create a connection exception if it was a specific error code.
         $error = isset($connectionErrors[$easy->errno])
@@ -439,11 +454,16 @@ class CurlFactory implements CurlFactoryInterface
         }
 
         if (isset($options['ssl_key'])) {
-            $sslKey = $options['ssl_key'];
-            if (is_array($sslKey)) {
-                $conf[CURLOPT_SSLKEYPASSWD] = $sslKey[1];
-                $sslKey = $sslKey[0];
+            if (is_array($options['ssl_key'])) {
+                if (count($options['ssl_key']) === 2) {
+                    list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
+                } else {
+                    list($sslKey) = $options['ssl_key'];
+                }
             }
+
+            $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
+
             if (!file_exists($sslKey)) {
                 throw new \InvalidArgumentException(
                     "SSL private key not found: {$sslKey}"
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
index 2754d8e4378d92530e1a3767c92cc3b673660161..564c95f481e65fca0dc7b7631888f82fc3827044 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
@@ -3,7 +3,7 @@ namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 
 /**
@@ -23,6 +23,7 @@ class CurlMultiHandler
     private $active;
     private $handles = [];
     private $delays = [];
+    private $options = [];
 
     /**
      * This handler accepts the following options:
@@ -30,6 +31,8 @@ class CurlMultiHandler
      * - handle_factory: An optional factory  used to create curl handles
      * - select_timeout: Optional timeout (in seconds) to block before timing
      *   out while selecting curl handles. Defaults to 1 second.
+     * - options: An associative array of CURLMOPT_* options and
+     *   corresponding values for curl_multi_setopt()
      *
      * @param array $options
      */
@@ -37,14 +40,31 @@ class CurlMultiHandler
     {
         $this->factory = isset($options['handle_factory'])
             ? $options['handle_factory'] : new CurlFactory(50);
-        $this->selectTimeout = isset($options['select_timeout'])
-            ? $options['select_timeout'] : 1;
+
+        if (isset($options['select_timeout'])) {
+            $this->selectTimeout = $options['select_timeout'];
+        } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
+            $this->selectTimeout = $selectTimeout;
+        } else {
+            $this->selectTimeout = 1;
+        }
+
+        $this->options = isset($options['options']) ? $options['options'] : [];
     }
 
     public function __get($name)
     {
         if ($name === '_mh') {
-            return $this->_mh = curl_multi_init();
+            $this->_mh = curl_multi_init();
+
+            foreach ($this->options as $option => $value) {
+                // A warning is raised in case of a wrong option.
+                curl_multi_setopt($this->_mh, $option, $value);
+            }
+
+            // Further calls to _mh will return the value directly, without entering the
+            // __get() method at all.
+            return $this->_mh;
         }
 
         throw new \BadMethodCallException();
@@ -82,7 +102,7 @@ class CurlMultiHandler
     {
         // Add any delayed handles if needed.
         if ($this->delays) {
-            $currentTime = microtime(true);
+            $currentTime = Utils::currentTime();
             foreach ($this->delays as $id => $delay) {
                 if ($currentTime >= $delay) {
                     unset($this->delays[$id]);
@@ -134,7 +154,7 @@ class CurlMultiHandler
         if (empty($easy->options['delay'])) {
             curl_multi_add_handle($this->_mh, $easy->handle);
         } else {
-            $this->delays[$id] = microtime(true) + ($easy->options['delay'] / 1000);
+            $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
         }
     }
 
@@ -186,7 +206,7 @@ class CurlMultiHandler
 
     private function timeToNext()
     {
-        $currentTime = microtime(true);
+        $currentTime = Utils::currentTime();
         $nextTime = PHP_INT_MAX;
         foreach ($this->delays as $time) {
             if ($time < $nextTime) {
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
index d892061c7a0074063d33c20fea167c898dc2beb2..5b312bc0428ab910c00bfdbf4f962beba08c75b1 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
@@ -66,7 +66,7 @@ class MockHandler implements \Countable
             throw new \OutOfBoundsException('Mock queue is empty');
         }
 
-        if (isset($options['delay'])) {
+        if (isset($options['delay']) && is_numeric($options['delay'])) {
             usleep($options['delay'] * 1000);
         }
 
@@ -175,6 +175,11 @@ class MockHandler implements \Countable
         return count($this->queue);
     }
 
+    public function reset()
+    {
+        $this->queue = [];
+    }
+
     private function invokeStats(
         RequestInterface $request,
         array $options,
@@ -182,7 +187,8 @@ class MockHandler implements \Countable
         $reason = null
     ) {
         if (isset($options['on_stats'])) {
-            $stats = new TransferStats($request, $response, 0, $reason);
+            $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
+            $stats = new TransferStats($request, $response, $transferTime, $reason);
             call_user_func($options['on_stats'], $stats);
         }
     }
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
index b686545ea7f1d44d0de79ee0343524fc2b68128f..a15734a44de44695121f0d4827d04bbb360ef1bf 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
@@ -1,12 +1,13 @@
 <?php
 namespace GuzzleHttp\Handler;
 
-use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Exception\ConnectException;
+use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Promise\FulfilledPromise;
 use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Psr7;
 use GuzzleHttp\TransferStats;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\StreamInterface;
@@ -33,7 +34,7 @@ class StreamHandler
             usleep($options['delay'] * 1000);
         }
 
-        $startTime = isset($options['on_stats']) ? microtime(true) : null;
+        $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
 
         try {
             // Does not support the expect header.
@@ -42,7 +43,7 @@ class StreamHandler
             // Append a content-length header if body size is zero to match
             // cURL's behavior.
             if (0 === $request->getBody()->getSize()) {
-                $request = $request->withHeader('Content-Length', 0);
+                $request = $request->withHeader('Content-Length', '0');
             }
 
             return $this->createResponse(
@@ -82,7 +83,7 @@ class StreamHandler
             $stats = new TransferStats(
                 $request,
                 $response,
-                microtime(true) - $startTime,
+                Utils::currentTime() - $startTime,
                 $error,
                 []
             );
@@ -343,13 +344,25 @@ class StreamHandler
             if ('v4' === $options['force_ip_resolve']) {
                 $records = dns_get_record($uri->getHost(), DNS_A);
                 if (!isset($records[0]['ip'])) {
-                    throw new ConnectException(sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request);
+                    throw new ConnectException(
+                        sprintf(
+                            "Could not resolve IPv4 address for host '%s'",
+                            $uri->getHost()
+                        ),
+                        $request
+                    );
                 }
                 $uri = $uri->withHost($records[0]['ip']);
             } elseif ('v6' === $options['force_ip_resolve']) {
                 $records = dns_get_record($uri->getHost(), DNS_AAAA);
                 if (!isset($records[0]['ipv6'])) {
-                    throw new ConnectException(sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request);
+                    throw new ConnectException(
+                        sprintf(
+                            "Could not resolve IPv6 address for host '%s'",
+                            $uri->getHost()
+                        ),
+                        $request
+                    );
                 }
                 $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
             }
diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
index 24c46fd9fea30c28a93137325f39bc18e9c8873c..6a49cc0690cb0fa24b8987957aa8e4ba43b7cf05 100644
--- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
@@ -1,7 +1,9 @@
 <?php
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
 
 /**
  * Creates a composed Guzzle handler function by stacking middlewares on top of
@@ -9,7 +11,7 @@ use Psr\Http\Message\RequestInterface;
  */
 class HandlerStack
 {
-    /** @var callable */
+    /** @var callable|null */
     private $handler;
 
     /** @var array */
@@ -59,6 +61,8 @@ class HandlerStack
      *
      * @param RequestInterface $request
      * @param array            $options
+     *
+     * @return ResponseInterface|PromiseInterface
      */
     public function __invoke(RequestInterface $request, array $options)
     {
@@ -206,7 +210,7 @@ class HandlerStack
     }
 
     /**
-     * @param $name
+     * @param string $name
      * @return int
      */
     private function findByName($name)
@@ -223,10 +227,10 @@ class HandlerStack
     /**
      * Splices a function into the middleware list at a specific position.
      *
-     * @param          $findName
-     * @param          $withName
+     * @param string   $findName
+     * @param string   $withName
      * @param callable $middleware
-     * @param          $before
+     * @param bool     $before
      */
     private function splice($findName, $withName, callable $middleware, $before)
     {
diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
index 663ac7391632645eb2f6b926123a1d669c1b9e69..dc36bb524d4b7f2515e9ce053c20557169c990aa 100644
--- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
@@ -168,6 +168,11 @@ class MessageFormatter
         );
     }
 
+    /**
+     * Get headers from message as string
+     *
+     * @return string
+     */
     private function headers(MessageInterface $message)
     {
         $result = '';
diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php
index d4ad75c94f333a43b97f42e973e3c5962572d606..bffc1974bbe0d94287ff580d0cfe657e32cf041e 100644
--- a/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ b/vendor/guzzlehttp/guzzle/src/Middleware.php
@@ -7,7 +7,6 @@ use GuzzleHttp\Promise\RejectedPromise;
 use GuzzleHttp\Psr7;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
 
 /**
  * Functions used to create and wrap handlers with handler middleware.
@@ -39,7 +38,7 @@ final class Middleware
                             $cookieJar->extractCookies($request, $response);
                             return $response;
                         }
-                );
+                    );
             };
         };
     }
@@ -58,7 +57,7 @@ final class Middleware
                     return $handler($request, $options);
                 }
                 return $handler($request, $options)->then(
-                    function (ResponseInterface $response) use ($request, $handler) {
+                    function (ResponseInterface $response) use ($request) {
                         $code = $response->getStatusCode();
                         if ($code < 400) {
                             return $response;
@@ -183,7 +182,7 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = LogLevel::INFO)
+    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
     {
         return function (callable $handler) use ($logger, $formatter, $logLevel) {
             return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php
index 8f1be33cd396b60e9dd738fe81150cb62dd9e211..5838db4f4cf9a7e3596891a8dcf8c80ad5eef3ed 100644
--- a/vendor/guzzlehttp/guzzle/src/Pool.php
+++ b/vendor/guzzlehttp/guzzle/src/Pool.php
@@ -1,12 +1,13 @@
 <?php
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise\EachPromise;
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Promise\PromisorInterface;
 use Psr\Http\Message\RequestInterface;
-use GuzzleHttp\Promise\EachPromise;
 
 /**
- * Sends and iterator of requests concurrently using a capped pool size.
+ * Sends an iterator of requests concurrently using a capped pool size.
  *
  * The pool will read from an iterator until it is cancelled or until the
  * iterator is consumed. When a request is yielded, the request is sent after
@@ -69,6 +70,11 @@ class Pool implements PromisorInterface
         $this->each = new EachPromise($requests(), $config);
     }
 
+    /**
+     * Get promise
+     *
+     * @return PromiseInterface
+     */
     public function promise()
     {
         return $this->each->promise();
@@ -106,6 +112,11 @@ class Pool implements PromisorInterface
         return $res;
     }
 
+    /**
+     * Execute callback(s)
+     *
+     * @return void
+     */
     private static function cmpCallback(array &$options, $name, array &$results)
     {
         if (!isset($options[$name])) {
diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
index 2eb95f9b2d3a1d9ce581f34bb01fcdf46ddd493d..568a1e906c97071c5d7220439278fc9aaf4058f2 100644
--- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
@@ -66,6 +66,11 @@ class PrepareBodyMiddleware
         return $fn(Psr7\modify_request($request, $modify), $options);
     }
 
+    /**
+     * Add expect header
+     *
+     * @return void
+     */
     private function addExpectHeader(
         RequestInterface $request,
         array $options,
diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
index 131b77179aa07f59ef65ff0945dd51083d58eb0e..e4644b7ac1d9dcf44cf31d1bf4f13742da3990ab 100644
--- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
@@ -13,7 +13,7 @@ use Psr\Http\Message\UriInterface;
  * Request redirect middleware.
  *
  * Apply this middleware like other middleware using
- * {@see GuzzleHttp\Middleware::redirect()}.
+ * {@see \GuzzleHttp\Middleware::redirect()}.
  */
 class RedirectMiddleware
 {
@@ -76,7 +76,7 @@ class RedirectMiddleware
     /**
      * @param RequestInterface  $request
      * @param array             $options
-     * @param ResponseInterface|PromiseInterface $response
+     * @param ResponseInterface $response
      *
      * @return ResponseInterface|PromiseInterface
      */
@@ -118,6 +118,11 @@ class RedirectMiddleware
         return $promise;
     }
 
+    /**
+     * Enable tracking on promise.
+     *
+     * @return PromiseInterface
+     */
     private function withTracking(PromiseInterface $promise, $uri, $statusCode)
     {
         return $promise->then(
@@ -135,6 +140,13 @@ class RedirectMiddleware
         );
     }
 
+    /**
+     * Check for too many redirects
+     *
+     * @return void
+     *
+     * @throws TooManyRedirectsException Too many redirects.
+     */
     private function guardMax(RequestInterface $request, array &$options)
     {
         $current = isset($options['__redirect_count'])
@@ -172,13 +184,19 @@ class RedirectMiddleware
         // would do.
         $statusCode = $response->getStatusCode();
         if ($statusCode == 303 ||
-            ($statusCode <= 302 && $request->getBody() && !$options['allow_redirects']['strict'])
+            ($statusCode <= 302 && !$options['allow_redirects']['strict'])
         ) {
             $modify['method'] = 'GET';
             $modify['body'] = '';
         }
 
-        $modify['uri'] = $this->redirectUri($request, $response, $protocols);
+        $uri = $this->redirectUri($request, $response, $protocols);
+        if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
+            $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
+            $uri = Utils::idnUriConvert($uri, $idnOptions);
+        }
+
+        $modify['uri'] = $uri;
         Psr7\rewind_body($request);
 
         // Add the Referer header if it is told to do so and only
@@ -186,7 +204,7 @@ class RedirectMiddleware
         if ($options['allow_redirects']['referer']
             && $modify['uri']->getScheme() === $request->getUri()->getScheme()
         ) {
-            $uri = $request->getUri()->withUserInfo('', '');
+            $uri = $request->getUri()->withUserInfo('');
             $modify['set_headers']['Referer'] = (string) $uri;
         } else {
             $modify['remove_headers'][] = 'Referer';
diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
index c6aacfb15782756a14e24ccc71143663795011fa..355f658f03457e48a615ec368a4fc6d31b83f1ad 100644
--- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
@@ -22,7 +22,7 @@ final class RequestOptions
      * - strict: (bool, default=false) Set to true to use strict redirects
      *   meaning redirect POST requests with POST requests vs. doing what most
      *   browsers do which is redirect POST requests with GET requests
-     * - referer: (bool, default=true) Set to false to disable the Referer
+     * - referer: (bool, default=false) Set to true to enable the Referer
      *   header.
      * - protocols: (array, default=['http', 'https']) Allowed redirect
      *   protocols.
@@ -132,6 +132,14 @@ final class RequestOptions
      */
     const HTTP_ERRORS = 'http_errors';
 
+    /**
+     * idn: (bool|int, default=true) A combination of IDNA_* constants for
+     * idn_to_ascii() PHP's function (see "options" parameter). Set to false to
+     * disable IDN support completely, or to true to use the default
+     * configuration (IDNA_DEFAULT constant).
+     */
+    const IDN_CONVERSION = 'idn_conversion';
+
     /**
      * json: (mixed) Adds JSON data to a request. The provided value is JSON
      * encoded and a Content-Type header of application/json will be added to
diff --git a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
index f27090fd197ab7ff443f12f6501d639f169871cf..5acc8c5c392eb717c00d0fc5643dacaf670b9149 100644
--- a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
+++ b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
@@ -19,6 +19,9 @@ class RetryMiddleware
     /** @var callable */
     private $decider;
 
+    /** @var callable */
+    private $delay;
+
     /**
      * @param callable $decider     Function that accepts the number of retries,
      *                              a request, [response], and [exception] and
@@ -42,13 +45,13 @@ class RetryMiddleware
     /**
      * Default exponential backoff delay function.
      *
-     * @param $retries
+     * @param int $retries
      *
-     * @return int
+     * @return int milliseconds.
      */
     public static function exponentialDelay($retries)
     {
-        return (int) pow(2, $retries - 1);
+        return (int) pow(2, $retries - 1) * 1000;
     }
 
     /**
@@ -71,6 +74,11 @@ class RetryMiddleware
             );
     }
 
+    /**
+     * Execute fulfilled closure
+     *
+     * @return mixed
+     */
     private function onFulfilled(RequestInterface $req, array $options)
     {
         return function ($value) use ($req, $options) {
@@ -87,6 +95,11 @@ class RetryMiddleware
         };
     }
 
+    /**
+     * Execute rejected closure
+     *
+     * @return callable
+     */
     private function onRejected(RequestInterface $req, array $options)
     {
         return function ($reason) use ($req, $options) {
@@ -103,6 +116,9 @@ class RetryMiddleware
         };
     }
 
+    /**
+     * @return self
+     */
     private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
     {
         $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php
index 15f717e1ea6e8edf6bc3a252f5a478e19e835b04..87fb3c00164d274d9b5cec535339bcfb059efc84 100644
--- a/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ b/vendor/guzzlehttp/guzzle/src/TransferStats.php
@@ -18,11 +18,11 @@ final class TransferStats
     private $handlerErrorData;
 
     /**
-     * @param RequestInterface  $request          Request that was sent.
-     * @param ResponseInterface $response         Response received (if any)
-     * @param null              $transferTime     Total handler transfer time.
-     * @param mixed             $handlerErrorData Handler error data.
-     * @param array             $handlerStats     Handler specific stats.
+     * @param RequestInterface       $request          Request that was sent.
+     * @param ResponseInterface|null $response         Response received (if any)
+     * @param float|null             $transferTime     Total handler transfer time.
+     * @param mixed                  $handlerErrorData Handler error data.
+     * @param array                  $handlerStats     Handler specific stats.
      */
     public function __construct(
         RequestInterface $request,
@@ -93,7 +93,7 @@ final class TransferStats
     /**
      * Get the estimated time the request was being transferred by the handler.
      *
-     * @return float Time in seconds.
+     * @return float|null Time in seconds.
      */
     public function getTransferTime()
     {
diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php
index a3ac450db94cfe1409f5ec052d2710e6426e469e..c2afd8c7bb19d1fa4e14f02da995348abd1414ab 100644
--- a/vendor/guzzlehttp/guzzle/src/functions.php
+++ b/vendor/guzzlehttp/guzzle/src/functions.php
@@ -56,7 +56,7 @@ function describe_type($input)
 /**
  * Parses an array of header lines into an associative array of headers.
  *
- * @param array $lines Header lines array of strings in the following
+ * @param iterable $lines Header lines array of strings in the following
  *                     format: "Name: Value"
  * @return array
  */
@@ -97,8 +97,8 @@ function debug_resource($value = null)
  *
  * The returned handler is not wrapped by any default middlewares.
  *
- * @throws \RuntimeException if no viable Handler is available.
  * @return callable Returns the best handler for the given system.
+ * @throws \RuntimeException if no viable Handler is available.
  */
 function choose_handler()
 {
@@ -196,7 +196,8 @@ function default_ca_bundle()
         }
     }
 
-    throw new \RuntimeException(<<< EOT
+    throw new \RuntimeException(
+        <<< EOT
 No system CA bundle could be found in any of the the common system locations.
 PHP versions earlier than 5.6 are not properly configured to use the system's
 CA bundle by default. In order to verify peer certificates, you will need to
@@ -294,14 +295,14 @@ function is_host_in_noproxy($host, array $noProxyArray)
  * @param int    $options Bitmask of JSON decode options.
  *
  * @return mixed
- * @throws \InvalidArgumentException if the JSON cannot be decoded.
+ * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
  * @link http://www.php.net/manual/en/function.json-decode.php
  */
 function json_decode($json, $assoc = false, $depth = 512, $options = 0)
 {
     $data = \json_decode($json, $assoc, $depth, $options);
     if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new \InvalidArgumentException(
+        throw new Exception\InvalidArgumentException(
             'json_decode error: ' . json_last_error_msg()
         );
     }
@@ -317,14 +318,14 @@ function json_decode($json, $assoc = false, $depth = 512, $options = 0)
  * @param int    $depth   Set the maximum depth. Must be greater than zero.
  *
  * @return string
- * @throws \InvalidArgumentException if the JSON cannot be encoded.
+ * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
  * @link http://www.php.net/manual/en/function.json-encode.php
  */
 function json_encode($value, $options = 0, $depth = 512)
 {
     $json = \json_encode($value, $options, $depth);
     if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new \InvalidArgumentException(
+        throw new Exception\InvalidArgumentException(
             'json_encode error: ' . json_last_error_msg()
         );
     }
diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md
index 551929f6bd5ad98911da0dc6bb279f8861ec6b7f..4b63b2c749ab56f21961f4700f0a991966e4da16 100644
--- a/vendor/guzzlehttp/promises/CHANGELOG.md
+++ b/vendor/guzzlehttp/promises/CHANGELOG.md
@@ -1,6 +1,22 @@
 # CHANGELOG
 
 
+## 1.4.0 - 2020-09-30
+
+### Added
+
+- Support for PHP 8
+- Optional `$recursive` flag to `all`
+- Replaced functions by static methods
+
+### Fixed
+
+- Fix empty `each` processing
+- Fix promise handling for Iterators of non-unique keys
+- Fixed `method_exists` crashes on PHP 8
+- Memory leak on exceptions
+
+
 ## 1.3.1 - 2016-12-20
 
 ### Fixed
diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md
index 7b607e28b13bfdd4f9b784082ef4ef20169e4458..a95c6059477798f589fc795654c5f2e02b8a055f 100644
--- a/vendor/guzzlehttp/promises/README.md
+++ b/vendor/guzzlehttp/promises/README.md
@@ -26,7 +26,7 @@ for a general introduction to promises.
 - Promises can be cancelled.
 - Works with any object that has a `then` function.
 - C# style async/await coroutine promises using
-  `GuzzleHttp\Promise\coroutine()`.
+  `GuzzleHttp\Promise\Coroutine::of()`.
 
 
 # Quick start
@@ -88,7 +88,7 @@ $promise
     });
 
 // Resolving the promise triggers the $onFulfilled callbacks and outputs
-// "Hello, reader".
+// "Hello, reader."
 $promise->resolve('reader.');
 ```
 
@@ -150,7 +150,7 @@ use GuzzleHttp\Promise\Promise;
 
 $promise = new Promise();
 $promise->then(null, function ($reason) {
-    throw new \Exception($reason);
+    throw new Exception($reason);
 })->then(null, function ($reason) {
     assert($reason->getMessage() === 'Error!');
 });
@@ -182,7 +182,6 @@ invoked using the value returned from the `$onRejected` callback.
 
 ```php
 use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
 
 $promise = new Promise();
 $promise
@@ -220,7 +219,7 @@ the promise is rejected with the exception and the exception is thrown.
 
 ```php
 $promise = new Promise(function () use (&$promise) {
-    throw new \Exception('foo');
+    throw new Exception('foo');
 });
 
 $promise->wait(); // throws the exception.
@@ -397,7 +396,7 @@ $deferred = new React\Promise\Deferred();
 $reactPromise = $deferred->promise();
 
 // Create a Guzzle promise that is fulfilled with a React promise.
-$guzzlePromise = new \GuzzleHttp\Promise\Promise();
+$guzzlePromise = new GuzzleHttp\Promise\Promise();
 $guzzlePromise->then(function ($value) use ($reactPromise) {
     // Do something something with the value...
     // Return the React promise
@@ -424,7 +423,7 @@ instance.
 
 ```php
 // Get the global task queue
-$queue = \GuzzleHttp\Promise\queue();
+$queue = GuzzleHttp\Promise\Utils::queue();
 $queue->run();
 ```
 
@@ -502,3 +501,32 @@ $promise->then(function ($value) { echo $value; });
 $promise->resolve('foo');
 // prints "foo"
 ```
+
+
+## Upgrading from Function API
+
+A static API was first introduced in 1.4.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
+
+| Original Function | Replacement Method |
+|----------------|----------------|
+| `queue` | `Utils::queue` |
+| `task` | `Utils::task` |
+| `promise_for` | `Create::promiseFor` |
+| `rejection_for` | `Create::rejectionFor` |
+| `exception_for` | `Create::exceptionFor` |
+| `iter_for` | `Create::iterFor` |
+| `inspect` | `Utils::inspect` |
+| `inspect_all` | `Utils::inspectAll` |
+| `unwrap` | `Utils::unwrap` |
+| `all` | `Utils::all` |
+| `some` | `Utils::some` |
+| `any` | `Utils::any` |
+| `settle` | `Utils::settle` |
+| `each` | `Each::of` |
+| `each_limit` | `Each::ofLimit` |
+| `each_limit_all` | `Each::ofLimitAll` |
+| `!is_fulfilled` | `Is::pending` |
+| `is_fulfilled` | `Is::fulfilled` |
+| `is_rejected` | `Is::rejected` |
+| `is_settled` | `Is::settled` |
+| `coroutine` | `Coroutine::of` |
diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json
index ec41a61e6e8765924b0caeb2c29671e96b061c07..db44d9e3f6834d3f3b422ec581d6d624c371a90d 100644
--- a/vendor/guzzlehttp/promises/composer.json
+++ b/vendor/guzzlehttp/promises/composer.json
@@ -11,10 +11,10 @@
         }
     ],
     "require": {
-        "php": ">=5.5.0"
+        "php": ">=5.5"
     },
     "require-dev": {
-        "phpunit/phpunit": "^4.0"
+        "symfony/phpunit-bridge": "^4.4 || ^5.1"
     },
     "autoload": {
         "psr-4": {
@@ -22,9 +22,14 @@
         },
         "files": ["src/functions_include.php"]
     },
+    "autoload-dev": {
+        "psr-4": {
+            "GuzzleHttp\\Promise\\Tests\\": "tests/"
+        }
+    },
     "scripts": {
-        "test": "vendor/bin/phpunit",
-        "test-ci": "vendor/bin/phpunit --coverage-text"
+        "test": "vendor/bin/simple-phpunit",
+        "test-ci": "vendor/bin/simple-phpunit --coverage-text"
     },
     "extra": {
         "branch-alias": {
diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php
index 6a5690c3762224eb73a6555b128074dd185d58bf..d2b5712b925c8acad50676cbb5c95c00044a47da 100644
--- a/vendor/guzzlehttp/promises/src/AggregateException.php
+++ b/vendor/guzzlehttp/promises/src/AggregateException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
diff --git a/vendor/guzzlehttp/promises/src/CancellationException.php b/vendor/guzzlehttp/promises/src/CancellationException.php
index cb360b8056abbf065ea27ef93a4e2fe895b3989f..56a1ed65bc340f08e62ef07de67b78f5fc6a446e 100644
--- a/vendor/guzzlehttp/promises/src/CancellationException.php
+++ b/vendor/guzzlehttp/promises/src/CancellationException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
diff --git a/vendor/guzzlehttp/promises/src/Coroutine.php b/vendor/guzzlehttp/promises/src/Coroutine.php
index 6aa095870224617d89b5f82d949e3dcb375a9dc3..670da47739a15f7f0d97d67eb6d206110024c512 100644
--- a/vendor/guzzlehttp/promises/src/Coroutine.php
+++ b/vendor/guzzlehttp/promises/src/Coroutine.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 use Exception;
@@ -9,7 +10,7 @@ use Throwable;
  * Creates a promise that is resolved using a generator that yields values or
  * promises (somewhat similar to C#'s async keyword).
  *
- * When called, the coroutine function will start an instance of the generator
+ * When called, the Coroutine::of method will start an instance of the generator
  * and returns a promise that is fulfilled with its final yielded value.
  *
  * Control is returned back to the generator when the yielded promise settles.
@@ -22,7 +23,7 @@ use Throwable;
  *         return new Promise\FulfilledPromise($value);
  *     }
  *
- *     $promise = Promise\coroutine(function () {
+ *     $promise = Promise\Coroutine::of(function () {
  *         $value = (yield createPromise('a'));
  *         try {
  *             $value = (yield createPromise($value . 'b'));
@@ -38,6 +39,7 @@ use Throwable;
  * @param callable $generatorFn Generator function to wrap into a promise.
  *
  * @return Promise
+ *
  * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration
  */
 final class Coroutine implements PromiseInterface
@@ -65,7 +67,23 @@ final class Coroutine implements PromiseInterface
                 $this->currentPromise->wait();
             }
         });
-        $this->nextCoroutine($this->generator->current());
+        try {
+            $this->nextCoroutine($this->generator->current());
+        } catch (\Exception $exception) {
+            $this->result->reject($exception);
+        } catch (Throwable $throwable) {
+            $this->result->reject($throwable);
+        }
+    }
+
+    /**
+     * Create a new coroutine.
+     *
+     * @return self
+     */
+    public static function of(callable $generatorFn)
+    {
+        return new self($generatorFn);
     }
 
     public function then(
@@ -108,7 +126,7 @@ final class Coroutine implements PromiseInterface
 
     private function nextCoroutine($yielded)
     {
-        $this->currentPromise = promise_for($yielded)
+        $this->currentPromise = Create::promiseFor($yielded)
             ->then([$this, '_handleSuccess'], [$this, '_handleFailure']);
     }
 
@@ -139,7 +157,7 @@ final class Coroutine implements PromiseInterface
     {
         unset($this->currentPromise);
         try {
-            $nextYield = $this->generator->throw(exception_for($reason));
+            $nextYield = $this->generator->throw(Create::exceptionFor($reason));
             // The throw was caught, so keep iterating on the coroutine
             $this->nextCoroutine($nextYield);
         } catch (Exception $exception) {
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
index d0ddf603fb3d566bc90a7f711b0723b876782983..fbb8876c763fc96d6ce6a2e6dca7974f470a3f52 100644
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ b/vendor/guzzlehttp/promises/src/EachPromise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -9,22 +10,22 @@ class EachPromise implements PromisorInterface
 {
     private $pending = [];
 
-    /** @var \Iterator */
+    /** @var \Iterator|null */
     private $iterable;
 
-    /** @var callable|int */
+    /** @var callable|int|null */
     private $concurrency;
 
-    /** @var callable */
+    /** @var callable|null */
     private $onFulfilled;
 
-    /** @var callable */
+    /** @var callable|null */
     private $onRejected;
 
-    /** @var Promise */
+    /** @var Promise|null */
     private $aggregate;
 
-    /** @var bool */
+    /** @var bool|null */
     private $mutex;
 
     /**
@@ -45,12 +46,12 @@ class EachPromise implements PromisorInterface
      *   allowed number of outstanding concurrently executing promises,
      *   creating a capped pool of promises. There is no limit by default.
      *
-     * @param mixed    $iterable Promises or values to iterate.
-     * @param array    $config   Configuration options
+     * @param mixed $iterable Promises or values to iterate.
+     * @param array $config   Configuration options
      */
     public function __construct($iterable, array $config = [])
     {
-        $this->iterable = iter_for($iterable);
+        $this->iterable = Create::iterFor($iterable);
 
         if (isset($config['concurrency'])) {
             $this->concurrency = $config['concurrency'];
@@ -65,6 +66,7 @@ class EachPromise implements PromisorInterface
         }
     }
 
+    /** @psalm-suppress InvalidNullableReturnType */
     public function promise()
     {
         if ($this->aggregate) {
@@ -73,14 +75,29 @@ class EachPromise implements PromisorInterface
 
         try {
             $this->createPromise();
+            /** @psalm-assert Promise $this->aggregate */
             $this->iterable->rewind();
-            $this->refillPending();
+            if (!$this->checkIfFinished()) {
+                $this->refillPending();
+            }
         } catch (\Throwable $e) {
+            /**
+             * @psalm-suppress NullReference
+             * @phpstan-ignore-next-line
+             */
             $this->aggregate->reject($e);
         } catch (\Exception $e) {
+            /**
+             * @psalm-suppress NullReference
+             * @phpstan-ignore-next-line
+             */
             $this->aggregate->reject($e);
         }
 
+        /**
+         * @psalm-suppress NullableReturnStatement
+         * @phpstan-ignore-next-line
+         */
         return $this->aggregate;
     }
 
@@ -89,17 +106,12 @@ class EachPromise implements PromisorInterface
         $this->mutex = false;
         $this->aggregate = new Promise(function () {
             reset($this->pending);
-            if (empty($this->pending) && !$this->iterable->valid()) {
-                $this->aggregate->resolve(null);
-                return;
-            }
-
             // Consume a potentially fluctuating list of promises while
             // ensuring that indexes are maintained (precluding array_shift).
             while ($promise = current($this->pending)) {
                 next($this->pending);
                 $promise->wait();
-                if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
+                if (Is::settled($this->aggregate)) {
                     return;
                 }
             }
@@ -148,22 +160,34 @@ class EachPromise implements PromisorInterface
             return false;
         }
 
-        $promise = promise_for($this->iterable->current());
-        $idx = $this->iterable->key();
+        $promise = Create::promiseFor($this->iterable->current());
+        $key = $this->iterable->key();
+
+        // Iterable keys may not be unique, so we add the promises at the end
+        // of the pending array and retrieve the array index being used
+        $this->pending[] = null;
+        end($this->pending);
+        $idx = key($this->pending);
 
         $this->pending[$idx] = $promise->then(
-            function ($value) use ($idx) {
+            function ($value) use ($idx, $key) {
                 if ($this->onFulfilled) {
                     call_user_func(
-                        $this->onFulfilled, $value, $idx, $this->aggregate
+                        $this->onFulfilled,
+                        $value,
+                        $key,
+                        $this->aggregate
                     );
                 }
                 $this->step($idx);
             },
-            function ($reason) use ($idx) {
+            function ($reason) use ($idx, $key) {
                 if ($this->onRejected) {
                     call_user_func(
-                        $this->onRejected, $reason, $idx, $this->aggregate
+                        $this->onRejected,
+                        $reason,
+                        $key,
+                        $this->aggregate
                     );
                 }
                 $this->step($idx);
@@ -201,7 +225,7 @@ class EachPromise implements PromisorInterface
     private function step($idx)
     {
         // If the promise was already resolved, then ignore this step.
-        if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
+        if (Is::settled($this->aggregate)) {
             return;
         }
 
diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
index dbbeeb9f71b2927a66057c5ac34d1a9b9d356183..98f72a62a6f878eb2cdaa11306669cc234b3a8ba 100644
--- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php
+++ b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -13,9 +14,10 @@ class FulfilledPromise implements PromiseInterface
 
     public function __construct($value)
     {
-        if (method_exists($value, 'then')) {
+        if (is_object($value) && method_exists($value, 'then')) {
             throw new \InvalidArgumentException(
-                'You cannot create a FulfilledPromise with a promise.');
+                'You cannot create a FulfilledPromise with a promise.'
+            );
         }
 
         $this->value = $value;
@@ -30,11 +32,11 @@ class FulfilledPromise implements PromiseInterface
             return $this;
         }
 
-        $queue = queue();
+        $queue = Utils::queue();
         $p = new Promise([$queue, 'run']);
         $value = $this->value;
         $queue->add(static function () use ($p, $value, $onFulfilled) {
-            if ($p->getState() === self::PENDING) {
+            if (Is::pending($p)) {
                 try {
                     $p->resolve($onFulfilled($value));
                 } catch (\Throwable $e) {
diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php
index 844ada073c808ce92dfcf3a5a66a010586cec9b3..75939057b645ebd0c0bd71ac693024782911f5f0 100644
--- a/vendor/guzzlehttp/promises/src/Promise.php
+++ b/vendor/guzzlehttp/promises/src/Promise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -41,14 +42,13 @@ class Promise implements PromiseInterface
 
         // Return a fulfilled promise and immediately invoke any callbacks.
         if ($this->state === self::FULFILLED) {
-            return $onFulfilled
-                ? promise_for($this->result)->then($onFulfilled)
-                : promise_for($this->result);
+            $promise = Create::promiseFor($this->result);
+            return $onFulfilled ? $promise->then($onFulfilled) : $promise;
         }
 
         // It's either cancelled or rejected, so return a rejected promise
         // and immediately invoke any callbacks.
-        $rejection = rejection_for($this->result);
+        $rejection = Create::rejectionFor($this->result);
         return $onRejected ? $rejection->then(null, $onRejected) : $rejection;
     }
 
@@ -61,19 +61,15 @@ class Promise implements PromiseInterface
     {
         $this->waitIfPending();
 
-        $inner = $this->result instanceof PromiseInterface
-            ? $this->result->wait($unwrap)
-            : $this->result;
-
+        if ($this->result instanceof PromiseInterface) {
+            return $this->result->wait($unwrap);
+        }
         if ($unwrap) {
-            if ($this->result instanceof PromiseInterface
-                || $this->state === self::FULFILLED
-            ) {
-                return $inner;
-            } else {
-                // It's rejected so "unwrap" and throw an exception.
-                throw exception_for($inner);
+            if ($this->state === self::FULFILLED) {
+                return $this->result;
             }
+            // It's rejected so "unwrap" and throw an exception.
+            throw Create::exceptionFor($this->result);
         }
     }
 
@@ -103,6 +99,7 @@ class Promise implements PromiseInterface
         }
 
         // Reject the promise only if it wasn't rejected in a then callback.
+        /** @psalm-suppress RedundantCondition */
         if ($this->state === self::PENDING) {
             $this->reject(new CancellationException('Promise has been cancelled'));
         }
@@ -148,17 +145,15 @@ class Promise implements PromiseInterface
 
         // If the value was not a settled promise or a thenable, then resolve
         // it in the task queue using the correct ID.
-        if (!method_exists($value, 'then')) {
+        if (!is_object($value) || !method_exists($value, 'then')) {
             $id = $state === self::FULFILLED ? 1 : 2;
             // It's a success, so resolve the handlers in the queue.
-            queue()->add(static function () use ($id, $value, $handlers) {
+            Utils::queue()->add(static function () use ($id, $value, $handlers) {
                 foreach ($handlers as $handler) {
                     self::callHandler($id, $value, $handler);
                 }
             });
-        } elseif ($value instanceof Promise
-            && $value->getState() === self::PENDING
-        ) {
+        } elseif ($value instanceof Promise && Is::pending($value)) {
             // We can just merge our handlers onto the next promise.
             $value->handlers = array_merge($value->handlers, $handlers);
         } else {
@@ -184,8 +179,6 @@ class Promise implements PromiseInterface
      * @param int   $index   1 (resolve) or 2 (reject).
      * @param mixed $value   Value to pass to the callback.
      * @param array $handler Array of handler data (promise and callbacks).
-     *
-     * @return array Returns the next group to resolve.
      */
     private static function callHandler($index, $value, array $handler)
     {
@@ -194,13 +187,21 @@ class Promise implements PromiseInterface
 
         // The promise may have been cancelled or resolved before placing
         // this thunk in the queue.
-        if ($promise->getState() !== self::PENDING) {
+        if (Is::settled($promise)) {
             return;
         }
 
         try {
             if (isset($handler[$index])) {
-                $promise->resolve($handler[$index]($value));
+                /*
+                 * If $f throws an exception, then $handler will be in the exception
+                 * stack trace. Since $handler contains a reference to the callable
+                 * itself we get a circular reference. We clear the $handler
+                 * here to avoid that memory leak.
+                 */
+                $f = $handler[$index];
+                unset($handler);
+                $promise->resolve($f($value));
             } elseif ($index === 1) {
                 // Forward resolution values as-is.
                 $promise->resolve($value);
@@ -224,15 +225,16 @@ class Promise implements PromiseInterface
         } elseif ($this->waitList) {
             $this->invokeWaitList();
         } else {
-            // If there's not wait function, then reject the promise.
+            // If there's no wait function, then reject the promise.
             $this->reject('Cannot wait on a promise that has '
                 . 'no internal wait function. You must provide a wait '
                 . 'function when constructing the promise to be able to '
                 . 'wait on a promise.');
         }
 
-        queue()->run();
+        Utils::queue()->run();
 
+        /** @psalm-suppress RedundantCondition */
         if ($this->state === self::PENDING) {
             $this->reject('Invoking the wait callback did not resolve the promise');
         }
@@ -263,17 +265,13 @@ class Promise implements PromiseInterface
         $this->waitList = null;
 
         foreach ($waitList as $result) {
-            while (true) {
+            do {
                 $result->waitIfPending();
+                $result = $result->result;
+            } while ($result instanceof Promise);
 
-                if ($result->result instanceof Promise) {
-                    $result = $result->result;
-                } else {
-                    if ($result->result instanceof PromiseInterface) {
-                        $result->result->wait(false);
-                    }
-                    break;
-                }
+            if ($result instanceof PromiseInterface) {
+                $result->wait(false);
             }
         }
     }
diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php
index 8f5f4b99b26c64c7e4177e537e13a2703ca56a6d..e598331435aedfc5213100f2d410e715c81cb163 100644
--- a/vendor/guzzlehttp/promises/src/PromiseInterface.php
+++ b/vendor/guzzlehttp/promises/src/PromiseInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -56,6 +57,7 @@ interface PromiseInterface
      * Resolve the promise with the given value.
      *
      * @param mixed $value
+     *
      * @throws \RuntimeException if the promise is already resolved.
      */
     public function resolve($value);
@@ -64,6 +66,7 @@ interface PromiseInterface
      * Reject the promise with the given reason.
      *
      * @param mixed $reason
+     *
      * @throws \RuntimeException if the promise is already resolved.
      */
     public function reject($reason);
@@ -86,6 +89,7 @@ interface PromiseInterface
      * @param bool $unwrap
      *
      * @return mixed
+     *
      * @throws \LogicException if the promise has no wait function or if the
      *                         promise does not settle after waiting.
      */
diff --git a/vendor/guzzlehttp/promises/src/PromisorInterface.php b/vendor/guzzlehttp/promises/src/PromisorInterface.php
index b07fe32bc138c56fc393522434d852531012174e..2d2e3422ba4046067e934c96d309661f8b18e631 100644
--- a/vendor/guzzlehttp/promises/src/PromisorInterface.php
+++ b/vendor/guzzlehttp/promises/src/PromisorInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
diff --git a/vendor/guzzlehttp/promises/src/RejectedPromise.php b/vendor/guzzlehttp/promises/src/RejectedPromise.php
index 2bc6508e7b6faae653a076b8ba57c8e339a9fbad..d2918468cf3822100e2c68f309cde26100659edc 100644
--- a/vendor/guzzlehttp/promises/src/RejectedPromise.php
+++ b/vendor/guzzlehttp/promises/src/RejectedPromise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -13,9 +14,10 @@ class RejectedPromise implements PromiseInterface
 
     public function __construct($reason)
     {
-        if (method_exists($reason, 'then')) {
+        if (is_object($reason) && method_exists($reason, 'then')) {
             throw new \InvalidArgumentException(
-                'You cannot create a RejectedPromise with a promise.');
+                'You cannot create a RejectedPromise with a promise.'
+            );
         }
 
         $this->reason = $reason;
@@ -30,11 +32,11 @@ class RejectedPromise implements PromiseInterface
             return $this;
         }
 
-        $queue = queue();
+        $queue = Utils::queue();
         $reason = $this->reason;
         $p = new Promise([$queue, 'run']);
         $queue->add(static function () use ($p, $reason, $onRejected) {
-            if ($p->getState() === self::PENDING) {
+            if (Is::pending($p)) {
                 try {
                     // Return a resolved promise if onRejected does not throw.
                     $p->resolve($onRejected($reason));
@@ -59,8 +61,10 @@ class RejectedPromise implements PromiseInterface
     public function wait($unwrap = true, $defaultDelivery = null)
     {
         if ($unwrap) {
-            throw exception_for($this->reason);
+            throw Create::exceptionFor($this->reason);
         }
+
+        return null;
     }
 
     public function getState()
diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php
index 07c1136da166075fb7354548306b5755be8ceab2..e2f137707df12f028cafb0968c43a41537004019 100644
--- a/vendor/guzzlehttp/promises/src/RejectionException.php
+++ b/vendor/guzzlehttp/promises/src/RejectionException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -12,7 +13,7 @@ class RejectionException extends \RuntimeException
     private $reason;
 
     /**
-     * @param mixed $reason       Rejection reason.
+     * @param mixed  $reason      Rejection reason.
      * @param string $description Optional description
      */
     public function __construct($reason, $description = null)
diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php
index 6e8a2a083cd919ad90efd13b0701da0605267fe2..f0fba2c594a89baa0abb4fc952de319e9cfb577b 100644
--- a/vendor/guzzlehttp/promises/src/TaskQueue.php
+++ b/vendor/guzzlehttp/promises/src/TaskQueue.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -8,7 +9,7 @@ namespace GuzzleHttp\Promise;
  * maintains a constant stack size. You can use the task queue asynchronously
  * by calling the `run()` function of the global task queue in an event loop.
  *
- *     GuzzleHttp\Promise\queue()->run();
+ *     GuzzleHttp\Promise\Utils::queue()->run();
  */
 class TaskQueue implements TaskQueueInterface
 {
@@ -42,8 +43,8 @@ class TaskQueue implements TaskQueueInterface
 
     public function run()
     {
-        /** @var callable $task */
         while ($task = array_shift($this->queue)) {
+            /** @var callable $task */
             $task();
         }
     }
diff --git a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
index ac8306e1971226a46e5fdff1bed9140f8cbade59..723d4d54eb15aa97aab769dce2810b8d7a7b118f 100644
--- a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
+++ b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 interface TaskQueueInterface
@@ -13,8 +14,6 @@ interface TaskQueueInterface
     /**
      * Adds a task to the queue that will be executed the next time run is
      * called.
-     *
-     * @param callable $task
      */
     public function add(callable $task);
 
diff --git a/vendor/guzzlehttp/promises/src/functions.php b/vendor/guzzlehttp/promises/src/functions.php
index 4e27709af3641337e285f66e9a22d1778060d2ec..c03d39d02107836ccdd9205c6d62b98ac5d5a53a 100644
--- a/vendor/guzzlehttp/promises/src/functions.php
+++ b/vendor/guzzlehttp/promises/src/functions.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -17,18 +18,12 @@ namespace GuzzleHttp\Promise;
  * @param TaskQueueInterface $assign Optionally specify a new queue instance.
  *
  * @return TaskQueueInterface
+ *
+ * @deprecated queue will be removed in guzzlehttp/promises:2.0. Use Utils::queue instead.
  */
 function queue(TaskQueueInterface $assign = null)
 {
-    static $queue;
-
-    if ($assign) {
-        $queue = $assign;
-    } elseif (!$queue) {
-        $queue = new TaskQueue();
-    }
-
-    return $queue;
+    return Utils::queue($assign);
 }
 
 /**
@@ -38,22 +33,12 @@ function queue(TaskQueueInterface $assign = null)
  * @param callable $task Task function to run.
  *
  * @return PromiseInterface
+ *
+ * @deprecated task will be removed in guzzlehttp/promises:2.0. Use Utils::task instead.
  */
 function task(callable $task)
 {
-    $queue = queue();
-    $promise = new Promise([$queue, 'run']);
-    $queue->add(function () use ($task, $promise) {
-        try {
-            $promise->resolve($task());
-        } catch (\Throwable $e) {
-            $promise->reject($e);
-        } catch (\Exception $e) {
-            $promise->reject($e);
-        }
-    });
-
-    return $promise;
+    return Utils::task($task);
 }
 
 /**
@@ -62,23 +47,12 @@ function task(callable $task)
  * @param mixed $value Promise or value.
  *
  * @return PromiseInterface
+ *
+ * @deprecated promise_for will be removed in guzzlehttp/promises:2.0. Use Create::promiseFor instead.
  */
 function promise_for($value)
 {
-    if ($value instanceof PromiseInterface) {
-        return $value;
-    }
-
-    // Return a Guzzle promise that shadows the given promise.
-    if (method_exists($value, 'then')) {
-        $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
-        $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
-        $promise = new Promise($wfn, $cfn);
-        $value->then([$promise, 'resolve'], [$promise, 'reject']);
-        return $promise;
-    }
-
-    return new FulfilledPromise($value);
+    return Create::promiseFor($value);
 }
 
 /**
@@ -88,14 +62,12 @@ function promise_for($value)
  * @param mixed $reason Promise or reason.
  *
  * @return PromiseInterface
+ *
+ * @deprecated rejection_for will be removed in guzzlehttp/promises:2.0. Use Create::rejectionFor instead.
  */
 function rejection_for($reason)
 {
-    if ($reason instanceof PromiseInterface) {
-        return $reason;
-    }
-
-    return new RejectedPromise($reason);
+    return Create::rejectionFor($reason);
 }
 
 /**
@@ -104,12 +76,12 @@ function rejection_for($reason)
  * @param mixed $reason
  *
  * @return \Exception|\Throwable
+ *
+ * @deprecated exception_for will be removed in guzzlehttp/promises:2.0. Use Create::exceptionFor instead.
  */
 function exception_for($reason)
 {
-    return $reason instanceof \Exception || $reason instanceof \Throwable
-        ? $reason
-        : new RejectionException($reason);
+    return Create::exceptionFor($reason);
 }
 
 /**
@@ -118,16 +90,12 @@ function exception_for($reason)
  * @param mixed $value
  *
  * @return \Iterator
+ *
+ * @deprecated iter_for will be removed in guzzlehttp/promises:2.0. Use Create::iterFor instead.
  */
 function iter_for($value)
 {
-    if ($value instanceof \Iterator) {
-        return $value;
-    } elseif (is_array($value)) {
-        return new \ArrayIterator($value);
-    } else {
-        return new \ArrayIterator([$value]);
-    }
+    return Create::iterFor($value);
 }
 
 /**
@@ -143,21 +111,12 @@ function iter_for($value)
  * @param PromiseInterface $promise Promise or value.
  *
  * @return array
+ *
+ * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspect instead.
  */
 function inspect(PromiseInterface $promise)
 {
-    try {
-        return [
-            'state' => PromiseInterface::FULFILLED,
-            'value' => $promise->wait()
-        ];
-    } catch (RejectionException $e) {
-        return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()];
-    } catch (\Throwable $e) {
-        return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
-    } catch (\Exception $e) {
-        return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
-    }
+    return Utils::inspect($promise);
 }
 
 /**
@@ -166,19 +125,17 @@ function inspect(PromiseInterface $promise)
  *
  * Returns an array of inspection state arrays.
  *
+ * @see inspect for the inspection state array format.
+ *
  * @param PromiseInterface[] $promises Traversable of promises to wait upon.
  *
  * @return array
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
+ *
+ * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspectAll instead.
  */
 function inspect_all($promises)
 {
-    $results = [];
-    foreach ($promises as $key => $promise) {
-        $results[$key] = inspect($promise);
-    }
-
-    return $results;
+    return Utils::inspectAll($promises);
 }
 
 /**
@@ -188,20 +145,18 @@ function inspect_all($promises)
  * the promises were provided). An exception is thrown if any of the promises
  * are rejected.
  *
- * @param mixed $promises Iterable of PromiseInterface objects to wait on.
+ * @param iterable<PromiseInterface> $promises Iterable of PromiseInterface objects to wait on.
  *
  * @return array
+ *
  * @throws \Exception on error
  * @throws \Throwable on error in PHP >=7
+ *
+ * @deprecated unwrap will be removed in guzzlehttp/promises:2.0. Use Utils::unwrap instead.
  */
 function unwrap($promises)
 {
-    $results = [];
-    foreach ($promises as $key => $promise) {
-        $results[$key] = $promise->wait();
-    }
-
-    return $results;
+    return Utils::unwrap($promises);
 }
 
 /**
@@ -212,25 +167,16 @@ function unwrap($promises)
  * respective positions to the original array. If any promise in the array
  * rejects, the returned promise is rejected with the rejection reason.
  *
- * @param mixed $promises Promises or values.
+ * @param mixed $promises  Promises or values.
+ * @param bool  $recursive If true, resolves new promises that might have been added to the stack during its own resolution.
  *
  * @return PromiseInterface
+ *
+ * @deprecated all will be removed in guzzlehttp/promises:2.0. Use Utils::all instead.
  */
-function all($promises)
+function all($promises, $recursive = false)
 {
-    $results = [];
-    return each(
-        $promises,
-        function ($value, $idx) use (&$results) {
-            $results[$idx] = $value;
-        },
-        function ($reason, $idx, Promise $aggregate) {
-            $aggregate->reject($reason);
-        }
-    )->then(function () use (&$results) {
-        ksort($results);
-        return $results;
-    });
+    return Utils::all($promises, $recursive);
 }
 
 /**
@@ -241,45 +187,19 @@ function all($promises)
  * fulfilled with an array that contains the fulfillment values of the winners
  * in order of resolution.
  *
- * This prommise is rejected with a {@see GuzzleHttp\Promise\AggregateException}
- * if the number of fulfilled promises is less than the desired $count.
+ * This promise is rejected with a {@see AggregateException} if the number of
+ * fulfilled promises is less than the desired $count.
  *
  * @param int   $count    Total number of promises.
  * @param mixed $promises Promises or values.
  *
  * @return PromiseInterface
+ *
+ * @deprecated some will be removed in guzzlehttp/promises:2.0. Use Utils::some instead.
  */
 function some($count, $promises)
 {
-    $results = [];
-    $rejections = [];
-
-    return each(
-        $promises,
-        function ($value, $idx, PromiseInterface $p) use (&$results, $count) {
-            if ($p->getState() !== PromiseInterface::PENDING) {
-                return;
-            }
-            $results[$idx] = $value;
-            if (count($results) >= $count) {
-                $p->resolve(null);
-            }
-        },
-        function ($reason) use (&$rejections) {
-            $rejections[] = $reason;
-        }
-    )->then(
-        function () use (&$results, &$rejections, $count) {
-            if (count($results) !== $count) {
-                throw new AggregateException(
-                    'Not enough promises to fulfill count',
-                    $rejections
-                );
-            }
-            ksort($results);
-            return array_values($results);
-        }
-    );
+    return Utils::some($count, $promises);
 }
 
 /**
@@ -289,10 +209,12 @@ function some($count, $promises)
  * @param mixed $promises Promises or values.
  *
  * @return PromiseInterface
+ *
+ * @deprecated any will be removed in guzzlehttp/promises:2.0. Use Utils::any instead.
  */
 function any($promises)
 {
-    return some(1, $promises)->then(function ($values) { return $values[0]; });
+    return Utils::any($promises);
 }
 
 /**
@@ -301,27 +223,17 @@ function any($promises)
  *
  * The returned promise is fulfilled with an array of inspection state arrays.
  *
+ * @see inspect for the inspection state array format.
+ *
  * @param mixed $promises Promises or values.
  *
  * @return PromiseInterface
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
+ *
+ * @deprecated settle will be removed in guzzlehttp/promises:2.0. Use Utils::settle instead.
  */
 function settle($promises)
 {
-    $results = [];
-
-    return each(
-        $promises,
-        function ($value, $idx) use (&$results) {
-            $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value];
-        },
-        function ($reason, $idx) use (&$results) {
-            $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason];
-        }
-    )->then(function () use (&$results) {
-        ksort($results);
-        return $results;
-    });
+    return Utils::settle($promises);
 }
 
 /**
@@ -329,29 +241,28 @@ function settle($promises)
  * fulfilled with a null value when the iterator has been consumed or the
  * aggregate promise has been fulfilled or rejected.
  *
- * $onFulfilled is a function that accepts the fulfilled value, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
+ * $onFulfilled is a function that accepts the fulfilled value, iterator index,
+ * and the aggregate promise. The callback can invoke any necessary side
+ * effects and choose to resolve or reject the aggregate if needed.
  *
- * $onRejected is a function that accepts the rejection reason, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
+ * $onRejected is a function that accepts the rejection reason, iterator index,
+ * and the aggregate promise. The callback can invoke any necessary side
+ * effects and choose to resolve or reject the aggregate if needed.
  *
  * @param mixed    $iterable    Iterator or array to iterate over.
  * @param callable $onFulfilled
  * @param callable $onRejected
  *
  * @return PromiseInterface
+ *
+ * @deprecated each will be removed in guzzlehttp/promises:2.0. Use Each::of instead.
  */
 function each(
     $iterable,
     callable $onFulfilled = null,
     callable $onRejected = null
 ) {
-    return (new EachPromise($iterable, [
-        'fulfilled' => $onFulfilled,
-        'rejected'  => $onRejected
-    ]))->promise();
+    return Each::of($iterable, $onFulfilled, $onRejected);
 }
 
 /**
@@ -368,6 +279,8 @@ function each(
  * @param callable     $onRejected
  *
  * @return PromiseInterface
+ *
+ * @deprecated each_limit will be removed in guzzlehttp/promises:2.0. Use Each::ofLimit instead.
  */
 function each_limit(
     $iterable,
@@ -375,11 +288,7 @@ function each_limit(
     callable $onFulfilled = null,
     callable $onRejected = null
 ) {
-    return (new EachPromise($iterable, [
-        'fulfilled'   => $onFulfilled,
-        'rejected'    => $onRejected,
-        'concurrency' => $concurrency
-    ]))->promise();
+    return Each::ofLimit($iterable, $concurrency, $onFulfilled, $onRejected);
 }
 
 /**
@@ -392,66 +301,63 @@ function each_limit(
  * @param callable     $onFulfilled
  *
  * @return PromiseInterface
+ *
+ * @deprecated each_limit_all will be removed in guzzlehttp/promises:2.0. Use Each::ofLimitAll instead.
  */
 function each_limit_all(
     $iterable,
     $concurrency,
     callable $onFulfilled = null
 ) {
-    return each_limit(
-        $iterable,
-        $concurrency,
-        $onFulfilled,
-        function ($reason, $idx, PromiseInterface $aggregate) {
-            $aggregate->reject($reason);
-        }
-    );
+    return Each::ofLimitAll($iterable, $concurrency, $onFulfilled);
 }
 
 /**
  * Returns true if a promise is fulfilled.
  *
- * @param PromiseInterface $promise
- *
  * @return bool
+ *
+ * @deprecated is_fulfilled will be removed in guzzlehttp/promises:2.0. Use Is::fulfilled instead.
  */
 function is_fulfilled(PromiseInterface $promise)
 {
-    return $promise->getState() === PromiseInterface::FULFILLED;
+    return Is::fulfilled($promise);
 }
 
 /**
  * Returns true if a promise is rejected.
  *
- * @param PromiseInterface $promise
- *
  * @return bool
+ *
+ * @deprecated is_rejected will be removed in guzzlehttp/promises:2.0. Use Is::rejected instead.
  */
 function is_rejected(PromiseInterface $promise)
 {
-    return $promise->getState() === PromiseInterface::REJECTED;
+    return Is::rejected($promise);
 }
 
 /**
  * Returns true if a promise is fulfilled or rejected.
  *
- * @param PromiseInterface $promise
- *
  * @return bool
+ *
+ * @deprecated is_settled will be removed in guzzlehttp/promises:2.0. Use Is::settled instead.
  */
 function is_settled(PromiseInterface $promise)
 {
-    return $promise->getState() !== PromiseInterface::PENDING;
+    return Is::settled($promise);
 }
 
 /**
- * @see Coroutine
+ * Create a new coroutine.
  *
- * @param callable $generatorFn
+ * @see Coroutine
  *
  * @return PromiseInterface
+ *
+ * @deprecated coroutine will be removed in guzzlehttp/promises:2.0. Use Coroutine::of instead.
  */
 function coroutine(callable $generatorFn)
 {
-    return new Coroutine($generatorFn);
+    return Coroutine::of($generatorFn);
 }
diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md
index 8a3743dba5c5e88be197b4c38104cefbe56d96a2..b441d36668e1ccdf386cf2ac74d51b30ba450ba9 100644
--- a/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ b/vendor/guzzlehttp/psr7/CHANGELOG.md
@@ -9,8 +9,32 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
 
 ## [Unreleased]
 
+## [1.7.0] - 2020-09-30
 
-## [1.6.0]
+### Added
+
+- Replaced functions by static methods
+
+### Fixed
+
+- Converting a non-seekable stream to a string
+- Handle multiple Set-Cookie correctly
+- Ignore array keys in header values when merging
+- Allow multibyte characters to be parsed in `Message:bodySummary()`
+
+### Changed
+
+- Restored partial HHVM 3 support
+
+
+## [1.6.1] - 2019-07-02
+
+### Fixed
+
+- Accept null and bool header values again
+
+
+## [1.6.0] - 2019-06-30
 
 ### Added
 
diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md
index c60a6a38d3306f5c4b2e9ab7c1e19c5b65495c27..acfabfdcbe31b20849706a77bead39872589d397 100644
--- a/vendor/guzzlehttp/psr7/README.md
+++ b/vendor/guzzlehttp/psr7/README.md
@@ -23,11 +23,11 @@ Reads from multiple streams, one after the other.
 ```php
 use GuzzleHttp\Psr7;
 
-$a = Psr7\stream_for('abc, ');
-$b = Psr7\stream_for('123.');
+$a = Psr7\Utils::streamFor('abc, ');
+$b = Psr7\Utils::streamFor('123.');
 $composed = new Psr7\AppendStream([$a, $b]);
 
-$composed->addStream(Psr7\stream_for(' Above all listen to me'));
+$composed->addStream(Psr7\Utils::streamFor(' Above all listen to me'));
 
 echo $composed; // abc, 123. Above all listen to me.
 ```
@@ -65,7 +65,7 @@ then on disk.
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
+$original = Psr7\Utils::streamFor(fopen('http://www.google.com', 'r'));
 $stream = new Psr7\CachingStream($original);
 
 $stream->read(1024);
@@ -89,7 +89,7 @@ stream becomes too full.
 use GuzzleHttp\Psr7;
 
 // Create an empty stream
-$stream = Psr7\stream_for();
+$stream = Psr7\Utils::streamFor();
 
 // Start dropping data when the stream has more than 10 bytes
 $dropping = new Psr7\DroppingStream($stream, 10);
@@ -112,7 +112,7 @@ to create a concrete class for a simple extension point.
 
 use GuzzleHttp\Psr7;
 
-$stream = Psr7\stream_for('hi');
+$stream = Psr7\Utils::streamFor('hi');
 $fnStream = Psr7\FnStream::decorate($stream, [
     'rewind' => function () use ($stream) {
         echo 'About to rewind - ';
@@ -167,7 +167,7 @@ chunks (e.g. Amazon S3's multipart upload API).
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for(fopen('/tmp/test.txt', 'r+'));
+$original = Psr7\Utils::streamFor(fopen('/tmp/test.txt', 'r+'));
 echo $original->getSize();
 // >>> 1048576
 
@@ -197,7 +197,7 @@ NoSeekStream wraps a stream and does not allow seeking.
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for('foo');
+$original = Psr7\Utils::streamFor('foo');
 $noSeek = new Psr7\NoSeekStream($original);
 
 echo $noSeek->read(3);
@@ -271,7 +271,7 @@ This decorator could be added to any existing stream and used like so:
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for('foo');
+$original = Psr7\Utils::streamFor('foo');
 
 $eofStream = new EofCallbackStream($original, function () {
     echo 'EOF!';
@@ -297,228 +297,292 @@ stream from a PSR-7 stream.
 ```php
 use GuzzleHttp\Psr7\StreamWrapper;
 
-$stream = GuzzleHttp\Psr7\stream_for('hello!');
+$stream = GuzzleHttp\Psr7\Utils::streamFor('hello!');
 $resource = StreamWrapper::getResource($stream);
 echo fread($resource, 6); // outputs hello!
 ```
 
 
-# Function API
+# Static API
 
-There are various functions available under the `GuzzleHttp\Psr7` namespace.
+There are various static methods available under the `GuzzleHttp\Psr7` namespace.
 
 
-## `function str`
+## `GuzzleHttp\Psr7\Message::toString`
 
-`function str(MessageInterface $message)`
+`public static function toString(MessageInterface $message): string`
 
 Returns the string representation of an HTTP message.
 
 ```php
 $request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com');
-echo GuzzleHttp\Psr7\str($request);
+echo GuzzleHttp\Psr7\Message::toString($request);
 ```
 
 
-## `function uri_for`
+## `GuzzleHttp\Psr7\Message::bodySummary`
 
-`function uri_for($uri)`
+`public static function bodySummary(MessageInterface $message, int $truncateAt = 120): string|null`
 
-This function accepts a string or `Psr\Http\Message\UriInterface` and returns a
-UriInterface for the given value. If the value is already a `UriInterface`, it
-is returned as-is.
+Get a short summary of the message body.
 
-```php
-$uri = GuzzleHttp\Psr7\uri_for('http://example.com');
-assert($uri === GuzzleHttp\Psr7\uri_for($uri));
-```
+Will return `null` if the response is not printable.
 
 
-## `function stream_for`
+## `GuzzleHttp\Psr7\Message::rewindBody`
 
-`function stream_for($resource = '', array $options = [])`
+`public static function rewindBody(MessageInterface $message): void`
 
-Create a new stream based on the input type.
+Attempts to rewind a message body and throws an exception on failure.
 
-Options is an associative array that can contain the following keys:
+The body of the message will only be rewound if a call to `tell()`
+returns a value other than `0`.
 
-* - metadata: Array of custom metadata.
-* - size: Size of the stream.
 
-This method accepts the following `$resource` types:
+## `GuzzleHttp\Psr7\Message::parseMessage`
 
-- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
-- `string`: Creates a stream object that uses the given string as the contents.
-- `resource`: Creates a stream object that wraps the given PHP stream resource.
-- `Iterator`: If the provided value implements `Iterator`, then a read-only
-  stream object will be created that wraps the given iterable. Each time the
-  stream is read from, data from the iterator will fill a buffer and will be
-  continuously called until the buffer is equal to the requested read size.
-  Subsequent read calls will first read from the buffer and then call `next`
-  on the underlying iterator until it is exhausted.
-- `object` with `__toString()`: If the object has the `__toString()` method,
-  the object will be cast to a string and then a stream will be returned that
-  uses the string value.
-- `NULL`: When `null` is passed, an empty stream object is returned.
-- `callable` When a callable is passed, a read-only stream object will be
-  created that invokes the given callable. The callable is invoked with the
-  number of suggested bytes to read. The callable can return any number of
-  bytes, but MUST return `false` when there is no more data to return. The
-  stream object that wraps the callable will invoke the callable until the
-  number of requested bytes are available. Any additional bytes will be
-  buffered and used in subsequent reads.
+`public static function parseMessage(string $message): array`
 
-```php
-$stream = GuzzleHttp\Psr7\stream_for('foo');
-$stream = GuzzleHttp\Psr7\stream_for(fopen('/path/to/file', 'r'));
+Parses an HTTP message into an associative array.
 
-$generator = function ($bytes) {
-    for ($i = 0; $i < $bytes; $i++) {
-        yield ' ';
-    }
-}
+The array contains the "start-line" key containing the start line of
+the message, "headers" key containing an associative array of header
+array values, and a "body" key containing the body of the message.
 
-$stream = GuzzleHttp\Psr7\stream_for($generator(100));
-```
 
+## `GuzzleHttp\Psr7\Message::parseRequestUri`
 
-## `function parse_header`
+`public static function parseRequestUri(string $path, array $headers): string`
 
-`function parse_header($header)`
+Constructs a URI for an HTTP request message.
 
-Parse an array of header values containing ";" separated data into an array of
-associative arrays representing the header key value pair data of the header.
-When a parameter does not contain a value, but just contains a key, this
-function will inject a key with a '' string value.
 
+## `GuzzleHttp\Psr7\Message::parseRequest`
 
-## `function normalize_header`
+`public static function parseRequest(string $message): Request`
 
-`function normalize_header($header)`
+Parses a request message string into a request object.
 
-Converts an array of header values that may contain comma separated headers
-into an array of headers with no comma separated values.
 
+## `GuzzleHttp\Psr7\Message::parseResponse`
 
-## `function modify_request`
+`public static function parseResponse(string $message): Response`
 
-`function modify_request(RequestInterface $request, array $changes)`
+Parses a response message string into a response object.
 
-Clone and modify a request with the given changes. This method is useful for
-reducing the number of clones needed to mutate a message.
 
-The changes can be one of:
+## `GuzzleHttp\Psr7\Header::parse`
 
-- method: (string) Changes the HTTP method.
-- set_headers: (array) Sets the given headers.
-- remove_headers: (array) Remove the given headers.
-- body: (mixed) Sets the given body.
-- uri: (UriInterface) Set the URI.
-- query: (string) Set the query string value of the URI.
-- version: (string) Set the protocol version.
+`public static function parse(string|array $header): array`
 
+Parse an array of header values containing ";" separated data into an
+array of associative arrays representing the header key value pair data
+of the header. When a parameter does not contain a value, but just
+contains a key, this function will inject a key with a '' string value.
 
-## `function rewind_body`
 
-`function rewind_body(MessageInterface $message)`
+## `GuzzleHttp\Psr7\Header::normalize`
 
-Attempts to rewind a message body and throws an exception on failure. The body
-of the message will only be rewound if a call to `tell()` returns a value other
-than `0`.
+`public static function normalize(string|array $header): array`
 
+Converts an array of header values that may contain comma separated
+headers into an array of headers with no comma separated values.
 
-## `function try_fopen`
 
-`function try_fopen($filename, $mode)`
+## `GuzzleHttp\Psr7\Query::parse`
 
-Safely opens a PHP stream resource using a filename.
+`public static function parse(string $str, int|bool $urlEncoding = true): array`
+
+Parse a query string into an associative array.
+
+If multiple values are found for the same key, the value of that key
+value pair will become an array. This function does not parse nested
+PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2`
+will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`.
+
+
+## `GuzzleHttp\Psr7\Query::build`
+
+`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986): string`
+
+Build a query string from an array of key value pairs.
+
+This function can use the return value of `parse()` to build a query
+string. This function does not modify the provided keys when an array is
+encountered (like `http_build_query()` would).
+
+
+## `GuzzleHttp\Psr7\Utils::caselessRemove`
+
+`public static function caselessRemove(iterable<string> $keys, $keys, array $data): array`
 
-When fopen fails, PHP normally raises a warning. This function adds an error
-handler that checks for errors and throws an exception instead.
+Remove the items given by the keys, case insensitively from the data.
 
 
-## `function copy_to_string`
+## `GuzzleHttp\Psr7\Utils::copyToStream`
 
-`function copy_to_string(StreamInterface $stream, $maxLen = -1)`
+`public static function copyToStream(StreamInterface $source, StreamInterface $dest, int $maxLen = -1): void`
 
-Copy the contents of a stream into a string until the given number of bytes
-have been read.
+Copy the contents of a stream into another stream until the given number
+of bytes have been read.
 
 
-## `function copy_to_stream`
+## `GuzzleHttp\Psr7\Utils::copyToString`
 
-`function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)`
+`public static function copyToString(StreamInterface $stream, int $maxLen = -1): string`
 
-Copy the contents of a stream into another stream until the given number of
+Copy the contents of a stream into a string until the given number of
 bytes have been read.
 
 
-## `function hash`
+## `GuzzleHttp\Psr7\Utils::hash`
 
-`function hash(StreamInterface $stream, $algo, $rawOutput = false)`
+`public static function hash(StreamInterface $stream, string $algo, bool $rawOutput = false): string`
 
-Calculate a hash of a Stream. This method reads the entire stream to calculate
-a rolling hash (based on PHP's hash_init functions).
+Calculate a hash of a stream.
 
+This method reads the entire stream to calculate a rolling hash, based on
+PHP's `hash_init` functions.
 
-## `function readline`
 
-`function readline(StreamInterface $stream, $maxLength = null)`
+## `GuzzleHttp\Psr7\Utils::modifyRequest`
+
+`public static function modifyRequest(RequestInterface $request, array $changes): RequestInterface`
+
+Clone and modify a request with the given changes.
+
+This method is useful for reducing the number of clones needed to mutate
+a message.
+
+- method: (string) Changes the HTTP method.
+- set_headers: (array) Sets the given headers.
+- remove_headers: (array) Remove the given headers.
+- body: (mixed) Sets the given body.
+- uri: (UriInterface) Set the URI.
+- query: (string) Set the query string value of the URI.
+- version: (string) Set the protocol version.
+
+
+## `GuzzleHttp\Psr7\Utils::readLine`
+
+`public static function readLine(StreamInterface $stream, int $maxLength = null): string`
 
 Read a line from the stream up to the maximum allowed buffer length.
 
 
-## `function parse_request`
+## `GuzzleHttp\Psr7\Utils::streamFor`
 
-`function parse_request($message)`
+`public static function streamFor(resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource = '', array $options = []): StreamInterface`
 
-Parses a request message string into a request object.
+Create a new stream based on the input type.
 
+Options is an associative array that can contain the following keys:
 
-## `function parse_response`
+- metadata: Array of custom metadata.
+- size: Size of the stream.
 
-`function parse_response($message)`
+This method accepts the following `$resource` types:
 
-Parses a response message string into a response object.
+- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
+- `string`: Creates a stream object that uses the given string as the contents.
+- `resource`: Creates a stream object that wraps the given PHP stream resource.
+- `Iterator`: If the provided value implements `Iterator`, then a read-only
+  stream object will be created that wraps the given iterable. Each time the
+  stream is read from, data from the iterator will fill a buffer and will be
+  continuously called until the buffer is equal to the requested read size.
+  Subsequent read calls will first read from the buffer and then call `next`
+  on the underlying iterator until it is exhausted.
+- `object` with `__toString()`: If the object has the `__toString()` method,
+  the object will be cast to a string and then a stream will be returned that
+  uses the string value.
+- `NULL`: When `null` is passed, an empty stream object is returned.
+- `callable` When a callable is passed, a read-only stream object will be
+  created that invokes the given callable. The callable is invoked with the
+  number of suggested bytes to read. The callable can return any number of
+  bytes, but MUST return `false` when there is no more data to return. The
+  stream object that wraps the callable will invoke the callable until the
+  number of requested bytes are available. Any additional bytes will be
+  buffered and used in subsequent reads.
 
+```php
+$stream = GuzzleHttp\Psr7\Utils::streamFor('foo');
+$stream = GuzzleHttp\Psr7\Utils::streamFor(fopen('/path/to/file', 'r'));
 
-## `function parse_query`
+$generator = function ($bytes) {
+    for ($i = 0; $i < $bytes; $i++) {
+        yield ' ';
+    }
+}
 
-`function parse_query($str, $urlEncoding = true)`
+$stream = GuzzleHttp\Psr7\Utils::streamFor($generator(100));
+```
 
-Parse a query string into an associative array.
 
-If multiple values are found for the same key, the value of that key value pair
-will become an array. This function does not parse nested PHP style arrays into
-an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed into
-`['foo[a]' => '1', 'foo[b]' => '2']`).
+## `GuzzleHttp\Psr7\Utils::tryFopen`
 
+`public static function tryFopen(string $filename, string $mode): resource`
 
-## `function build_query`
+Safely opens a PHP stream resource using a filename.
 
-`function build_query(array $params, $encoding = PHP_QUERY_RFC3986)`
+When fopen fails, PHP normally raises a warning. This function adds an
+error handler that checks for errors and throws an exception instead.
 
-Build a query string from an array of key value pairs.
 
-This function can use the return value of parse_query() to build a query string.
-This function does not modify the provided keys when an array is encountered
-(like http_build_query would).
+## `GuzzleHttp\Psr7\Utils::uriFor`
+
+`public static function uriFor(string|UriInterface $uri): UriInterface`
+
+Returns a UriInterface for the given value.
 
+This function accepts a string or UriInterface and returns a
+UriInterface for the given value. If the value is already a
+UriInterface, it is returned as-is.
 
-## `function mimetype_from_filename`
 
-`function mimetype_from_filename($filename)`
+## `GuzzleHttp\Psr7\MimeType::fromFilename`
+
+`public static function fromFilename(string $filename): string|null`
 
 Determines the mimetype of a file by looking at its extension.
 
 
-## `function mimetype_from_extension`
+## `GuzzleHttp\Psr7\MimeType::fromExtension`
 
-`function mimetype_from_extension($extension)`
+`public static function fromExtension(string $extension): string|null`
 
 Maps a file extensions to a mimetype.
 
 
+## Upgrading from Function API
+
+The static API was first introduced in 1.7.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
+
+| Original Function | Replacement Method |
+|----------------|----------------|
+| `str` | `Message::toString` |
+| `uri_for` | `Utils::uriFor` |
+| `stream_for` | `Utils::streamFor` |
+| `parse_header` | `Header::parse` |
+| `normalize_header` | `Header::normalize` |
+| `modify_request` | `Utils::modifyRequest` |
+| `rewind_body` | `Message::rewindBody` |
+| `try_fopen` | `Utils::tryFopen` |
+| `copy_to_string` | `Utils::copyToString` |
+| `copy_to_stream` | `Utils::copyToStream` |
+| `hash` | `Utils::hash` |
+| `readline` | `Utils::readLine` |
+| `parse_request` | `Message::parseRequest` |
+| `parse_response` | `Message::parseResponse` |
+| `parse_query` | `Query::parse` |
+| `build_query` | `Query::build` |
+| `mimetype_from_filename` | `MimeType::fromFilename` |
+| `mimetype_from_extension` | `MimeType::fromExtension` |
+| `_parse_message` | `Message::parseMessage` |
+| `_parse_request_uri` | `Message::parseRequestUri` |
+| `get_message_body_summary` | `Message::bodySummary` |
+| `_caseless_remove` | `Utils::caselessRemove` |
+
+
 # Additional URI Methods
 
 Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class,
diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json
index 168a055b06bb295153fdeb876c51d1c66e2d7366..58dcb07e4c6d34ef12cd6caf13fa8996a13ce463 100644
--- a/vendor/guzzlehttp/psr7/composer.json
+++ b/vendor/guzzlehttp/psr7/composer.json
@@ -21,14 +21,14 @@
         "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
     },
     "require-dev": {
-        "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8",
+        "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10",
         "ext-zlib": "*"
     },
     "provide": {
         "psr/http-message-implementation": "1.0"
     },
     "suggest": {
-        "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
+        "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
     },
     "autoload": {
         "psr-4": {
@@ -43,7 +43,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.6-dev"
+            "dev-master": "1.7-dev"
         }
     }
 }
diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php
index 472a0d61ba47c1010aa61bd99a67ef0418efc24b..86e7a23ba3f1a762d0e3c3fb4c924be8a4be1c2c 100644
--- a/vendor/guzzlehttp/psr7/src/AppendStream.php
+++ b/vendor/guzzlehttp/psr7/src/AppendStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -61,7 +62,7 @@ class AppendStream implements StreamInterface
 
     public function getContents()
     {
-        return copy_to_string($this);
+        return Utils::copyToString($this);
     }
 
     /**
@@ -98,6 +99,8 @@ class AppendStream implements StreamInterface
         }
 
         $this->streams = [];
+
+        return null;
     }
 
     public function tell()
diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php
index af4d4c2277786966521deda08580d241ba4cd522..627e4a5f146a8a165267bac4e068d4175b492e86 100644
--- a/vendor/guzzlehttp/psr7/src/BufferStream.php
+++ b/vendor/guzzlehttp/psr7/src/BufferStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -49,6 +50,8 @@ class BufferStream implements StreamInterface
     public function detach()
     {
         $this->close();
+
+        return null;
     }
 
     public function getSize()
diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php
index ed68f0861aabae9e2426129bf9fe234ce95e6654..244d2a063accd8adcd001b46029dfbd1a59d2464 100644
--- a/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ b/vendor/guzzlehttp/psr7/src/CachingStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -131,7 +132,7 @@ class CachingStream implements StreamInterface
     private function cacheEntireStream()
     {
         $target = new FnStream(['write' => 'strlen']);
-        copy_to_stream($this, $target);
+        Utils::copyToStream($this, $target);
 
         return $this->tell();
     }
diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php
index 8935c80d7298b82796025998b4451d4cd0a91df2..e125642d3e94642388d2cd8b141dbcb55957fdec 100644
--- a/vendor/guzzlehttp/psr7/src/DroppingStream.php
+++ b/vendor/guzzlehttp/psr7/src/DroppingStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/FnStream.php b/vendor/guzzlehttp/psr7/src/FnStream.php
index 73daea6f375c41cb49169dd0751d24a82f6a6abb..407577a379fde10704cfb5590615fe34eda40bd8 100644
--- a/vendor/guzzlehttp/psr7/src/FnStream.php
+++ b/vendor/guzzlehttp/psr7/src/FnStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -34,6 +35,7 @@ class FnStream implements StreamInterface
 
     /**
      * Lazily determine which methods are not implemented.
+     *
      * @throws \BadMethodCallException
      */
     public function __get($name)
diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php
index 5e4f6028ca0baaadcfc1facf71c02c8bb4c586d4..c98b96f2587be89bb01181a5fb889f47dbdab544 100644
--- a/vendor/guzzlehttp/psr7/src/InflateStream.php
+++ b/vendor/guzzlehttp/psr7/src/InflateStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
index 02cec3af493cf3115dcb7cf8af0fc0a87dfbb0eb..13c7af5c8b35c89e1feb52399aab8d01f2838532 100644
--- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
+++ b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -34,6 +35,6 @@ class LazyOpenStream implements StreamInterface
      */
     protected function createStream()
     {
-        return stream_for(try_fopen($this->filename, $this->mode));
+        return Utils::streamFor(Utils::tryFopen($this->filename, $this->mode));
     }
 }
diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php
index e4f239e30f8c5b5611b34f6d93923029a987848a..bef9161eadc8a2f616ace0ca2966a0b6c287dc92 100644
--- a/vendor/guzzlehttp/psr7/src/LimitStream.php
+++ b/vendor/guzzlehttp/psr7/src/LimitStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php
index a7966d10cfb57779358ad01604b547d3e9dfe1d1..99203bb43a42fba3ec6bd2e158d1f671619fbb6e 100644
--- a/vendor/guzzlehttp/psr7/src/MessageTrait.php
+++ b/vendor/guzzlehttp/psr7/src/MessageTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -17,7 +18,7 @@ trait MessageTrait
     /** @var string */
     private $protocol = '1.1';
 
-    /** @var StreamInterface */
+    /** @var StreamInterface|null */
     private $stream;
 
     public function getProtocolVersion()
@@ -117,7 +118,7 @@ trait MessageTrait
     public function getBody()
     {
         if (!$this->stream) {
-            $this->stream = stream_for('');
+            $this->stream = Utils::streamFor('');
         }
 
         return $this->stream;
@@ -194,7 +195,7 @@ trait MessageTrait
             }
 
             return trim((string) $value, " \t");
-        }, $values);
+        }, array_values($values));
     }
 
     private function assertHeader($header)
diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php
index c0fd584f759909f1491fdc316698fcbc6f92b365..0cbfea35d682f4e621ff3fcd4ebd1355e2fa0cf1 100644
--- a/vendor/guzzlehttp/psr7/src/MultipartStream.php
+++ b/vendor/guzzlehttp/psr7/src/MultipartStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -71,7 +72,7 @@ class MultipartStream implements StreamInterface
         }
 
         // Add the trailing boundary with CRLF
-        $stream->addStream(stream_for("--{$this->boundary}--\r\n"));
+        $stream->addStream(Utils::streamFor("--{$this->boundary}--\r\n"));
 
         return $stream;
     }
@@ -84,7 +85,7 @@ class MultipartStream implements StreamInterface
             }
         }
 
-        $element['contents'] = stream_for($element['contents']);
+        $element['contents'] = Utils::streamFor($element['contents']);
 
         if (empty($element['filename'])) {
             $uri = $element['contents']->getMetadata('uri');
@@ -100,9 +101,9 @@ class MultipartStream implements StreamInterface
             isset($element['headers']) ? $element['headers'] : []
         );
 
-        $stream->addStream(stream_for($this->getHeaders($headers)));
+        $stream->addStream(Utils::streamFor($this->getHeaders($headers)));
         $stream->addStream($body);
-        $stream->addStream(stream_for("\r\n"));
+        $stream->addStream(Utils::streamFor("\r\n"));
     }
 
     /**
@@ -131,7 +132,7 @@ class MultipartStream implements StreamInterface
         // Set a default Content-Type if one was not supplied
         $type = $this->getHeader($headers, 'content-type');
         if (!$type && ($filename === '0' || $filename)) {
-            if ($type = mimetype_from_filename($filename)) {
+            if ($type = MimeType::fromFilename($filename)) {
                 $headers['Content-Type'] = $type;
             }
         }
diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
index 233221805ec619a752486e34251555f53987f410..4b04b4c0a49b2024d6f0c31a0a5ea210ec5c5a1f 100644
--- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php
+++ b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/PumpStream.php b/vendor/guzzlehttp/psr7/src/PumpStream.php
index ffb5440da16585076adb6aea04c281eb9fd492fc..fbd8726b46de72708b0e7411417667f815a4c482 100644
--- a/vendor/guzzlehttp/psr7/src/PumpStream.php
+++ b/vendor/guzzlehttp/psr7/src/PumpStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -51,7 +52,7 @@ class PumpStream implements StreamInterface
     public function __toString()
     {
         try {
-            return copy_to_string($this);
+            return Utils::copyToString($this);
         } catch (\Exception $e) {
             return '';
         }
@@ -66,6 +67,8 @@ class PumpStream implements StreamInterface
     {
         $this->tellPos = false;
         $this->source = null;
+
+        return null;
     }
 
     public function getSize()
diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php
index 59f337db11d45efcdad5f2f6f0fe2ea7f8952048..89fbb1e62e8a90b69d7b9b4cd8198fbf52a9eb04 100644
--- a/vendor/guzzlehttp/psr7/src/Request.php
+++ b/vendor/guzzlehttp/psr7/src/Request.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use InvalidArgumentException;
@@ -51,7 +52,7 @@ class Request implements RequestInterface
         }
 
         if ($body !== '' && $body !== null) {
-            $this->stream = stream_for($body);
+            $this->stream = Utils::streamFor($body);
         }
     }
 
diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php
index e7e04d86a6593c3fc310be047b1a1ef06cc71b6d..36b85fb7834fff648aef96b3b6e0af627d879651 100644
--- a/vendor/guzzlehttp/psr7/src/Response.php
+++ b/vendor/guzzlehttp/psr7/src/Response.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\ResponseInterface;
@@ -100,7 +101,7 @@ class Response implements ResponseInterface
         $this->statusCode = $status;
 
         if ($body !== '' && $body !== null) {
-            $this->stream = stream_for($body);
+            $this->stream = Utils::streamFor($body);
         }
 
         $this->setHeaders($headers);
@@ -134,7 +135,7 @@ class Response implements ResponseInterface
         if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) {
             $reasonPhrase = self::$phrases[$new->statusCode];
         }
-        $new->reasonPhrase = $reasonPhrase;
+        $new->reasonPhrase = (string) $reasonPhrase;
         return $new;
     }
 
diff --git a/vendor/guzzlehttp/psr7/src/ServerRequest.php b/vendor/guzzlehttp/psr7/src/ServerRequest.php
index 1a09a6c87c3af3ca9e315e48aee1e4da64c4eb31..72c5566cfab28999ebd5ed60255a6a2e57fe1a84 100644
--- a/vendor/guzzlehttp/psr7/src/ServerRequest.php
+++ b/vendor/guzzlehttp/psr7/src/ServerRequest.php
@@ -79,8 +79,10 @@ class ServerRequest extends Request implements ServerRequestInterface
      * Return an UploadedFile instance array.
      *
      * @param array $files A array which respect $_FILES structure
-     * @throws InvalidArgumentException for unrecognized values
+     *
      * @return array
+     *
+     * @throws InvalidArgumentException for unrecognized values
      */
     public static function normalizeFiles(array $files)
     {
diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php
index d9e7409c7c070d94a88ad8cc4d44d26fa243dc91..3865d6d6a1394793d5c3f1e31cf9c5b3e1cc748c 100644
--- a/vendor/guzzlehttp/psr7/src/Stream.php
+++ b/vendor/guzzlehttp/psr7/src/Stream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -76,8 +77,10 @@ class Stream implements StreamInterface
     public function __toString()
     {
         try {
-            $this->seek(0);
-            return (string) stream_get_contents($this->stream);
+            if ($this->isSeekable()) {
+                $this->seek(0);
+            }
+            return $this->getContents();
         } catch (\Exception $e) {
             return '';
         }
@@ -193,7 +196,7 @@ class Stream implements StreamInterface
     public function seek($offset, $whence = SEEK_SET)
     {
         $whence = (int) $whence;
-        
+
         if (!isset($this->stream)) {
             throw new \RuntimeException('Stream is detached');
         }
diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
index daec6f52ea740fe3312af92b63947bd9738168eb..093023b1c9ad3d6a19f8b85114939e37ba4d1c36 100644
--- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
+++ b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -52,7 +53,7 @@ trait StreamDecoratorTrait
 
     public function getContents()
     {
-        return copy_to_string($this);
+        return Utils::copyToString($this);
     }
 
     /**
@@ -140,6 +141,7 @@ trait StreamDecoratorTrait
      * Implement in subclasses to dynamically create streams when requested.
      *
      * @return StreamInterface
+     *
      * @throws \BadMethodCallException
      */
     protected function createStream()
diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
index 0f3a2856a2e592c1d57940fe6bb5be3cc8e46228..eac6535397986f710f233a158e3e5293e2d4cdf3 100644
--- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php
+++ b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -23,6 +24,7 @@ class StreamWrapper
      * @param StreamInterface $stream The stream to get a resource for
      *
      * @return resource
+     *
      * @throws \InvalidArgumentException if stream is not readable or writable
      */
     public static function getResource(StreamInterface $stream)
diff --git a/vendor/guzzlehttp/psr7/src/UploadedFile.php b/vendor/guzzlehttp/psr7/src/UploadedFile.php
index e62bd5c807698e37f2eb6e3c9a351aa9da18d05e..a0ea59e09bcb95391a410ee2a227afa1447de3fe 100644
--- a/vendor/guzzlehttp/psr7/src/UploadedFile.php
+++ b/vendor/guzzlehttp/psr7/src/UploadedFile.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use InvalidArgumentException;
@@ -85,6 +86,7 @@ class UploadedFile implements UploadedFileInterface
      * Depending on the value set file or stream variable
      *
      * @param mixed $streamOrFile
+     *
      * @throws InvalidArgumentException
      */
     private function setStreamOrFile($streamOrFile)
@@ -104,6 +106,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param int $error
+     *
      * @throws InvalidArgumentException
      */
     private function setError($error)
@@ -125,6 +128,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param int $size
+     *
      * @throws InvalidArgumentException
      */
     private function setSize($size)
@@ -158,6 +162,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param string|null $clientFilename
+     *
      * @throws InvalidArgumentException
      */
     private function setClientFilename($clientFilename)
@@ -173,6 +178,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param string|null $clientMediaType
+     *
      * @throws InvalidArgumentException
      */
     private function setClientMediaType($clientMediaType)
@@ -220,6 +226,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * {@inheritdoc}
+     *
      * @throws RuntimeException if the upload was not successful.
      */
     public function getStream()
@@ -238,7 +245,9 @@ class UploadedFile implements UploadedFileInterface
      *
      * @see http://php.net/is_uploaded_file
      * @see http://php.net/move_uploaded_file
+     *
      * @param string $targetPath Path to which to move the uploaded file.
+     *
      * @throws RuntimeException if the upload was not successful.
      * @throws InvalidArgumentException if the $path specified is invalid.
      * @throws RuntimeException on any error during the move operation, or on
@@ -259,7 +268,7 @@ class UploadedFile implements UploadedFileInterface
                 ? rename($this->file, $targetPath)
                 : move_uploaded_file($this->file, $targetPath);
         } else {
-            copy_to_stream(
+            Utils::copyToStream(
                 $this->getStream(),
                 new LazyOpenStream($targetPath, 'w')
             );
diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php
index 825a25eedb8270dcaeba9ca152c3e0621bab068c..a0d73917e2a2466f52738c03271cf69f49412a3f 100644
--- a/vendor/guzzlehttp/psr7/src/Uri.php
+++ b/vendor/guzzlehttp/psr7/src/Uri.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\UriInterface;
diff --git a/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/vendor/guzzlehttp/psr7/src/UriNormalizer.php
index 384c29e50864f584d947e75fddb39538b3862258..2b9174a5e7e2705eff7313d841902617a8a58b25 100644
--- a/vendor/guzzlehttp/psr7/src/UriNormalizer.php
+++ b/vendor/guzzlehttp/psr7/src/UriNormalizer.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\UriInterface;
diff --git a/vendor/guzzlehttp/psr7/src/UriResolver.php b/vendor/guzzlehttp/psr7/src/UriResolver.php
index c1cb8a275af212848f5014f424cc5732e4d32906..26cecd53a11f8bd1a3bb567160ab25ef7934f700 100644
--- a/vendor/guzzlehttp/psr7/src/UriResolver.php
+++ b/vendor/guzzlehttp/psr7/src/UriResolver.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\UriInterface;
diff --git a/vendor/guzzlehttp/psr7/src/functions.php b/vendor/guzzlehttp/psr7/src/functions.php
index 8e6dafe68ea0d4c53820faeac5f75de452e1c906..e4cc13619683e1da71256c486b63aa992bd6a800 100644
--- a/vendor/guzzlehttp/psr7/src/functions.php
+++ b/vendor/guzzlehttp/psr7/src/functions.php
@@ -1,10 +1,9 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\MessageInterface;
 use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\StreamInterface;
 use Psr\Http\Message\UriInterface;
 
@@ -14,52 +13,32 @@ use Psr\Http\Message\UriInterface;
  * @param MessageInterface $message Message to convert to a string.
  *
  * @return string
+ *
+ * @deprecated str will be removed in guzzlehttp/psr7:2.0. Use Message::toString instead.
  */
 function str(MessageInterface $message)
 {
-    if ($message instanceof RequestInterface) {
-        $msg = trim($message->getMethod() . ' '
-                . $message->getRequestTarget())
-            . ' HTTP/' . $message->getProtocolVersion();
-        if (!$message->hasHeader('host')) {
-            $msg .= "\r\nHost: " . $message->getUri()->getHost();
-        }
-    } elseif ($message instanceof ResponseInterface) {
-        $msg = 'HTTP/' . $message->getProtocolVersion() . ' '
-            . $message->getStatusCode() . ' '
-            . $message->getReasonPhrase();
-    } else {
-        throw new \InvalidArgumentException('Unknown message type');
-    }
-
-    foreach ($message->getHeaders() as $name => $values) {
-        $msg .= "\r\n{$name}: " . implode(', ', $values);
-    }
-
-    return "{$msg}\r\n\r\n" . $message->getBody();
+    return Message::toString($message);
 }
 
 /**
  * Returns a UriInterface for the given value.
  *
- * This function accepts a string or {@see Psr\Http\Message\UriInterface} and
- * returns a UriInterface for the given value. If the value is already a
- * `UriInterface`, it is returned as-is.
+ * This function accepts a string or UriInterface and returns a
+ * UriInterface for the given value. If the value is already a
+ * UriInterface, it is returned as-is.
  *
  * @param string|UriInterface $uri
  *
  * @return UriInterface
+ *
  * @throws \InvalidArgumentException
+ *
+ * @deprecated uri_for will be removed in guzzlehttp/psr7:2.0. Use Utils::uriFor instead.
  */
 function uri_for($uri)
 {
-    if ($uri instanceof UriInterface) {
-        return $uri;
-    } elseif (is_string($uri)) {
-        return new Uri($uri);
-    }
-
-    throw new \InvalidArgumentException('URI must be a string or UriInterface');
+    return Utils::uriFor($uri);
 }
 
 /**
@@ -69,86 +48,57 @@ function uri_for($uri)
  * - metadata: Array of custom metadata.
  * - size: Size of the stream.
  *
+ * This method accepts the following `$resource` types:
+ * - `Psr\Http\Message\StreamInterface`: Returns the value as-is.
+ * - `string`: Creates a stream object that uses the given string as the contents.
+ * - `resource`: Creates a stream object that wraps the given PHP stream resource.
+ * - `Iterator`: If the provided value implements `Iterator`, then a read-only
+ *   stream object will be created that wraps the given iterable. Each time the
+ *   stream is read from, data from the iterator will fill a buffer and will be
+ *   continuously called until the buffer is equal to the requested read size.
+ *   Subsequent read calls will first read from the buffer and then call `next`
+ *   on the underlying iterator until it is exhausted.
+ * - `object` with `__toString()`: If the object has the `__toString()` method,
+ *   the object will be cast to a string and then a stream will be returned that
+ *   uses the string value.
+ * - `NULL`: When `null` is passed, an empty stream object is returned.
+ * - `callable` When a callable is passed, a read-only stream object will be
+ *   created that invokes the given callable. The callable is invoked with the
+ *   number of suggested bytes to read. The callable can return any number of
+ *   bytes, but MUST return `false` when there is no more data to return. The
+ *   stream object that wraps the callable will invoke the callable until the
+ *   number of requested bytes are available. Any additional bytes will be
+ *   buffered and used in subsequent reads.
+ *
  * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data
  * @param array                                                                  $options  Additional options
  *
  * @return StreamInterface
+ *
  * @throws \InvalidArgumentException if the $resource arg is not valid.
+ *
+ * @deprecated stream_for will be removed in guzzlehttp/psr7:2.0. Use Utils::streamFor instead.
  */
 function stream_for($resource = '', array $options = [])
 {
-    if (is_scalar($resource)) {
-        $stream = fopen('php://temp', 'r+');
-        if ($resource !== '') {
-            fwrite($stream, $resource);
-            fseek($stream, 0);
-        }
-        return new Stream($stream, $options);
-    }
-
-    switch (gettype($resource)) {
-        case 'resource':
-            return new Stream($resource, $options);
-        case 'object':
-            if ($resource instanceof StreamInterface) {
-                return $resource;
-            } elseif ($resource instanceof \Iterator) {
-                return new PumpStream(function () use ($resource) {
-                    if (!$resource->valid()) {
-                        return false;
-                    }
-                    $result = $resource->current();
-                    $resource->next();
-                    return $result;
-                }, $options);
-            } elseif (method_exists($resource, '__toString')) {
-                return stream_for((string) $resource, $options);
-            }
-            break;
-        case 'NULL':
-            return new Stream(fopen('php://temp', 'r+'), $options);
-    }
-
-    if (is_callable($resource)) {
-        return new PumpStream($resource, $options);
-    }
-
-    throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource));
+    return Utils::streamFor($resource, $options);
 }
 
 /**
  * Parse an array of header values containing ";" separated data into an
- * array of associative arrays representing the header key value pair
- * data of the header. When a parameter does not contain a value, but just
+ * array of associative arrays representing the header key value pair data
+ * of the header. When a parameter does not contain a value, but just
  * contains a key, this function will inject a key with a '' string value.
  *
  * @param string|array $header Header to parse into components.
  *
  * @return array Returns the parsed header values.
+ *
+ * @deprecated parse_header will be removed in guzzlehttp/psr7:2.0. Use Header::parse instead.
  */
 function parse_header($header)
 {
-    static $trimmed = "\"'  \n\t\r";
-    $params = $matches = [];
-
-    foreach (normalize_header($header) as $val) {
-        $part = [];
-        foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
-            if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
-                $m = $matches[0];
-                if (isset($m[1])) {
-                    $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
-                } else {
-                    $part[] = trim($m[0], $trimmed);
-                }
-            }
-        }
-        if ($part) {
-            $params[] = $part;
-        }
-    }
-
-    return $params;
+    return Header::parse($header);
 }
 
 /**
@@ -158,32 +108,20 @@ function parse_header($header)
  * @param string|array $header Header to normalize.
  *
  * @return array Returns the normalized header field values.
+ *
+ * @deprecated normalize_header will be removed in guzzlehttp/psr7:2.0. Use Header::normalize instead.
  */
 function normalize_header($header)
 {
-    if (!is_array($header)) {
-        return array_map('trim', explode(',', $header));
-    }
-
-    $result = [];
-    foreach ($header as $value) {
-        foreach ((array) $value as $v) {
-            if (strpos($v, ',') === false) {
-                $result[] = $v;
-                continue;
-            }
-            foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
-                $result[] = trim($vv);
-            }
-        }
-    }
-
-    return $result;
+    return Header::normalize($header);
 }
 
 /**
  * Clone and modify a request with the given changes.
  *
+ * This method is useful for reducing the number of clones needed to mutate a
+ * message.
+ *
  * The changes can be one of:
  * - method: (string) Changes the HTTP method.
  * - set_headers: (array) Sets the given headers.
@@ -197,72 +135,12 @@ function normalize_header($header)
  * @param array            $changes Changes to apply.
  *
  * @return RequestInterface
+ *
+ * @deprecated modify_request will be removed in guzzlehttp/psr7:2.0. Use Utils::modifyRequest instead.
  */
 function modify_request(RequestInterface $request, array $changes)
 {
-    if (!$changes) {
-        return $request;
-    }
-
-    $headers = $request->getHeaders();
-
-    if (!isset($changes['uri'])) {
-        $uri = $request->getUri();
-    } else {
-        // Remove the host header if one is on the URI
-        if ($host = $changes['uri']->getHost()) {
-            $changes['set_headers']['Host'] = $host;
-
-            if ($port = $changes['uri']->getPort()) {
-                $standardPorts = ['http' => 80, 'https' => 443];
-                $scheme = $changes['uri']->getScheme();
-                if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) {
-                    $changes['set_headers']['Host'] .= ':'.$port;
-                }
-            }
-        }
-        $uri = $changes['uri'];
-    }
-
-    if (!empty($changes['remove_headers'])) {
-        $headers = _caseless_remove($changes['remove_headers'], $headers);
-    }
-
-    if (!empty($changes['set_headers'])) {
-        $headers = _caseless_remove(array_keys($changes['set_headers']), $headers);
-        $headers = $changes['set_headers'] + $headers;
-    }
-
-    if (isset($changes['query'])) {
-        $uri = $uri->withQuery($changes['query']);
-    }
-
-    if ($request instanceof ServerRequestInterface) {
-        return (new ServerRequest(
-            isset($changes['method']) ? $changes['method'] : $request->getMethod(),
-            $uri,
-            $headers,
-            isset($changes['body']) ? $changes['body'] : $request->getBody(),
-            isset($changes['version'])
-                ? $changes['version']
-                : $request->getProtocolVersion(),
-            $request->getServerParams()
-        ))
-        ->withParsedBody($request->getParsedBody())
-        ->withQueryParams($request->getQueryParams())
-        ->withCookieParams($request->getCookieParams())
-        ->withUploadedFiles($request->getUploadedFiles());
-    }
-
-    return new Request(
-        isset($changes['method']) ? $changes['method'] : $request->getMethod(),
-        $uri,
-        $headers,
-        isset($changes['body']) ? $changes['body'] : $request->getBody(),
-        isset($changes['version'])
-            ? $changes['version']
-            : $request->getProtocolVersion()
-    );
+    return Utils::modifyRequest($request, $changes);
 }
 
 /**
@@ -274,14 +152,12 @@ function modify_request(RequestInterface $request, array $changes)
  * @param MessageInterface $message Message to rewind
  *
  * @throws \RuntimeException
+ *
+ * @deprecated rewind_body will be removed in guzzlehttp/psr7:2.0. Use Message::rewindBody instead.
  */
 function rewind_body(MessageInterface $message)
 {
-    $body = $message->getBody();
-
-    if ($body->tell()) {
-        $body->rewind();
-    }
+    Message::rewindBody($message);
 }
 
 /**
@@ -294,29 +170,14 @@ function rewind_body(MessageInterface $message)
  * @param string $mode     Mode used to open the file
  *
  * @return resource
+ *
  * @throws \RuntimeException if the file cannot be opened
+ *
+ * @deprecated try_fopen will be removed in guzzlehttp/psr7:2.0. Use Utils::tryFopen instead.
  */
 function try_fopen($filename, $mode)
 {
-    $ex = null;
-    set_error_handler(function () use ($filename, $mode, &$ex) {
-        $ex = new \RuntimeException(sprintf(
-            'Unable to open %s using mode %s: %s',
-            $filename,
-            $mode,
-            func_get_args()[1]
-        ));
-    });
-
-    $handle = fopen($filename, $mode);
-    restore_error_handler();
-
-    if ($ex) {
-        /** @var $ex \RuntimeException */
-        throw $ex;
-    }
-
-    return $handle;
+    return Utils::tryFopen($filename, $mode);
 }
 
 /**
@@ -327,36 +188,14 @@ function try_fopen($filename, $mode)
  * @param int             $maxLen Maximum number of bytes to read. Pass -1
  *                                to read the entire stream.
  * @return string
+ *
  * @throws \RuntimeException on error.
+ *
+ * @deprecated copy_to_string will be removed in guzzlehttp/psr7:2.0. Use Utils::copyToString instead.
  */
 function copy_to_string(StreamInterface $stream, $maxLen = -1)
 {
-    $buffer = '';
-
-    if ($maxLen === -1) {
-        while (!$stream->eof()) {
-            $buf = $stream->read(1048576);
-            // Using a loose equality here to match on '' and false.
-            if ($buf == null) {
-                break;
-            }
-            $buffer .= $buf;
-        }
-        return $buffer;
-    }
-
-    $len = 0;
-    while (!$stream->eof() && $len < $maxLen) {
-        $buf = $stream->read($maxLen - $len);
-        // Using a loose equality here to match on '' and false.
-        if ($buf == null) {
-            break;
-        }
-        $buffer .= $buf;
-        $len = strlen($buffer);
-    }
-
-    return $buffer;
+    return Utils::copyToString($stream, $maxLen);
 }
 
 /**
@@ -369,92 +208,48 @@ function copy_to_string(StreamInterface $stream, $maxLen = -1)
  *                                to read the entire stream.
  *
  * @throws \RuntimeException on error.
+ *
+ * @deprecated copy_to_stream will be removed in guzzlehttp/psr7:2.0. Use Utils::copyToStream instead.
  */
-function copy_to_stream(
-    StreamInterface $source,
-    StreamInterface $dest,
-    $maxLen = -1
-) {
-    $bufferSize = 8192;
-
-    if ($maxLen === -1) {
-        while (!$source->eof()) {
-            if (!$dest->write($source->read($bufferSize))) {
-                break;
-            }
-        }
-    } else {
-        $remaining = $maxLen;
-        while ($remaining > 0 && !$source->eof()) {
-            $buf = $source->read(min($bufferSize, $remaining));
-            $len = strlen($buf);
-            if (!$len) {
-                break;
-            }
-            $remaining -= $len;
-            $dest->write($buf);
-        }
-    }
+function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)
+{
+    return Utils::copyToStream($source, $dest, $maxLen);
 }
 
 /**
- * Calculate a hash of a Stream
+ * Calculate a hash of a stream.
+ *
+ * This method reads the entire stream to calculate a rolling hash, based on
+ * PHP's `hash_init` functions.
  *
  * @param StreamInterface $stream    Stream to calculate the hash for
  * @param string          $algo      Hash algorithm (e.g. md5, crc32, etc)
  * @param bool            $rawOutput Whether or not to use raw output
  *
  * @return string Returns the hash of the stream
+ *
  * @throws \RuntimeException on error.
+ *
+ * @deprecated hash will be removed in guzzlehttp/psr7:2.0. Use Utils::hash instead.
  */
-function hash(
-    StreamInterface $stream,
-    $algo,
-    $rawOutput = false
-) {
-    $pos = $stream->tell();
-
-    if ($pos > 0) {
-        $stream->rewind();
-    }
-
-    $ctx = hash_init($algo);
-    while (!$stream->eof()) {
-        hash_update($ctx, $stream->read(1048576));
-    }
-
-    $out = hash_final($ctx, (bool) $rawOutput);
-    $stream->seek($pos);
-
-    return $out;
+function hash(StreamInterface $stream, $algo, $rawOutput = false)
+{
+    return Utils::hash($stream, $algo, $rawOutput);
 }
 
 /**
- * Read a line from the stream up to the maximum allowed buffer length
+ * Read a line from the stream up to the maximum allowed buffer length.
  *
  * @param StreamInterface $stream    Stream to read from
- * @param int             $maxLength Maximum buffer length
+ * @param int|null        $maxLength Maximum buffer length
  *
  * @return string
+ *
+ * @deprecated readline will be removed in guzzlehttp/psr7:2.0. Use Utils::readLine instead.
  */
 function readline(StreamInterface $stream, $maxLength = null)
 {
-    $buffer = '';
-    $size = 0;
-
-    while (!$stream->eof()) {
-        // Using a loose equality here to match on '' and false.
-        if (null == ($byte = $stream->read(1))) {
-            return $buffer;
-        }
-        $buffer .= $byte;
-        // Break when a new line is found or the max length - 1 is reached
-        if ($byte === "\n" || ++$size === $maxLength - 1) {
-            break;
-        }
-    }
-
-    return $buffer;
+    return Utils::readLine($stream, $maxLength);
 }
 
 /**
@@ -463,26 +258,12 @@ function readline(StreamInterface $stream, $maxLength = null)
  * @param string $message Request message string.
  *
  * @return Request
+ *
+ * @deprecated parse_request will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequest instead.
  */
 function parse_request($message)
 {
-    $data = _parse_message($message);
-    $matches = [];
-    if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) {
-        throw new \InvalidArgumentException('Invalid request string');
-    }
-    $parts = explode(' ', $data['start-line'], 3);
-    $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1';
-
-    $request = new Request(
-        $parts[0],
-        $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1],
-        $data['headers'],
-        $data['body'],
-        $version
-    );
-
-    return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]);
+    return Message::parseRequest($message);
 }
 
 /**
@@ -491,139 +272,66 @@ function parse_request($message)
  * @param string $message Response message string.
  *
  * @return Response
+ *
+ * @deprecated parse_response will be removed in guzzlehttp/psr7:2.0. Use Message::parseResponse instead.
  */
 function parse_response($message)
 {
-    $data = _parse_message($message);
-    // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space
-    // between status-code and reason-phrase is required. But browsers accept
-    // responses without space and reason as well.
-    if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) {
-        throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']);
-    }
-    $parts = explode(' ', $data['start-line'], 3);
-
-    return new Response(
-        $parts[1],
-        $data['headers'],
-        $data['body'],
-        explode('/', $parts[0])[1],
-        isset($parts[2]) ? $parts[2] : null
-    );
+    return Message::parseResponse($message);
 }
 
 /**
  * Parse a query string into an associative array.
  *
- * If multiple values are found for the same key, the value of that key
- * value pair will become an array. This function does not parse nested
- * PHP style arrays into an associative array (e.g., foo[a]=1&foo[b]=2 will
- * be parsed into ['foo[a]' => '1', 'foo[b]' => '2']).
+ * If multiple values are found for the same key, the value of that key value
+ * pair will become an array. This function does not parse nested PHP style
+ * arrays into an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed
+ * into `['foo[a]' => '1', 'foo[b]' => '2'])`.
  *
  * @param string   $str         Query string to parse
  * @param int|bool $urlEncoding How the query string is encoded
  *
  * @return array
+ *
+ * @deprecated parse_query will be removed in guzzlehttp/psr7:2.0. Use Query::parse instead.
  */
 function parse_query($str, $urlEncoding = true)
 {
-    $result = [];
-
-    if ($str === '') {
-        return $result;
-    }
-
-    if ($urlEncoding === true) {
-        $decoder = function ($value) {
-            return rawurldecode(str_replace('+', ' ', $value));
-        };
-    } elseif ($urlEncoding === PHP_QUERY_RFC3986) {
-        $decoder = 'rawurldecode';
-    } elseif ($urlEncoding === PHP_QUERY_RFC1738) {
-        $decoder = 'urldecode';
-    } else {
-        $decoder = function ($str) { return $str; };
-    }
-
-    foreach (explode('&', $str) as $kvp) {
-        $parts = explode('=', $kvp, 2);
-        $key = $decoder($parts[0]);
-        $value = isset($parts[1]) ? $decoder($parts[1]) : null;
-        if (!isset($result[$key])) {
-            $result[$key] = $value;
-        } else {
-            if (!is_array($result[$key])) {
-                $result[$key] = [$result[$key]];
-            }
-            $result[$key][] = $value;
-        }
-    }
-
-    return $result;
+    return Query::parse($str, $urlEncoding);
 }
 
 /**
  * Build a query string from an array of key value pairs.
  *
- * This function can use the return value of parse_query() to build a query
+ * This function can use the return value of `parse_query()` to build a query
  * string. This function does not modify the provided keys when an array is
- * encountered (like http_build_query would).
+ * encountered (like `http_build_query()` would).
  *
  * @param array     $params   Query string parameters.
  * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
  *                            to encode using RFC3986, or PHP_QUERY_RFC1738
  *                            to encode using RFC1738.
  * @return string
+ *
+ * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead.
  */
 function build_query(array $params, $encoding = PHP_QUERY_RFC3986)
 {
-    if (!$params) {
-        return '';
-    }
-
-    if ($encoding === false) {
-        $encoder = function ($str) { return $str; };
-    } elseif ($encoding === PHP_QUERY_RFC3986) {
-        $encoder = 'rawurlencode';
-    } elseif ($encoding === PHP_QUERY_RFC1738) {
-        $encoder = 'urlencode';
-    } else {
-        throw new \InvalidArgumentException('Invalid type');
-    }
-
-    $qs = '';
-    foreach ($params as $k => $v) {
-        $k = $encoder($k);
-        if (!is_array($v)) {
-            $qs .= $k;
-            if ($v !== null) {
-                $qs .= '=' . $encoder($v);
-            }
-            $qs .= '&';
-        } else {
-            foreach ($v as $vv) {
-                $qs .= $k;
-                if ($vv !== null) {
-                    $qs .= '=' . $encoder($vv);
-                }
-                $qs .= '&';
-            }
-        }
-    }
-
-    return $qs ? (string) substr($qs, 0, -1) : '';
+    return Query::build($params, $encoding);
 }
 
 /**
  * Determines the mimetype of a file by looking at its extension.
  *
- * @param $filename
+ * @param string $filename
+ *
+ * @return string|null
  *
- * @return null|string
+ * @deprecated mimetype_from_filename will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromFilename instead.
  */
 function mimetype_from_filename($filename)
 {
-    return mimetype_from_extension(pathinfo($filename, PATHINFO_EXTENSION));
+    return MimeType::fromFilename($filename);
 }
 
 /**
@@ -632,119 +340,13 @@ function mimetype_from_filename($filename)
  * @param $extension string The file extension.
  *
  * @return string|null
+ *
  * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
+ * @deprecated mimetype_from_extension will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromExtension instead.
  */
 function mimetype_from_extension($extension)
 {
-    static $mimetypes = [
-        '3gp' => 'video/3gpp',
-        '7z' => 'application/x-7z-compressed',
-        'aac' => 'audio/x-aac',
-        'ai' => 'application/postscript',
-        'aif' => 'audio/x-aiff',
-        'asc' => 'text/plain',
-        'asf' => 'video/x-ms-asf',
-        'atom' => 'application/atom+xml',
-        'avi' => 'video/x-msvideo',
-        'bmp' => 'image/bmp',
-        'bz2' => 'application/x-bzip2',
-        'cer' => 'application/pkix-cert',
-        'crl' => 'application/pkix-crl',
-        'crt' => 'application/x-x509-ca-cert',
-        'css' => 'text/css',
-        'csv' => 'text/csv',
-        'cu' => 'application/cu-seeme',
-        'deb' => 'application/x-debian-package',
-        'doc' => 'application/msword',
-        'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
-        'dvi' => 'application/x-dvi',
-        'eot' => 'application/vnd.ms-fontobject',
-        'eps' => 'application/postscript',
-        'epub' => 'application/epub+zip',
-        'etx' => 'text/x-setext',
-        'flac' => 'audio/flac',
-        'flv' => 'video/x-flv',
-        'gif' => 'image/gif',
-        'gz' => 'application/gzip',
-        'htm' => 'text/html',
-        'html' => 'text/html',
-        'ico' => 'image/x-icon',
-        'ics' => 'text/calendar',
-        'ini' => 'text/plain',
-        'iso' => 'application/x-iso9660-image',
-        'jar' => 'application/java-archive',
-        'jpe' => 'image/jpeg',
-        'jpeg' => 'image/jpeg',
-        'jpg' => 'image/jpeg',
-        'js' => 'text/javascript',
-        'json' => 'application/json',
-        'latex' => 'application/x-latex',
-        'log' => 'text/plain',
-        'm4a' => 'audio/mp4',
-        'm4v' => 'video/mp4',
-        'mid' => 'audio/midi',
-        'midi' => 'audio/midi',
-        'mov' => 'video/quicktime',
-        'mkv' => 'video/x-matroska',
-        'mp3' => 'audio/mpeg',
-        'mp4' => 'video/mp4',
-        'mp4a' => 'audio/mp4',
-        'mp4v' => 'video/mp4',
-        'mpe' => 'video/mpeg',
-        'mpeg' => 'video/mpeg',
-        'mpg' => 'video/mpeg',
-        'mpg4' => 'video/mp4',
-        'oga' => 'audio/ogg',
-        'ogg' => 'audio/ogg',
-        'ogv' => 'video/ogg',
-        'ogx' => 'application/ogg',
-        'pbm' => 'image/x-portable-bitmap',
-        'pdf' => 'application/pdf',
-        'pgm' => 'image/x-portable-graymap',
-        'png' => 'image/png',
-        'pnm' => 'image/x-portable-anymap',
-        'ppm' => 'image/x-portable-pixmap',
-        'ppt' => 'application/vnd.ms-powerpoint',
-        'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
-        'ps' => 'application/postscript',
-        'qt' => 'video/quicktime',
-        'rar' => 'application/x-rar-compressed',
-        'ras' => 'image/x-cmu-raster',
-        'rss' => 'application/rss+xml',
-        'rtf' => 'application/rtf',
-        'sgm' => 'text/sgml',
-        'sgml' => 'text/sgml',
-        'svg' => 'image/svg+xml',
-        'swf' => 'application/x-shockwave-flash',
-        'tar' => 'application/x-tar',
-        'tif' => 'image/tiff',
-        'tiff' => 'image/tiff',
-        'torrent' => 'application/x-bittorrent',
-        'ttf' => 'application/x-font-ttf',
-        'txt' => 'text/plain',
-        'wav' => 'audio/x-wav',
-        'webm' => 'video/webm',
-        'webp' => 'image/webp',
-        'wma' => 'audio/x-ms-wma',
-        'wmv' => 'video/x-ms-wmv',
-        'woff' => 'application/x-font-woff',
-        'wsdl' => 'application/wsdl+xml',
-        'xbm' => 'image/x-xbitmap',
-        'xls' => 'application/vnd.ms-excel',
-        'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
-        'xml' => 'application/xml',
-        'xpm' => 'image/x-xpixmap',
-        'xwd' => 'image/x-xwindowdump',
-        'yaml' => 'text/yaml',
-        'yml' => 'text/yaml',
-        'zip' => 'application/zip',
-    ];
-
-    $extension = strtolower($extension);
-
-    return isset($mimetypes[$extension])
-        ? $mimetypes[$extension]
-        : null;
+    return MimeType::fromExtension($extension);
 }
 
 /**
@@ -757,61 +359,13 @@ function mimetype_from_extension($extension)
  * @param string $message HTTP request or response to parse.
  *
  * @return array
+ *
  * @internal
+ * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead.
  */
 function _parse_message($message)
 {
-    if (!$message) {
-        throw new \InvalidArgumentException('Invalid message');
-    }
-
-    $message = ltrim($message, "\r\n");
-
-    $messageParts = preg_split("/\r?\n\r?\n/", $message, 2);
-
-    if ($messageParts === false || count($messageParts) !== 2) {
-        throw new \InvalidArgumentException('Invalid message: Missing header delimiter');
-    }
-
-    list($rawHeaders, $body) = $messageParts;
-    $rawHeaders .= "\r\n"; // Put back the delimiter we split previously
-    $headerParts = preg_split("/\r?\n/", $rawHeaders, 2);
-
-    if ($headerParts === false || count($headerParts) !== 2) {
-        throw new \InvalidArgumentException('Invalid message: Missing status line');
-    }
-
-    list($startLine, $rawHeaders) = $headerParts;
-
-    if (preg_match("/(?:^HTTP\/|^[A-Z]+ \S+ HTTP\/)(\d+(?:\.\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') {
-        // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0
-        $rawHeaders = preg_replace(Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders);
-    }
-
-    /** @var array[] $headerLines */
-    $count = preg_match_all(Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, PREG_SET_ORDER);
-
-    // If these aren't the same, then one line didn't match and there's an invalid header.
-    if ($count !== substr_count($rawHeaders, "\n")) {
-        // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4
-        if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) {
-            throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding');
-        }
-
-        throw new \InvalidArgumentException('Invalid header syntax');
-    }
-
-    $headers = [];
-
-    foreach ($headerLines as $headerLine) {
-        $headers[$headerLine[1]][] = $headerLine[2];
-    }
-
-    return [
-        'start-line' => $startLine,
-        'headers' => $headers,
-        'body' => $body,
-    ];
+    return Message::parseMessage($message);
 }
 
 /**
@@ -821,79 +375,43 @@ function _parse_message($message)
  * @param array  $headers Array of headers (each value an array).
  *
  * @return string
+ *
  * @internal
+ * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead.
  */
 function _parse_request_uri($path, array $headers)
 {
-    $hostKey = array_filter(array_keys($headers), function ($k) {
-        return strtolower($k) === 'host';
-    });
-
-    // If no host is found, then a full URI cannot be constructed.
-    if (!$hostKey) {
-        return $path;
-    }
-
-    $host = $headers[reset($hostKey)][0];
-    $scheme = substr($host, -4) === ':443' ? 'https' : 'http';
-
-    return $scheme . '://' . $host . '/' . ltrim($path, '/');
+    return Message::parseRequestUri($path, $headers);
 }
 
 /**
- * Get a short summary of the message body
+ * Get a short summary of the message body.
  *
  * Will return `null` if the response is not printable.
  *
  * @param MessageInterface $message    The message to get the body summary
  * @param int              $truncateAt The maximum allowed size of the summary
  *
- * @return null|string
+ * @return string|null
+ *
+ * @deprecated get_message_body_summary will be removed in guzzlehttp/psr7:2.0. Use Message::bodySummary instead.
  */
 function get_message_body_summary(MessageInterface $message, $truncateAt = 120)
 {
-    $body = $message->getBody();
-
-    if (!$body->isSeekable() || !$body->isReadable()) {
-        return null;
-    }
-
-    $size = $body->getSize();
-
-    if ($size === 0) {
-        return null;
-    }
-
-    $summary = $body->read($truncateAt);
-    $body->rewind();
-
-    if ($size > $truncateAt) {
-        $summary .= ' (truncated...)';
-    }
-
-    // Matches any printable character, including unicode characters:
-    // letters, marks, numbers, punctuation, spacing, and separators.
-    if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) {
-        return null;
-    }
-
-    return $summary;
+    return Message::bodySummary($message, $truncateAt);
 }
 
-/** @internal */
+/**
+ * Remove the items given by the keys, case insensitively from the data.
+ *
+ * @param iterable<string> $keys
+ *
+ * @return array
+ *
+ * @internal
+ * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead.
+ */
 function _caseless_remove($keys, array $data)
 {
-    $result = [];
-
-    foreach ($keys as &$key) {
-        $key = strtolower($key);
-    }
-
-    foreach ($data as $k => $v) {
-        if (!in_array(strtolower($k), $keys)) {
-            $result[$k] = $v;
-        }
-    }
-
-    return $result;
+    return Utils::caselessRemove($keys, $data);
 }
diff --git a/vendor/hab/solr b/vendor/hab/solr
index a54f2c7495dacc5cd0964fba25e1fa2b89cc03fe..ef528a52d57493ad2ae575037e42442075135f62 160000
--- a/vendor/hab/solr
+++ b/vendor/hab/solr
@@ -1 +1 @@
-Subproject commit a54f2c7495dacc5cd0964fba25e1fa2b89cc03fe
+Subproject commit ef528a52d57493ad2ae575037e42442075135f62
diff --git a/vendor/pimple/pimple/.travis.yml b/vendor/pimple/pimple/.travis.yml
index 196f7fc190045512d89d888eddac3b4fdc5d2f54..723904a78d67d1af4d4defde1c096d3f4db15391 100644
--- a/vendor/pimple/pimple/.travis.yml
+++ b/vendor/pimple/pimple/.travis.yml
@@ -1,40 +1,17 @@
 language: php
 
 env:
-  matrix:
-    - PIMPLE_EXT=no
-    - PIMPLE_EXT=yes
   global:
     - REPORT_EXIT_STATUS=1
 
 php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - 7.1
+  - 7.2
+  - 7.3
+  - 7.4
 
 before_script:
   - composer self-update
   - COMPOSER_ROOT_VERSION=dev-master composer install
-  - if [ "$PIMPLE_EXT" == "yes" ]; then sh -c "cd ext/pimple && phpize && ./configure && make && sudo make install"; fi
-  - if [ "$PIMPLE_EXT" == "yes" ]; then echo "extension=pimple.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi
 
 script:
-  - cd ext/pimple
-  - if [ "$PIMPLE_EXT" == "yes" ]; then yes n | make test | tee output ; grep -E 'Tests failed +. +0' output; fi
-  - if [ "$PIMPLE_EXT" == "yes" ]; then export SYMFONY_DEPRECATIONS_HELPER=weak; fi
-  - cd ../..
   - ./vendor/bin/simple-phpunit
-
-matrix:
-  include:
-    - php: hhvm
-      dist: trusty
-      env: PIMPLE_EXT=no
-  exclude:
-    - php: 7.0
-      env: PIMPLE_EXT=yes
-    - php: 7.1
-      env: PIMPLE_EXT=yes
diff --git a/vendor/pimple/pimple/CHANGELOG b/vendor/pimple/pimple/CHANGELOG
index ba56760c1f593423f98109afd1cb649a1ef0c18d..219895740b08eeebd89701a9171eb41a2662b31f 100644
--- a/vendor/pimple/pimple/CHANGELOG
+++ b/vendor/pimple/pimple/CHANGELOG
@@ -1,6 +1,11 @@
-* 3.2.3 (2017-XX-XX)
+* 3.3.0 (2020-03-03)
 
- * n/a
+ * Drop PHP extension
+ * Bump min PHP version to 7.2.5
+
+* 3.2.3 (2018-01-21)
+
+ * prefixed all function calls with \ for extra speed
 
 * 3.2.2 (2017-07-23)
 
diff --git a/vendor/pimple/pimple/LICENSE b/vendor/pimple/pimple/LICENSE
index e02dc5a78dfa28eb60f5483cfefcaf14426413ba..3e2a9e1e6d226236afa9f5f8fffd78db265cd2b7 100644
--- a/vendor/pimple/pimple/LICENSE
+++ b/vendor/pimple/pimple/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2017 Fabien Potencier
+Copyright (c) 2009-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/pimple/pimple/composer.json b/vendor/pimple/pimple/composer.json
index dabf190a9adeee9541b94a66760ccc0e1443f2ff..ef8a83db3d26d45822524cdee39086e11df09000 100644
--- a/vendor/pimple/pimple/composer.json
+++ b/vendor/pimple/pimple/composer.json
@@ -3,7 +3,7 @@
     "type": "library",
     "description": "Pimple, a simple Dependency Injection Container",
     "keywords": ["dependency injection", "container"],
-    "homepage": "http://pimple.sensiolabs.org",
+    "homepage": "https://pimple.symfony.com",
     "license": "MIT",
     "authors": [
         {
@@ -12,18 +12,18 @@
         }
     ],
     "require": {
-        "php": ">=5.3.0",
+        "php": "^7.2.5",
         "psr/container": "^1.0"
     },
     "require-dev": {
-        "symfony/phpunit-bridge": "^3.2"
+        "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
     },
     "autoload": {
         "psr-0": { "Pimple": "src/" }
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "3.2.x-dev"
+            "dev-master": "3.3.x-dev"
         }
     }
 }
diff --git a/vendor/pimple/pimple/ext/pimple/.gitignore b/vendor/pimple/pimple/ext/pimple/.gitignore
deleted file mode 100644
index 1861088ac1f64d178e0365a926108e05caa42012..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/.gitignore
+++ /dev/null
@@ -1,30 +0,0 @@
-*.sw*
-.deps
-Makefile
-Makefile.fragments
-Makefile.global
-Makefile.objects
-acinclude.m4
-aclocal.m4
-build/
-config.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.nice
-config.status
-config.sub
-configure
-configure.in
-install-sh
-libtool
-ltmain.sh
-missing
-mkinstalldirs
-run-tests.php
-*.loT
-.libs/
-modules/
-*.la
-*.lo
diff --git a/vendor/pimple/pimple/ext/pimple/README.md b/vendor/pimple/pimple/ext/pimple/README.md
deleted file mode 100644
index 7b39eb2929ea03396fcb0f44a66ee97a3b346e6a..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-This is Pimple 2 implemented in C
-
-* PHP >= 5.3
-* Not tested under Windows, might work
-
-Install
-=======
-
-    > phpize
-    > ./configure
-    > make
-    > make install
diff --git a/vendor/pimple/pimple/ext/pimple/config.m4 b/vendor/pimple/pimple/ext/pimple/config.m4
deleted file mode 100644
index 3a6e9aaeb1580a1387ed4e8946ea0d3fd59edfd2..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/config.m4
+++ /dev/null
@@ -1,63 +0,0 @@
-dnl $Id$
-dnl config.m4 for extension pimple
-
-dnl Comments in this file start with the string 'dnl'.
-dnl Remove where necessary. This file will not work
-dnl without editing.
-
-dnl If your extension references something external, use with:
-
-dnl PHP_ARG_WITH(pimple, for pimple support,
-dnl Make sure that the comment is aligned:
-dnl [  --with-pimple             Include pimple support])
-
-dnl Otherwise use enable:
-
-PHP_ARG_ENABLE(pimple, whether to enable pimple support,
-dnl Make sure that the comment is aligned:
-[  --enable-pimple           Enable pimple support])
-
-if test "$PHP_PIMPLE" != "no"; then
-  dnl Write more examples of tests here...
-
-  dnl # --with-pimple -> check with-path
-  dnl SEARCH_PATH="/usr/local /usr"     # you might want to change this
-  dnl SEARCH_FOR="/include/pimple.h"  # you most likely want to change this
-  dnl if test -r $PHP_PIMPLE/$SEARCH_FOR; then # path given as parameter
-  dnl   PIMPLE_DIR=$PHP_PIMPLE
-  dnl else # search default path list
-  dnl   AC_MSG_CHECKING([for pimple files in default path])
-  dnl   for i in $SEARCH_PATH ; do
-  dnl     if test -r $i/$SEARCH_FOR; then
-  dnl       PIMPLE_DIR=$i
-  dnl       AC_MSG_RESULT(found in $i)
-  dnl     fi
-  dnl   done
-  dnl fi
-  dnl
-  dnl if test -z "$PIMPLE_DIR"; then
-  dnl   AC_MSG_RESULT([not found])
-  dnl   AC_MSG_ERROR([Please reinstall the pimple distribution])
-  dnl fi
-
-  dnl # --with-pimple -> add include path
-  dnl PHP_ADD_INCLUDE($PIMPLE_DIR/include)
-
-  dnl # --with-pimple -> check for lib and symbol presence
-  dnl LIBNAME=pimple # you may want to change this
-  dnl LIBSYMBOL=pimple # you most likely want to change this
-
-  dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
-  dnl [
-  dnl   PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $PIMPLE_DIR/lib, PIMPLE_SHARED_LIBADD)
-  dnl   AC_DEFINE(HAVE_PIMPLELIB,1,[ ])
-  dnl ],[
-  dnl   AC_MSG_ERROR([wrong pimple lib version or lib not found])
-  dnl ],[
-  dnl   -L$PIMPLE_DIR/lib -lm
-  dnl ])
-  dnl
-  dnl PHP_SUBST(PIMPLE_SHARED_LIBADD)
-
-  PHP_NEW_EXTENSION(pimple, pimple.c, $ext_shared)
-fi
diff --git a/vendor/pimple/pimple/ext/pimple/config.w32 b/vendor/pimple/pimple/ext/pimple/config.w32
deleted file mode 100644
index 39857b3254be87fe7898be122bb94aa0edd8232b..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/config.w32
+++ /dev/null
@@ -1,13 +0,0 @@
-// $Id$
-// vim:ft=javascript
-
-// If your extension references something external, use ARG_WITH
-// ARG_WITH("pimple", "for pimple support", "no");
-
-// Otherwise, use ARG_ENABLE
-// ARG_ENABLE("pimple", "enable pimple support", "no");
-
-if (PHP_PIMPLE != "no") {
-	EXTENSION("pimple", "pimple.c");
-}
-
diff --git a/vendor/pimple/pimple/ext/pimple/php_pimple.h b/vendor/pimple/pimple/ext/pimple/php_pimple.h
deleted file mode 100644
index eed7c1731d48bd1d0fa2a7c53f099fe2d4613b52..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/php_pimple.h
+++ /dev/null
@@ -1,137 +0,0 @@
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2014 Fabien Potencier
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is furnished
- * to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef PHP_PIMPLE_H
-#define PHP_PIMPLE_H
-
-extern zend_module_entry pimple_module_entry;
-#define phpext_pimple_ptr &pimple_module_entry
-
-#ifdef PHP_WIN32
-#	define PHP_PIMPLE_API __declspec(dllexport)
-#elif defined(__GNUC__) && __GNUC__ >= 4
-#	define PHP_PIMPLE_API __attribute__ ((visibility("default")))
-#else
-#	define PHP_PIMPLE_API
-#endif
-
-#ifdef ZTS
-#include "TSRM.h"
-#endif
-
-#define PIMPLE_VERSION "3.2.3-DEV"
-
-#define PIMPLE_NS "Pimple"
-#define PSR_CONTAINER_NS "Psr\\Container"
-#define PIMPLE_EXCEPTION_NS "Pimple\\Exception"
-
-#define PIMPLE_DEFAULT_ZVAL_CACHE_NUM   5
-#define PIMPLE_DEFAULT_ZVAL_VALUES_NUM 10
-
-#define PIMPLE_DEPRECATE do { \
-	int er = EG(error_reporting); \
-	EG(error_reporting) = 0;\
-	php_error(E_DEPRECATED, "The Pimple C extension is deprecated since version 3.1 and will be removed in 4.0."); \
-	EG(error_reporting) = er; \
-} while (0);
-
-zend_module_entry *get_module(void);
-
-PHP_MINIT_FUNCTION(pimple);
-PHP_MINFO_FUNCTION(pimple);
-
-PHP_METHOD(FrozenServiceException, __construct);
-PHP_METHOD(InvalidServiceIdentifierException, __construct);
-PHP_METHOD(UnknownIdentifierException, __construct);
-
-PHP_METHOD(Pimple, __construct);
-PHP_METHOD(Pimple, factory);
-PHP_METHOD(Pimple, protect);
-PHP_METHOD(Pimple, raw);
-PHP_METHOD(Pimple, extend);
-PHP_METHOD(Pimple, keys);
-PHP_METHOD(Pimple, register);
-PHP_METHOD(Pimple, offsetSet);
-PHP_METHOD(Pimple, offsetUnset);
-PHP_METHOD(Pimple, offsetGet);
-PHP_METHOD(Pimple, offsetExists);
-
-PHP_METHOD(PimpleClosure, invoker);
-
-typedef struct _pimple_bucket_value {
-	zval *value; /* Must be the first element */
-	zval *raw;
-	zend_object_handle handle_num;
-	enum {
-		PIMPLE_IS_PARAM   = 0,
-		PIMPLE_IS_SERVICE = 2
-	} type;
-	zend_bool initialized;
-	zend_fcall_info_cache fcc;
-} pimple_bucket_value;
-
-typedef struct _pimple_object {
-	zend_object zobj;
-	HashTable values;
-	HashTable factories;
-	HashTable protected;
-} pimple_object;
-
-typedef struct _pimple_closure_object {
-	zend_object zobj;
-	zval *callable;
-	zval *factory;
-} pimple_closure_object;
-
-static const char sensiolabs_logo[] = "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAAAUCAMAAABvRTlyAAAAz1BMVEUAAAAAAAAAAAAsThWB5j4AAACD6T8AAACC6D+C6D6C6D+C6D4AAAAAAACC6D4AAAAAAACC6D8AAAAAAAAAAAAAAAAAAAAAAACC6D4AAAAAAAAAAACC6D4AAAAAAAAAAAAAAAAAAAAAAACC6D8AAACC6D4AAAAAAAAAAAAAAAAAAACC6D8AAACC6D6C6D+B6D+C6D+C6D+C6D8AAACC6D6C6D4AAACC6D/K/2KC6D+B6D6C6D6C6D+C6D8sTxUyWRhEeiEAAACC6D+C5z6B6D7drnEVAAAAQXRSTlMAE3oCNSUuDHFHzxaF9UFsu+irX+zlKzYimaJXktyOSFD6BolxqT7QGMMdarMIpuO28r9EolXKgR16OphfXYd4V14GtB4AAAMpSURBVEjHvVSJctowEF1jjME2RziMwUCoMfd9heZqG4n//6buLpJjkmYm03byZmxJa2nf6u2uQcG2bfhqRN4LoTKBzyGDm68M7mAwcOEdjo4zhA/Rf9Go/CVtTgiRhXfIC3EDH8F/eUX1/9KexRo+QgOdtHDsEe/sM7QT32/+K61Z1LFXcXJxN4pTbu1aTQUzuy2PIA0rDo0/0Aa5XFaJvKaVTrubywXvaa1Wq4Vu/Snr3Y7Aojh4VccwykW2N2oQ8wmjyut6+Q1t5ywIG5Npj1sh5E0B7YOzFDjfuRfaOh3O+MbbVNfTWS9COZk3Obd2su5d0a6IU9KLREbw8gEehWSr1r2sPWciXLG38r5NdW0xu9eioU87omjC9yNaMi5GNf6WppVSOqXCFkmCvMB3p9SROLoYQn5pDgQOujA1xjYvqH+plUdkwnmII8VxR/PKYkrfLLomhVlE3b/LhNbNr7hp0H2JaOc4v8dFB58HSsFTSafaqtY1sT3GO8wsy5rhokYPlRJdjPMajyYqTt1EHF/2uqSWQWmAjCUSmQ1MS3g8Btf1XOsy7YIC0CB1b5Xw1Vhba0zbxiCAQLH9TNPmHJXQUtJAN0KcDsoqLxsNvJrJExa7mKIdp2lRE2WexiS4pqWk/0jROlw6K6bV9YOBDGAuqMJ0bnuUKGB0L27bxgRhGEbzihbhxxXaQC88Vkwq8ldCi86RApWUb0Q+4VDosBCc+1s81lUdnBavH4Zp2mm3O44USwOfvSo9oBiwpFg71lMS1VKJLKljS3j9p+fOTvXXlsSNuEv6YPaZda9uRope0VJfKdo7fPiYfSmvFjXQbkhY0d9hCbBWIktRgEDieDhf1N3wbbkmNNgRy8hyl620yGQat/grV3HMpc2HDKTVmOPFz6ylPCKt/nXcAyV260jaAowwIW0YuBzrOgb/KrddZS9OmJaLgpWK4JX2DDuklcLZSDGcn8Vmx9YDNvT6UsjyBApRyFQVX7Vxm9TGxE16nmfRd8/zQoDmggQOTRh5Hv8pMt9Q/L2JmSwkMCE7dA4BuDjHJwfu0Om4QAhOjrN5XkIatglfiN/bUPdCQFjTYgAAAABJRU5ErkJggg==\">";
-
-static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC);
-
-static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
-static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
-
-static void pimple_bucket_dtor(pimple_bucket_value *bucket);
-static void pimple_free_bucket(pimple_bucket_value *bucket);
-
-static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC);
-static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC);
-static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC);
-static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC);
-static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC);
-static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC);
-
-static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC);
-static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC);
-static zend_function *pimple_closure_get_constructor(zval * TSRMLS_DC);
-static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC);
-
-#ifdef ZTS
-#define PIMPLE_G(v) TSRMG(pimple_globals_id, zend_pimple_globals *, v)
-#else
-#define PIMPLE_G(v) (pimple_globals.v)
-#endif
-
-#endif	/* PHP_PIMPLE_H */
-
diff --git a/vendor/pimple/pimple/ext/pimple/pimple.c b/vendor/pimple/pimple/ext/pimple/pimple.c
deleted file mode 100644
index c80499b3995684eaccfaf1017e662b54b6cd446f..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/pimple.c
+++ /dev/null
@@ -1,1114 +0,0 @@
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2014 Fabien Potencier
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is furnished
- * to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_ini.h"
-#include "ext/standard/info.h"
-#include "php_pimple.h"
-#include "pimple_compat.h"
-#include "zend_interfaces.h"
-#include "zend.h"
-#include "Zend/zend_closures.h"
-#include "ext/spl/spl_exceptions.h"
-#include "Zend/zend_exceptions.h"
-#include "main/php_output.h"
-#include "SAPI.h"
-
-static zend_class_entry *pimple_ce_PsrContainerInterface;
-static zend_class_entry *pimple_ce_PsrContainerExceptionInterface;
-static zend_class_entry *pimple_ce_PsrNotFoundExceptionInterface;
-
-static zend_class_entry *pimple_ce_ExpectedInvokableException;
-static zend_class_entry *pimple_ce_FrozenServiceException;
-static zend_class_entry *pimple_ce_InvalidServiceIdentifierException;
-static zend_class_entry *pimple_ce_UnknownIdentifierException;
-
-static zend_class_entry *pimple_ce;
-static zend_object_handlers pimple_object_handlers;
-static zend_class_entry *pimple_closure_ce;
-static zend_class_entry *pimple_serviceprovider_ce;
-static zend_object_handlers pimple_closure_object_handlers;
-static zend_internal_function pimple_closure_invoker_function;
-
-#define FETCH_DIM_HANDLERS_VARS 	pimple_object *pimple_obj = NULL; \
-									ulong index; \
-									pimple_obj = (pimple_object *)zend_object_store_get_object(object TSRMLS_CC); \
-
-#define PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS	do { \
-	if (ce != pimple_ce) { \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetget"), (void **)&function); \
-		if (function->common.scope != ce) { /* if the function is not defined in this actual class */ \
-			pimple_object_handlers.read_dimension = pimple_object_read_dimension; /* then overwrite the handler to use custom one */ \
-		} \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetset"), (void **)&function); \
-		if (function->common.scope != ce) { \
-			pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
-		} \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetexists"), (void **)&function); \
-		if (function->common.scope != ce) { \
-			pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
-		} \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetunset"), (void **)&function); \
-		if (function->common.scope != ce) { \
-			pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
-		} \
-	} else { \
-		pimple_object_handlers.read_dimension = pimple_object_read_dimension; \
-		pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
-		pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
-		pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
-	}\
-											} while(0);
-
-#define PIMPLE_CALL_CB	do { \
-			zend_fcall_info_argn(&fci TSRMLS_CC, 1, &object); \
-			fci.size           = sizeof(fci); \
-			fci.object_ptr     = retval->fcc.object_ptr; \
-			fci.function_name  = retval->value; \
-			fci.no_separation  = 1; \
-			fci.retval_ptr_ptr = &retval_ptr_ptr; \
-\
-			zend_call_function(&fci, &retval->fcc TSRMLS_CC); \
-			efree(fci.params); \
-			if (EG(exception)) { \
-				return EG(uninitialized_zval_ptr); \
-			} \
-						} while(0);
-
-
-/* Psr\Container\ContainerInterface */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_get, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_has, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_PsrContainerInterface_functions[] = {
-	PHP_ABSTRACT_ME(ContainerInterface, get, arginfo_pimple_PsrContainerInterface_get)
-	PHP_ABSTRACT_ME(ContainerInterface, has, arginfo_pimple_PsrContainerInterface_has)
-	PHP_FE_END
-};
-
-/* Psr\Container\ContainerExceptionInterface */
-static const zend_function_entry pimple_ce_PsrContainerExceptionInterface_functions[] = {
-	PHP_FE_END
-};
-
-/* Psr\Container\NotFoundExceptionInterface */
-static const zend_function_entry pimple_ce_PsrNotFoundExceptionInterface_functions[] = {
-	PHP_FE_END
-};
-
-/* Pimple\Exception\FrozenServiceException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_FrozenServiceException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_FrozenServiceException_functions[] = {
-	PHP_ME(FrozenServiceException, __construct, arginfo_FrozenServiceException___construct, ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\Exception\InvalidServiceIdentifierException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_InvalidServiceIdentifierException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_InvalidServiceIdentifierException_functions[] = {
-	PHP_ME(InvalidServiceIdentifierException, __construct, arginfo_InvalidServiceIdentifierException___construct, ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\Exception\UnknownIdentifierException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_UnknownIdentifierException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_UnknownIdentifierException_functions[] = {
-	PHP_ME(UnknownIdentifierException, __construct, arginfo_UnknownIdentifierException___construct, ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\Container */
-ZEND_BEGIN_ARG_INFO_EX(arginfo___construct, 0, 0, 0)
-ZEND_ARG_ARRAY_INFO(0, value, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetset, 0, 0, 2)
-ZEND_ARG_INFO(0, offset)
-ZEND_ARG_INFO(0, value)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetget, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetexists, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetunset, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_factory, 0, 0, 1)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_protect, 0, 0, 1)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_raw, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_extend, 0, 0, 2)
-ZEND_ARG_INFO(0, id)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_keys, 0, 0, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_register, 0, 0, 1)
-ZEND_ARG_OBJ_INFO(0, provider, Pimple\\ServiceProviderInterface, 0)
-ZEND_ARG_ARRAY_INFO(0, values, 1)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_functions[] = {
-	PHP_ME(Pimple, __construct,	arginfo___construct, ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, factory,         arginfo_factory,         ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, protect,         arginfo_protect,         ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, raw,             arginfo_raw,             ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, extend,          arginfo_extend,          ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, keys,            arginfo_keys,            ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, register,		arginfo_register,		 ZEND_ACC_PUBLIC)
-
-	PHP_ME(Pimple, offsetSet,       arginfo_offsetset,       ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, offsetGet,       arginfo_offsetget,       ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, offsetExists,    arginfo_offsetexists,    ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, offsetUnset,     arginfo_offsetunset,     ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\ServiceProviderInterface */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_serviceprovider_register, 0, 0, 1)
-ZEND_ARG_OBJ_INFO(0, pimple, Pimple\\Container, 0)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_serviceprovider_iface_ce_functions[] = {
-	PHP_ABSTRACT_ME(ServiceProviderInterface, register, arginfo_serviceprovider_register)
-	PHP_FE_END
-};
-
-/* parent::__construct(sprintf("Something with %s", $arg1)) */
-static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC)
-{
-	zend_class_entry *ce = Z_OBJCE_P(this_ptr);
-	char *message = NULL;
-	int message_len;
-	zval *constructor_arg;
-
-	message_len = spprintf(&message, 0, format, arg1);
-	ALLOC_INIT_ZVAL(constructor_arg);
-	ZVAL_STRINGL(constructor_arg, message, message_len, 1);
-
-	zend_call_method_with_1_params(&this_ptr, ce, &ce->parent->constructor, "__construct", NULL, constructor_arg);
-
-	efree(message);
-	zval_ptr_dtor(&constructor_arg);
-}
-
-/**
- * Pass a single string parameter to exception constructor and throw
- */
-static void pimple_throw_exception_string(zend_class_entry *ce, const char *message, zend_uint message_len TSRMLS_DC)
-{
-	zval *exception, *param;
-
-	ALLOC_INIT_ZVAL(exception);
-	object_init_ex(exception, ce);
-
-	ALLOC_INIT_ZVAL(param);
-	ZVAL_STRINGL(param, message, message_len, 1);
-
-	zend_call_method_with_1_params(&exception, ce, &ce->constructor, "__construct", NULL, param);
-
-	zend_throw_exception_object(exception TSRMLS_CC);
-
-	zval_ptr_dtor(&param);
-}
-
-static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC)
-{
-	zend_object_std_dtor(&obj->zobj TSRMLS_CC);
-	if (obj->factory) {
-		zval_ptr_dtor(&obj->factory);
-	}
-	if (obj->callable) {
-		zval_ptr_dtor(&obj->callable);
-	}
-	efree(obj);
-}
-
-static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC)
-{
-	zend_hash_destroy(&obj->factories);
-	zend_hash_destroy(&obj->protected);
-	zend_hash_destroy(&obj->values);
-	zend_object_std_dtor(&obj->zobj TSRMLS_CC);
-	efree(obj);
-}
-
-static void pimple_free_bucket(pimple_bucket_value *bucket)
-{
-	if (bucket->raw) {
-		zval_ptr_dtor(&bucket->raw);
-	}
-}
-
-static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	pimple_closure_object *pimple_closure_obj = NULL;
-
-	pimple_closure_obj = ecalloc(1, sizeof(pimple_closure_object));
-	ZEND_OBJ_INIT(&pimple_closure_obj->zobj, ce);
-
-	pimple_closure_object_handlers.get_constructor = pimple_closure_get_constructor;
-	retval.handlers = &pimple_closure_object_handlers;
-	retval.handle   = zend_objects_store_put(pimple_closure_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_closure_free_object_storage, NULL TSRMLS_CC);
-
-	return retval;
-}
-
-static zend_function *pimple_closure_get_constructor(zval *obj TSRMLS_DC)
-{
-	zend_error(E_ERROR, "Pimple\\ContainerClosure is an internal class and cannot be instantiated");
-
-	return NULL;
-}
-
-static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC)
-{
-	*zobj_ptr = obj;
-	*ce_ptr   = Z_OBJCE_P(obj);
-	*fptr_ptr = (zend_function *)&pimple_closure_invoker_function;
-
-	return SUCCESS;
-}
-
-static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	pimple_object *pimple_obj  = NULL;
-	zend_function *function    = NULL;
-
-	pimple_obj = emalloc(sizeof(pimple_object));
-	ZEND_OBJ_INIT(&pimple_obj->zobj, ce);
-
-	PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS
-
-	retval.handlers = &pimple_object_handlers;
-	retval.handle   = zend_objects_store_put(pimple_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_free_object_storage, NULL TSRMLS_CC);
-
-	zend_hash_init(&pimple_obj->factories, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
-	zend_hash_init(&pimple_obj->protected, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
-	zend_hash_init(&pimple_obj->values, PIMPLE_DEFAULT_ZVAL_VALUES_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
-
-	return retval;
-}
-
-static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	pimple_bucket_value pimple_value = {0}, *found_value = NULL;
-	ulong hash;
-
-	pimple_zval_to_pimpleval(value, &pimple_value TSRMLS_CC);
-
-	if (!offset) {/* $p[] = 'foo' when not overloaded */
-		zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
-		Z_ADDREF_P(value);
-		return;
-	}
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		hash = zend_hash_func(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-		zend_hash_quick_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void **)&found_value);
-		if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
-			pimple_free_bucket(&pimple_value);
-			pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-			return;
-		}
-		if (zend_hash_quick_update(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
-			pimple_free_bucket(&pimple_value);
-			return;
-		}
-		Z_ADDREF_P(value);
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		zend_hash_index_find(&pimple_obj->values, index, (void **)&found_value);
-		if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
-			pimple_free_bucket(&pimple_value);
-			convert_to_string(offset);
-			pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-			return;
-		}
-		if (zend_hash_index_update(&pimple_obj->values, index, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
-			pimple_free_bucket(&pimple_value);
-			return;
-		}
-		Z_ADDREF_P(value);
-	break;
-	case IS_NULL: /* $p[] = 'foo' when overloaded */
-		zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
-		Z_ADDREF_P(value);
-	break;
-	default:
-		pimple_free_bucket(&pimple_value);
-		zend_error(E_WARNING, "Unsupported offset type");
-	}
-}
-
-static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		zend_symtable_del(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-		zend_symtable_del(&pimple_obj->factories, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-		zend_symtable_del(&pimple_obj->protected, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		zend_hash_index_del(&pimple_obj->values, index);
-		zend_hash_index_del(&pimple_obj->factories, index);
-		zend_hash_index_del(&pimple_obj->protected, index);
-	break;
-	default:
-		zend_error(E_WARNING, "Unsupported offset type");
-	}
-}
-
-static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	pimple_bucket_value *retval = NULL;
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == SUCCESS) {
-			switch (check_empty) {
-			case 0: /* isset */
-				return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;) */
-			case 1: /* empty */
-			default:
-				return zend_is_true(retval->value);
-			}
-		}
-		return 0;
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == SUCCESS) {
-			switch (check_empty) {
-				case 0: /* isset */
-					return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;)*/
-				case 1: /* empty */
-				default:
-					return zend_is_true(retval->value);
-			}
-		}
-		return 0;
-	break;
-	default:
-		zend_error(E_WARNING, "Unsupported offset type");
-		return 0;
-	}
-}
-
-static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	pimple_bucket_value *retval = NULL;
-	zend_fcall_info fci         = {0};
-	zval *retval_ptr_ptr        = NULL;
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == FAILURE) {
-			pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-
-			return EG(uninitialized_zval_ptr);
-		}
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == FAILURE) {
-			return EG(uninitialized_zval_ptr);
-		}
-	break;
-	case IS_NULL: /* $p[][3] = 'foo' first dim access */
-		return EG(uninitialized_zval_ptr);
-	break;
-	default:
-		zend_error(E_WARNING, "Unsupported offset type");
-		return EG(uninitialized_zval_ptr);
-	}
-
-	if(retval->type == PIMPLE_IS_PARAM) {
-		return retval->value;
-	}
-
-	if (zend_hash_index_exists(&pimple_obj->protected, retval->handle_num)) {
-		/* Service is protected, return the value every time */
-		return retval->value;
-	}
-
-	if (zend_hash_index_exists(&pimple_obj->factories, retval->handle_num)) {
-		/* Service is a factory, call it every time and never cache its result */
-		PIMPLE_CALL_CB
-		Z_DELREF_P(retval_ptr_ptr); /* fetch dim addr will increment refcount */
-		return retval_ptr_ptr;
-	}
-
-	if (retval->initialized == 1) {
-		/* Service has already been called, return its cached value */
-		return retval->value;
-	}
-
-	ALLOC_INIT_ZVAL(retval->raw);
-	MAKE_COPY_ZVAL(&retval->value, retval->raw);
-
-	PIMPLE_CALL_CB
-
-	retval->initialized = 1;
-	zval_ptr_dtor(&retval->value);
-	retval->value = retval_ptr_ptr;
-
-	return retval->value;
-}
-
-static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
-{
-	if (Z_TYPE_P(_zval) != IS_OBJECT) {
-		return FAILURE;
-	}
-
-	if (_pimple_bucket_value->fcc.called_scope) {
-		return SUCCESS;
-	}
-
-	if (Z_OBJ_HANDLER_P(_zval, get_closure) && Z_OBJ_HANDLER_P(_zval, get_closure)(_zval, &_pimple_bucket_value->fcc.calling_scope, &_pimple_bucket_value->fcc.function_handler, &_pimple_bucket_value->fcc.object_ptr TSRMLS_CC) == SUCCESS) {
-		_pimple_bucket_value->fcc.called_scope = _pimple_bucket_value->fcc.calling_scope;
-		return SUCCESS;
-	} else {
-		return FAILURE;
-	}
-}
-
-static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
-{
-	_pimple_bucket_value->value = _zval;
-
-	if (Z_TYPE_P(_zval) != IS_OBJECT) {
-		return PIMPLE_IS_PARAM;
-	}
-
-	if (pimple_zval_is_valid_callback(_zval, _pimple_bucket_value TSRMLS_CC) == SUCCESS) {
-		_pimple_bucket_value->type       = PIMPLE_IS_SERVICE;
-		_pimple_bucket_value->handle_num = Z_OBJ_HANDLE_P(_zval);
-	}
-
-	return PIMPLE_IS_SERVICE;
-}
-
-static void pimple_bucket_dtor(pimple_bucket_value *bucket)
-{
-	zval_ptr_dtor(&bucket->value);
-	pimple_free_bucket(bucket);
-}
-
-PHP_METHOD(FrozenServiceException, __construct)
-{
-	char *id = NULL;
-	int id_len;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
-		return;
-	}
-	pimple_exception_call_parent_constructor(getThis(), "Cannot override frozen service \"%s\".", id TSRMLS_CC);
-}
-
-PHP_METHOD(InvalidServiceIdentifierException, __construct)
-{
-	char *id = NULL;
-	int id_len;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
-		return;
-	}
-	pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" does not contain an object definition.", id TSRMLS_CC);
-}
-
-PHP_METHOD(UnknownIdentifierException, __construct)
-{
-	char *id = NULL;
-	int id_len;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
-		return;
-	}
-	pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" is not defined.", id TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, protect)
-{
-	zval *protected     = NULL;
-	pimple_object *pobj = NULL;
-	pimple_bucket_value bucket = {0};
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &protected) == FAILURE) {
-		return;
-	}
-
-	if (pimple_zval_is_valid_callback(protected, &bucket TSRMLS_CC) == FAILURE) {
-		pimple_free_bucket(&bucket);
-		zend_throw_exception(pimple_ce_ExpectedInvokableException, "Callable is not a Closure or invokable object.", 0 TSRMLS_CC);
-		return;
-	}
-
-	pimple_zval_to_pimpleval(protected, &bucket TSRMLS_CC);
-	pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	if (zend_hash_index_update(&pobj->protected, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
-		Z_ADDREF_P(protected);
-		RETURN_ZVAL(protected, 1 , 0);
-	} else {
-		pimple_free_bucket(&bucket);
-	}
-	RETURN_FALSE;
-}
-
-PHP_METHOD(Pimple, raw)
-{
-	zval *offset = NULL;
-	pimple_object *pobj        = NULL;
-	pimple_bucket_value *value = NULL;
-	ulong index;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	switch (Z_TYPE_P(offset)) {
-		case IS_STRING:
-			if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
-				pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-		break;
-		case IS_DOUBLE:
-		case IS_BOOL:
-		case IS_LONG:
-			if (Z_TYPE_P(offset) == IS_DOUBLE) {
-				index = (ulong)Z_DVAL_P(offset);
-			} else {
-				index = Z_LVAL_P(offset);
-			}
-			if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
-				RETURN_NULL();
-			}
-		break;
-		case IS_NULL:
-		default:
-			zend_error(E_WARNING, "Unsupported offset type");
-	}
-
-	if (value->raw) {
-		RETVAL_ZVAL(value->raw, 1, 0);
-	} else {
-		RETVAL_ZVAL(value->value, 1, 0);
-	}
-}
-
-PHP_METHOD(Pimple, extend)
-{
-	zval *offset = NULL, *callable = NULL, *pimple_closure_obj = NULL;
-	pimple_bucket_value bucket = {0}, *value = NULL;
-	pimple_object *pobj          = NULL;
-	pimple_closure_object *pcobj = NULL;
-	ulong index;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &callable) == FAILURE) {
-		return;
-	}
-
-	pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	switch (Z_TYPE_P(offset)) {
-		case IS_STRING:
-			if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
-				pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-
-			if (value->type != PIMPLE_IS_SERVICE) {
-				pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-			if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
-				int er = EG(error_reporting);
-				EG(error_reporting) = 0;
-				php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%s\" should be protected?", Z_STRVAL_P(offset));
-				EG(error_reporting) = er;
-			}
-		break;
-		case IS_DOUBLE:
-		case IS_BOOL:
-		case IS_LONG:
-			if (Z_TYPE_P(offset) == IS_DOUBLE) {
-				index = (ulong)Z_DVAL_P(offset);
-			} else {
-				index = Z_LVAL_P(offset);
-			}
-			if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
-				convert_to_string(offset);
-				pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-			if (value->type != PIMPLE_IS_SERVICE) {
-				convert_to_string(offset);
-				pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-			if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
-				int er = EG(error_reporting);
-				EG(error_reporting) = 0;
-				php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%ld\" should be protected?", index);
-				EG(error_reporting) = er;
-			}
-		break;
-		case IS_NULL:
-		default:
-			zend_error(E_WARNING, "Unsupported offset type");
-	}
-
-	if (pimple_zval_is_valid_callback(callable, &bucket TSRMLS_CC) == FAILURE) {
-		pimple_free_bucket(&bucket);
-		zend_throw_exception(pimple_ce_ExpectedInvokableException, "Extension service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
-		RETURN_NULL();
-	}
-	pimple_free_bucket(&bucket);
-
-	ALLOC_INIT_ZVAL(pimple_closure_obj);
-	object_init_ex(pimple_closure_obj, pimple_closure_ce);
-
-	pcobj = zend_object_store_get_object(pimple_closure_obj TSRMLS_CC);
-	pcobj->callable = callable;
-	pcobj->factory  = value->value;
-	Z_ADDREF_P(callable);
-	Z_ADDREF_P(value->value);
-
-	if (zend_hash_index_exists(&pobj->factories, value->handle_num)) {
-		pimple_zval_to_pimpleval(pimple_closure_obj, &bucket TSRMLS_CC);
-		zend_hash_index_del(&pobj->factories, value->handle_num);
-		zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL);
-		Z_ADDREF_P(pimple_closure_obj);
-	}
-
-	pimple_object_write_dimension(getThis(), offset, pimple_closure_obj TSRMLS_CC);
-
-	RETVAL_ZVAL(pimple_closure_obj, 1, 1);
-}
-
-PHP_METHOD(Pimple, keys)
-{
-	HashPosition pos;
-	pimple_object *pobj = NULL;
-	zval **value        = NULL;
-	zval *endval        = NULL;
-	char *str_index     = NULL;
-	int str_len;
-	ulong num_index;
-
-	if (zend_parse_parameters_none() == FAILURE) {
-		return;
-	}
-
-	pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-	array_init_size(return_value, zend_hash_num_elements(&pobj->values));
-
-	zend_hash_internal_pointer_reset_ex(&pobj->values, &pos);
-
-	while(zend_hash_get_current_data_ex(&pobj->values, (void **)&value, &pos) == SUCCESS) {
-		MAKE_STD_ZVAL(endval);
-		switch (zend_hash_get_current_key_ex(&pobj->values, &str_index, (uint *)&str_len, &num_index, 0, &pos)) {
-			case HASH_KEY_IS_STRING:
-				ZVAL_STRINGL(endval, str_index, str_len - 1, 1);
-				zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
-			break;
-			case HASH_KEY_IS_LONG:
-				ZVAL_LONG(endval, num_index);
-				zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
-			break;
-		}
-	zend_hash_move_forward_ex(&pobj->values, &pos);
-	}
-}
-
-PHP_METHOD(Pimple, factory)
-{
-	zval *factory       = NULL;
-	pimple_object *pobj = NULL;
-	pimple_bucket_value bucket = {0};
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &factory) == FAILURE) {
-		return;
-	}
-
-	if (pimple_zval_is_valid_callback(factory, &bucket TSRMLS_CC) == FAILURE) {
-		pimple_free_bucket(&bucket);
-		zend_throw_exception(pimple_ce_ExpectedInvokableException, "Service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
-		return;
-	}
-
-	pimple_zval_to_pimpleval(factory, &bucket TSRMLS_CC);
-	pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	if (zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
-		Z_ADDREF_P(factory);
-		RETURN_ZVAL(factory, 1 , 0);
-	} else {
-		pimple_free_bucket(&bucket);
-	}
-
-	RETURN_FALSE;
-}
-
-PHP_METHOD(Pimple, offsetSet)
-{
-	zval *offset = NULL, *value = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &value) == FAILURE) {
-		return;
-	}
-
-	pimple_object_write_dimension(getThis(), offset, value TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, offsetGet)
-{
-	zval *offset = NULL, *retval = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	retval = pimple_object_read_dimension(getThis(), offset, 0 TSRMLS_CC);
-
-	RETVAL_ZVAL(retval, 1, 0);
-}
-
-PHP_METHOD(Pimple, offsetUnset)
-{
-	zval *offset = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	pimple_object_unset_dimension(getThis(), offset TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, offsetExists)
-{
-	zval *offset = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	RETVAL_BOOL(pimple_object_has_dimension(getThis(), offset, 1 TSRMLS_CC));
-}
-
-PHP_METHOD(Pimple, register)
-{
-	zval *provider;
-	zval **data;
-	zval *retval = NULL;
-	zval key;
-
-	HashTable *array = NULL;
-	HashPosition pos;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|h", &provider, pimple_serviceprovider_ce, &array) == FAILURE) {
-		return;
-	}
-
-	RETVAL_ZVAL(getThis(), 1, 0);
-
-	zend_call_method_with_1_params(&provider, Z_OBJCE_P(provider), NULL, "register", &retval, getThis());
-
-	if (retval) {
-		zval_ptr_dtor(&retval);
-	}
-
-	if (!array) {
-		return;
-	}
-
-	zend_hash_internal_pointer_reset_ex(array, &pos);
-
-	while(zend_hash_get_current_data_ex(array, (void **)&data, &pos) == SUCCESS) {
-		zend_hash_get_current_key_zval_ex(array, &key, &pos);
-		pimple_object_write_dimension(getThis(), &key, *data TSRMLS_CC);
-		zend_hash_move_forward_ex(array, &pos);
-	}
-}
-
-PHP_METHOD(Pimple, __construct)
-{
-	zval *values = NULL, **pData = NULL, offset;
-	HashPosition pos;
-	char *str_index = NULL;
-	zend_uint str_length;
-	ulong num_index;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|a!", &values) == FAILURE) {
-		return;
-	}
-
-	PIMPLE_DEPRECATE
-
-	if (!values) {
-		return;
-	}
-
-	zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos);
-	while (zend_hash_has_more_elements_ex(Z_ARRVAL_P(values), &pos) == SUCCESS) {
-			zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&pData, &pos);
-			zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &str_index, &str_length, &num_index, 0, &pos);
-			INIT_ZVAL(offset);
-			if (zend_hash_get_current_key_type_ex(Z_ARRVAL_P(values), &pos) == HASH_KEY_IS_LONG) {
-				ZVAL_LONG(&offset, num_index);
-			} else {
-				ZVAL_STRINGL(&offset, str_index, (str_length - 1), 0);
-			}
-		pimple_object_write_dimension(getThis(), &offset, *pData TSRMLS_CC);
-		zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos);
-	}
-}
-
-/*
- * This is PHP code snippet handling extend()s calls :
-
-  $extended = function ($c) use ($callable, $factory) {
-      return $callable($factory($c), $c);
-  };
-
- */
-PHP_METHOD(PimpleClosure, invoker)
-{
-	pimple_closure_object *pcobj = NULL;
-	zval *arg = NULL, *retval = NULL, *newretval = NULL;
-	zend_fcall_info fci        = {0};
-	zval **args[2];
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == FAILURE) {
-		return;
-	}
-
-	pcobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	fci.function_name = pcobj->factory;
-	args[0] = &arg;
-	zend_fcall_info_argp(&fci TSRMLS_CC, 1, args);
-	fci.retval_ptr_ptr = &retval;
-	fci.size = sizeof(fci);
-
-	if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
-		efree(fci.params);
-		return; /* Should here return default zval */
-	}
-
-	efree(fci.params);
-	memset(&fci, 0, sizeof(fci));
-	fci.size = sizeof(fci);
-
-	fci.function_name = pcobj->callable;
-	args[0] = &retval;
-	args[1] = &arg;
-	zend_fcall_info_argp(&fci TSRMLS_CC, 2, args);
-	fci.retval_ptr_ptr = &newretval;
-
-	if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
-		efree(fci.params);
-		zval_ptr_dtor(&retval);
-		return;
-	}
-
-	efree(fci.params);
-	zval_ptr_dtor(&retval);
-
-	RETVAL_ZVAL(newretval, 1 ,1);
-}
-
-PHP_MINIT_FUNCTION(pimple)
-{
-	zend_class_entry tmp_ce_PsrContainerInterface, tmp_ce_PsrContainerExceptionInterface, tmp_ce_PsrNotFoundExceptionInterface;
-	zend_class_entry tmp_ce_ExpectedInvokableException, tmp_ce_FrozenServiceException, tmp_ce_InvalidServiceIdentifierException, tmp_ce_UnknownIdentifierException;
-	zend_class_entry tmp_pimple_ce, tmp_pimple_closure_ce, tmp_pimple_serviceprovider_iface_ce;
-
-	/* Psr\Container namespace */
-	INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerInterface,          PSR_CONTAINER_NS, "ContainerInterface",           pimple_ce_PsrContainerInterface_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerExceptionInterface, PSR_CONTAINER_NS, "ContainerExceptionInterface", pimple_ce_PsrContainerExceptionInterface_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_PsrNotFoundExceptionInterface,  PSR_CONTAINER_NS, "NotFoundExceptionInterface",  pimple_ce_PsrNotFoundExceptionInterface_functions);
-
-	pimple_ce_PsrContainerInterface          = zend_register_internal_interface(&tmp_ce_PsrContainerInterface TSRMLS_CC);
-	pimple_ce_PsrContainerExceptionInterface = zend_register_internal_interface(&tmp_ce_PsrContainerExceptionInterface TSRMLS_CC);
-	pimple_ce_PsrNotFoundExceptionInterface  = zend_register_internal_interface(&tmp_ce_PsrNotFoundExceptionInterface TSRMLS_CC);
-
-	zend_class_implements(pimple_ce_PsrNotFoundExceptionInterface TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
-
-	/* Pimple\Exception namespace */
-	INIT_NS_CLASS_ENTRY(tmp_ce_ExpectedInvokableException,        PIMPLE_EXCEPTION_NS, "ExpectedInvokableException",         NULL);
-	INIT_NS_CLASS_ENTRY(tmp_ce_FrozenServiceException,            PIMPLE_EXCEPTION_NS, "FrozenServiceException",             pimple_ce_FrozenServiceException_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_InvalidServiceIdentifierException, PIMPLE_EXCEPTION_NS, "InvalidServiceIdentifierException", pimple_ce_InvalidServiceIdentifierException_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_UnknownIdentifierException,        PIMPLE_EXCEPTION_NS, "UnknownIdentifierException",         pimple_ce_UnknownIdentifierException_functions);
-
-	pimple_ce_ExpectedInvokableException        = zend_register_internal_class_ex(&tmp_ce_ExpectedInvokableException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
-	pimple_ce_FrozenServiceException            = zend_register_internal_class_ex(&tmp_ce_FrozenServiceException, spl_ce_RuntimeException, NULL TSRMLS_CC);
-	pimple_ce_InvalidServiceIdentifierException = zend_register_internal_class_ex(&tmp_ce_InvalidServiceIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
-	pimple_ce_UnknownIdentifierException        = zend_register_internal_class_ex(&tmp_ce_UnknownIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
-
-	zend_class_implements(pimple_ce_ExpectedInvokableException TSRMLS_CC,        1, pimple_ce_PsrContainerExceptionInterface);
-	zend_class_implements(pimple_ce_FrozenServiceException TSRMLS_CC,            1, pimple_ce_PsrContainerExceptionInterface);
-	zend_class_implements(pimple_ce_InvalidServiceIdentifierException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
-	zend_class_implements(pimple_ce_UnknownIdentifierException TSRMLS_CC,        1, pimple_ce_PsrNotFoundExceptionInterface);
-
-    /* Pimple namespace */
-	INIT_NS_CLASS_ENTRY(tmp_pimple_ce, PIMPLE_NS, "Container", pimple_ce_functions);
-	INIT_NS_CLASS_ENTRY(tmp_pimple_closure_ce, PIMPLE_NS, "ContainerClosure", NULL);
-	INIT_NS_CLASS_ENTRY(tmp_pimple_serviceprovider_iface_ce, PIMPLE_NS, "ServiceProviderInterface", pimple_serviceprovider_iface_ce_functions);
-
-	tmp_pimple_ce.create_object         = pimple_object_create;
-	tmp_pimple_closure_ce.create_object = pimple_closure_object_create;
-
-	pimple_ce = zend_register_internal_class(&tmp_pimple_ce TSRMLS_CC);
-	zend_class_implements(pimple_ce TSRMLS_CC, 1, zend_ce_arrayaccess);
-
-	pimple_closure_ce = zend_register_internal_class(&tmp_pimple_closure_ce TSRMLS_CC);
-	pimple_closure_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
-
-	pimple_serviceprovider_ce = zend_register_internal_interface(&tmp_pimple_serviceprovider_iface_ce TSRMLS_CC);
-
-	memcpy(&pimple_closure_object_handlers, zend_get_std_object_handlers(), sizeof(*zend_get_std_object_handlers()));
-	pimple_object_handlers                     = std_object_handlers;
-	pimple_closure_object_handlers.get_closure = pimple_closure_get_closure;
-
-	pimple_closure_invoker_function.function_name     = "Pimple closure internal invoker";
-	pimple_closure_invoker_function.fn_flags         |= ZEND_ACC_CLOSURE;
-	pimple_closure_invoker_function.handler           = ZEND_MN(PimpleClosure_invoker);
-	pimple_closure_invoker_function.num_args          = 1;
-	pimple_closure_invoker_function.required_num_args = 1;
-	pimple_closure_invoker_function.scope             = pimple_closure_ce;
-	pimple_closure_invoker_function.type              = ZEND_INTERNAL_FUNCTION;
-	pimple_closure_invoker_function.module            = &pimple_module_entry;
-
-	return SUCCESS;
-}
-
-PHP_MINFO_FUNCTION(pimple)
-{
-	php_info_print_table_start();
-	php_info_print_table_header(2, "SensioLabs Pimple C support", "enabled");
-	php_info_print_table_row(2, "Pimple supported version", PIMPLE_VERSION);
-	php_info_print_table_end();
-
-	php_info_print_box_start(0);
-	php_write((void *)ZEND_STRL("SensioLabs Pimple C support developed by Julien Pauli") TSRMLS_CC);
-	if (!sapi_module.phpinfo_as_text) {
-		php_write((void *)ZEND_STRL(sensiolabs_logo) TSRMLS_CC);
-	}
-	php_info_print_box_end();
-}
-
-zend_module_entry pimple_module_entry = {
-	STANDARD_MODULE_HEADER,
-	"pimple",
-	NULL,
-	PHP_MINIT(pimple),
-	NULL,
-	NULL,
-	NULL,
-	PHP_MINFO(pimple),
-	PIMPLE_VERSION,
-	STANDARD_MODULE_PROPERTIES
-};
-
-#ifdef COMPILE_DL_PIMPLE
-ZEND_GET_MODULE(pimple)
-#endif
diff --git a/vendor/pimple/pimple/ext/pimple/pimple_compat.h b/vendor/pimple/pimple/ext/pimple/pimple_compat.h
deleted file mode 100644
index d234e174d0aa7e31d855af634a8ffb6ebc9c4877..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/pimple_compat.h
+++ /dev/null
@@ -1,81 +0,0 @@
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2014 Fabien Potencier
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is furnished
- * to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef PIMPLE_COMPAT_H_
-#define PIMPLE_COMPAT_H_
-
-#include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
-
-#define PHP_5_0_X_API_NO		220040412
-#define PHP_5_1_X_API_NO		220051025
-#define PHP_5_2_X_API_NO		220060519
-#define PHP_5_3_X_API_NO		220090626
-#define PHP_5_4_X_API_NO		220100525
-#define PHP_5_5_X_API_NO		220121212
-#define PHP_5_6_X_API_NO		220131226
-
-#define IS_PHP_56 ZEND_EXTENSION_API_NO == PHP_5_6_X_API_NO
-#define IS_AT_LEAST_PHP_56 ZEND_EXTENSION_API_NO >= PHP_5_6_X_API_NO
-
-#define IS_PHP_55 ZEND_EXTENSION_API_NO == PHP_5_5_X_API_NO
-#define IS_AT_LEAST_PHP_55 ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO
-
-#define IS_PHP_54 ZEND_EXTENSION_API_NO == PHP_5_4_X_API_NO
-#define IS_AT_LEAST_PHP_54 ZEND_EXTENSION_API_NO >= PHP_5_4_X_API_NO
-
-#define IS_PHP_53 ZEND_EXTENSION_API_NO == PHP_5_3_X_API_NO
-#define IS_AT_LEAST_PHP_53 ZEND_EXTENSION_API_NO >= PHP_5_3_X_API_NO
-
-#if IS_PHP_53
-#define object_properties_init(obj, ce) do { \
-		 zend_hash_copy(obj->properties, &ce->default_properties, zval_copy_property_ctor(ce), NULL, sizeof(zval *)); \
-		} while (0);
-#endif
-
-#define ZEND_OBJ_INIT(obj, ce) do { \
-		zend_object_std_init(obj, ce TSRMLS_CC); \
-		object_properties_init((obj), (ce)); \
-	} while(0);
-
-#if IS_PHP_53 || IS_PHP_54
-static void zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos) {
-    Bucket *p;
-
-    p = pos ? (*pos) : ht->pInternalPointer;
-
-    if (!p) {
-        Z_TYPE_P(key) = IS_NULL;
-    } else if (p->nKeyLength) {
-        Z_TYPE_P(key) = IS_STRING;
-        Z_STRVAL_P(key) = estrndup(p->arKey, p->nKeyLength - 1);
-        Z_STRLEN_P(key) = p->nKeyLength - 1;
-    } else {
-        Z_TYPE_P(key) = IS_LONG;
-        Z_LVAL_P(key) = p->h;
-    }
-}
-#endif
-
-#endif /* PIMPLE_COMPAT_H_ */
diff --git a/vendor/pimple/pimple/ext/pimple/tests/001.phpt b/vendor/pimple/pimple/ext/pimple/tests/001.phpt
deleted file mode 100644
index 0809ea232b66d332697df24816d1a050030d7e6f..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/001.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-Test for read_dim/write_dim handlers
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[42] = 'foo';
-$p['foo'] = 42;
-
-echo $p[42];
-echo "\n";
-echo $p['foo'];
-echo "\n";
-try {
-	var_dump($p['nonexistant']);
-	echo "Exception excpected";
-} catch (InvalidArgumentException $e) { }
-
-$p[54.2] = 'foo2';
-echo $p[54];
-echo "\n";
-$p[242.99] = 'foo99';
-echo $p[242];
-
-echo "\n";
-
-$p[5] = 'bar';
-$p[5] = 'baz';
-echo $p[5];
-
-echo "\n";
-
-$p['str'] = 'str';
-$p['str'] = 'strstr';
-echo $p['str'];
-?>
-
---EXPECTF--
-foo
-42
-foo2
-foo99
-baz
-strstr
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/002.phpt b/vendor/pimple/pimple/ext/pimple/tests/002.phpt
deleted file mode 100644
index 7b56d2c1fe8bbfcb0d93b1faa65f8fff4e363762..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/002.phpt
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Test for constructor
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-var_dump($p[42]);
-
-$p = new Pimple\Container(array(42=>'foo'));
-var_dump($p[42]);
-?>
---EXPECT--
-NULL
-string(3) "foo"
diff --git a/vendor/pimple/pimple/ext/pimple/tests/003.phpt b/vendor/pimple/pimple/ext/pimple/tests/003.phpt
deleted file mode 100644
index a22cfa352ea61f2edfbd659e1d5152eaf2d6b422..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/003.phpt
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Test empty dimensions
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[] = 42;
-var_dump($p[0]);
-$p[41] = 'foo';
-$p[] = 'bar';
-var_dump($p[42]);
-?>
---EXPECT--
-int(42)
-string(3) "bar"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/004.phpt b/vendor/pimple/pimple/ext/pimple/tests/004.phpt
deleted file mode 100644
index 1e1d251367928dccd004c0b8df07119acbe2b9e9..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/004.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Test has/unset dim handlers
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[] = 42;
-var_dump($p[0]);
-unset($p[0]);
-var_dump($p[0]);
-$p['foo'] = 'bar';
-var_dump(isset($p['foo']));
-unset($p['foo']);
-try {
-	var_dump($p['foo']);
-	echo "Excpected exception";
-} catch (InvalidArgumentException $e) { }
-var_dump(isset($p['bar']));
-$p['bar'] = NULL;
-var_dump(isset($p['bar']));
-var_dump(empty($p['bar']));
-?>
---EXPECT--
-int(42)
-NULL
-bool(true)
-bool(false)
-bool(true)
-bool(true)
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/005.phpt b/vendor/pimple/pimple/ext/pimple/tests/005.phpt
deleted file mode 100644
index 0479ee055deda89a5b0a811e2c2aefec1ca7c38e..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/005.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Test simple class inheritance
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-class MyPimple extends Pimple\Container
-{
-	public $someAttr = 'fooAttr';
-
-    public function offsetget($o)
-    {
-        var_dump("hit");
-        return parent::offsetget($o);
-    }
-}
-
-$p = new MyPimple;
-$p[42] = 'foo';
-echo $p[42];
-echo "\n";
-echo $p->someAttr;
-?>
---EXPECT--
-string(3) "hit"
-foo
-fooAttr
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/006.phpt b/vendor/pimple/pimple/ext/pimple/tests/006.phpt
deleted file mode 100644
index cfe8a119e63a5a778890b0b21efe871a7f2fa437..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/006.phpt
+++ /dev/null
@@ -1,51 +0,0 @@
---TEST--
-Test complex class inheritance
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-class MyPimple extends Pimple\Container
-{
-    public function offsetget($o)
-    {
-        var_dump("hit offsetget in " . __CLASS__);
-        return parent::offsetget($o);
-    }
-}
-
-class TestPimple extends MyPimple
-{
-    public function __construct($values)
-    {
-        array_shift($values);
-        parent::__construct($values);
-    }
-    
-    public function offsetget($o)
-    {
-        var_dump('hit offsetget in ' . __CLASS__);
-        return parent::offsetget($o);
-    }
-    
-    public function offsetset($o, $v)
-    {
-        var_dump('hit offsetset');
-        return parent::offsetset($o, $v);
-    }
-}
-
-$defaultValues = array('foo' => 'bar', 88 => 'baz');
-
-$p = new TestPimple($defaultValues);
-$p[42] = 'foo';
-var_dump($p[42]);
-var_dump($p[0]);
-?>
---EXPECT--
-string(13) "hit offsetset"
-string(27) "hit offsetget in TestPimple"
-string(25) "hit offsetget in MyPimple"
-string(3) "foo"
-string(27) "hit offsetget in TestPimple"
-string(25) "hit offsetget in MyPimple"
-string(3) "baz"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/007.phpt b/vendor/pimple/pimple/ext/pimple/tests/007.phpt
deleted file mode 100644
index 5aac6838064303ede671cf8c4504472296c1bb80..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/007.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Test for read_dim/write_dim handlers
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[42] = 'foo';
-$p['foo'] = 42;
-
-echo $p[42];
-echo "\n";
-echo $p['foo'];
-echo "\n";
-try {
-	var_dump($p['nonexistant']);
-	echo "Exception excpected";
-} catch (InvalidArgumentException $e) { }
-?>
---EXPECTF--
-foo
-42
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/008.phpt b/vendor/pimple/pimple/ext/pimple/tests/008.phpt
deleted file mode 100644
index db7eeec4a11315c3c7c200424c5ca1b3ac218cb4..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/008.phpt
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-Test frozen services
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[42] = 'foo';
-$p[42] = 'bar';
-
-$p['foo'] = function () { };
-$p['foo'] = function () { };
-
-$a = $p['foo'];
-
-try {
-	$p['foo'] = function () { };
-	echo "Exception excpected";
-} catch (RuntimeException $e) { }
-
-$p[42] = function() { };
-$a = $p[42];
-
-try {
-	$p[42] = function () { };
-	echo "Exception excpected";
-} catch (RuntimeException $e) { }
-?>
---EXPECTF--
diff --git a/vendor/pimple/pimple/ext/pimple/tests/009.phpt b/vendor/pimple/pimple/ext/pimple/tests/009.phpt
deleted file mode 100644
index bb05ea296485b81727eb2155ffe641f1810c4a33..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/009.phpt
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-Test service is called as callback, and only once
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p['foo'] = function($arg) use ($p) { var_dump($p === $arg); };
-$a = $p['foo'];
-$b = $p['foo']; /* should return not calling the callback */
-?>
---EXPECTF--
-bool(true)
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/010.phpt b/vendor/pimple/pimple/ext/pimple/tests/010.phpt
deleted file mode 100644
index badce0146a910be411dacb8fcaa9b763205e468b..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/010.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-Test service is called as callback for every callback type
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-function callme()
-{
-    return 'called';
-}
-
-$a = function() { return 'called'; };
-
-class Foo
-{
-    public static function bar()
-    {
-        return 'called';
-    }
-}
- 
-$p = new Pimple\Container();
-$p['foo'] = 'callme';
-echo $p['foo'] . "\n";
-
-$p['bar'] = $a;
-echo $p['bar'] . "\n";
-
-$p['baz'] = "Foo::bar";
-echo $p['baz'] . "\n";
-
-$p['foobar'] = array('Foo', 'bar');
-var_dump($p['foobar']);
-
-?>
---EXPECTF--
-callme
-called
-Foo::bar
-array(2) {
-  [0]=>
-  string(3) "Foo"
-  [1]=>
-  string(3) "bar"
-}
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/011.phpt b/vendor/pimple/pimple/ext/pimple/tests/011.phpt
deleted file mode 100644
index 6682ab8ebdbc83657f157c8d2ddc5e4e87065c52..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/011.phpt
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Test service callback throwing an exception
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-class CallBackException extends RuntimeException { }
-
-$p = new Pimple\Container();
-$p['foo'] = function () { throw new CallBackException; };
-try {
-	echo $p['foo'] . "\n";
-	echo "should not come here";
-} catch (CallBackException $e) {
-	echo "all right!";
-}
-?>
---EXPECTF--
-all right!
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/012.phpt b/vendor/pimple/pimple/ext/pimple/tests/012.phpt
deleted file mode 100644
index 4c6ac486dc743bdbbcf4b551bfa9b5787d91707b..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/012.phpt
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-Test service factory
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-
-$p->factory($f = function() { var_dump('called-1'); return 'ret-1';});
-
-$p[] = $f;
-
-$p[] = function () { var_dump('called-2'); return 'ret-2'; };
-
-var_dump($p[0]);
-var_dump($p[0]);
-var_dump($p[1]);
-var_dump($p[1]);
-?>
---EXPECTF--
-string(8) "called-1"
-string(5) "ret-1"
-string(8) "called-1"
-string(5) "ret-1"
-string(8) "called-2"
-string(5) "ret-2"
-string(5) "ret-2"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/013.phpt b/vendor/pimple/pimple/ext/pimple/tests/013.phpt
deleted file mode 100644
index f419958c5fa5d45c5c61bd8771bd791b8cc68e76..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/013.phpt
+++ /dev/null
@@ -1,33 +0,0 @@
---TEST--
-Test keys()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-
-var_dump($p->keys());
-
-$p['foo'] = 'bar';
-$p[] = 'foo';
-
-var_dump($p->keys());
-
-unset($p['foo']);
-
-var_dump($p->keys());
-?>
---EXPECTF--
-array(0) {
-}
-array(2) {
-  [0]=>
-  string(3) "foo"
-  [1]=>
-  int(0)
-}
-array(1) {
-  [0]=>
-  int(0)
-}
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/014.phpt b/vendor/pimple/pimple/ext/pimple/tests/014.phpt
deleted file mode 100644
index ac937213ac0bccbf0c3f0b54bb4048aa9f19e310..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/014.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Test raw()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$f = function () { var_dump('called-2'); return 'ret-2'; };
-
-$p['foo'] = $f;
-$p[42]    = $f;
-
-var_dump($p['foo']);
-var_dump($p->raw('foo'));
-var_dump($p[42]);
-
-unset($p['foo']);
-
-try {
-	$p->raw('foo');
-	echo "expected exception";
-} catch (InvalidArgumentException $e) { }
---EXPECTF--
-string(8) "called-2"
-string(5) "ret-2"
-object(Closure)#%i (0) {
-}
-string(8) "called-2"
-string(5) "ret-2"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/015.phpt b/vendor/pimple/pimple/ext/pimple/tests/015.phpt
deleted file mode 100644
index 314f008ac1bb1e95b3175c3025dec18cd248c81b..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/015.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test protect()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$f = function () { return 'foo'; };
-$p['foo'] = $f;
-
-$p->protect($f);
-
-var_dump($p['foo']);
---EXPECTF--
-object(Closure)#%i (0) {
-}
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/016.phpt b/vendor/pimple/pimple/ext/pimple/tests/016.phpt
deleted file mode 100644
index e55edb0a7a1310e2386c1b11356e9c62742e4fcf..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/016.phpt
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-Test extend()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-/*
- This is part of Pimple::extend() code :
-
-          $extended = function ($c) use ($callable, $factory) {
-             return $callable($factory($c), $c);
-          };
-*/
-
-$p = new Pimple\Container();
-$p[12] = function ($v) { var_dump($v); return 'foo';}; /* $factory in code above */
-
-$c = $p->extend(12, function ($w) { var_dump($w); return 'bar'; }); /* $callable in code above */
-
-var_dump($c('param'));
---EXPECTF--
-string(5) "param"
-string(3) "foo"
-string(3) "bar"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/017.phpt b/vendor/pimple/pimple/ext/pimple/tests/017.phpt
deleted file mode 100644
index bac23ce09a91a8a76c05e7f5fe91f70d8c0fdf89..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/017.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test extend() with exception in service extension
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$p[12] = function ($v) { return 'foo';};
-
-$c = $p->extend(12, function ($w) { throw new BadMethodCallException; });
-
-try {
-	$p[12];
-	echo "Exception expected";
-} catch (BadMethodCallException $e) { }
---EXPECTF--
diff --git a/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt b/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
deleted file mode 100644
index 8f881d6ebf82d852cea6eee020c9f7387a7fdce4..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test extend() with exception in service factory
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$p[12] = function ($v) { throw new BadMethodCallException; };
-
-$c = $p->extend(12, function ($w) { return 'foobar'; });
-
-try {
-	$p[12];
-	echo "Exception expected";
-} catch (BadMethodCallException $e) { }
---EXPECTF--
diff --git a/vendor/pimple/pimple/ext/pimple/tests/018.phpt b/vendor/pimple/pimple/ext/pimple/tests/018.phpt
deleted file mode 100644
index 27c12a14e79e26b609b61258d5612c34b45d37ae..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/018.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-Test register()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-class Foo implements Pimple\ServiceProviderInterface
-{
-    public function register(Pimple\Container $p)
-    {
-        var_dump($p);
-    }
-}
-
-$p = new Pimple\Container();
-$p->register(new Foo, array(42 => 'bar'));
-
-var_dump($p[42]);
---EXPECTF--
-object(Pimple\Container)#1 (0) {
-}
-string(3) "bar"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/019.phpt b/vendor/pimple/pimple/ext/pimple/tests/019.phpt
deleted file mode 100644
index 28a9aecac7f0e611400bb01b356c736fe771ca3b..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/019.phpt
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Test register() returns static and is a fluent interface
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-class Foo implements Pimple\ServiceProviderInterface
-{
-    public function register(Pimple\Container $p)
-    {
-    }
-}
-
-$p = new Pimple\Container();
-var_dump($p === $p->register(new Foo));
---EXPECTF--
-bool(true)
diff --git a/vendor/pimple/pimple/ext/pimple/tests/bench.phpb b/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
deleted file mode 100644
index 8f983e656b525a6dbe7871087b5899a413e84e54..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-if (!class_exists('Pimple\Container')) {
-    require_once __DIR__ . '/../../../src/Pimple/Container.php';
-} else {
-    echo "pimple-c extension detected, using...\n\n";
-}
-
-$time = microtime(true);
-
-function foo() { }
-$factory = function () { };
-
-for ($i=0; $i<10000; $i++) {
-
-$p = new Pimple\Container;
-
-$p['foo'] = 'bar';
-
-if (!isset($p[3])) {
-    $p[3] = $p['foo'];
-    $p[]  = 'bar';
-}
-
-$p[2] = 42;
-
-if (isset($p[2])) {
-	unset($p[2]);
-}
-
-$p[42] = $p['foo'];
-
-$p['cb'] = function($arg) { };
-
-$p[] = $p['cb'];
-
-echo $p['cb'];
-echo $p['cb'];
-echo $p['cb'];
-
-//$p->factory($factory);
-
-$p['factory'] = $factory;
-
-echo $p['factory'];
-echo $p['factory'];
-echo $p['factory'];
-
-}
-
-echo microtime(true)  - $time;
diff --git a/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb b/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
deleted file mode 100644
index aec541f0bc8bee3b584f450e44d1e84a355100d1..0000000000000000000000000000000000000000
--- a/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-if (!class_exists('Pimple\Container')) {
-    require_once __DIR__ . '/../../../src/Pimple/Container.php';
-} else {
-    echo "pimple-c extension detected, using...\n\n";
-}
-
-$time = microtime(true);
-
-
-$service = function ($arg) { return "I'm a service"; };
-
-for ($i=0; $i<10000; $i++) {
-
-$p = new Pimple\Container;
-$p['my_service'] = $service;
-
-$a = $p['my_service'];
-$b = $p['my_service'];
-
-}
-
-echo microtime(true) - $time;
-?>
diff --git a/vendor/pimple/pimple/phpunit.xml.dist b/vendor/pimple/pimple/phpunit.xml.dist
index 5c8d487fea9a98f2d22c51e80c5618060bcdd8cb..89902022a0eeb5d0bf9345423c69459d6a1b098c 100644
--- a/vendor/pimple/pimple/phpunit.xml.dist
+++ b/vendor/pimple/pimple/phpunit.xml.dist
@@ -11,4 +11,8 @@
             <directory>./src/Pimple/Tests</directory>
         </testsuite>
     </testsuites>
+
+    <listeners>
+        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
+    </listeners>
 </phpunit>
diff --git a/vendor/pimple/pimple/src/Pimple/Container.php b/vendor/pimple/pimple/src/Pimple/Container.php
index 707b92b82c131fa736e2ed7a86b40cfe35df3096..1234f0bdc0dbab9760677ef1b3f2f405da9edbf6 100644
--- a/vendor/pimple/pimple/src/Pimple/Container.php
+++ b/vendor/pimple/pimple/src/Pimple/Container.php
@@ -38,12 +38,12 @@ use Pimple\Exception\UnknownIdentifierException;
  */
 class Container implements \ArrayAccess
 {
-    private $values = array();
+    private $values = [];
     private $factories;
     private $protected;
-    private $frozen = array();
-    private $raw = array();
-    private $keys = array();
+    private $frozen = [];
+    private $raw = [];
+    private $keys = [];
 
     /**
      * Instantiates the container.
@@ -52,7 +52,7 @@ class Container implements \ArrayAccess
      *
      * @param array $values The parameters or objects
      */
-    public function __construct(array $values = array())
+    public function __construct(array $values = [])
     {
         $this->factories = new \SplObjectStorage();
         $this->protected = new \SplObjectStorage();
@@ -246,7 +246,7 @@ class Container implements \ArrayAccess
         }
 
         if (isset($this->protected[$this->values[$id]])) {
-            @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), \E_USER_DEPRECATED);
+            @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), E_USER_DEPRECATED);
         }
 
         if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
@@ -285,7 +285,7 @@ class Container implements \ArrayAccess
      *
      * @return static
      */
-    public function register(ServiceProviderInterface $provider, array $values = array())
+    public function register(ServiceProviderInterface $provider, array $values = [])
     {
         $provider->register($this);
 
diff --git a/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php b/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
index 3361c6f1970a201d2916e6a43febfb88232a991a..f10727cca2673895b9dd9f536dd81312f95acaed 100644
--- a/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
+++ b/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
@@ -38,7 +38,7 @@ use Psr\Container\ContainerInterface;
 class ServiceLocator implements ContainerInterface
 {
     private $container;
-    private $aliases = array();
+    private $aliases = [];
 
     /**
      * @param PimpleContainer $container The Container instance used to locate services
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
index 8e5c4c73deb07d0abaf3979fe59fc9cedb224714..097a7fd96f6ec896a4d771cd02582b821b2dca29 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
@@ -26,12 +26,13 @@
 
 namespace Pimple\Tests;
 
+use PHPUnit\Framework\TestCase;
 use Pimple\Container;
 
 /**
- * @author  Dominik Zogg <dominik.zogg@gmail.com>
+ * @author Dominik Zogg <dominik.zogg@gmail.com>
  */
-class PimpleServiceProviderInterfaceTest extends \PHPUnit_Framework_TestCase
+class PimpleServiceProviderInterfaceTest extends TestCase
 {
     public function testProvider()
     {
@@ -56,9 +57,9 @@ class PimpleServiceProviderInterfaceTest extends \PHPUnit_Framework_TestCase
     {
         $pimple = new Container();
 
-        $pimple->register(new Fixtures\PimpleServiceProvider(), array(
+        $pimple->register(new Fixtures\PimpleServiceProvider(), [
             'anotherParameter' => 'anotherValue',
-        ));
+        ]);
 
         $this->assertEquals('value', $pimple['param']);
         $this->assertEquals('anotherValue', $pimple['anotherParameter']);
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
index acb66e000261fd76e151cd2f2de3ad69dfc33ebf..ffa50a6a74dbc4c1f547a68c8994cadff786a5ec 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
@@ -26,12 +26,13 @@
 
 namespace Pimple\Tests;
 
+use PHPUnit\Framework\TestCase;
 use Pimple\Container;
 
 /**
  * @author Igor Wiedler <igor@wiedler.ch>
  */
-class PimpleTest extends \PHPUnit_Framework_TestCase
+class PimpleTest extends TestCase
 {
     public function testWithString()
     {
@@ -99,29 +100,29 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     public function testConstructorInjection()
     {
-        $params = array('param' => 'value');
+        $params = ['param' => 'value'];
         $pimple = new Container($params);
 
         $this->assertSame($params['param'], $pimple['param']);
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testOffsetGetValidatesKeyIsPresent()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         echo $pimple['foo'];
     }
 
     /**
      * @group legacy
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
      */
     public function testLegacyOffsetGetValidatesKeyIsPresent()
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         echo $pimple['foo'];
     }
@@ -184,7 +185,9 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
     public function testRaw()
     {
         $pimple = new Container();
-        $pimple['service'] = $definition = $pimple->factory(function () { return 'foo'; });
+        $pimple['service'] = $definition = $pimple->factory(function () {
+            return 'foo';
+        });
         $this->assertSame($definition, $pimple->raw('service'));
     }
 
@@ -201,23 +204,23 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $this->assertSame($pimple, $pimple->register($this->getMockBuilder('Pimple\ServiceProviderInterface')->getMock()));
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testRawValidatesKeyIsPresent()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         $pimple->raw('foo');
     }
 
     /**
      * @group legacy
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
      */
     public function testLegacyRawValidatesKeyIsPresent()
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         $pimple->raw('foo');
     }
@@ -254,13 +257,17 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     public function testExtendDoesNotLeakWithFactories()
     {
-        if (extension_loaded('pimple')) {
+        if (\extension_loaded('pimple')) {
             $this->markTestSkipped('Pimple extension does not support this test');
         }
         $pimple = new Container();
 
-        $pimple['foo'] = $pimple->factory(function () { return; });
-        $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) { return; });
+        $pimple['foo'] = $pimple->factory(function () {
+            return;
+        });
+        $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) {
+            return;
+        });
         unset($pimple['foo']);
 
         $p = new \ReflectionProperty($pimple, 'values');
@@ -272,25 +279,27 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $this->assertCount(0, $p->getValue($pimple));
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testExtendValidatesKeyIsPresent()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
      * @group legacy
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
      */
     public function testLegacyExtendValidatesKeyIsPresent()
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     public function testKeys()
@@ -299,7 +308,7 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $pimple['foo'] = 123;
         $pimple['bar'] = 123;
 
-        $this->assertEquals(array('foo', 'bar'), $pimple->keys());
+        $this->assertEquals(['foo', 'bar'], $pimple->keys());
     }
 
     /** @test */
@@ -322,11 +331,12 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\ExpectedInvokableException
-     * @expectedExceptionMessage Service definition is not a Closure or invokable object.
      */
     public function testFactoryFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
+        $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->factory($service);
     }
@@ -334,22 +344,24 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Service definition is not a Closure or invokable object.
      */
     public function testLegacyFactoryFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->factory($service);
     }
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\ExpectedInvokableException
-     * @expectedExceptionMessage Callable is not a Closure or invokable object.
      */
     public function testProtectFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
+        $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->protect($service);
     }
@@ -357,38 +369,43 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Callable is not a Closure or invokable object.
      */
     public function testLegacyProtectFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->protect($service);
     }
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\InvalidServiceIdentifierException
-     * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
      */
     public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\InvalidServiceIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
+
         $pimple = new Container();
         $pimple['foo'] = $service;
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
      */
     public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
+
         $pimple = new Container();
         $pimple['foo'] = $service;
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
@@ -411,57 +428,61 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\ExpectedInvokableException
-     * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
      */
     public function testExtendFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
+        $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
-        $pimple['foo'] = function () {};
+        $pimple['foo'] = function () {
+        };
         $pimple->extend('foo', $service);
     }
 
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
      */
     public function testLegacyExtendFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
-        $pimple['foo'] = function () {};
+        $pimple['foo'] = function () {
+        };
         $pimple->extend('foo', $service);
     }
 
-    /**
-     * @expectedException \Pimple\Exception\FrozenServiceException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
-     */
     public function testExtendFailsIfFrozenServiceIsNonInvokable()
     {
+        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return new Fixtures\NonInvokable();
         };
         $foo = $pimple['foo'];
 
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
-    /**
-     * @expectedException \Pimple\Exception\FrozenServiceException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
-     */
     public function testExtendFailsIfFrozenServiceIsInvokable()
     {
+        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return new Fixtures\Invokable();
         };
         $foo = $pimple['foo'];
 
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
@@ -469,10 +490,10 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
      */
     public function badServiceDefinitionProvider()
     {
-        return array(
-          array(123),
-          array(new Fixtures\NonInvokable()),
-        );
+        return [
+          [123],
+          [new Fixtures\NonInvokable()],
+        ];
     }
 
     /**
@@ -480,15 +501,15 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
      */
     public function serviceDefinitionProvider()
     {
-        return array(
-            array(function ($value) {
+        return [
+            [function ($value) {
                 $service = new Fixtures\Service();
                 $service->value = $value;
 
                 return $service;
-            }),
-            array(new Fixtures\Invokable()),
-        );
+            }],
+            [new Fixtures\Invokable()],
+        ];
     }
 
     public function testDefiningNewServiceAfterFreeze()
@@ -505,12 +526,11 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $this->assertSame('bar', $pimple['bar']);
     }
 
-    /**
-     * @expectedException \Pimple\Exception\FrozenServiceException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
-     */
     public function testOverridingServiceAfterFreeze()
     {
+        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return 'foo';
@@ -524,11 +544,12 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @group legacy
-     * @expectedException \RuntimeException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
      */
     public function testLegacyOverridingServiceAfterFreeze()
     {
+        $this->expectException(\RuntimeException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return 'foo';
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
index 7ca2d7fffbadab893ae91d24b4ace852a129d2dc..d47b9c3f009e0a84627056595ced557a9efbdf99 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
@@ -44,12 +44,11 @@ class ContainerTest extends TestCase
         $this->assertSame($pimple['service'], $psr->get('service'));
     }
 
-    /**
-     * @expectedException \Psr\Container\NotFoundExceptionInterface
-     * @expectedExceptionMessage Identifier "service" is not defined.
-     */
     public function testGetThrowsExceptionIfServiceIsNotFound()
     {
+        $this->expectException(\Psr\Container\NotFoundExceptionInterface::class);
+        $this->expectExceptionMessage('Identifier "service" is not defined.');
+
         $pimple = new Container();
         $psr = new PsrContainer($pimple);
 
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
index c9a0812591b519ded083bd9131bd75803e472179..bd2d335be67374063cb6b270936c556832cf2a92 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
@@ -44,7 +44,7 @@ class ServiceLocatorTest extends TestCase
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('service'));
+        $locator = new ServiceLocator($pimple, ['service']);
 
         $this->assertSame($pimple['service'], $locator->get('service'));
     }
@@ -55,52 +55,49 @@ class ServiceLocatorTest extends TestCase
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
 
         $this->assertSame($pimple['service'], $locator->get('alias'));
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "service" is not defined.
-     */
     public function testCannotAccessAliasedServiceUsingRealIdentifier()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "service" is not defined.');
+
         $pimple = new Container();
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
 
         $service = $locator->get('service');
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testGetValidatesServiceCanBeLocated()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
 
         $service = $locator->get('foo');
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "invalid" is not defined.
-     */
     public function testGetValidatesTargetServiceExists()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "invalid" is not defined.');
+
         $pimple = new Container();
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'invalid'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'invalid']);
 
         $service = $locator->get('alias');
     }
@@ -114,7 +111,7 @@ class ServiceLocatorTest extends TestCase
         $pimple['service2'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('service1'));
+        $locator = new ServiceLocator($pimple, ['service1']);
 
         $this->assertTrue($locator->has('service1'));
         $this->assertFalse($locator->has('service2'));
@@ -126,7 +123,7 @@ class ServiceLocatorTest extends TestCase
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('foo' => 'service', 'bar' => 'invalid'));
+        $locator = new ServiceLocator($pimple, ['foo' => 'service', 'bar' => 'invalid']);
 
         $this->assertTrue($locator->has('foo'));
         $this->assertFalse($locator->has('bar'));
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php b/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
index 5dd52f0d9819b1da9fc313cb09b134be3d781c8b..2bb935f312ab09545cc2faba242e7634531b8e71 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
@@ -45,8 +45,8 @@ class ServiceIteratorTest extends TestCase
         $pimple['service3'] = function () {
             return new Service();
         };
-        $iterator = new ServiceIterator($pimple, array('service1', 'service2'));
+        $iterator = new ServiceIterator($pimple, ['service1', 'service2']);
 
-        $this->assertSame(array('service1' => $pimple['service1'], 'service2' => $pimple['service2']), iterator_to_array($iterator));
+        $this->assertSame(['service1' => $pimple['service1'], 'service2' => $pimple['service2']], iterator_to_array($iterator));
     }
 }
diff --git a/vendor/psr/log/.gitignore b/vendor/psr/log/.gitignore
deleted file mode 100644
index 22d0d82f8095e9c0ed572776afb47f9ca293ce00..0000000000000000000000000000000000000000
--- a/vendor/psr/log/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-vendor
diff --git a/vendor/psr/log/Psr/Log/LoggerInterface.php b/vendor/psr/log/Psr/Log/LoggerInterface.php
index 5ea72438b56694639c13101cbc3c82339a6e96a8..2206cfde41aec794089817f90269a03d251db018 100644
--- a/vendor/psr/log/Psr/Log/LoggerInterface.php
+++ b/vendor/psr/log/Psr/Log/LoggerInterface.php
@@ -22,8 +22,8 @@ interface LoggerInterface
     /**
      * System is unusable.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -35,8 +35,8 @@ interface LoggerInterface
      * Example: Entire website down, database unavailable, etc. This should
      * trigger the SMS alerts and wake you up.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -47,8 +47,8 @@ interface LoggerInterface
      *
      * Example: Application component unavailable, unexpected exception.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -58,8 +58,8 @@ interface LoggerInterface
      * Runtime errors that do not require immediate action but should typically
      * be logged and monitored.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -71,8 +71,8 @@ interface LoggerInterface
      * Example: Use of deprecated APIs, poor use of an API, undesirable things
      * that are not necessarily wrong.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -81,8 +81,8 @@ interface LoggerInterface
     /**
      * Normal but significant events.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -93,8 +93,8 @@ interface LoggerInterface
      *
      * Example: User logs in, SQL logs.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -103,8 +103,8 @@ interface LoggerInterface
     /**
      * Detailed debug information.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -113,11 +113,13 @@ interface LoggerInterface
     /**
      * Logs with an arbitrary level.
      *
-     * @param mixed  $level
-     * @param string $message
-     * @param array  $context
+     * @param mixed   $level
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
+     *
+     * @throws \Psr\Log\InvalidArgumentException
      */
     public function log($level, $message, array $context = array());
 }
diff --git a/vendor/psr/log/Psr/Log/LoggerTrait.php b/vendor/psr/log/Psr/Log/LoggerTrait.php
index 867225df1d12469facd1355e6db7467e0d8de128..e392fef0a0cb0a6653ab2a2a887e8811937ef51f 100644
--- a/vendor/psr/log/Psr/Log/LoggerTrait.php
+++ b/vendor/psr/log/Psr/Log/LoggerTrait.php
@@ -135,6 +135,8 @@ trait LoggerTrait
      * @param array  $context
      *
      * @return void
+     *
+     * @throws \Psr\Log\InvalidArgumentException
      */
     abstract public function log($level, $message, array $context = array());
 }
diff --git a/vendor/psr/log/Psr/Log/NullLogger.php b/vendor/psr/log/Psr/Log/NullLogger.php
index d8cd682c8f963e8f5e04f46a4a57308cc8d9ecf0..c8f7293b1c66886bcb2d47f30f5a8decc67712ba 100644
--- a/vendor/psr/log/Psr/Log/NullLogger.php
+++ b/vendor/psr/log/Psr/Log/NullLogger.php
@@ -20,6 +20,8 @@ class NullLogger extends AbstractLogger
      * @param array  $context
      *
      * @return void
+     *
+     * @throws \Psr\Log\InvalidArgumentException
      */
     public function log($level, $message, array $context = array())
     {
diff --git a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
index 4b861c3ef6c31bf99c0fc78d0fc2fbc2711d88aa..e1e5354d2c8b008e46aa93fdac3a2c9a824fc451 100644
--- a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
+++ b/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
@@ -4,6 +4,7 @@ namespace Psr\Log\Test;
 
 use Psr\Log\LoggerInterface;
 use Psr\Log\LogLevel;
+use PHPUnit\Framework\TestCase;
 
 /**
  * Provides a base test class for ensuring compliance with the LoggerInterface.
@@ -11,7 +12,7 @@ use Psr\Log\LogLevel;
  * Implementors can extend the class and implement abstract methods to run this
  * as part of their test suite.
  */
-abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
+abstract class LoggerInterfaceTest extends TestCase
 {
     /**
      * @return LoggerInterface
@@ -135,10 +136,3 @@ abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($expected, $this->getLogs());
     }
 }
-
-class DummyTest
-{
-    public function __toString()
-    {
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/Test/TestLogger.php b/vendor/psr/log/Psr/Log/Test/TestLogger.php
index 0cdffe4f9263b98f870b9615c07b005f54b14ca7..1be3230496b704fe90bc5e6cf69e7a615863c7d1 100644
--- a/vendor/psr/log/Psr/Log/Test/TestLogger.php
+++ b/vendor/psr/log/Psr/Log/Test/TestLogger.php
@@ -142,5 +142,6 @@ class TestLogger extends AbstractLogger
     public function reset()
     {
         $this->records = [];
+        $this->recordsByLevel = [];
     }
 }
diff --git a/vendor/psr/log/README.md b/vendor/psr/log/README.md
index 5571a25e8df01732f1b7141b3ccc6835b3bb429c..a9f20c437b385e5afab15096bde84c51e31bc812 100644
--- a/vendor/psr/log/README.md
+++ b/vendor/psr/log/README.md
@@ -38,6 +38,12 @@ class Foo
         if ($this->logger) {
             $this->logger->info('Doing work');
         }
+           
+        try {
+            $this->doSomethingElse();
+        } catch (Exception $exception) {
+            $this->logger->error('Oh no!', array('exception' => $exception));
+        }
 
         // do something useful
     }
diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json
index 87934d707e7a37325a0ec6afe4b63aaa4ca6337c..3f6d4eea4cb348c964c7642291dd7c608697c028 100644
--- a/vendor/psr/log/composer.json
+++ b/vendor/psr/log/composer.json
@@ -20,7 +20,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.0.x-dev"
+            "dev-master": "1.1.x-dev"
         }
     }
 }
diff --git a/vendor/symfony/debug/.gitignore b/vendor/symfony/debug/.gitignore
deleted file mode 100644
index c49a5d8df5c6548379f00c77fe572a7217bce218..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/debug/BufferingLogger.php b/vendor/symfony/debug/BufferingLogger.php
index e7db3a4ce4c6af5f4e79dbc04b4578afb73d292b..5280c33bb0e59ccf7f71e469ce46e051d633d249 100644
--- a/vendor/symfony/debug/BufferingLogger.php
+++ b/vendor/symfony/debug/BufferingLogger.php
@@ -13,15 +13,22 @@ namespace Symfony\Component\Debug;
 
 use Psr\Log\AbstractLogger;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', BufferingLogger::class, \Symfony\Component\ErrorHandler\BufferingLogger::class), \E_USER_DEPRECATED);
+
 /**
  * A buffering logger that stacks logs for later.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\BufferingLogger instead.
  */
 class BufferingLogger extends AbstractLogger
 {
     private $logs = [];
 
+    /**
+     * @return void
+     */
     public function log($level, $message, array $context = [])
     {
         $this->logs[] = [$level, $message, $context];
diff --git a/vendor/symfony/debug/CHANGELOG.md b/vendor/symfony/debug/CHANGELOG.md
index 367e834f01e7e5914976337e06afe134c1c2cac7..989c1a72da7afb61d03a908ab6590b69bce5fae7 100644
--- a/vendor/symfony/debug/CHANGELOG.md
+++ b/vendor/symfony/debug/CHANGELOG.md
@@ -1,6 +1,12 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * deprecated `FlattenException`, use the `FlattenException` of the `ErrorHandler` component
+ * deprecated the whole component in favor of the `ErrorHandler` component
+
 4.3.0
 -----
 
diff --git a/vendor/symfony/debug/Debug.php b/vendor/symfony/debug/Debug.php
index 5d2d55cf9f02192d4ea56d36c8a3169be36d055a..a44b993f37a91eff00fcb063a452c4a8baab320e 100644
--- a/vendor/symfony/debug/Debug.php
+++ b/vendor/symfony/debug/Debug.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', Debug::class, \Symfony\Component\ErrorHandler\Debug::class), \E_USER_DEPRECATED);
+
 /**
  * Registers all the debug tools.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Debug instead.
  */
 class Debug
 {
@@ -28,7 +32,7 @@ class Debug
      * @param int  $errorReportingLevel The level of error reporting you want
      * @param bool $displayErrors       Whether to display errors (for development) or just log them (for production)
      */
-    public static function enable($errorReportingLevel = E_ALL, $displayErrors = true)
+    public static function enable($errorReportingLevel = \E_ALL, $displayErrors = true)
     {
         if (static::$enabled) {
             return;
@@ -39,13 +43,13 @@ class Debug
         if (null !== $errorReportingLevel) {
             error_reporting($errorReportingLevel);
         } else {
-            error_reporting(E_ALL);
+            error_reporting(\E_ALL);
         }
 
         if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
             ini_set('display_errors', 0);
             ExceptionHandler::register();
-        } elseif ($displayErrors && (!filter_var(ini_get('log_errors'), FILTER_VALIDATE_BOOLEAN) || ini_get('error_log'))) {
+        } elseif ($displayErrors && (!filter_var(ini_get('log_errors'), \FILTER_VALIDATE_BOOLEAN) || ini_get('error_log'))) {
             // CLI - display errors only if they're not already logged to STDERR
             ini_set('display_errors', 1);
         }
diff --git a/vendor/symfony/debug/DebugClassLoader.php b/vendor/symfony/debug/DebugClassLoader.php
index 42e803b9db4edcb056def7da16fc87107c750fb7..519a3c8f2fd8b408f905a0aaf18e395f91c7fbdd 100644
--- a/vendor/symfony/debug/DebugClassLoader.php
+++ b/vendor/symfony/debug/DebugClassLoader.php
@@ -13,6 +13,8 @@ namespace Symfony\Component\Debug;
 
 use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', DebugClassLoader::class, \Symfony\Component\ErrorHandler\DebugClassLoader::class), \E_USER_DEPRECATED);
+
 /**
  * Autoloader checking if the class is really defined in the file found.
  *
@@ -24,6 +26,8 @@ use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation;
  * @author Christophe Coevoet <stof@notk.org>
  * @author Nicolas Grekas <p@tchwork.com>
  * @author Guilhem Niot <guilhem.niot@gmail.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\DebugClassLoader instead.
  */
 class DebugClassLoader
 {
@@ -60,7 +64,7 @@ class DebugClassLoader
             } elseif (substr($test, -\strlen($file)) === $file) {
                 // filesystem is case insensitive and realpath() normalizes the case of characters
                 self::$caseCheck = 1;
-            } elseif (false !== stripos(PHP_OS, 'darwin')) {
+            } elseif (false !== stripos(\PHP_OS, 'darwin')) {
                 // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters
                 self::$caseCheck = 2;
             } else {
@@ -145,7 +149,7 @@ class DebugClassLoader
      */
     public function loadClass($class)
     {
-        $e = error_reporting(error_reporting() | E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR);
+        $e = error_reporting(error_reporting() | \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR);
 
         try {
             if ($this->isFinder && !isset($this->loaded[$class])) {
@@ -170,7 +174,7 @@ class DebugClassLoader
         $this->checkClass($class, $file);
     }
 
-    private function checkClass($class, $file = null)
+    private function checkClass(string $class, string $file = null)
     {
         $exists = null === $file || class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
 
@@ -197,7 +201,7 @@ class DebugClassLoader
             $deprecations = $this->checkAnnotations($refl, $name);
 
             foreach ($deprecations as $message) {
-                @trigger_error($message, E_USER_DEPRECATED);
+                @trigger_error($message, \E_USER_DEPRECATED);
             }
         }
 
@@ -238,7 +242,7 @@ class DebugClassLoader
                 }
             }
 
-            if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+(?:[\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, PREG_SET_ORDER)) {
+            if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+(?:[\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, \PREG_SET_ORDER)) {
                 foreach ($notice as $method) {
                     $static = '' !== $method[1];
                     $name = $method[2];
@@ -258,7 +262,7 @@ class DebugClassLoader
         }
 
         $parent = get_parent_class($class);
-        $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent);
+        $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent ?: null);
         if ($parent) {
             $parentAndOwnInterfaces[$parent] = $parent;
 
@@ -375,7 +379,7 @@ class DebugClassLoader
             if ($finalOrInternal || $method->isConstructor() || false === strpos($doc, '@param') || StatelessInvocation::class === $class) {
                 continue;
             }
-            if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, PREG_SET_ORDER)) {
+            if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, \PREG_SET_ORDER)) {
                 continue;
             }
             if (!isset(self::$annotatedParameters[$class][$method->name])) {
@@ -387,7 +391,7 @@ class DebugClassLoader
             foreach ($matches as list(, $parameterType, $parameterName)) {
                 if (!isset($definedParameters[$parameterName])) {
                     $parameterType = trim($parameterType);
-                    self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its parent class "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, $method->class);
+                    self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its %s "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, interface_exists($class) ? 'interface' : 'parent class', $method->class);
                 }
             }
         }
@@ -440,7 +444,7 @@ class DebugClassLoader
     /**
      * `realpath` on MacOSX doesn't normalize the case of characters.
      */
-    private function darwinRealpath($real)
+    private function darwinRealpath(string $real): string
     {
         $i = 1 + strrpos($real, '/');
         $file = substr($real, $i);
@@ -455,7 +459,11 @@ class DebugClassLoader
                 $real = self::$darwinCache[$kDir][0];
             } else {
                 $dir = getcwd();
-                chdir($real);
+
+                if (!@chdir($real)) {
+                    return $real.$file;
+                }
+
                 $real = getcwd().'/';
                 chdir($dir);
 
@@ -482,7 +490,7 @@ class DebugClassLoader
         }
 
         if (isset($dirFiles[$file])) {
-            return $real .= $dirFiles[$file];
+            return $real.$dirFiles[$file];
         }
 
         $kFile = strtolower($file);
@@ -501,18 +509,15 @@ class DebugClassLoader
             self::$darwinCache[$kDir][1] = $dirFiles;
         }
 
-        return $real .= $dirFiles[$kFile];
+        return $real.$dirFiles[$kFile];
     }
 
     /**
      * `class_implements` includes interfaces from the parents so we have to manually exclude them.
      *
-     * @param string       $class
-     * @param string|false $parent
-     *
      * @return string[]
      */
-    private function getOwnInterfaces($class, $parent)
+    private function getOwnInterfaces(string $class, ?string $parent): array
     {
         $ownInterfaces = class_implements($class, false);
 
diff --git a/vendor/symfony/debug/ErrorHandler.php b/vendor/symfony/debug/ErrorHandler.php
index e866c91deadfa2b95c55ef253640e14333cd021b..6d562c5f562726bcea83fb39a41c1a5f87e46c14 100644
--- a/vendor/symfony/debug/ErrorHandler.php
+++ b/vendor/symfony/debug/ErrorHandler.php
@@ -23,6 +23,8 @@ use Symfony\Component\Debug\FatalErrorHandler\FatalErrorHandlerInterface;
 use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler;
 use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED);
+
 /**
  * A generic ErrorHandler for the PHP engine.
  *
@@ -47,43 +49,45 @@ use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
  *
  * @final since Symfony 4.3
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead.
  */
 class ErrorHandler
 {
     private $levels = [
-        E_DEPRECATED => 'Deprecated',
-        E_USER_DEPRECATED => 'User Deprecated',
-        E_NOTICE => 'Notice',
-        E_USER_NOTICE => 'User Notice',
-        E_STRICT => 'Runtime Notice',
-        E_WARNING => 'Warning',
-        E_USER_WARNING => 'User Warning',
-        E_COMPILE_WARNING => 'Compile Warning',
-        E_CORE_WARNING => 'Core Warning',
-        E_USER_ERROR => 'User Error',
-        E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
-        E_COMPILE_ERROR => 'Compile Error',
-        E_PARSE => 'Parse Error',
-        E_ERROR => 'Error',
-        E_CORE_ERROR => 'Core Error',
+        \E_DEPRECATED => 'Deprecated',
+        \E_USER_DEPRECATED => 'User Deprecated',
+        \E_NOTICE => 'Notice',
+        \E_USER_NOTICE => 'User Notice',
+        \E_STRICT => 'Runtime Notice',
+        \E_WARNING => 'Warning',
+        \E_USER_WARNING => 'User Warning',
+        \E_COMPILE_WARNING => 'Compile Warning',
+        \E_CORE_WARNING => 'Core Warning',
+        \E_USER_ERROR => 'User Error',
+        \E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
+        \E_COMPILE_ERROR => 'Compile Error',
+        \E_PARSE => 'Parse Error',
+        \E_ERROR => 'Error',
+        \E_CORE_ERROR => 'Core Error',
     ];
 
     private $loggers = [
-        E_DEPRECATED => [null, LogLevel::INFO],
-        E_USER_DEPRECATED => [null, LogLevel::INFO],
-        E_NOTICE => [null, LogLevel::WARNING],
-        E_USER_NOTICE => [null, LogLevel::WARNING],
-        E_STRICT => [null, LogLevel::WARNING],
-        E_WARNING => [null, LogLevel::WARNING],
-        E_USER_WARNING => [null, LogLevel::WARNING],
-        E_COMPILE_WARNING => [null, LogLevel::WARNING],
-        E_CORE_WARNING => [null, LogLevel::WARNING],
-        E_USER_ERROR => [null, LogLevel::CRITICAL],
-        E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
-        E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
-        E_PARSE => [null, LogLevel::CRITICAL],
-        E_ERROR => [null, LogLevel::CRITICAL],
-        E_CORE_ERROR => [null, LogLevel::CRITICAL],
+        \E_DEPRECATED => [null, LogLevel::INFO],
+        \E_USER_DEPRECATED => [null, LogLevel::INFO],
+        \E_NOTICE => [null, LogLevel::WARNING],
+        \E_USER_NOTICE => [null, LogLevel::WARNING],
+        \E_STRICT => [null, LogLevel::WARNING],
+        \E_WARNING => [null, LogLevel::WARNING],
+        \E_USER_WARNING => [null, LogLevel::WARNING],
+        \E_COMPILE_WARNING => [null, LogLevel::WARNING],
+        \E_CORE_WARNING => [null, LogLevel::WARNING],
+        \E_USER_ERROR => [null, LogLevel::CRITICAL],
+        \E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
+        \E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
+        \E_PARSE => [null, LogLevel::CRITICAL],
+        \E_ERROR => [null, LogLevel::CRITICAL],
+        \E_CORE_ERROR => [null, LogLevel::CRITICAL],
     ];
 
     private $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
@@ -154,7 +158,7 @@ class ErrorHandler
             $handler->setExceptionHandler($prev);
         }
 
-        $handler->throwAt(E_ALL & $handler->thrownErrors, true);
+        $handler->throwAt(\E_ALL & $handler->thrownErrors, true);
 
         return $handler;
     }
@@ -172,11 +176,10 @@ class ErrorHandler
     /**
      * Sets a logger to non assigned errors levels.
      *
-     * @param LoggerInterface $logger  A PSR-3 logger to put as default for the given levels
-     * @param array|int       $levels  An array map of E_* to LogLevel::* or an integer bit field of E_* constants
-     * @param bool            $replace Whether to replace or not any existing logger
+     * @param array|int $levels  An array map of E_* to LogLevel::* or an integer bit field of E_* constants
+     * @param bool      $replace Whether to replace or not any existing logger
      */
-    public function setDefaultLogger(LoggerInterface $logger, $levels = E_ALL, $replace = false)
+    public function setDefaultLogger(LoggerInterface $logger, $levels = \E_ALL, $replace = false)
     {
         $loggers = [];
 
@@ -188,7 +191,7 @@ class ErrorHandler
             }
         } else {
             if (null === $levels) {
-                $levels = E_ALL;
+                $levels = \E_ALL;
             }
             foreach ($this->loggers as $type => $log) {
                 if (($type & $levels) && (empty($log[0]) || $replace || $log[0] === $this->bootstrappingLogger)) {
@@ -223,14 +226,14 @@ class ErrorHandler
             if (!\is_array($log)) {
                 $log = [$log];
             } elseif (!\array_key_exists(0, $log)) {
-                throw new \InvalidArgumentException('No logger provided');
+                throw new \InvalidArgumentException('No logger provided.');
             }
             if (null === $log[0]) {
                 $this->loggedErrors &= ~$type;
             } elseif ($log[0] instanceof LoggerInterface) {
                 $this->loggedErrors |= $type;
             } else {
-                throw new \InvalidArgumentException('Invalid logger provided');
+                throw new \InvalidArgumentException('Invalid logger provided.');
             }
             $this->loggers[$type] = $log + $prev[$type];
 
@@ -242,7 +245,7 @@ class ErrorHandler
 
         if ($flush) {
             foreach ($this->bootstrappingLogger->cleanLogs() as $log) {
-                $type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : E_ERROR;
+                $type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : \E_ERROR;
                 if (!isset($flush[$type])) {
                     $this->bootstrappingLogger->log($log[0], $log[1], $log[2]);
                 } elseif ($this->loggers[$type][0]) {
@@ -280,7 +283,7 @@ class ErrorHandler
     public function throwAt($levels, $replace = false)
     {
         $prev = $this->thrownErrors;
-        $this->thrownErrors = ($levels | E_RECOVERABLE_ERROR | E_USER_ERROR) & ~E_USER_DEPRECATED & ~E_DEPRECATED;
+        $this->thrownErrors = ($levels | \E_RECOVERABLE_ERROR | \E_USER_ERROR) & ~\E_USER_DEPRECATED & ~\E_DEPRECATED;
         if (!$replace) {
             $this->thrownErrors |= $prev;
         }
@@ -349,7 +352,7 @@ class ErrorHandler
     /**
      * Re-registers as a PHP error handler if levels changed.
      */
-    private function reRegister($prev)
+    private function reRegister(int $prev)
     {
         if ($prev !== $this->thrownErrors | $this->loggedErrors) {
             $handler = set_error_handler('var_dump');
@@ -382,15 +385,15 @@ class ErrorHandler
      */
     public function handleError($type, $message, $file, $line)
     {
-        if (\PHP_VERSION_ID >= 70300 && E_WARNING === $type && '"' === $message[0] && false !== strpos($message, '" targeting switch is equivalent to "break')) {
-            $type = E_DEPRECATED;
+        if (\PHP_VERSION_ID >= 70300 && \E_WARNING === $type && '"' === $message[0] && false !== strpos($message, '" targeting switch is equivalent to "break')) {
+            $type = \E_DEPRECATED;
         }
 
         // Level is the current error reporting level to manage silent error.
         $level = error_reporting();
         $silenced = 0 === ($level & $type);
         // Strong errors are not authorized to be silenced.
-        $level |= E_RECOVERABLE_ERROR | E_USER_ERROR | E_DEPRECATED | E_USER_DEPRECATED;
+        $level |= \E_RECOVERABLE_ERROR | \E_USER_ERROR | \E_DEPRECATED | \E_USER_DEPRECATED;
         $log = $this->loggedErrors & $type;
         $throw = $this->thrownErrors & $type & $level;
         $type &= $level | $this->screamedErrors;
@@ -400,19 +403,7 @@ class ErrorHandler
         }
         $scope = $this->scopedErrors & $type;
 
-        if (4 < $numArgs = \func_num_args()) {
-            $context = $scope ? (func_get_arg(4) ?: []) : [];
-        } else {
-            $context = [];
-        }
-
-        if (isset($context['GLOBALS']) && $scope) {
-            $e = $context;                  // Whatever the signature of the method,
-            unset($e['GLOBALS'], $context); // $context is always a reference in 5.3
-            $context = $e;
-        }
-
-        if (false !== strpos($message, "class@anonymous\0")) {
+        if (false !== strpos($message, "@anonymous\0")) {
             $logMessage = $this->levels[$type].': '.(new FlattenException())->setMessage($message)->getMessage();
         } else {
             $logMessage = $this->levels[$type].': '.$message;
@@ -423,7 +414,7 @@ class ErrorHandler
             self::$toStringException = null;
         } elseif (!$throw && !($type & $level)) {
             if (!isset(self::$silencedErrorCache[$id = $file.':'.$line])) {
-                $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : [];
+                $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : [];
                 $errorAsException = new SilencedErrorContext($type, $file, $line, isset($lightTrace[1]) ? [$lightTrace[0]] : $lightTrace);
             } elseif (isset(self::$silencedErrorCache[$id][$message])) {
                 $lightTrace = null;
@@ -458,7 +449,7 @@ class ErrorHandler
         }
 
         if ($throw) {
-            if (\PHP_VERSION_ID < 70400 && E_USER_ERROR & $type) {
+            if (\PHP_VERSION_ID < 70400 && \E_USER_ERROR & $type) {
                 for ($i = 1; isset($backtrace[$i]); ++$i) {
                     if (isset($backtrace[$i]['function'], $backtrace[$i]['type'], $backtrace[$i - 1]['function'])
                         && '__toString' === $backtrace[$i]['function']
@@ -473,6 +464,8 @@ class ErrorHandler
                         // `return trigger_error($e, E_USER_ERROR);` allows this error handler
                         // to make $e get through the __toString() barrier.
 
+                        $context = 4 < \func_num_args() ? (func_get_arg(4) ?: []) : [];
+
                         foreach ($context as $e) {
                             if ($e instanceof \Throwable && $e->__toString() === $message) {
                                 self::$toStringException = $e;
@@ -496,7 +489,7 @@ class ErrorHandler
         if ($this->isRecursive) {
             $log = 0;
         } else {
-            if (!\defined('HHVM_VERSION')) {
+            if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
                 $currentErrorHandler = set_error_handler('var_dump');
                 restore_error_handler();
             }
@@ -508,7 +501,7 @@ class ErrorHandler
             } finally {
                 $this->isRecursive = false;
 
-                if (!\defined('HHVM_VERSION')) {
+                if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
                     set_error_handler($currentErrorHandler);
                 }
             }
@@ -533,11 +526,11 @@ class ErrorHandler
         if (!$exception instanceof \Exception) {
             $exception = new FatalThrowableError($exception);
         }
-        $type = $exception instanceof FatalErrorException ? $exception->getSeverity() : E_ERROR;
+        $type = $exception instanceof FatalErrorException ? $exception->getSeverity() : \E_ERROR;
         $handlerException = null;
 
         if (($this->loggedErrors & $type) || $exception instanceof FatalThrowableError) {
-            if (false !== strpos($message = $exception->getMessage(), "class@anonymous\0")) {
+            if (false !== strpos($message = $exception->getMessage(), "@anonymous\0")) {
                 $message = (new FlattenException())->setMessage($message)->getMessage();
             }
             if ($exception instanceof FatalErrorException) {
@@ -640,7 +633,7 @@ class ErrorHandler
             $error = error_get_last();
         }
 
-        if ($error && $error['type'] &= E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR) {
+        if ($error && $error['type'] &= \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR) {
             // Let's not throw anymore but keep logging
             $handler->throwAt(0, true);
             $trace = isset($error['backtrace']) ? $error['backtrace'] : null;
@@ -688,7 +681,7 @@ class ErrorHandler
     /**
      * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader.
      */
-    private function cleanTrace($backtrace, $type, $file, $line, $throw)
+    private function cleanTrace(array $backtrace, int $type, string $file, int $line, bool $throw): array
     {
         $lightTrace = $backtrace;
 
diff --git a/vendor/symfony/debug/Exception/ClassNotFoundException.php b/vendor/symfony/debug/Exception/ClassNotFoundException.php
index fa98c4975d02a5f0a3719ee873560d0261c46495..998e4a98b1336fd73aefc463d5694bac67e3a2f4 100644
--- a/vendor/symfony/debug/Exception/ClassNotFoundException.php
+++ b/vendor/symfony/debug/Exception/ClassNotFoundException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundException::class, \Symfony\Component\ErrorHandler\Error\ClassNotFoundError::class), \E_USER_DEPRECATED);
+
 /**
  * Class (or Trait or Interface) Not Found Exception.
  *
  * @author Konstanton Myakshin <koc-dp@yandex.ru>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\ClassNotFoundError instead.
  */
 class ClassNotFoundException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/Exception/FatalErrorException.php b/vendor/symfony/debug/Exception/FatalErrorException.php
index 93880fbc323cd14c7eb22a9cc4db21e6387127a6..ca342652511cd7f684789caad3bb494719f5cad5 100644
--- a/vendor/symfony/debug/Exception/FatalErrorException.php
+++ b/vendor/symfony/debug/Exception/FatalErrorException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorException::class, \Symfony\Component\ErrorHandler\Error\FatalError::class), \E_USER_DEPRECATED);
+
 /**
  * Fatal Error Exception.
  *
  * @author Konstanton Myakshin <koc-dp@yandex.ru>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\FatalError instead.
  */
 class FatalErrorException extends \ErrorException
 {
diff --git a/vendor/symfony/debug/Exception/FatalThrowableError.php b/vendor/symfony/debug/Exception/FatalThrowableError.php
index cdafb2a56842dd43d33842c79c2bd2de9c78d1f1..65634f51ee0f9a65c120fabe72173ac85d5c71a8 100644
--- a/vendor/symfony/debug/Exception/FatalThrowableError.php
+++ b/vendor/symfony/debug/Exception/FatalThrowableError.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4.', FatalThrowableError::class), \E_USER_DEPRECATED);
+
 /**
  * Fatal Throwable Error.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @deprecated since Symfony 4.4
  */
 class FatalThrowableError extends FatalErrorException
 {
@@ -22,14 +26,14 @@ class FatalThrowableError extends FatalErrorException
 
     public function __construct(\Throwable $e)
     {
-        $this->originalClassName = \get_class($e);
+        $this->originalClassName = get_debug_type($e);
 
         if ($e instanceof \ParseError) {
-            $severity = E_PARSE;
+            $severity = \E_PARSE;
         } elseif ($e instanceof \TypeError) {
-            $severity = E_RECOVERABLE_ERROR;
+            $severity = \E_RECOVERABLE_ERROR;
         } else {
-            $severity = E_ERROR;
+            $severity = \E_ERROR;
         }
 
         \ErrorException::__construct(
diff --git a/vendor/symfony/debug/Exception/FlattenException.php b/vendor/symfony/debug/Exception/FlattenException.php
index 2e97ac39bbd35926dfeda8f6c557ee8287ca7234..b48769a2a3dfb6672b5c6b5f12e45a07476ad2c4 100644
--- a/vendor/symfony/debug/Exception/FlattenException.php
+++ b/vendor/symfony/debug/Exception/FlattenException.php
@@ -20,6 +20,8 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  * Basically, this class removes all objects from the trace.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\FlattenException instead.
  */
 class FlattenException
 {
@@ -34,12 +36,18 @@ class FlattenException
     private $file;
     private $line;
 
+    /**
+     * @return static
+     */
     public static function create(\Exception $exception, $statusCode = null, array $headers = [])
     {
         return static::createFromThrowable($exception, $statusCode, $headers);
     }
 
-    public static function createFromThrowable(\Throwable $exception, ?int $statusCode = null, array $headers = []): self
+    /**
+     * @return static
+     */
+    public static function createFromThrowable(\Throwable $exception, int $statusCode = null, array $headers = [])
     {
         $e = new static();
         $e->setMessage($exception->getMessage());
@@ -59,7 +67,7 @@ class FlattenException
         $e->setStatusCode($statusCode);
         $e->setHeaders($headers);
         $e->setTraceFromThrowable($exception);
-        $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : \get_class($exception));
+        $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : get_debug_type($exception));
         $e->setFile($exception->getFile());
         $e->setLine($exception->getLine());
 
@@ -126,7 +134,7 @@ class FlattenException
      */
     public function setClass($class)
     {
-        $this->class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class;
+        $this->class = false !== strpos($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class;
 
         return $this;
     }
@@ -171,9 +179,9 @@ class FlattenException
      */
     public function setMessage($message)
     {
-        if (false !== strpos($message, "class@anonymous\0")) {
-            $message = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
-                return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
+        if (false !== strpos($message, "@anonymous\0")) {
+            $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) {
+                return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0];
             }, $message);
         }
 
@@ -233,7 +241,7 @@ class FlattenException
      */
     public function setTraceFromException(\Exception $exception)
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->setTraceFromThrowable($exception);
     }
@@ -285,7 +293,7 @@ class FlattenException
         return $this;
     }
 
-    private function flattenArgs($args, $level = 0, &$count = 0)
+    private function flattenArgs(array $args, int $level = 0, int &$count = 0): array
     {
         $result = [];
         foreach ($args as $key => $value) {
@@ -321,7 +329,7 @@ class FlattenException
         return $result;
     }
 
-    private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value)
+    private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string
     {
         $array = new \ArrayObject($value);
 
diff --git a/vendor/symfony/debug/Exception/OutOfMemoryException.php b/vendor/symfony/debug/Exception/OutOfMemoryException.php
index fec19798364502d573e47c17da34290db2c43a4a..b1dc0ef4badbac5ca8368acc0910996008df9e94 100644
--- a/vendor/symfony/debug/Exception/OutOfMemoryException.php
+++ b/vendor/symfony/debug/Exception/OutOfMemoryException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', OutOfMemoryException::class, \Symfony\Component\ErrorHandler\Error\OutOfMemoryError::class), \E_USER_DEPRECATED);
+
 /**
  * Out of memory exception.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\OutOfMemoryError instead.
  */
 class OutOfMemoryException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/Exception/SilencedErrorContext.php b/vendor/symfony/debug/Exception/SilencedErrorContext.php
index 95bd7795f88b24fa2a3e3754cf1df56ac8d3de07..03e2fb30ba8dfbcfce51d734b40d7d69594435d3 100644
--- a/vendor/symfony/debug/Exception/SilencedErrorContext.php
+++ b/vendor/symfony/debug/Exception/SilencedErrorContext.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', SilencedErrorContext::class, \Symfony\Component\ErrorHandler\Exception\SilencedErrorContext::class), \E_USER_DEPRECATED);
+
 /**
  * Data Object that represents a Silenced Error.
  *
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext instead.
  */
 class SilencedErrorContext implements \JsonSerializable
 {
diff --git a/vendor/symfony/debug/Exception/UndefinedFunctionException.php b/vendor/symfony/debug/Exception/UndefinedFunctionException.php
index d936c8759e36c11bb819fd7c5a050d0d6a7db418..42ab2ec90eea7249cfe2a9cf7d703e87fc218f9b 100644
--- a/vendor/symfony/debug/Exception/UndefinedFunctionException.php
+++ b/vendor/symfony/debug/Exception/UndefinedFunctionException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionException::class, \Symfony\Component\ErrorHandler\Error\UndefinedFunctionError::class), \E_USER_DEPRECATED);
+
 /**
  * Undefined Function Exception.
  *
  * @author Konstanton Myakshin <koc-dp@yandex.ru>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedFunctionError instead.
  */
 class UndefinedFunctionException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/Exception/UndefinedMethodException.php b/vendor/symfony/debug/Exception/UndefinedMethodException.php
index f627561fe16e21dab735c3e062dd69b9a7508162..d72046f3c33e0b33f9e5bd19d97fe5db83b71ae5 100644
--- a/vendor/symfony/debug/Exception/UndefinedMethodException.php
+++ b/vendor/symfony/debug/Exception/UndefinedMethodException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodException::class, \Symfony\Component\ErrorHandler\Error\UndefinedMethodError::class), \E_USER_DEPRECATED);
+
 /**
  * Undefined Method Exception.
  *
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedMethodError instead.
  */
 class UndefinedMethodException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/ExceptionHandler.php b/vendor/symfony/debug/ExceptionHandler.php
index 743de65622d44916501d377e6466082ff69797c5..21be2827cd8642698fd234277e242732af300498 100644
--- a/vendor/symfony/debug/ExceptionHandler.php
+++ b/vendor/symfony/debug/ExceptionHandler.php
@@ -15,6 +15,8 @@ use Symfony\Component\Debug\Exception\FlattenException;
 use Symfony\Component\Debug\Exception\OutOfMemoryException;
 use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ExceptionHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED);
+
 /**
  * ExceptionHandler converts an exception to a Response object.
  *
@@ -28,6 +30,8 @@ use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
  * @author Nicolas Grekas <p@tchwork.com>
  *
  * @final since Symfony 4.3
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead.
  */
 class ExceptionHandler
 {
@@ -170,12 +174,12 @@ class ExceptionHandler
      * This method uses plain PHP functions like header() and echo to output
      * the response.
      *
-     * @param \Exception|FlattenException $exception An \Exception or FlattenException instance
+     * @param \Throwable|FlattenException $exception A \Throwable or FlattenException instance
      */
     public function sendPhpResponse($exception)
     {
-        if (!$exception instanceof FlattenException) {
-            $exception = FlattenException::create($exception);
+        if ($exception instanceof \Throwable) {
+            $exception = FlattenException::createFromThrowable($exception);
         }
 
         if (!headers_sent()) {
@@ -252,7 +256,11 @@ EOF
                 foreach ($e['trace'] as $trace) {
                     $content .= '<tr><td>';
                     if ($trace['function']) {
-                        $content .= sprintf('at <span class="trace-class">%s</span><span class="trace-type">%s</span><span class="trace-method">%s</span>(<span class="trace-arguments">%s</span>)', $this->formatClass($trace['class']), $trace['type'], $trace['function'], $this->formatArgs($trace['args']));
+                        $content .= sprintf('at <span class="trace-class">%s</span><span class="trace-type">%s</span><span class="trace-method">%s</span>', $this->formatClass($trace['class']), $trace['type'], $trace['function']);
+
+                        if (isset($trace['args'])) {
+                            $content .= sprintf('(<span class="trace-arguments">%s</span>)', $this->formatArgs($trace['args']));
+                        }
                     }
                     if (isset($trace['file']) && isset($trace['line'])) {
                         $content .= $this->formatPath($trace['file'], $trace['line']);
@@ -355,7 +363,7 @@ EOF;
 EOF;
     }
 
-    private function decorate($content, $css)
+    private function decorate(string $content, string $css): string
     {
         return <<<EOF
 <!DOCTYPE html>
@@ -372,14 +380,14 @@ EOF;
 EOF;
     }
 
-    private function formatClass($class)
+    private function formatClass(string $class): string
     {
         $parts = explode('\\', $class);
 
         return sprintf('<abbr title="%s">%s</abbr>', $class, array_pop($parts));
     }
 
-    private function formatPath($path, $line)
+    private function formatPath(string $path, int $line): string
     {
         $file = $this->escapeHtml(preg_match('#[^/\\\\]*+$#', $path, $file) ? $file[0] : $path);
         $fmt = $this->fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
@@ -390,7 +398,7 @@ EOF;
 
         if (\is_string($fmt)) {
             $i = strpos($f = $fmt, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f);
-            $fmt = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, PREG_SPLIT_DELIM_CAPTURE);
+            $fmt = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE);
 
             for ($i = 1; isset($fmt[$i]); ++$i) {
                 if (0 === strpos($path, $k = $fmt[$i++])) {
@@ -413,12 +421,8 @@ EOF;
 
     /**
      * Formats an array as a string.
-     *
-     * @param array $args The argument array
-     *
-     * @return string
      */
-    private function formatArgs(array $args)
+    private function formatArgs(array $args): string
     {
         $result = [];
         foreach ($args as $key => $item) {
@@ -445,17 +449,17 @@ EOF;
     /**
      * HTML-encodes a string.
      */
-    private function escapeHtml($str)
+    private function escapeHtml(string $str): string
     {
-        return htmlspecialchars($str, ENT_COMPAT | ENT_SUBSTITUTE, $this->charset);
+        return htmlspecialchars($str, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset);
     }
 
-    private function getSymfonyGhostAsSvg()
+    private function getSymfonyGhostAsSvg(): string
     {
         return '<svg viewBox="0 0 136 81" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4"><path d="M92.4 20.4a23.2 23.2 0 0 1 9 1.9 23.7 23.7 0 0 1 5.2 3 24.3 24.3 0 0 1 3.4 3.4 24.8 24.8 0 0 1 5 9.4c.5 1.7.8 3.4 1 5.2v14.5h.4l.5.2a7.4 7.4 0 0 0 2.5.2l.2-.2.6-.8.8-1.3-.2-.1a5.5 5.5 0 0 1-.8-.3 5.6 5.6 0 0 1-2.3-1.8 5.7 5.7 0 0 1-.9-1.6 6.5 6.5 0 0 1-.2-2.8 7.3 7.3 0 0 1 .5-2l.3-.3.8-.9.3-.3c.2-.2.5-.3.8-.3H120.7c.2 0 .3-.1.4 0h.4l.2.1.3.2.2-.4.3-.4.1-.1 1.2-1 .3-.2.4-.1.4-.1h.3l1.5.1.4.1.8.5.1.2 1 1.1v.2H129.4l.4-.2 1.4-.5h1.1c.3 0 .7.2 1 .4.2 0 .3.2.5.3l.2.2.5.3.4.6.1.3.4 1.4.1.4v.6a7.8 7.8 0 0 1-.1.6 9.9 9.9 0 0 1-.8 2.4 7.8 7.8 0 0 1-3 3.3 6.4 6.4 0 0 1-1 .5 6.1 6.1 0 0 1-.6.2l-.7.1h-.1a23.4 23.4 0 0 1-.2 1.7 14.3 14.3 0 0 1-.6 2.1l-.8 2a9.2 9.2 0 0 1-.4.6l-.7 1a9.1 9.1 0 0 1-2.3 2.2c-.9.5-2 .6-3 .7l-1.4.1h-.5l-.4.1a15.8 15.8 0 0 1-2.8-.1v4.2a9.7 9.7 0 0 1-.7 3.5 9.6 9.6 0 0 1-1.7 2.8 9.3 9.3 0 0 1-3 2.3 9 9 0 0 1-5.4.7 9 9 0 0 1-3-1 9.4 9.4 0 0 1-2.7-2.5 10 10 0 0 1-1 1.2 9.3 9.3 0 0 1-2 1.3 9 9 0 0 1-2.4 1 9 9 0 0 1-6.5-1.1A9.4 9.4 0 0 1 85 77V77a10.9 10.9 0 0 1-.6.6 9.3 9.3 0 0 1-2.7 2 9 9 0 0 1-6 .8 9 9 0 0 1-2.4-1 9.3 9.3 0 0 1-2.3-1.7 9.6 9.6 0 0 1-1.8-2.8 9.7 9.7 0 0 1-.8-3.7v-4a18.5 18.5 0 0 1-2.9.2l-1.2-.1c-1.9-.3-3.7-1-5.1-2.1A8.2 8.2 0 0 1 58 64a10.2 10.2 0 0 1-.9-1.2 15.3 15.3 0 0 1-.7-1.3 20.8 20.8 0 0 1-1.9-6.2v-.2a6.5 6.5 0 0 1-1-.3 6.1 6.1 0 0 1-.6-.3 6.6 6.6 0 0 1-.9-.5 8.2 8.2 0 0 1-2.7-3.8 10 10 0 0 1-.3-1 10.3 10.3 0 0 1-.3-1.9V47v-.4l.1-.4.6-1.4.1-.2a2 2 0 0 1 .8-.8l.3-.2.3-.2a3.2 3.2 0 0 1 1.8-.5h.4l.3.2 1.4.6.2.2.4.3.3.4.7-.7.2-.2.4-.2.6-.2h2.1l.4.2.4.2.3.2.8 1 .2-.1h.1v-.1H63l1.1.1h.3l.8.5.3.4.7 1 .2.3.1.5a11 11 0 0 1 .2 1.5c0 .8 0 1.6-.3 2.3a6 6 0 0 1-.5 1.2 5.5 5.5 0 0 1-3.3 2.5 12.3 12.3 0 0 0 1.4 3h.1l.2.1 1 .2h1.5l.5-.2H67.8l.5-.2h.1V44v-.4a26.7 26.7 0 0 1 .3-2.3 24.7 24.7 0 0 1 5.7-12.5 24.2 24.2 0 0 1 3.5-3.3 23.7 23.7 0 0 1 4.9-3 23.2 23.2 0 0 1 5.6-1.7 23.7 23.7 0 0 1 4-.3zm-.3 2a21.2 21.2 0 0 0-8 1.7 21.6 21.6 0 0 0-4.8 2.7 22.2 22.2 0 0 0-3.2 3 22.7 22.7 0 0 0-5 9.2 23.4 23.4 0 0 0-.7 4.9v15.7l-.5.1a34.3 34.3 0 0 1-1.5.3h-.2l-.4.1h-.4l-.9.2a10 10 0 0 1-1.9 0c-.5 0-1-.2-1.5-.4a1.8 1.8 0 0 1-.3-.2 2 2 0 0 1-.3-.3 5.2 5.2 0 0 1-.1-.2 9 9 0 0 1-.6-.9 13.8 13.8 0 0 1-1-2 14.3 14.3 0 0 1-.6-2 14 14 0 0 1-.1-.8v-.2h.3a12.8 12.8 0 0 0 1.4-.2 4.4 4.4 0 0 0 .3 0 3.6 3.6 0 0 0 1.1-.7 3.4 3.4 0 0 0 1.2-1.7l.2-1.2a5.1 5.1 0 0 0 0-.8 7.2 7.2 0 0 0-.1-.8l-.7-1-1.2-.2-1 .7-.1 1.3a5 5 0 0 1 .1.4v.6a1 1 0 0 1 0 .3c-.1.3-.4.4-.7.5l-1.2.4v-.7A9.9 9.9 0 0 1 60 49l.3-.6v-.2l.1-.1v-1.6l-1-1.2h-1.5l-1 1.1v.4a5.3 5.3 0 0 0-.2.6 5.5 5.5 0 0 0 0 .5c0 .7 0 1.4.3 2 0 .4.2.8.4 1.2L57 51a9.5 9.5 0 0 1-1.1-.5h-.2a2 2 0 0 1-.4-.3c-.4-.4-.5-1-.6-1.6a5.6 5.6 0 0 1 0-.5v-.5-.5l-.6-1.5-1.4-.6-.9.3s-.2 0-.3.2a2 2 0 0 1-.1 0l-.6 1.4v.7a8.5 8.5 0 0 0 .5 2c.4 1.1 1 2.1 2 2.8a4.7 4.7 0 0 0 2.1.9h1a22.8 22.8 0 0 0 .1 1 18.1 18.1 0 0 0 .8 3.8 18.2 18.2 0 0 0 1.6 3.7l1 1.3c1 1 2.3 1.6 3.7 2a11.7 11.7 0 0 0 4.8 0h.4l.5-.2.5-.1.6-.2v6.6a8 8 0 0 0 .1 1.3 7.5 7.5 0 0 0 2.4 4.3 7.2 7.2 0 0 0 2.3 1.3 7 7 0 0 0 7-1.1 7.5 7.5 0 0 0 2-2.6A7.7 7.7 0 0 0 85 72V71a8.2 8.2 0 0 0 .2 1.3c0 .7.3 1.4.6 2a7.5 7.5 0 0 0 1.7 2.3 7.3 7.3 0 0 0 2.2 1.4 7.1 7.1 0 0 0 4.6.2 7.2 7.2 0 0 0 2.4-1.2 7.5 7.5 0 0 0 2.1-2.7 7.8 7.8 0 0 0 .7-2.4V71a9.3 9.3 0 0 0 .1.6 7.6 7.6 0 0 0 .6 2.5 7.5 7.5 0 0 0 2.4 3 7.1 7.1 0 0 0 7 .8 7.3 7.3 0 0 0 2.3-1.5 7.5 7.5 0 0 0 1.6-2.3 7.6 7.6 0 0 0 .5-2l.1-1.1v-6.7l.4.1a12.2 12.2 0 0 0 2 .5 11.1 11.1 0 0 0 2.5 0h.8l1.2-.1a9.5 9.5 0 0 0 1.4-.2l.9-.3a3.5 3.5 0 0 0 .6-.4l1.2-1.4a12.2 12.2 0 0 0 .8-1.2c0-.3.2-.5.3-.7a15.9 15.9 0 0 0 .7-2l.3-1.6v-1.3l.2-.9V54.6a15.5 15.5 0 0 0 1.8 0 4.5 4.5 0 0 0 1.4-.5 5.7 5.7 0 0 0 2.5-3.2 7.6 7.6 0 0 0 .4-1.5v-.3l-.4-1.4a5.2 5.2 0 0 1-.2-.1l-.4-.4a3.8 3.8 0 0 0-.2 0 1.4 1.4 0 0 0-.5-.2l-1.4.4-.7 1.3v.7a5.7 5.7 0 0 1-.1.8l-.7 1.4a1.9 1.9 0 0 1-.5.3h-.3a9.6 9.6 0 0 1-.8.3 8.8 8.8 0 0 1-.6 0l.2-.4.2-.5.2-.3v-.4l.1-.2V50l.1-1 .1-.6v-.6a4.8 4.8 0 0 0 0-.8v-.2l-1-1.1-1.5-.2-1.1 1-.2 1.4v.1l.2.4.2.3v.4l.1 1.1v.3l.1.5v.8a9.6 9.6 0 0 1-.8-.3l-.2-.1h-.3l-.8-.1h-.2a1.6 1.6 0 0 1-.2-.2.9.9 0 0 1-.2-.2 1 1 0 0 1-.1-.5l.2-.9v-1.2l-.9-.8h-1.2l-.8.9v.3a4.8 4.8 0 0 0-.3 2l.3.9a3.5 3.5 0 0 0 1.2 1.6l1 .5.8.2 1.4.1h.4l.2.1a12.1 12.1 0 0 1-1 2.6 13.2 13.2 0 0 1-.8 1.5 9.5 9.5 0 0 1-1 1.2l-.2.3a1.7 1.7 0 0 1-.4.3 2.4 2.4 0 0 1-.7.2h-2.5a7.8 7.8 0 0 1-.6-.2l-.7-.2h-.2a14.8 14.8 0 0 1-.6-.2 23.4 23.4 0 0 1-.4-.1l-.4-.1-.3-.1V43.9a34.6 34.6 0 0 0 0-.6 23.6 23.6 0 0 0-.4-3 22.7 22.7 0 0 0-1.5-4.7 22.6 22.6 0 0 0-4.6-6.7 21.9 21.9 0 0 0-6.9-4.7 21.2 21.2 0 0 0-8.1-1.8H92zm9.1 33.7l.3.1a1 1 0 0 1 .6.8v.4a8.4 8.4 0 0 1 0 .5 8.8 8.8 0 0 1-1.6 4.2l-1 1.3A10 10 0 0 1 95 66c-1.3.3-2.7.4-4 .3a10.4 10.4 0 0 1-2.7-.8 10 10 0 0 1-3.6-2.5 9.3 9.3 0 0 1-.8-1 9 9 0 0 1-.7-1.2 8.6 8.6 0 0 1-.8-3.4V57a1 1 0 0 1 .3-.6 1 1 0 0 1 1.3-.2 1 1 0 0 1 .4.8v.4a6.5 6.5 0 0 0 .5 2.2 7 7 0 0 0 2.1 2.8l1 .6c2.6 1.6 6 1.6 8.5 0a8 8 0 0 0 1.1-.6 7.6 7.6 0 0 0 1.2-1.2 7 7 0 0 0 1-1.7 6.5 6.5 0 0 0 .4-2.5 1 1 0 0 1 .7-1h.4zM30.7 43.7c-15.5 1-28.5-6-30.1-16.4C-1.2 15.7 11.6 4 29 1.3 46.6-1.7 62.3 5.5 64 17.1c1.6 10.4-8.7 21-23.7 25a31.2 31.2 0 0 0 0 .9v.3a19 19 0 0 0 .1 1l.1.4.1.9a4.7 4.7 0 0 0 .5 1l.7 1a9.2 9.2 0 0 0 1.2 1l1.5.8.6.8-.7.6-1.1.3a11.2 11.2 0 0 1-2.6.4 8.6 8.6 0 0 1-3-.5 8.5 8.5 0 0 1-1-.4 11.2 11.2 0 0 1-1.8-1.2 13.3 13.3 0 0 1-1-1 18 18 0 0 1-.7-.6l-.4-.4a23.4 23.4 0 0 1-1.3-1.8l-.1-.1-.3-.5V45l-.3-.6v-.7zM83.1 36c3.6 0 6.5 3.2 6.5 7.1 0 4-3 7.2-6.5 7.2S76.7 47 76.7 43 79.6 36 83 36zm18 0c3.6 0 6.5 3.2 6.5 7.1 0 4-2.9 7.2-6.4 7.2S94.7 47 94.7 43s3-7.1 6.5-7.1zm-18 6.1c2 0 3.5 1.6 3.5 3.6S85 49.2 83 49.2s-3.4-1.6-3.4-3.6S81.2 42 83 42zm17.9 0c1.9 0 3.4 1.6 3.4 3.6s-1.5 3.6-3.4 3.6c-2 0-3.5-1.6-3.5-3.6S99.1 42 101 42zM17 28c-.3 1.6-1.8 5-5.2 5.8-2.5.6-4.1-.8-4.5-2.6-.4-1.9.7-3.5 2.1-4.5A3.5 3.5 0 0 1 8 24.6c-.4-2 .8-3.7 3.2-4.2 1.9-.5 3.1.2 3.4 1.5.3 1.1-.5 2.2-1.8 2.5-.9.3-1.6 0-1.7-.6a1.4 1.4 0 0 1 0-.7s.3.2 1 0c.7-.1 1-.7.9-1.2-.2-.6-1-.8-1.8-.6-1 .2-2 1-1.7 2.6.3 1 .9 1.6 1.5 1.8l.7-.2c1-.2 1.5 0 1.6.5 0 .4-.2 1-1.2 1.2a3.3 3.3 0 0 1-1.5 0c-.9.7-1.6 1.9-1.3 3.2.3 1.3 1.3 2.2 3 1.8 2.5-.7 3.8-3.7 4.2-5-.3-.5-.6-1-.7-1.6-.1-.5.1-1 .9-1.2.4 0 .7.2.8.8a2.8 2.8 0 0 1 0 1l.7 1c.6-2 1.4-4 1.7-4 .6-.2 1.5.6 1.5.6-.8.7-1.7 2.4-2.3 4.2.8.6 1.6 1 2.1 1 .5-.1.8-.6 1-1.2-.3-2.2 1-4.3 2.3-4.6.7-.2 1.3.2 1.4.8.1.5 0 1.3-.9 1.7-.2-1-.6-1.3-1-1.3-.4.1-.7 1.4-.4 2.8.2 1 .7 1.5 1.3 1.4.8-.2 1.3-1.2 1.7-2.1-.3-2.1.9-4.2 2.2-4.5.7-.2 1.2.1 1.4 1 .4 1.4-1 2.8-2.2 3.4.3.7.7 1 1.3.9 1-.3 1.6-1.5 2-2.5l-.5-3v-.3s1.6-.3 1.8.6v.1c.2-.6.7-1.2 1.3-1.4.8-.1 1.5.6 1.7 1.6.5 2.2-.5 4.4-1.8 4.7H33a31.9 31.9 0 0 0 1 5.2c-.4.1-1.8.4-2-.4l-.5-5.6c-.5 1-1.3 2.2-2.5 2.4-1 .3-1.6-.3-2-1.1-.5 1-1.3 2.1-2.4 2.4-.8.2-1.5-.1-2-1-.3.8-.9 1.5-1.5 1.7-.7.1-1.5-.3-2.4-1-.3.8-.4 1.6-.4 2.2 0 0-.7 0-.8-.4-.1-.5 0-1.5.3-2.7a10.3 10.3 0 0 1-.7-.8zm38.2-17.8l.2.9c.5 1.9.4 4.4.8 6.4 0 .6-.4 3-1.4 3.3-.2 0-.3 0-.4-.4-.1-.7 0-1.6-.3-2.6-.2-1.1-.8-1.6-1.5-1.5-.8.2-1.3 1-1.6 2l-.1-.5c-.2-1-1.8-.6-1.8-.6a6.2 6.2 0 0 1 .4 1.3l.2 1c-.2.5-.6 1-1.2 1l-.2.1a7 7 0 0 0-.1-.8c-.3-1.1-1-2-1.6-1.8a.7.7 0 0 0-.4.3c-1.3.3-2.4 2-2.1 3.9-.2.9-.6 1.7-1 1.9-.5 0-.8-.5-1.1-1.8l-.1-1.2a4 4 0 0 0 0-1.7c0-.4-.4-.7-.8-.6-.7.2-.9 1.7-.5 3.8-.2 1-.6 2-1.3 2-.4.2-.8-.2-1-1l-.2-3c1.2-.5 2-1 1.8-1.7-.1-.5-.8-.7-.8-.7s0 .7-1 1.2l-.2-1.4c-.1-.6-.4-1-1.7-.6l.4 1 .2 1.5h-1v.8c0 .3.4.3 1 .2 0 1.3 0 2.7.2 3.6.3 1.4 1.2 2 2 1.7 1-.2 1.6-1.3 2-2.3.3 1.2 1 2 1.9 1.7.7-.2 1.2-1.1 1.6-2.2.4.8 1.1 1.1 2 1 1.2-.4 1.7-1.6 1.8-2.8h.2c.6-.2 1-.6 1.3-1 0 .8 0 1.5.2 2.1.1.5.3.7.6.6.5-.1 1-.9 1-.9a4 4 0 0 1-.3-1c-.3-1.3.3-3.6 1-3.7.2 0 .3.2.5.7v.8l.2 1.5v.7c.2.7.7 1.3 1.5 1 1.3-.2 2-2.6 2.1-3.9.3.2.6.2 1 .1-.6-2.2 0-6.1-.3-7.9-.1-.4-1-.5-1.7-.5h-.4zm-21.5 12c.4 0 .7.3 1 1.1.2 1.3-.3 2.6-.9 2.8-.2 0-.7 0-1-1.2v-.4c0-1.3.4-2 1-2.2zm-5.2 1c.3 0 .6.2.6.5.2.6-.3 1.3-1.2 2-.3-1.4.1-2.3.6-2.5zm18-.4c-.5.2-1-.4-1.2-1.2-.2-1 0-2.1.7-2.5v.5c.2.7.6 1.5 1.3 1.9 0 .7-.2 1.2-.7 1.3zm10-1.6c0 .5.4.7 1 .6.8-.2 1-1 .8-1.6 0-.5-.4-1-1-.8-.5.1-1 .9-.8 1.8zm-14.3-5.5c0-.4-.5-.7-1-.5-.8.2-1 1-.9 1.5.2.6.5 1 1 .8.5 0 1.1-1 1-1.8z" fill="#fff" fill-opacity=".6"/>'.$this->addElementToGhost().'</svg>';
     }
 
-    private function addElementToGhost()
+    private function addElementToGhost(): string
     {
         if (!isset(self::GHOST_ADDONS[date('m-d')])) {
             return '';
diff --git a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
index 6ffb83635942c920e70e58c7adc09002a91e9e5e..64d7551343e7a5d5ab5ee8ea8faeae251be50a51 100644
--- a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
+++ b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
@@ -17,10 +17,14 @@ use Symfony\Component\Debug\DebugClassLoader;
 use Symfony\Component\Debug\Exception\ClassNotFoundException;
 use Symfony\Component\Debug\Exception\FatalErrorException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundFatalErrorHandler::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler::class), \E_USER_DEPRECATED);
+
 /**
  * ErrorHandler for classes that do not exist.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler instead.
  */
 class ClassNotFoundFatalErrorHandler implements FatalErrorHandlerInterface
 {
@@ -29,50 +33,34 @@ class ClassNotFoundFatalErrorHandler implements FatalErrorHandlerInterface
      */
     public function handleError(array $error, FatalErrorException $exception)
     {
-        $messageLen = \strlen($error['message']);
-        $notFoundSuffix = '\' not found';
-        $notFoundSuffixLen = \strlen($notFoundSuffix);
-        if ($notFoundSuffixLen > $messageLen) {
+        if (!preg_match('/^(Class|Interface|Trait) [\'"]([^\'"]+)[\'"] not found$/', $error['message'], $matches)) {
             return null;
         }
-
-        if (0 !== substr_compare($error['message'], $notFoundSuffix, -$notFoundSuffixLen)) {
-            return null;
+        $typeName = strtolower($matches[1]);
+        $fullyQualifiedClassName = $matches[2];
+
+        if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) {
+            $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1);
+            $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex);
+            $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix);
+            $tail = ' for another namespace?';
+        } else {
+            $className = $fullyQualifiedClassName;
+            $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className);
+            $tail = '?';
         }
 
-        foreach (['class', 'interface', 'trait'] as $typeName) {
-            $prefix = ucfirst($typeName).' \'';
-            $prefixLen = \strlen($prefix);
-            if (0 !== strpos($error['message'], $prefix)) {
-                continue;
-            }
-
-            $fullyQualifiedClassName = substr($error['message'], $prefixLen, -$notFoundSuffixLen);
-            if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) {
-                $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1);
-                $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex);
-                $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix);
-                $tail = ' for another namespace?';
+        if ($candidates = $this->getClassCandidates($className)) {
+            $tail = array_pop($candidates).'"?';
+            if ($candidates) {
+                $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail;
             } else {
-                $className = $fullyQualifiedClassName;
-                $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className);
-                $tail = '?';
-            }
-
-            if ($candidates = $this->getClassCandidates($className)) {
-                $tail = array_pop($candidates).'"?';
-                if ($candidates) {
-                    $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail;
-                } else {
-                    $tail = ' for "'.$tail;
-                }
+                $tail = ' for "'.$tail;
             }
-            $message .= "\nDid you forget a \"use\" statement".$tail;
-
-            return new ClassNotFoundException($message, $exception);
         }
+        $message .= "\nDid you forget a \"use\" statement".$tail;
 
-        return null;
+        return new ClassNotFoundException($message, $exception);
     }
 
     /**
diff --git a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php b/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
index 6b87eb30a126e406b82bd8b493ac81506fbea805..cc7a0ffabeeae46aed4c86a0fd28385bfad523ee 100644
--- a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
+++ b/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
@@ -13,18 +13,21 @@ namespace Symfony\Component\Debug\FatalErrorHandler;
 
 use Symfony\Component\Debug\Exception\FatalErrorException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorHandlerInterface::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface::class), \E_USER_DEPRECATED);
+
 /**
  * Attempts to convert fatal errors to exceptions.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface instead.
  */
 interface FatalErrorHandlerInterface
 {
     /**
      * Attempts to convert an error into an exception.
      *
-     * @param array               $error     An array as returned by error_get_last()
-     * @param FatalErrorException $exception A FatalErrorException instance
+     * @param array $error An array as returned by error_get_last()
      *
      * @return FatalErrorException|null A FatalErrorException instance if the class is able to convert the error, null otherwise
      */
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
index 77fc7aa26132996cf95385aafdd824e7c009bd01..95096a9cd1a946f485d4a976d659627b3b3da31d 100644
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
+++ b/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
@@ -14,10 +14,14 @@ namespace Symfony\Component\Debug\FatalErrorHandler;
 use Symfony\Component\Debug\Exception\FatalErrorException;
 use Symfony\Component\Debug\Exception\UndefinedFunctionException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer::class), \E_USER_DEPRECATED);
+
 /**
  * ErrorHandler for undefined functions.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer instead.
  */
 class UndefinedFunctionFatalErrorHandler implements FatalErrorHandlerInterface
 {
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
index ff2843b6811f2af90b159a1887983912f387f917..773f4dfa78c284769f0904a31855e7260117fe34 100644
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
+++ b/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
@@ -14,10 +14,14 @@ namespace Symfony\Component\Debug\FatalErrorHandler;
 use Symfony\Component\Debug\Exception\FatalErrorException;
 use Symfony\Component\Debug\Exception\UndefinedMethodException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer::class), \E_USER_DEPRECATED);
+
 /**
  * ErrorHandler for undefined methods.
  *
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer instead.
  */
 class UndefinedMethodFatalErrorHandler implements FatalErrorHandlerInterface
 {
diff --git a/vendor/symfony/debug/LICENSE b/vendor/symfony/debug/LICENSE
index a677f43763ca467472898351b328aee41e2edd7c..9e936ec0448b8549e5edf08e5ac5f01491a8bfc8 100644
--- a/vendor/symfony/debug/LICENSE
+++ b/vendor/symfony/debug/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/debug/README.md b/vendor/symfony/debug/README.md
index a1d16175c1a1f169986b517b4dd08ffcf1680f41..90b36f0cb8e594b9e09e0e1347e5cefb0806690a 100644
--- a/vendor/symfony/debug/README.md
+++ b/vendor/symfony/debug/README.md
@@ -1,12 +1,29 @@
 Debug Component
 ===============
 
+**CAUTION**: this component is deprecated since Symfony 4.4. Instead, use the
+[ErrorHandler component](https://github.com/symfony/symfony/tree/master/src/Symfony/Component/ErrorHandler).
+
+-----
+
 The Debug component provides tools to ease debugging PHP code.
 
+Getting Started
+---------------
+
+```
+$ composer install symfony/debug
+```
+
+```php
+use Symfony\Component\Debug\Debug;
+
+Debug::enable();
+```
+
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/debug/index.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/debug/Tests/DebugClassLoaderTest.php b/vendor/symfony/debug/Tests/DebugClassLoaderTest.php
deleted file mode 100644
index 30cf4a3326dbfcc144a709d420b184c4ceb4909f..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/DebugClassLoaderTest.php
+++ /dev/null
@@ -1,444 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\DebugClassLoader;
-
-class DebugClassLoaderTest extends TestCase
-{
-    /**
-     * @var int Error reporting level before running tests
-     */
-    private $errorReporting;
-
-    private $loader;
-
-    protected function setUp(): void
-    {
-        $this->errorReporting = error_reporting(E_ALL);
-        $this->loader = new ClassLoader();
-        spl_autoload_register([$this->loader, 'loadClass'], true, true);
-        DebugClassLoader::enable();
-    }
-
-    protected function tearDown(): void
-    {
-        DebugClassLoader::disable();
-        spl_autoload_unregister([$this->loader, 'loadClass']);
-        error_reporting($this->errorReporting);
-    }
-
-    public function testIdempotence()
-    {
-        DebugClassLoader::enable();
-
-        $functions = spl_autoload_functions();
-        foreach ($functions as $function) {
-            if (\is_array($function) && $function[0] instanceof DebugClassLoader) {
-                $reflClass = new \ReflectionClass($function[0]);
-                $reflProp = $reflClass->getProperty('classLoader');
-                $reflProp->setAccessible(true);
-
-                $this->assertNotInstanceOf('Symfony\Component\Debug\DebugClassLoader', $reflProp->getValue($function[0]));
-
-                return;
-            }
-        }
-
-        $this->fail('DebugClassLoader did not register');
-    }
-
-    public function testThrowingClass()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('boo');
-        try {
-            class_exists(__NAMESPACE__.'\Fixtures\Throwing');
-            $this->fail('Exception expected');
-        } catch (\Exception $e) {
-            $this->assertSame('boo', $e->getMessage());
-        }
-
-        // the second call also should throw
-        class_exists(__NAMESPACE__.'\Fixtures\Throwing');
-    }
-
-    public function testNameCaseMismatch()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Case mismatch between loaded and declared class names');
-        class_exists(__NAMESPACE__.'\TestingCaseMismatch', true);
-    }
-
-    public function testFileCaseMismatch()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Case mismatch between class and real file names');
-        if (!file_exists(__DIR__.'/Fixtures/CaseMismatch.php')) {
-            $this->markTestSkipped('Can only be run on case insensitive filesystems');
-        }
-
-        class_exists(__NAMESPACE__.'\Fixtures\CaseMismatch', true);
-    }
-
-    public function testPsr4CaseMismatch()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Case mismatch between loaded and declared class names');
-        class_exists(__NAMESPACE__.'\Fixtures\Psr4CaseMismatch', true);
-    }
-
-    public function testNotPsr0()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\NotPSR0', true));
-    }
-
-    public function testNotPsr0Bis()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\NotPSR0bis', true));
-    }
-
-    public function testClassAlias()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\ClassAlias', true));
-    }
-
-    /**
-     * @dataProvider provideDeprecatedSuper
-     */
-    public function testDeprecatedSuper($class, $super, $type)
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\'.$class, true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $xError = [
-            'type' => E_USER_DEPRECATED,
-            'message' => 'The "Test\Symfony\Component\Debug\Tests\\'.$class.'" class '.$type.' "Symfony\Component\Debug\Tests\Fixtures\\'.$super.'" that is deprecated but this is a test deprecation notice.',
-        ];
-
-        $this->assertSame($xError, $lastError);
-    }
-
-    public function provideDeprecatedSuper()
-    {
-        return [
-            ['DeprecatedInterfaceClass', 'DeprecatedInterface', 'implements'],
-            ['DeprecatedParentClass', 'DeprecatedClass', 'extends'],
-        ];
-    }
-
-    public function testInterfaceExtendsDeprecatedInterface()
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_NOTICE);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\NonDeprecatedInterfaceClass', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $xError = [
-            'type' => E_USER_NOTICE,
-            'message' => '',
-        ];
-
-        $this->assertSame($xError, $lastError);
-    }
-
-    public function testDeprecatedSuperInSameNamespace()
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_NOTICE);
-
-        class_exists('Symfony\Bridge\Debug\Tests\Fixtures\ExtendsDeprecatedParent', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $xError = [
-            'type' => E_USER_NOTICE,
-            'message' => '',
-        ];
-
-        $this->assertSame($xError, $lastError);
-    }
-
-    public function testExtendedFinalClass()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        require __DIR__.'/Fixtures/FinalClasses.php';
-
-        $i = 1;
-        while (class_exists($finalClass = __NAMESPACE__.'\\Fixtures\\FinalClass'.$i++, false)) {
-            spl_autoload_call($finalClass);
-            class_exists('Test\\'.__NAMESPACE__.'\\Extends'.substr($finalClass, strrpos($finalClass, '\\') + 1), true);
-        }
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass1" class is considered final since version 3.3. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass1".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass2" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass2".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass3" class is considered final comment with @@@ and ***. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass3".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass4" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass4".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass5" class is considered final multiline comment. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass5".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass6" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass6".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass7" class is considered final another multiline comment... It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass7".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass8" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass8".',
-        ], $deprecations);
-    }
-
-    public function testExtendedFinalMethod()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists(__NAMESPACE__.'\\Fixtures\\ExtendedFinalMethod', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $xError = [
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod2()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".',
-        ];
-
-        $this->assertSame($xError, $deprecations);
-    }
-
-    public function testExtendedDeprecatedMethodDoesntTriggerAnyNotice()
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_NOTICE);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsAnnotatedClass', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $this->assertSame(['type' => E_USER_NOTICE, 'message' => ''], $lastError);
-    }
-
-    public function testInternalsUse()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsInternals', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame($deprecations, [
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalInterface" interface is considered internal. It may change without further notice. You should not use it from "Test\Symfony\Component\Debug\Tests\ExtendsInternalsParent".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalClass" class is considered internal. It may change without further notice. You should not use it from "Test\Symfony\Component\Debug\Tests\ExtendsInternalsParent".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalTrait" trait is considered internal. It may change without further notice. You should not use it from "Test\Symfony\Component\Debug\Tests\ExtendsInternals".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalClass::internalMethod()" method is considered internal. It may change without further notice. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsInternals".',
-        ]);
-    }
-
-    public function testExtendedMethodDefinesNewParameters()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists(__NAMESPACE__.'\\Fixtures\SubClassWithAnnotatedParameters', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::quzMethod()" method will require a new "Quz $quz" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\ClassWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::whereAmI()" method will require a new "bool $matrix" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "$noType" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "callable(\Throwable|null $reason, mixed $value) $callback" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "string $param" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "callable  ($a,  $b) $anotherOne" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "Type$WithDollarIsStillAType $ccc" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::isSymfony()" method will require a new "true $yes" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\ClassWithAnnotatedParameters", not defining it is deprecated.',
-        ], $deprecations);
-    }
-
-    public function testUseTraitWithInternalMethod()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\UseTraitWithInternalMethod', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([], $deprecations);
-    }
-
-    public function testVirtualUse()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsVirtual', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::sameLineInterfaceMethodNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::newLineInterfaceMethod()": Some description!',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::newLineInterfaceMethodNoBraces()": Description.',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::invalidInterfaceMethod()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::invalidInterfaceMethodNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::complexInterfaceMethod($arg, ...$args)".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::complexInterfaceMethodTyped($arg, int ...$args)": Description ...',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "static Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::staticMethodNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "static Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::staticMethodTyped(int $arg)": Description.',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "static Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::staticMethodTypedNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtual" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualSubInterface::subInterfaceMethod()".',
-        ], $deprecations);
-    }
-
-    public function testVirtualUseWithMagicCall()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsVirtualMagicCall', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([], $deprecations);
-    }
-
-    public function testEvaluatedCode()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\DefinitionInEvaluatedCode', true));
-    }
-}
-
-class ClassLoader
-{
-    public function loadClass($class)
-    {
-    }
-
-    public function getClassMap()
-    {
-        return [__NAMESPACE__.'\Fixtures\NotPSR0bis' => __DIR__.'/Fixtures/notPsr0Bis.php'];
-    }
-
-    public function findFile($class)
-    {
-        $fixtureDir = __DIR__.\DIRECTORY_SEPARATOR.'Fixtures'.\DIRECTORY_SEPARATOR;
-
-        if (__NAMESPACE__.'\TestingUnsilencing' === $class) {
-            eval('-- parse error --');
-        } elseif (__NAMESPACE__.'\TestingStacking' === $class) {
-            eval('namespace '.__NAMESPACE__.'; class TestingStacking { function foo() {} }');
-        } elseif (__NAMESPACE__.'\TestingCaseMismatch' === $class) {
-            eval('namespace '.__NAMESPACE__.'; class TestingCaseMisMatch {}');
-        } elseif (__NAMESPACE__.'\Fixtures\Psr4CaseMismatch' === $class) {
-            return $fixtureDir.'psr4'.\DIRECTORY_SEPARATOR.'Psr4CaseMismatch.php';
-        } elseif (__NAMESPACE__.'\Fixtures\NotPSR0' === $class) {
-            return $fixtureDir.'reallyNotPsr0.php';
-        } elseif (__NAMESPACE__.'\Fixtures\NotPSR0bis' === $class) {
-            return $fixtureDir.'notPsr0Bis.php';
-        } elseif ('Symfony\Bridge\Debug\Tests\Fixtures\ExtendsDeprecatedParent' === $class) {
-            eval('namespace Symfony\Bridge\Debug\Tests\Fixtures; class ExtendsDeprecatedParent extends \\'.__NAMESPACE__.'\Fixtures\DeprecatedClass {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\DeprecatedParentClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class DeprecatedParentClass extends \\'.__NAMESPACE__.'\Fixtures\DeprecatedClass {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\DeprecatedInterfaceClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class DeprecatedInterfaceClass implements \\'.__NAMESPACE__.'\Fixtures\DeprecatedInterface {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\NonDeprecatedInterfaceClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class NonDeprecatedInterfaceClass implements \\'.__NAMESPACE__.'\Fixtures\NonDeprecatedInterface {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\Float' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class Float {}');
-        } elseif (0 === strpos($class, 'Test\\'.__NAMESPACE__.'\ExtendsFinalClass')) {
-            $classShortName = substr($class, strrpos($class, '\\') + 1);
-            eval('namespace Test\\'.__NAMESPACE__.'; class '.$classShortName.' extends \\'.__NAMESPACE__.'\Fixtures\\'.substr($classShortName, 7).' {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsAnnotatedClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsAnnotatedClass extends \\'.__NAMESPACE__.'\Fixtures\AnnotatedClass {
-                public function deprecatedMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsInternals' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsInternals extends ExtendsInternalsParent {
-                use \\'.__NAMESPACE__.'\Fixtures\InternalTrait;
-
-                public function internalMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsInternalsParent' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsInternalsParent extends \\'.__NAMESPACE__.'\Fixtures\InternalClass implements \\'.__NAMESPACE__.'\Fixtures\InternalInterface { }');
-        } elseif ('Test\\'.__NAMESPACE__.'\UseTraitWithInternalMethod' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class UseTraitWithInternalMethod { use \\'.__NAMESPACE__.'\Fixtures\TraitWithInternalMethod; }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtual' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsVirtual extends ExtendsVirtualParent implements \\'.__NAMESPACE__.'\Fixtures\VirtualSubInterface {
-                public function ownClassMethod() { }
-                public function classMethod() { }
-                public function sameLineInterfaceMethodNoBraces() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualParent' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsVirtualParent extends ExtendsVirtualAbstract {
-                public function ownParentMethod() { }
-                public function traitMethod() { }
-                public function sameLineInterfaceMethod() { }
-                public function staticMethodNoBraces() { } // should be static
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualAbstract' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; abstract class ExtendsVirtualAbstract extends ExtendsVirtualAbstractBase {
-                public static function staticMethod() { }
-                public function ownAbstractMethod() { }
-                public function interfaceMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualAbstractBase' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; abstract class ExtendsVirtualAbstractBase extends \\'.__NAMESPACE__.'\Fixtures\VirtualClass implements \\'.__NAMESPACE__.'\Fixtures\VirtualInterface {
-                public function ownAbstractBaseMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualMagicCall' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsVirtualMagicCall extends \\'.__NAMESPACE__.'\Fixtures\VirtualClassMagicCall implements \\'.__NAMESPACE__.'\Fixtures\VirtualInterface {
-            }');
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/debug/Tests/ErrorHandlerTest.php b/vendor/symfony/debug/Tests/ErrorHandlerTest.php
deleted file mode 100644
index 54e656b3f81033b5bddffa376ca4ea41481b847a..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/ErrorHandlerTest.php
+++ /dev/null
@@ -1,562 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LogLevel;
-use Psr\Log\NullLogger;
-use Symfony\Component\Debug\BufferingLogger;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\Exception\SilencedErrorContext;
-use Symfony\Component\Debug\Tests\Fixtures\ErrorHandlerThatUsesThePreviousOne;
-use Symfony\Component\Debug\Tests\Fixtures\LoggerThatSetAnErrorHandler;
-
-/**
- * ErrorHandlerTest.
- *
- * @author Robert Schönthal <seroscho@googlemail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ErrorHandlerTest extends TestCase
-{
-    public function testRegister()
-    {
-        $handler = ErrorHandler::register();
-
-        try {
-            $this->assertInstanceOf('Symfony\Component\Debug\ErrorHandler', $handler);
-            $this->assertSame($handler, ErrorHandler::register());
-
-            $newHandler = new ErrorHandler();
-
-            $this->assertSame($handler, ErrorHandler::register($newHandler, false));
-            $h = set_error_handler('var_dump');
-            restore_error_handler();
-            $this->assertSame([$handler, 'handleError'], $h);
-
-            try {
-                $this->assertSame($newHandler, ErrorHandler::register($newHandler, true));
-                $h = set_error_handler('var_dump');
-                restore_error_handler();
-                $this->assertSame([$newHandler, 'handleError'], $h);
-            } catch (\Exception $e) {
-            }
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            if (isset($e)) {
-                throw $e;
-            }
-        } catch (\Exception $e) {
-        }
-
-        restore_error_handler();
-        restore_exception_handler();
-
-        if (isset($e)) {
-            throw $e;
-        }
-    }
-
-    public function testErrorGetLast()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $handler = ErrorHandler::register();
-        $handler->setDefaultLogger($logger);
-        $handler->screamAt(E_ALL);
-
-        try {
-            @trigger_error('Hello', E_USER_WARNING);
-            $expected = [
-                'type' => E_USER_WARNING,
-                'message' => 'Hello',
-                'file' => __FILE__,
-                'line' => __LINE__ - 5,
-            ];
-            $this->assertSame($expected, error_get_last());
-        } catch (\Exception $e) {
-            restore_error_handler();
-            restore_exception_handler();
-
-            throw $e;
-        }
-    }
-
-    public function testNotice()
-    {
-        ErrorHandler::register();
-
-        try {
-            self::triggerNotice($this);
-            $this->fail('ErrorException expected');
-        } catch (\ErrorException $exception) {
-            // if an exception is thrown, the test passed
-            $this->assertEquals(E_NOTICE, $exception->getSeverity());
-            $this->assertEquals(__FILE__, $exception->getFile());
-            $this->assertRegExp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
-
-            $trace = $exception->getTrace();
-
-            $this->assertEquals(__FILE__, $trace[0]['file']);
-            $this->assertEquals(__CLASS__, $trace[0]['class']);
-            $this->assertEquals('triggerNotice', $trace[0]['function']);
-            $this->assertEquals('::', $trace[0]['type']);
-
-            $this->assertEquals(__FILE__, $trace[0]['file']);
-            $this->assertEquals(__CLASS__, $trace[1]['class']);
-            $this->assertEquals(__FUNCTION__, $trace[1]['function']);
-            $this->assertEquals('->', $trace[1]['type']);
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    // dummy function to test trace in error handler.
-    private static function triggerNotice($that)
-    {
-        $that->assertSame('', $foo.$foo.$bar);
-    }
-
-    public function testConstruct()
-    {
-        try {
-            $handler = ErrorHandler::register();
-            $handler->throwAt(3, true);
-            $this->assertEquals(3 | E_RECOVERABLE_ERROR | E_USER_ERROR, $handler->throwAt(0));
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testDefaultLogger()
-    {
-        try {
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-            $handler = ErrorHandler::register();
-
-            $handler->setDefaultLogger($logger, E_NOTICE);
-            $handler->setDefaultLogger($logger, [E_USER_NOTICE => LogLevel::CRITICAL]);
-
-            $loggers = [
-                E_DEPRECATED => [null, LogLevel::INFO],
-                E_USER_DEPRECATED => [null, LogLevel::INFO],
-                E_NOTICE => [$logger, LogLevel::WARNING],
-                E_USER_NOTICE => [$logger, LogLevel::CRITICAL],
-                E_STRICT => [null, LogLevel::WARNING],
-                E_WARNING => [null, LogLevel::WARNING],
-                E_USER_WARNING => [null, LogLevel::WARNING],
-                E_COMPILE_WARNING => [null, LogLevel::WARNING],
-                E_CORE_WARNING => [null, LogLevel::WARNING],
-                E_USER_ERROR => [null, LogLevel::CRITICAL],
-                E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
-                E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
-                E_PARSE => [null, LogLevel::CRITICAL],
-                E_ERROR => [null, LogLevel::CRITICAL],
-                E_CORE_ERROR => [null, LogLevel::CRITICAL],
-            ];
-            $this->assertSame($loggers, $handler->setLoggers([]));
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testHandleError()
-    {
-        try {
-            $handler = ErrorHandler::register();
-            $handler->throwAt(0, true);
-            $this->assertFalse($handler->handleError(0, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(3, true);
-            $this->assertFalse($handler->handleError(4, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(3, true);
-            try {
-                $handler->handleError(4, 'foo', 'foo.php', 12, []);
-            } catch (\ErrorException $e) {
-                $this->assertSame('Parse Error: foo', $e->getMessage());
-                $this->assertSame(4, $e->getSeverity());
-                $this->assertSame('foo.php', $e->getFile());
-                $this->assertSame(12, $e->getLine());
-            }
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(E_USER_DEPRECATED, true);
-            $this->assertFalse($handler->handleError(E_USER_DEPRECATED, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(E_DEPRECATED, true);
-            $this->assertFalse($handler->handleError(E_DEPRECATED, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-            $warnArgCheck = function ($logLevel, $message, $context) {
-                $this->assertEquals('info', $logLevel);
-                $this->assertEquals('User Deprecated: foo', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $exception = $context['exception'];
-                $this->assertInstanceOf(\ErrorException::class, $exception);
-                $this->assertSame('User Deprecated: foo', $exception->getMessage());
-                $this->assertSame(E_USER_DEPRECATED, $exception->getSeverity());
-            };
-
-            $logger
-                ->expects($this->once())
-                ->method('log')
-                ->willReturnCallback($warnArgCheck)
-            ;
-
-            $handler = ErrorHandler::register();
-            $handler->setDefaultLogger($logger, E_USER_DEPRECATED);
-            $this->assertTrue($handler->handleError(E_USER_DEPRECATED, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-            $line = null;
-            $logArgCheck = function ($level, $message, $context) use (&$line) {
-                $this->assertEquals('Notice: Undefined variable: undefVar', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $exception = $context['exception'];
-                $this->assertInstanceOf(SilencedErrorContext::class, $exception);
-                $this->assertSame(E_NOTICE, $exception->getSeverity());
-                $this->assertSame(__FILE__, $exception->getFile());
-                $this->assertSame($line, $exception->getLine());
-                $this->assertNotEmpty($exception->getTrace());
-                $this->assertSame(1, $exception->count);
-            };
-
-            $logger
-                ->expects($this->once())
-                ->method('log')
-                ->willReturnCallback($logArgCheck)
-            ;
-
-            $handler = ErrorHandler::register();
-            $handler->setDefaultLogger($logger, E_NOTICE);
-            $handler->screamAt(E_NOTICE);
-            unset($undefVar);
-            $line = __LINE__ + 1;
-            @$undefVar++;
-
-            restore_error_handler();
-            restore_exception_handler();
-        } catch (\Exception $e) {
-            restore_error_handler();
-            restore_exception_handler();
-
-            throw $e;
-        }
-    }
-
-    public function testHandleUserError()
-    {
-        if (\PHP_VERSION_ID >= 70400) {
-            $this->markTestSkipped('PHP 7.4 allows __toString to throw exceptions');
-        }
-
-        try {
-            $handler = ErrorHandler::register();
-            $handler->throwAt(0, true);
-
-            $e = null;
-            $x = new \Exception('Foo');
-
-            try {
-                $f = new Fixtures\ToStringThrower($x);
-                $f .= ''; // Trigger $f->__toString()
-            } catch (\Exception $e) {
-            }
-
-            $this->assertSame($x, $e);
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testHandleDeprecation()
-    {
-        $logArgCheck = function ($level, $message, $context) {
-            $this->assertEquals(LogLevel::INFO, $level);
-            $this->assertArrayHasKey('exception', $context);
-            $exception = $context['exception'];
-            $this->assertInstanceOf(\ErrorException::class, $exception);
-            $this->assertSame('User Deprecated: Foo deprecation', $exception->getMessage());
-        };
-
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger
-            ->expects($this->once())
-            ->method('log')
-            ->willReturnCallback($logArgCheck)
-        ;
-
-        $handler = new ErrorHandler();
-        $handler->setDefaultLogger($logger);
-        @$handler->handleError(E_USER_DEPRECATED, 'Foo deprecation', __FILE__, __LINE__, []);
-
-        restore_error_handler();
-    }
-
-    public function testHandleException()
-    {
-        try {
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-            $handler = ErrorHandler::register();
-
-            $exception = new \Exception('foo');
-
-            $logArgCheck = function ($level, $message, $context) {
-                $this->assertSame('Uncaught Exception: foo', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $this->assertInstanceOf(\Exception::class, $context['exception']);
-            };
-
-            $logger
-                ->expects($this->exactly(2))
-                ->method('log')
-                ->willReturnCallback($logArgCheck)
-            ;
-
-            $handler->setDefaultLogger($logger, E_ERROR);
-
-            try {
-                $handler->handleException($exception);
-                $this->fail('Exception expected');
-            } catch (\Exception $e) {
-                $this->assertSame($exception, $e);
-            }
-
-            $handler->setExceptionHandler(function ($e) use ($exception) {
-                $this->assertSame($exception, $e);
-            });
-
-            $handler->handleException($exception);
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testBootstrappingLogger()
-    {
-        $bootLogger = new BufferingLogger();
-        $handler = new ErrorHandler($bootLogger);
-
-        $loggers = [
-            E_DEPRECATED => [$bootLogger, LogLevel::INFO],
-            E_USER_DEPRECATED => [$bootLogger, LogLevel::INFO],
-            E_NOTICE => [$bootLogger, LogLevel::WARNING],
-            E_USER_NOTICE => [$bootLogger, LogLevel::WARNING],
-            E_STRICT => [$bootLogger, LogLevel::WARNING],
-            E_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_USER_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_COMPILE_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_CORE_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_USER_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_RECOVERABLE_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_COMPILE_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_PARSE => [$bootLogger, LogLevel::CRITICAL],
-            E_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_CORE_ERROR => [$bootLogger, LogLevel::CRITICAL],
-        ];
-
-        $this->assertSame($loggers, $handler->setLoggers([]));
-
-        $handler->handleError(E_DEPRECATED, 'Foo message', __FILE__, 123, []);
-
-        $logs = $bootLogger->cleanLogs();
-
-        $this->assertCount(1, $logs);
-        $log = $logs[0];
-        $this->assertSame('info', $log[0]);
-        $this->assertSame('Deprecated: Foo message', $log[1]);
-        $this->assertArrayHasKey('exception', $log[2]);
-        $exception = $log[2]['exception'];
-        $this->assertInstanceOf(\ErrorException::class, $exception);
-        $this->assertSame('Deprecated: Foo message', $exception->getMessage());
-        $this->assertSame(__FILE__, $exception->getFile());
-        $this->assertSame(123, $exception->getLine());
-        $this->assertSame(E_DEPRECATED, $exception->getSeverity());
-
-        $bootLogger->log(LogLevel::WARNING, 'Foo message', ['exception' => $exception]);
-
-        $mockLogger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $mockLogger->expects($this->once())
-            ->method('log')
-            ->with(LogLevel::WARNING, 'Foo message', ['exception' => $exception]);
-
-        $handler->setLoggers([E_DEPRECATED => [$mockLogger, LogLevel::WARNING]]);
-    }
-
-    public function testSettingLoggerWhenExceptionIsBuffered()
-    {
-        $bootLogger = new BufferingLogger();
-        $handler = new ErrorHandler($bootLogger);
-
-        $exception = new \Exception('Foo message');
-
-        $mockLogger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $mockLogger->expects($this->once())
-            ->method('log')
-            ->with(LogLevel::CRITICAL, 'Uncaught Exception: Foo message', ['exception' => $exception]);
-
-        $handler->setExceptionHandler(function () use ($handler, $mockLogger) {
-            $handler->setDefaultLogger($mockLogger);
-        });
-
-        $handler->handleException($exception);
-    }
-
-    public function testHandleFatalError()
-    {
-        try {
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-            $handler = ErrorHandler::register();
-
-            $error = [
-                'type' => E_PARSE,
-                'message' => 'foo',
-                'file' => 'bar',
-                'line' => 123,
-            ];
-
-            $logArgCheck = function ($level, $message, $context) {
-                $this->assertEquals('Fatal Parse Error: foo', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $this->assertInstanceOf(\Exception::class, $context['exception']);
-            };
-
-            $logger
-                ->expects($this->once())
-                ->method('log')
-                ->willReturnCallback($logArgCheck)
-            ;
-
-            $handler->setDefaultLogger($logger, E_PARSE);
-
-            $handler->handleFatalError($error);
-
-            restore_error_handler();
-            restore_exception_handler();
-        } catch (\Exception $e) {
-            restore_error_handler();
-            restore_exception_handler();
-
-            throw $e;
-        }
-    }
-
-    public function testHandleErrorException()
-    {
-        $exception = new \Error("Class 'IReallyReallyDoNotExistAnywhereInTheRepositoryISwear' not found");
-
-        $handler = new ErrorHandler();
-        $handler->setExceptionHandler(function () use (&$args) {
-            $args = \func_get_args();
-        });
-
-        $handler->handleException($exception);
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $args[0]);
-        $this->assertStringStartsWith("Attempted to load class \"IReallyReallyDoNotExistAnywhereInTheRepositoryISwear\" from the global namespace.\nDid you forget a \"use\" statement", $args[0]->getMessage());
-    }
-
-    public function testCustomExceptionHandler()
-    {
-        $this->expectException('Exception');
-        $handler = new ErrorHandler();
-        $handler->setExceptionHandler(function ($e) use ($handler) {
-            $handler->handleException($e);
-        });
-
-        $handler->handleException(new \Exception());
-    }
-
-    /**
-     * @dataProvider errorHandlerWhenLoggingProvider
-     */
-    public function testErrorHandlerWhenLogging($previousHandlerWasDefined, $loggerSetsAnotherHandler, $nextHandlerIsDefined)
-    {
-        try {
-            if ($previousHandlerWasDefined) {
-                set_error_handler('count');
-            }
-
-            $logger = $loggerSetsAnotherHandler ? new LoggerThatSetAnErrorHandler() : new NullLogger();
-
-            $handler = ErrorHandler::register();
-            $handler->setDefaultLogger($logger);
-
-            if ($nextHandlerIsDefined) {
-                $handler = ErrorHandlerThatUsesThePreviousOne::register();
-            }
-
-            @trigger_error('foo', E_USER_DEPRECATED);
-            @trigger_error('bar', E_USER_DEPRECATED);
-
-            $this->assertSame([$handler, 'handleError'], set_error_handler('var_dump'));
-
-            if ($logger instanceof LoggerThatSetAnErrorHandler) {
-                $this->assertCount(2, $logger->cleanLogs());
-            }
-
-            restore_error_handler();
-
-            if ($previousHandlerWasDefined) {
-                restore_error_handler();
-            }
-
-            if ($nextHandlerIsDefined) {
-                restore_error_handler();
-            }
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function errorHandlerWhenLoggingProvider()
-    {
-        foreach ([false, true] as $previousHandlerWasDefined) {
-            foreach ([false, true] as $loggerSetsAnotherHandler) {
-                foreach ([false, true] as $nextHandlerIsDefined) {
-                    yield [$previousHandlerWasDefined, $loggerSetsAnotherHandler, $nextHandlerIsDefined];
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Exception/FlattenExceptionTest.php b/vendor/symfony/debug/Tests/Exception/FlattenExceptionTest.php
deleted file mode 100644
index 994a5efca15459a12ee4ba135bcc2363c0b38705..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Exception/FlattenExceptionTest.php
+++ /dev/null
@@ -1,388 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\Exception;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
-use Symfony\Component\HttpKernel\Exception\ConflictHttpException;
-use Symfony\Component\HttpKernel\Exception\GoneHttpException;
-use Symfony\Component\HttpKernel\Exception\LengthRequiredHttpException;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Symfony\Component\HttpKernel\Exception\PreconditionFailedHttpException;
-use Symfony\Component\HttpKernel\Exception\PreconditionRequiredHttpException;
-use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
-use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException;
-use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
-use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException;
-
-class FlattenExceptionTest extends TestCase
-{
-    public function testStatusCode()
-    {
-        $flattened = FlattenException::create(new \RuntimeException(), 403);
-        $this->assertEquals('403', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new \RuntimeException());
-        $this->assertEquals('500', $flattened->getStatusCode());
-
-        $flattened = FlattenException::createFromThrowable(new \DivisionByZeroError(), 403);
-        $this->assertEquals('403', $flattened->getStatusCode());
-
-        $flattened = FlattenException::createFromThrowable(new \DivisionByZeroError());
-        $this->assertEquals('500', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new NotFoundHttpException());
-        $this->assertEquals('404', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new UnauthorizedHttpException('Basic realm="My Realm"'));
-        $this->assertEquals('401', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new BadRequestHttpException());
-        $this->assertEquals('400', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new NotAcceptableHttpException());
-        $this->assertEquals('406', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new ConflictHttpException());
-        $this->assertEquals('409', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new MethodNotAllowedHttpException(['POST']));
-        $this->assertEquals('405', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new AccessDeniedHttpException());
-        $this->assertEquals('403', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new GoneHttpException());
-        $this->assertEquals('410', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new LengthRequiredHttpException());
-        $this->assertEquals('411', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new PreconditionFailedHttpException());
-        $this->assertEquals('412', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new PreconditionRequiredHttpException());
-        $this->assertEquals('428', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new ServiceUnavailableHttpException());
-        $this->assertEquals('503', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new TooManyRequestsHttpException());
-        $this->assertEquals('429', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new UnsupportedMediaTypeHttpException());
-        $this->assertEquals('415', $flattened->getStatusCode());
-
-        if (class_exists(SuspiciousOperationException::class)) {
-            $flattened = FlattenException::create(new SuspiciousOperationException());
-            $this->assertEquals('400', $flattened->getStatusCode());
-        }
-    }
-
-    public function testHeadersForHttpException()
-    {
-        $flattened = FlattenException::create(new MethodNotAllowedHttpException(['POST']));
-        $this->assertEquals(['Allow' => 'POST'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new UnauthorizedHttpException('Basic realm="My Realm"'));
-        $this->assertEquals(['WWW-Authenticate' => 'Basic realm="My Realm"'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new ServiceUnavailableHttpException('Fri, 31 Dec 1999 23:59:59 GMT'));
-        $this->assertEquals(['Retry-After' => 'Fri, 31 Dec 1999 23:59:59 GMT'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new ServiceUnavailableHttpException(120));
-        $this->assertEquals(['Retry-After' => 120], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new TooManyRequestsHttpException('Fri, 31 Dec 1999 23:59:59 GMT'));
-        $this->assertEquals(['Retry-After' => 'Fri, 31 Dec 1999 23:59:59 GMT'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new TooManyRequestsHttpException(120));
-        $this->assertEquals(['Retry-After' => 120], $flattened->getHeaders());
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testFlattenHttpException(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $flattened2 = FlattenException::createFromThrowable($exception);
-
-        $flattened->setPrevious($flattened2);
-
-        $this->assertEquals($exception->getMessage(), $flattened->getMessage(), 'The message is copied from the original exception.');
-        $this->assertEquals($exception->getCode(), $flattened->getCode(), 'The code is copied from the original exception.');
-        $this->assertInstanceOf($flattened->getClass(), $exception, 'The class is set to the class of the original exception');
-    }
-
-    public function testWrappedThrowable()
-    {
-        $exception = new FatalThrowableError(new \DivisionByZeroError('Ouch', 42));
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame('Ouch', $flattened->getMessage(), 'The message is copied from the original error.');
-        $this->assertSame(42, $flattened->getCode(), 'The code is copied from the original error.');
-        $this->assertSame('DivisionByZeroError', $flattened->getClass(), 'The class is set to the class of the original error');
-    }
-
-    public function testThrowable()
-    {
-        $error = new \DivisionByZeroError('Ouch', 42);
-        $flattened = FlattenException::createFromThrowable($error);
-
-        $this->assertSame('Ouch', $flattened->getMessage(), 'The message is copied from the original error.');
-        $this->assertSame(42, $flattened->getCode(), 'The code is copied from the original error.');
-        $this->assertSame('DivisionByZeroError', $flattened->getClass(), 'The class is set to the class of the original error');
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testPrevious(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $flattened2 = FlattenException::createFromThrowable($exception);
-
-        $flattened->setPrevious($flattened2);
-
-        $this->assertSame($flattened2, $flattened->getPrevious());
-
-        $this->assertSame([$flattened2], $flattened->getAllPrevious());
-    }
-
-    public function testPreviousError()
-    {
-        $exception = new \Exception('test', 123, new \ParseError('Oh noes!', 42));
-
-        $flattened = FlattenException::create($exception)->getPrevious();
-
-        $this->assertEquals($flattened->getMessage(), 'Oh noes!', 'The message is copied from the original exception.');
-        $this->assertEquals($flattened->getCode(), 42, 'The code is copied from the original exception.');
-        $this->assertEquals($flattened->getClass(), 'ParseError', 'The class is set to the class of the original exception');
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testLine(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $this->assertSame($exception->getLine(), $flattened->getLine());
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testFile(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $this->assertSame($exception->getFile(), $flattened->getFile());
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testToArray(\Throwable $exception, string $expectedClass)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $flattened->setTrace([], 'foo.php', 123);
-
-        $this->assertEquals([
-            [
-                'message' => 'test',
-                'class' => $expectedClass,
-                'trace' => [[
-                    'namespace' => '', 'short_class' => '', 'class' => '', 'type' => '', 'function' => '', 'file' => 'foo.php', 'line' => 123,
-                    'args' => [],
-                ]],
-            ],
-        ], $flattened->toArray());
-    }
-
-    public function testCreate()
-    {
-        $exception = new NotFoundHttpException(
-            'test',
-            new \RuntimeException('previous', 123)
-        );
-
-        $this->assertSame(
-            FlattenException::createFromThrowable($exception)->toArray(),
-            FlattenException::create($exception)->toArray()
-        );
-    }
-
-    public function flattenDataProvider()
-    {
-        return [
-            [new \Exception('test', 123), 'Exception'],
-            [new \Error('test', 123), 'Error'],
-        ];
-    }
-
-    public function testArguments()
-    {
-        $dh = opendir(__DIR__);
-        $fh = tmpfile();
-
-        $incomplete = unserialize('O:14:"BogusTestClass":0:{}');
-
-        $exception = $this->createException([
-            (object) ['foo' => 1],
-            new NotFoundHttpException(),
-            $incomplete,
-            $dh,
-            $fh,
-            function () {},
-            [1, 2],
-            ['foo' => 123],
-            null,
-            true,
-            false,
-            0,
-            0.0,
-            '0',
-            '',
-            INF,
-            NAN,
-        ]);
-
-        $flattened = FlattenException::create($exception);
-        $trace = $flattened->getTrace();
-        $args = $trace[1]['args'];
-        $array = $args[0][1];
-
-        closedir($dh);
-        fclose($fh);
-
-        $i = 0;
-        $this->assertSame(['object', 'stdClass'], $array[$i++]);
-        $this->assertSame(['object', 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException'], $array[$i++]);
-        $this->assertSame(['incomplete-object', 'BogusTestClass'], $array[$i++]);
-        $this->assertSame(['resource', 'stream'], $array[$i++]);
-        $this->assertSame(['resource', 'stream'], $array[$i++]);
-
-        $args = $array[$i++];
-        $this->assertSame($args[0], 'object');
-        $this->assertTrue('Closure' === $args[1] || is_subclass_of($args[1], '\Closure'), 'Expect object class name to be Closure or a subclass of Closure.');
-
-        $this->assertSame(['array', [['integer', 1], ['integer', 2]]], $array[$i++]);
-        $this->assertSame(['array', ['foo' => ['integer', 123]]], $array[$i++]);
-        $this->assertSame(['null', null], $array[$i++]);
-        $this->assertSame(['boolean', true], $array[$i++]);
-        $this->assertSame(['boolean', false], $array[$i++]);
-        $this->assertSame(['integer', 0], $array[$i++]);
-        $this->assertSame(['float', 0.0], $array[$i++]);
-        $this->assertSame(['string', '0'], $array[$i++]);
-        $this->assertSame(['string', ''], $array[$i++]);
-        $this->assertSame(['float', INF], $array[$i++]);
-
-        // assertEquals() does not like NAN values.
-        $this->assertEquals($array[$i][0], 'float');
-        $this->assertNan($array[$i++][1]);
-    }
-
-    public function testRecursionInArguments()
-    {
-        $a = null;
-        $a = ['foo', [2, &$a]];
-        $exception = $this->createException($a);
-
-        $flattened = FlattenException::create($exception);
-        $trace = $flattened->getTrace();
-        $this->assertStringContainsString('*DEEP NESTED ARRAY*', serialize($trace));
-    }
-
-    public function testTooBigArray()
-    {
-        $a = [];
-        for ($i = 0; $i < 20; ++$i) {
-            for ($j = 0; $j < 50; ++$j) {
-                for ($k = 0; $k < 10; ++$k) {
-                    $a[$i][$j][$k] = 'value';
-                }
-            }
-        }
-        $a[20] = 'value';
-        $a[21] = 'value1';
-        $exception = $this->createException($a);
-
-        $flattened = FlattenException::create($exception);
-        $trace = $flattened->getTrace();
-
-        $this->assertSame($trace[1]['args'][0], ['array', ['array', '*SKIPPED over 10000 entries*']]);
-
-        $serializeTrace = serialize($trace);
-
-        $this->assertStringContainsString('*SKIPPED over 10000 entries*', $serializeTrace);
-        $this->assertStringNotContainsString('*value1*', $serializeTrace);
-    }
-
-    public function testAnonymousClass()
-    {
-        $flattened = FlattenException::create(new class() extends \RuntimeException {
-        });
-
-        $this->assertSame('RuntimeException@anonymous', $flattened->getClass());
-
-        $flattened = FlattenException::create(new \Exception(sprintf('Class "%s" blah.', \get_class(new class() extends \RuntimeException {
-        }))));
-
-        $this->assertSame('Class "RuntimeException@anonymous" blah.', $flattened->getMessage());
-    }
-
-    public function testToStringEmptyMessage()
-    {
-        $exception = new \RuntimeException();
-
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame($exception->getTraceAsString(), $flattened->getTraceAsString());
-        $this->assertSame($exception->__toString(), $flattened->getAsString());
-    }
-
-    public function testToString()
-    {
-        $test = function ($a, $b, $c, $d) {
-            return new \RuntimeException('This is a test message');
-        };
-
-        $exception = $test('foo123', 1, null, 1.5);
-
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame($exception->getTraceAsString(), $flattened->getTraceAsString());
-        $this->assertSame($exception->__toString(), $flattened->getAsString());
-    }
-
-    public function testToStringParent()
-    {
-        $exception = new \LogicException('This is message 1');
-        $exception = new \RuntimeException('This is messsage 2', 500, $exception);
-
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame($exception->getTraceAsString(), $flattened->getTraceAsString());
-        $this->assertSame($exception->__toString(), $flattened->getAsString());
-    }
-
-    private function createException($foo)
-    {
-        return new \Exception();
-    }
-}
diff --git a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php b/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
deleted file mode 100644
index ab6da5fb5ed5ac4fdb84933f1242fa9dfe7ca2a4..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\OutOfMemoryException;
-use Symfony\Component\Debug\ExceptionHandler;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-require_once __DIR__.'/HeaderMock.php';
-
-class ExceptionHandlerTest extends TestCase
-{
-    protected function setUp(): void
-    {
-        testHeader();
-    }
-
-    protected function tearDown(): void
-    {
-        testHeader();
-    }
-
-    public function testDebug()
-    {
-        $handler = new ExceptionHandler(false);
-
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException('Foo'));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString('Whoops, looks like something went wrong.', $response);
-        $this->assertStringNotContainsString('<div class="trace trace-as-html">', $response);
-
-        $handler = new ExceptionHandler(true);
-
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException('Foo'));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString('<h1 class="break-long-words exception-message">Foo</h1>', $response);
-        $this->assertStringContainsString('<div class="trace trace-as-html">', $response);
-
-        // taken from https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
-        $htmlWithXss = '<body onload=alert(\'test1\')> <b onmouseover=alert(\'Wufff!\')>click me!</b> <img src="j&#X41vascript:alert(\'test2\')"> <meta http-equiv="refresh"
-content="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg">';
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException($htmlWithXss));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString(sprintf('<h1 class="break-long-words exception-message">%s</h1>', htmlspecialchars($htmlWithXss, ENT_COMPAT | ENT_SUBSTITUTE, 'UTF-8')), $response);
-    }
-
-    public function testStatusCode()
-    {
-        $handler = new ExceptionHandler(false, 'iso8859-1');
-
-        ob_start();
-        $handler->sendPhpResponse(new NotFoundHttpException('Foo'));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString('Sorry, the page you are looking for could not be found.', $response);
-
-        $expectedHeaders = [
-            ['HTTP/1.0 404', true, null],
-            ['Content-Type: text/html; charset=iso8859-1', true, null],
-        ];
-
-        $this->assertSame($expectedHeaders, testHeader());
-    }
-
-    public function testHeaders()
-    {
-        $handler = new ExceptionHandler(false, 'iso8859-1');
-
-        ob_start();
-        $handler->sendPhpResponse(new MethodNotAllowedHttpException(['POST']));
-        ob_get_clean();
-
-        $expectedHeaders = [
-            ['HTTP/1.0 405', true, null],
-            ['Allow: POST', false, null],
-            ['Content-Type: text/html; charset=iso8859-1', true, null],
-        ];
-
-        $this->assertSame($expectedHeaders, testHeader());
-    }
-
-    public function testNestedExceptions()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException('Foo', 0, new \RuntimeException('Bar')));
-        $response = ob_get_clean();
-
-        $this->assertStringMatchesFormat('%A<p class="break-long-words trace-message">Foo</p>%A<p class="break-long-words trace-message">Bar</p>%A', $response);
-    }
-
-    public function testHandle()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-
-        $handler->handle(new \Exception('foo'));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'foo');
-    }
-
-    public function testHandleWithACustomHandlerThatOutputsSomething()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-        $handler->setHandler(function () {
-            echo 'ccc';
-        });
-
-        $handler->handle(new \Exception());
-        ob_end_flush(); // Necessary because of this PHP bug : https://bugs.php.net/76563
-        $this->assertSame('ccc', ob_get_clean());
-    }
-
-    public function testHandleWithACustomHandlerThatOutputsNothing()
-    {
-        $handler = new ExceptionHandler(true);
-        $handler->setHandler(function () {});
-
-        $handler->handle(new \Exception('ccc'));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'ccc');
-    }
-
-    public function testHandleWithACustomHandlerThatFails()
-    {
-        $handler = new ExceptionHandler(true);
-        $handler->setHandler(function () {
-            throw new \RuntimeException();
-        });
-
-        $handler->handle(new \Exception('ccc'));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'ccc');
-    }
-
-    public function testHandleOutOfMemoryException()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-        $handler->setHandler(function () {
-            $this->fail('OutOfMemoryException should bypass the handler');
-        });
-
-        $handler->handle(new OutOfMemoryException('foo', 0, E_ERROR, __FILE__, __LINE__));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), OutOfMemoryException::class, 'OutOfMemoryException', 'foo');
-    }
-
-    private function assertThatTheExceptionWasOutput($content, $expectedClass, $expectedTitle, $expectedMessage)
-    {
-        $this->assertStringContainsString(sprintf('<span class="exception_title"><abbr title="%s">%s</abbr></span>', $expectedClass, $expectedTitle), $content);
-        $this->assertStringContainsString(sprintf('<p class="break-long-words trace-message">%s</p>', $expectedMessage), $content);
-    }
-}
diff --git a/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php b/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php
deleted file mode 100644
index f3fd16e2ac1dad6471cdafe1e2952f4031f38513..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\FatalErrorHandler;
-
-use Composer\Autoload\ClassLoader as ComposerClassLoader;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\DebugClassLoader;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\FatalErrorHandler\ClassNotFoundFatalErrorHandler;
-
-class ClassNotFoundFatalErrorHandlerTest extends TestCase
-{
-    public static function setUpBeforeClass(): void
-    {
-        foreach (spl_autoload_functions() as $function) {
-            if (!\is_array($function)) {
-                continue;
-            }
-
-            // get class loaders wrapped by DebugClassLoader
-            if ($function[0] instanceof DebugClassLoader) {
-                $function = $function[0]->getClassLoader();
-            }
-
-            if ($function[0] instanceof ComposerClassLoader) {
-                $function[0]->add('Symfony_Component_Debug_Tests_Fixtures', \dirname(__DIR__, 5));
-                break;
-            }
-        }
-    }
-
-    /**
-     * @dataProvider provideClassNotFoundData
-     */
-    public function testHandleClassNotFound($error, $translatedMessage, $autoloader = null)
-    {
-        if ($autoloader) {
-            // Unregister all autoloaders to ensure the custom provided
-            // autoloader is the only one to be used during the test run.
-            $autoloaders = spl_autoload_functions();
-            array_map('spl_autoload_unregister', $autoloaders);
-            spl_autoload_register($autoloader);
-        }
-
-        $handler = new ClassNotFoundFatalErrorHandler();
-
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        if ($autoloader) {
-            spl_autoload_unregister($autoloader);
-            array_map('spl_autoload_register', $autoloaders);
-        }
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception);
-        $this->assertRegExp($translatedMessage, $exception->getMessage());
-        $this->assertSame($error['type'], $exception->getSeverity());
-        $this->assertSame($error['file'], $exception->getFile());
-        $this->assertSame($error['line'], $exception->getLine());
-    }
-
-    public function provideClassNotFoundData()
-    {
-        $autoloader = new ComposerClassLoader();
-        $autoloader->add('Symfony\Component\Debug\Exception\\', realpath(__DIR__.'/../../Exception'));
-        $autoloader->add('Symfony_Component_Debug_Tests_Fixtures', realpath(__DIR__.'/../../Tests/Fixtures'));
-
-        $debugClassLoader = new DebugClassLoader([$autoloader, 'loadClass']);
-
-        return [
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'WhizBangFactory\' not found',
-                ],
-                "/^Attempted to load class \"WhizBangFactory\" from the global namespace.\nDid you forget a \"use\" statement\?$/",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\WhizBangFactory\' not found',
-                ],
-                "/^Attempted to load class \"WhizBangFactory\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for another namespace\?$/",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from the global namespace.\nDid you forget a \"use\" statement for .*\"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'PEARClass\' not found',
-                ],
-                "/^Attempted to load class \"PEARClass\" from the global namespace.\nDid you forget a \"use\" statement for \"Symfony_Component_Debug_Tests_Fixtures_PEARClass\"\?$/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for .*\"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for \"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/",
-                [$autoloader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for \"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for another namespace\?$/",
-                function ($className) { /* do nothing here */ },
-            ],
-        ];
-    }
-
-    public function testCannotRedeclareClass()
-    {
-        if (!file_exists(__DIR__.'/../FIXTURES2/REQUIREDTWICE.PHP')) {
-            $this->markTestSkipped('Can only be run on case insensitive filesystems');
-        }
-
-        require_once __DIR__.'/../FIXTURES2/REQUIREDTWICE.PHP';
-
-        $error = [
-            'type' => 1,
-            'line' => 12,
-            'file' => 'foo.php',
-            'message' => 'Class \'Foo\\Bar\\RequiredTwice\' not found',
-        ];
-
-        $handler = new ClassNotFoundFatalErrorHandler();
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception);
-    }
-}
diff --git a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php b/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php
deleted file mode 100644
index de9994e447fed68dacb9c0f79030f658079e547a..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\FatalErrorHandler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler;
-
-class UndefinedFunctionFatalErrorHandlerTest extends TestCase
-{
-    /**
-     * @dataProvider provideUndefinedFunctionData
-     */
-    public function testUndefinedFunction($error, $translatedMessage)
-    {
-        $handler = new UndefinedFunctionFatalErrorHandler();
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\UndefinedFunctionException', $exception);
-        // class names are case insensitive and PHP do not return the same
-        $this->assertSame(strtolower($translatedMessage), strtolower($exception->getMessage()));
-        $this->assertSame($error['type'], $exception->getSeverity());
-        $this->assertSame($error['file'], $exception->getFile());
-        $this->assertSame($error['line'], $exception->getLine());
-    }
-
-    public function provideUndefinedFunctionData()
-    {
-        return [
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function test_namespaced_function()',
-                ],
-                "Attempted to call function \"test_namespaced_function\" from the global namespace.\nDid you mean to call \"\\symfony\\component\\debug\\tests\\fatalerrorhandler\\test_namespaced_function\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function Foo\\Bar\\Baz\\test_namespaced_function()',
-                ],
-                "Attempted to call function \"test_namespaced_function\" from namespace \"Foo\\Bar\\Baz\".\nDid you mean to call \"\\symfony\\component\\debug\\tests\\fatalerrorhandler\\test_namespaced_function\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function foo()',
-                ],
-                'Attempted to call function "foo" from the global namespace.',
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function Foo\\Bar\\Baz\\foo()',
-                ],
-                'Attempted to call function "foo" from namespace "Foo\Bar\Baz".',
-            ],
-        ];
-    }
-}
-
-function test_namespaced_function()
-{
-}
diff --git a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php b/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php
deleted file mode 100644
index 268a841351ec45990530a823f3e6de20c61af058..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\FatalErrorHandler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
-
-class UndefinedMethodFatalErrorHandlerTest extends TestCase
-{
-    /**
-     * @dataProvider provideUndefinedMethodData
-     */
-    public function testUndefinedMethod($error, $translatedMessage)
-    {
-        $handler = new UndefinedMethodFatalErrorHandler();
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\UndefinedMethodException', $exception);
-        $this->assertSame($translatedMessage, $exception->getMessage());
-        $this->assertSame($error['type'], $exception->getSeverity());
-        $this->assertSame($error['file'], $exception->getFile());
-        $this->assertSame($error['line'], $exception->getLine());
-    }
-
-    public function provideUndefinedMethodData()
-    {
-        return [
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined method SplObjectStorage::what()',
-                ],
-                'Attempted to call an undefined method named "what" of class "SplObjectStorage".',
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined method SplObjectStorage::walid()',
-                ],
-                "Attempted to call an undefined method named \"walid\" of class \"SplObjectStorage\".\nDid you mean to call \"valid\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined method SplObjectStorage::offsetFet()',
-                ],
-                "Attempted to call an undefined method named \"offsetFet\" of class \"SplObjectStorage\".\nDid you mean to call e.g. \"offsetGet\", \"offsetSet\" or \"offsetUnset\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'message' => 'Call to undefined method class@anonymous::test()',
-                    'file' => '/home/possum/work/symfony/test.php',
-                    'line' => 11,
-                ],
-                'Attempted to call an undefined method named "test" of class "class@anonymous".',
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/AnnotatedClass.php b/vendor/symfony/debug/Tests/Fixtures/AnnotatedClass.php
deleted file mode 100644
index 4eecb6d3f16683745a233a8c98cb6ea24552c1a7..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/AnnotatedClass.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class AnnotatedClass
-{
-    /**
-     * @deprecated
-     */
-    public function deprecatedMethod()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/ClassAlias.php b/vendor/symfony/debug/Tests/Fixtures/ClassAlias.php
deleted file mode 100644
index 9d6dbaa7124feba20de910abbff2abd49c833650..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/ClassAlias.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-
-class_alias('Symfony\Component\Debug\Tests\Fixtures\NotPSR0bis', 'Symfony\Component\Debug\Tests\Fixtures\ClassAlias');
diff --git a/vendor/symfony/debug/Tests/Fixtures/ClassWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/ClassWithAnnotatedParameters.php
deleted file mode 100644
index d6eec9aa690345bea3d68270875cc39379df15a2..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/ClassWithAnnotatedParameters.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ClassWithAnnotatedParameters
-{
-    /**
-     * @param string $foo this is a foo parameter
-     */
-    public function fooMethod(string $foo)
-    {
-    }
-
-    /**
-     * @param string $bar parameter not implemented yet
-     */
-    public function barMethod(/* string $bar = null */)
-    {
-    }
-
-    /**
-     * @param Quz $quz parameter not implemented yet
-     */
-    public function quzMethod(/* Quz $quz = null */)
-    {
-    }
-
-    /**
-     * @param true $yes
-     */
-    public function isSymfony()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/DefinitionInEvaluatedCode.php b/vendor/symfony/debug/Tests/Fixtures/DefinitionInEvaluatedCode.php
deleted file mode 100644
index ff6976e0fb1d702f85807e7595d4e500bb3a9dbf..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/DefinitionInEvaluatedCode.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-eval('
-    namespace Symfony\Component\Debug\Tests\Fixtures;
-
-    class DefinitionInEvaluatedCode
-    {
-    }
-');
diff --git a/vendor/symfony/debug/Tests/Fixtures/DeprecatedClass.php b/vendor/symfony/debug/Tests/Fixtures/DeprecatedClass.php
deleted file mode 100644
index 51fde5af8a1d05246fefd466c0655598298dea4e..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/DeprecatedClass.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @deprecated but this is a test
- *             deprecation notice
- * @foobar
- */
-class DeprecatedClass
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/DeprecatedInterface.php b/vendor/symfony/debug/Tests/Fixtures/DeprecatedInterface.php
deleted file mode 100644
index 6bab62f9563b83dc3d2eaac92b3ed19ee6024587..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/DeprecatedInterface.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @deprecated but this is a test
- *             deprecation notice
- * @foobar
- */
-interface DeprecatedInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/ErrorHandlerThatUsesThePreviousOne.php b/vendor/symfony/debug/Tests/Fixtures/ErrorHandlerThatUsesThePreviousOne.php
deleted file mode 100644
index d449c40cc76dbec78c4e921bab2565f733b2e9d8..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/ErrorHandlerThatUsesThePreviousOne.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ErrorHandlerThatUsesThePreviousOne
-{
-    private static $previous;
-
-    public static function register()
-    {
-        $handler = new static();
-
-        self::$previous = set_error_handler([$handler, 'handleError']);
-
-        return $handler;
-    }
-
-    public function handleError($type, $message, $file, $line, $context)
-    {
-        return \call_user_func(self::$previous, $type, $message, $file, $line, $context);
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/ExtendedFinalMethod.php b/vendor/symfony/debug/Tests/Fixtures/ExtendedFinalMethod.php
deleted file mode 100644
index 050d19ff5e720d52a4c5cb16d78d92b1697e9305..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/ExtendedFinalMethod.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ExtendedFinalMethod extends FinalMethod
-{
-    use FinalMethod2Trait;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function finalMethod()
-    {
-    }
-
-    public function anotherMethod()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/FinalClasses.php b/vendor/symfony/debug/Tests/Fixtures/FinalClasses.php
deleted file mode 100644
index 4c2b0aaf351f38603af944da971e0af2505e0b58..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/FinalClasses.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @final since version 3.3.
- */
-class FinalClass1
-{
-    // simple comment
-}
-
-/**
- * @final
- */
-class FinalClass2
-{
-    // no comment
-}
-
-/**
- * @final comment with @@@ and ***
- *
- * @author John Doe
- */
-class FinalClass3
-{
-    // with comment and a tag after
-}
-
-/**
- * @final
- *
- * @author John Doe
- */
-class FinalClass4
-{
-    // without comment and a tag after
-}
-
-/**
- * @author John Doe
- *
- *
- * @final multiline
- * comment
- */
-class FinalClass5
-{
-    // with comment and a tag before
-}
-
-/**
- * @author John Doe
- *
- * @final
- */
-class FinalClass6
-{
-    // without comment and a tag before
-}
-
-/**
- * @author John Doe
- *
- * @final another
- *        multiline comment...
- *
- * @return string
- */
-class FinalClass7
-{
-    // with comment and a tag before and after
-}
-
-/**
- * @author John Doe
- * @final
- *
- * @return string
- */
-class FinalClass8
-{
-    // without comment and a tag before and after
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/FinalMethod.php b/vendor/symfony/debug/Tests/Fixtures/FinalMethod.php
deleted file mode 100644
index 60a28b24c27fb55f82935589d89ea36d04fb1446..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/FinalMethod.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class FinalMethod
-{
-    /**
-     * @final
-     */
-    public function finalMethod()
-    {
-    }
-
-    /**
-     * @final
-     *
-     * @return int
-     */
-    public function finalMethod2()
-    {
-    }
-
-    public function anotherMethod()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/FinalMethod2Trait.php b/vendor/symfony/debug/Tests/Fixtures/FinalMethod2Trait.php
deleted file mode 100644
index 8547f3afed7abfa0c139ed845a4a7f3c54344e2a..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/FinalMethod2Trait.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-trait FinalMethod2Trait
-{
-    public function finalMethod2()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InterfaceWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/InterfaceWithAnnotatedParameters.php
deleted file mode 100644
index 86593db1249e608a5844c9003b47df63a55859b3..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/InterfaceWithAnnotatedParameters.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * Ensures a deprecation is triggered when a new parameter is not declared in child classes.
- */
-interface InterfaceWithAnnotatedParameters
-{
-    /**
-     * @param bool $matrix
-     */
-    public function whereAmI();
-
-    /**
-     * @param       $noType
-     * @param callable(\Throwable|null $reason, mixed $value) $callback and a comment
-     * about this great param
-     * @param string                                          $param (comment with $dollar)
-     * @param $defined
-     * @param  callable  ($a,  $b)  $anotherOne
-     * @param callable (mixed $a, $b) $definedCallable
-     * @param Type$WithDollarIsStillAType $ccc
-     * @param \JustAType
-     */
-    public function iAmHere();
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalClass.php b/vendor/symfony/debug/Tests/Fixtures/InternalClass.php
deleted file mode 100644
index 30efe79b333afef3e8711608a081895630a8eb1d..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalClass.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-class InternalClass
-{
-    use InternalTrait2;
-
-    public function usedInInternalClass()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalInterface.php b/vendor/symfony/debug/Tests/Fixtures/InternalInterface.php
deleted file mode 100644
index dd79f501e83c93b5fb7c1ed944e9662bd1427bcf..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalInterface.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-interface InternalInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalTrait.php b/vendor/symfony/debug/Tests/Fixtures/InternalTrait.php
deleted file mode 100644
index 7bb4635cc4ba778e8412db868d8082364e0d76f2..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalTrait.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-trait InternalTrait
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalTrait2.php b/vendor/symfony/debug/Tests/Fixtures/InternalTrait2.php
deleted file mode 100644
index e4cbe12aec298517ae51200b3aa3b118829caa26..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalTrait2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-trait InternalTrait2
-{
-    /**
-     * @internal
-     */
-    public function internalMethod()
-    {
-    }
-
-    /**
-     * @internal but should not trigger a deprecation
-     */
-    public function usedInInternalClass()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/LoggerThatSetAnErrorHandler.php b/vendor/symfony/debug/Tests/Fixtures/LoggerThatSetAnErrorHandler.php
deleted file mode 100644
index dd8563627a1f44ef4139530a4ef06db1efb6dd73..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/LoggerThatSetAnErrorHandler.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-use Symfony\Component\Debug\BufferingLogger;
-
-class LoggerThatSetAnErrorHandler extends BufferingLogger
-{
-    public function log($level, $message, array $context = [])
-    {
-        set_error_handler('is_string');
-        parent::log($level, $message, $context);
-        restore_error_handler();
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/NonDeprecatedInterface.php b/vendor/symfony/debug/Tests/Fixtures/NonDeprecatedInterface.php
deleted file mode 100644
index a4179a577f9bfba4fec64d9104c135c96c7b6e2a..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/NonDeprecatedInterface.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-interface NonDeprecatedInterface extends DeprecatedInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/PEARClass.php b/vendor/symfony/debug/Tests/Fixtures/PEARClass.php
deleted file mode 100644
index 39f228182e0fac756ac32a559b87c0a8d27de9ae..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/PEARClass.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class Symfony_Component_Debug_Tests_Fixtures_PEARClass
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/SubClassWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/SubClassWithAnnotatedParameters.php
deleted file mode 100644
index 5d05d798358ef025ae58e30086f39bc3b7696934..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/SubClassWithAnnotatedParameters.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class SubClassWithAnnotatedParameters extends ClassWithAnnotatedParameters implements InterfaceWithAnnotatedParameters
-{
-    use TraitWithAnnotatedParameters;
-
-    public function fooMethod(string $foo)
-    {
-    }
-
-    public function barMethod($bar = null)
-    {
-    }
-
-    public function quzMethod()
-    {
-    }
-
-    public function whereAmI()
-    {
-    }
-
-    /**
-     * @param                      $defined
-     * @param Type\Does\Not\Matter $definedCallable
-     */
-    public function iAmHere()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/Throwing.php b/vendor/symfony/debug/Tests/Fixtures/Throwing.php
deleted file mode 100644
index 21e0aba17d35869f12cc97577e4f3374aa4dddb8..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/Throwing.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-
-throw new \Exception('boo');
diff --git a/vendor/symfony/debug/Tests/Fixtures/ToStringThrower.php b/vendor/symfony/debug/Tests/Fixtures/ToStringThrower.php
deleted file mode 100644
index 24ac8926d28fff1cca7e344014f9e7b874132829..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/ToStringThrower.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ToStringThrower
-{
-    private $exception;
-
-    public function __construct(\Exception $e)
-    {
-        $this->exception = $e;
-    }
-
-    public function __toString()
-    {
-        try {
-            throw $this->exception;
-        } catch (\Exception $e) {
-            // Using user_error() here is on purpose so we do not forget
-            // that this alias also should work alongside with trigger_error().
-            return trigger_error($e, E_USER_ERROR);
-        }
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/TraitWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/TraitWithAnnotatedParameters.php
deleted file mode 100644
index 5eb5fbf84bc93e20afcad7fbc7d2d1c3c6a82741..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/TraitWithAnnotatedParameters.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-trait TraitWithAnnotatedParameters
-{
-    /**
-     * `@param` annotations in traits are not parsed.
-     */
-    public function isSymfony()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/TraitWithInternalMethod.php b/vendor/symfony/debug/Tests/Fixtures/TraitWithInternalMethod.php
deleted file mode 100644
index 4c3dae37ab52c6cf45998a164e5f61c89705c7d7..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/TraitWithInternalMethod.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-trait TraitWithInternalMethod
-{
-    /**
-     * @internal
-     */
-    public function foo()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualClass.php b/vendor/symfony/debug/Tests/Fixtures/VirtualClass.php
deleted file mode 100644
index 25712519a5fb6059e254c447b13bf01e51cfa801..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualClass.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string classMethod()
- */
-class VirtualClass
-{
-    use VirtualTrait;
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualClassMagicCall.php b/vendor/symfony/debug/Tests/Fixtures/VirtualClassMagicCall.php
deleted file mode 100644
index de33e8afc557210c54cc60c2e663553583f60fdd..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualClassMagicCall.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string magicMethod()
- * @method static string staticMagicMethod()
- */
-class VirtualClassMagicCall
-{
-    public static function __callStatic($name, $arguments)
-    {
-    }
-
-    public function __call($name, $arguments)
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualInterface.php b/vendor/symfony/debug/Tests/Fixtures/VirtualInterface.php
deleted file mode 100644
index 943014eefb18153ef34c0acd9a1a9e93dfb8a90d..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string interfaceMethod()
- * @method        sameLineInterfaceMethod($arg)
- * @method sameLineInterfaceMethodNoBraces
- *
- * Ignored
- * @method
- * @method
- *
- * Not ignored
- * @method newLineInterfaceMethod() Some description!
- * @method \stdClass newLineInterfaceMethodNoBraces Description
- *
- * Invalid
- * @method unknownType invalidInterfaceMethod()
- * @method unknownType|string invalidInterfaceMethodNoBraces
- *
- * Complex
- * @method              complexInterfaceMethod($arg, ...$args)
- * @method string[]|int complexInterfaceMethodTyped($arg, int ...$args) Description ...
- *
- * Static
- * @method static Foo&Bar staticMethod()
- * @method static staticMethodNoBraces
- * @method static \stdClass staticMethodTyped(int $arg) Description
- * @method static \stdClass[] staticMethodTypedNoBraces
- */
-interface VirtualInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualSubInterface.php b/vendor/symfony/debug/Tests/Fixtures/VirtualSubInterface.php
deleted file mode 100644
index dee19731dcd24c4311c246f2e7b5d897e018da2b..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualSubInterface.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string subInterfaceMethod()
- */
-interface VirtualSubInterface extends VirtualInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualTrait.php b/vendor/symfony/debug/Tests/Fixtures/VirtualTrait.php
deleted file mode 100644
index f584a8aa8fdad197af54ab3c5845a5226e5e4b9a..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualTrait.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string traitMethod()
- */
-trait VirtualTrait
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/casemismatch.php b/vendor/symfony/debug/Tests/Fixtures/casemismatch.php
deleted file mode 100644
index 691d660fd1d5b8d7e367b73eb1243c5d05a4a48a..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/casemismatch.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class CaseMismatch
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/notPsr0Bis.php b/vendor/symfony/debug/Tests/Fixtures/notPsr0Bis.php
deleted file mode 100644
index 4cf526719a6e67772a5cb6341240af869a6f80f0..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/notPsr0Bis.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class NotPSR0bis
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/psr4/Psr4CaseMismatch.php b/vendor/symfony/debug/Tests/Fixtures/psr4/Psr4CaseMismatch.php
deleted file mode 100644
index ec48dd22b4999740f606972241278208b2da9aed..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/psr4/Psr4CaseMismatch.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class PSR4CaseMismatch
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php b/vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php
deleted file mode 100644
index 8554725aa8b3b6605d75899c0496c10876cc4aab..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class NotPSR0
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php b/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php
deleted file mode 100644
index 604bc37ff1f04b83951836c9b1c293efd6dc4952..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures2;
-
-class RequiredTwice
-{
-}
diff --git a/vendor/symfony/debug/Tests/HeaderMock.php b/vendor/symfony/debug/Tests/HeaderMock.php
deleted file mode 100644
index d7564db4854b8aefd0ada8454a3f2a142df3e292..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/HeaderMock.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug;
-
-function headers_sent()
-{
-    return false;
-}
-
-function header($str, $replace = true, $status = null)
-{
-    Tests\testHeader($str, $replace, $status);
-}
-
-namespace Symfony\Component\Debug\Tests;
-
-function testHeader()
-{
-    static $headers = [];
-
-    if (!$h = \func_get_args()) {
-        $h = $headers;
-        $headers = [];
-
-        return $h;
-    }
-
-    $headers[] = \func_get_args();
-}
diff --git a/vendor/symfony/debug/Tests/phpt/debug_class_loader.phpt b/vendor/symfony/debug/Tests/phpt/debug_class_loader.phpt
deleted file mode 100644
index 53839c4899b0c3efff02d7778397c069da2f6510..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/phpt/debug_class_loader.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Test DebugClassLoader with previously loaded parents
---FILE--
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-use Symfony\Component\Debug\DebugClassLoader;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-class_exists(FinalMethod::class);
-
-set_error_handler(function ($type, $msg) { echo $msg, "\n"; });
-
-DebugClassLoader::enable();
-
-class_exists(ExtendedFinalMethod::class);
-
-?>
---EXPECTF--
-The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".
-The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod2()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".
diff --git a/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt b/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
deleted file mode 100644
index 9cd44388c3166ecf379e826c47a32a54e4af636c..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
+++ /dev/null
@@ -1,47 +0,0 @@
---TEST--
-Test catching fatal errors when handlers are nested
---INI--
-display_errors=0
---FILE--
-<?php
-
-namespace Symfony\Component\Debug;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-set_error_handler('var_dump');
-set_exception_handler('var_dump');
-
-ErrorHandler::register(null, false);
-
-if (true) {
-    class foo extends missing
-    {
-    }
-}
-
-?>
---EXPECTF--
-object(Symfony\Component\Debug\Exception\ClassNotFoundException)#%d (8) {
-  ["message":protected]=>
-  string(131) "Attempted to load class "missing" from namespace "Symfony\Component\Debug".
-Did you forget a "use" statement for another namespace?"
-  ["string":"Exception":private]=>
-  string(0) ""
-  ["code":protected]=>
-  int(0)
-  ["file":protected]=>
-  string(%d) "%s"
-  ["line":protected]=>
-  int(%d)
-  ["trace":"Exception":private]=>
-  array(%d) {%A}
-  ["previous":"Exception":private]=>
-  NULL
-  ["severity":protected]=>
-  int(1)
-}
diff --git a/vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt b/vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt
deleted file mode 100644
index b743d93ad7c805871ff013b048c3946b84a42051..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-Test rethrowing in custom exception handler
---FILE--
-<?php
-
-namespace Symfony\Component\Debug;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-if (true) {
-    class TestLogger extends \Psr\Log\AbstractLogger
-    {
-        public function log($level, $message, array $context = [])
-        {
-            echo $message, "\n";
-        }
-    }
-}
-
-set_exception_handler(function ($e) { echo 123; throw $e; });
-ErrorHandler::register()->setDefaultLogger(new TestLogger());
-ini_set('display_errors', 1);
-
-throw new \Exception('foo');
-?>
---EXPECTF--
-Uncaught Exception: foo
-123
-Fatal error: Uncaught %s:25
-Stack trace:
-%a
diff --git a/vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt b/vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt
deleted file mode 100644
index 1736a3b5f2a739b4caa51c7e27ee13d7802d8452..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt
+++ /dev/null
@@ -1,42 +0,0 @@
---TEST--
-Test catching fatal errors when handlers are nested
---FILE--
-<?php
-
-namespace Symfony\Component\Debug;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-Debug::enable();
-ini_set('display_errors', 0);
-
-$eHandler = set_error_handler('var_dump');
-$xHandler = set_exception_handler('var_dump');
-
-var_dump([
-    $eHandler[0] === $xHandler[0] ? 'Error and exception handlers do match' : 'Error and exception handlers are different',
-]);
-
-$eHandler[0]->setExceptionHandler('print_r');
-
-if (true) {
-    class Broken implements \JsonSerializable
-    {
-    }
-}
-
-?>
---EXPECTF--
-array(1) {
-  [0]=>
-  string(37) "Error and exception handlers do match"
-}
-object(Symfony\Component\Debug\Exception\FatalErrorException)#%d (%d) {
-  ["message":protected]=>
-  string(179) "Error: Class Symfony\Component\Debug\Broken contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (JsonSerializable::jsonSerialize)"
-%a
-}
diff --git a/vendor/symfony/debug/composer.json b/vendor/symfony/debug/composer.json
index 7fd5ff9c93ab8825f606540ed9892765a7948af6..e54a603aa332164494d0b80e5ba9ed966a47198b 100644
--- a/vendor/symfony/debug/composer.json
+++ b/vendor/symfony/debug/composer.json
@@ -16,14 +16,15 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
-        "psr/log": "~1.0"
+        "php": ">=7.1.3",
+        "psr/log": "~1.0",
+        "symfony/polyfill-php80": "^1.15"
     },
     "conflict": {
         "symfony/http-kernel": "<3.4"
     },
     "require-dev": {
-        "symfony/http-kernel": "~3.4|~4.0"
+        "symfony/http-kernel": "^3.4|^4.0|^5.0"
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\Debug\\": "" },
@@ -31,10 +32,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/debug/phpunit.xml.dist b/vendor/symfony/debug/phpunit.xml.dist
deleted file mode 100644
index a51bbff93586161a8a8438e6765626d75ecfcb82..0000000000000000000000000000000000000000
--- a/vendor/symfony/debug/phpunit.xml.dist
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Debug Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-        <testsuite name="Symfony Debug Extension Test Suite">
-            <directory suffix=".phpt">./Resources/ext/tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/event-dispatcher-contracts/LICENSE b/vendor/symfony/event-dispatcher-contracts/LICENSE
index 3f853aaf35fe186d4016761eb6e8a403de3e6e0d..69d925ba7511e664a16b2af1fabce06b8767455d 100644
--- a/vendor/symfony/event-dispatcher-contracts/LICENSE
+++ b/vendor/symfony/event-dispatcher-contracts/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/event-dispatcher-contracts/composer.json b/vendor/symfony/event-dispatcher-contracts/composer.json
index 55802a491da69760a25da9ca69d36f1c33298ed7..862c2565f08f12c90a789ff7916e460b1020ed7a 100644
--- a/vendor/symfony/event-dispatcher-contracts/composer.json
+++ b/vendor/symfony/event-dispatcher-contracts/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": "^7.1.3"
+        "php": ">=7.1.3"
     },
     "suggest": {
         "psr/event-dispatcher": "",
@@ -29,6 +29,10 @@
     "extra": {
         "branch-alias": {
             "dev-master": "1.1-dev"
+        },
+        "thanks": {
+            "name": "symfony/contracts",
+            "url": "https://github.com/symfony/contracts"
         }
     }
 }
diff --git a/vendor/symfony/event-dispatcher/.gitignore b/vendor/symfony/event-dispatcher/.gitignore
deleted file mode 100644
index c49a5d8df5c6548379f00c77fe572a7217bce218..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/event-dispatcher/CHANGELOG.md b/vendor/symfony/event-dispatcher/CHANGELOG.md
index 7653cad1c0eb0ccd330253e6b6e24c237b57a534..54fd04227b36c41d668dd19092af969c4d7c4863 100644
--- a/vendor/symfony/event-dispatcher/CHANGELOG.md
+++ b/vendor/symfony/event-dispatcher/CHANGELOG.md
@@ -1,6 +1,12 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * `AddEventAliasesPass` has been added, allowing applications and bundles to extend the event alias mapping used by `RegisterListenersPass`.
+ * Made the `event` attribute of the `kernel.event_listener` tag optional for FQCN events.
+
 4.3.0
 -----
 
@@ -10,7 +16,7 @@ CHANGELOG
 4.1.0
 -----
 
- * added support for invokable event listeners tagged with `kernel.event_listener` by default 
+ * added support for invokable event listeners tagged with `kernel.event_listener` by default
  * The `TraceableEventDispatcher::getOrphanedEvents()` method has been added.
  * The `TraceableEventDispatcherInterface` has been deprecated.
 
diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
index 513c6ade6d9a7ac761f6ffb98b922cc221b7d71d..d320a2620be4a629589f603977bf06469ef6715f 100644
--- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
@@ -145,13 +145,13 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
         if (\is_object($event)) {
             $eventName = $eventName ?? \get_class($event);
         } else {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', EventDispatcherInterface::class), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED);
             $swap = $event;
             $event = $eventName ?? new Event();
             $eventName = $swap;
 
             if (!$event instanceof Event) {
-                throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of %s, %s given.', EventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event)));
+                throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of "%s", "%s" given.', EventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event)));
             }
         }
 
@@ -323,7 +323,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
     {
     }
 
-    private function preProcess($eventName)
+    private function preProcess(string $eventName)
     {
         if (!$this->dispatcher->hasListeners($eventName)) {
             $this->orphanedEvents[$this->currentRequestHash][] = $eventName;
@@ -341,7 +341,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
         }
     }
 
-    private function postProcess($eventName)
+    private function postProcess(string $eventName)
     {
         unset($this->wrappedListeners[$eventName]);
         $skipped = false;
diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
index 3e6493eb83f0aa1d51d9596c3e3b2f8e368d97f8..4b27d3b23aef43c0420802bb0accdd09a7d197cd 100644
--- a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
+++ b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
@@ -16,8 +16,10 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
 use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\EventDispatcher\Event as LegacyEvent;
 use Symfony\Component\EventDispatcher\EventDispatcher;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Contracts\EventDispatcher\Event;
 
 /**
  * Compiler pass to register tagged services for an event dispatcher.
@@ -54,12 +56,12 @@ class RegisterListenersPass implements CompilerPassInterface
             return;
         }
 
+        $aliases = [];
+
         if ($container->hasParameter($this->eventAliasesParameter)) {
             $aliases = $container->getParameter($this->eventAliasesParameter);
-            $container->getParameterBag()->remove($this->eventAliasesParameter);
-        } else {
-            $aliases = [];
         }
+
         $definition = $container->findDefinition($this->dispatcherService);
 
         foreach ($container->findTaggedServiceIds($this->listenerTag, true) as $id => $events) {
@@ -67,8 +69,14 @@ class RegisterListenersPass implements CompilerPassInterface
                 $priority = isset($event['priority']) ? $event['priority'] : 0;
 
                 if (!isset($event['event'])) {
-                    throw new InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag));
+                    if ($container->getDefinition($id)->hasTag($this->subscriberTag)) {
+                        continue;
+                    }
+
+                    $event['method'] = $event['method'] ?? '__invoke';
+                    $event['event'] = $this->getEventFromTypeDeclaration($container, $id, $event['method']);
                 }
+
                 $event['event'] = $aliases[$event['event']] ?? $event['event'];
 
                 if (!isset($event['method'])) {
@@ -122,6 +130,24 @@ class RegisterListenersPass implements CompilerPassInterface
             ExtractingEventDispatcher::$aliases = [];
         }
     }
+
+    private function getEventFromTypeDeclaration(ContainerBuilder $container, string $id, string $method): string
+    {
+        if (
+            null === ($class = $container->getDefinition($id)->getClass())
+            || !($r = $container->getReflectionClass($class, false))
+            || !$r->hasMethod($method)
+            || 1 > ($m = $r->getMethod($method))->getNumberOfParameters()
+            || !($type = $m->getParameters()[0]->getType()) instanceof \ReflectionNamedType
+            || $type->isBuiltin()
+            || Event::class === ($name = $type->getName())
+            || LegacyEvent::class === $name
+        ) {
+            throw new InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag));
+        }
+
+        return $name;
+    }
 }
 
 /**
@@ -139,7 +165,7 @@ class ExtractingEventDispatcher extends EventDispatcher implements EventSubscrib
         $this->listeners[] = [$eventName, $listener[1], $priority];
     }
 
-    public static function getSubscribedEvents()
+    public static function getSubscribedEvents(): array
     {
         $events = [];
 
diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php
index ebfd1ec6d5e7d6f585f03e7f5ce0a440c09877ec..d22bcea1f8757519d8639d82b4d1cc2a763fadc5 100644
--- a/vendor/symfony/event-dispatcher/EventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/EventDispatcher.php
@@ -38,7 +38,7 @@ class EventDispatcher implements EventDispatcherInterface
 
     public function __construct()
     {
-        if (__CLASS__ === \get_class($this)) {
+        if (__CLASS__ === static::class) {
             $this->optimized = [];
         }
     }
@@ -54,13 +54,13 @@ class EventDispatcher implements EventDispatcherInterface
 
         if (\is_object($event)) {
             $eventName = $eventName ?? \get_class($event);
-        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof Event)) {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', EventDispatcherInterface::class), E_USER_DEPRECATED);
+        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) {
+            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED);
             $swap = $event;
             $event = $eventName ?? new Event();
             $eventName = $swap;
         } else {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, %s given.', EventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
+            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', EventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
         }
 
         if (null !== $this->optimized && null !== $eventName) {
@@ -111,14 +111,16 @@ class EventDispatcher implements EventDispatcherInterface
             return null;
         }
 
-        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
             $listener[0] = $listener[0]();
+            $listener[1] = $listener[1] ?? '__invoke';
         }
 
         foreach ($this->listeners[$eventName] as $priority => &$listeners) {
             foreach ($listeners as &$v) {
-                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure) {
+                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure && 2 >= \count($v)) {
                     $v[0] = $v[0]();
+                    $v[1] = $v[1] ?? '__invoke';
                 }
                 if ($v === $listener) {
                     return $priority;
@@ -165,14 +167,16 @@ class EventDispatcher implements EventDispatcherInterface
             return;
         }
 
-        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
             $listener[0] = $listener[0]();
+            $listener[1] = $listener[1] ?? '__invoke';
         }
 
         foreach ($this->listeners[$eventName] as $priority => &$listeners) {
             foreach ($listeners as $k => &$v) {
-                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure) {
+                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure && 2 >= \count($v)) {
                     $v[0] = $v[0]();
+                    $v[1] = $v[1] ?? '__invoke';
                 }
                 if ($v === $listener) {
                     unset($listeners[$k], $this->sorted[$eventName], $this->optimized[$eventName]);
@@ -270,9 +274,10 @@ class EventDispatcher implements EventDispatcherInterface
         $this->sorted[$eventName] = [];
 
         foreach ($this->listeners[$eventName] as &$listeners) {
-            foreach ($listeners as $k => $listener) {
-                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+            foreach ($listeners as $k => &$listener) {
+                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
                     $listener[0] = $listener[0]();
+                    $listener[1] = $listener[1] ?? '__invoke';
                 }
                 $this->sorted[$eventName][] = $listener;
             }
@@ -290,10 +295,11 @@ class EventDispatcher implements EventDispatcherInterface
         foreach ($this->listeners[$eventName] as &$listeners) {
             foreach ($listeners as &$listener) {
                 $closure = &$this->optimized[$eventName][];
-                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
                     $closure = static function (...$args) use (&$listener, &$closure) {
                         if ($listener[0] instanceof \Closure) {
                             $listener[0] = $listener[0]();
+                            $listener[1] = $listener[1] ?? '__invoke';
                         }
                         ($closure = \Closure::fromCallable($listener))(...$args);
                     };
diff --git a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
index 824f21599c2560611fb1ff88398d475c908e9be8..741590b1bf3a3d8971ebbc5dc2985aad5ae1f8d1 100644
--- a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
+++ b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
@@ -40,6 +40,9 @@ interface EventSubscriberInterface
      *  * ['eventName' => ['methodName', $priority]]
      *  * ['eventName' => [['methodName1', $priority], ['methodName2']]]
      *
+     * The code must not depend on runtime state as it will only be called at compile time.
+     * All logic depending on runtime state must be put into the individual methods handling the events.
+     *
      * @return array The event names to listen to
      */
     public static function getSubscribedEvents();
diff --git a/vendor/symfony/event-dispatcher/LICENSE b/vendor/symfony/event-dispatcher/LICENSE
index a677f43763ca467472898351b328aee41e2edd7c..9e936ec0448b8549e5edf08e5ac5f01491a8bfc8 100644
--- a/vendor/symfony/event-dispatcher/LICENSE
+++ b/vendor/symfony/event-dispatcher/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
index be0d381a29be69ef50a4a327af88c13538d3fbb2..8ee6cba1b5112ca9805881b457efcad5afaa4b86 100644
--- a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
+++ b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
@@ -38,7 +38,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
             return $dispatcher;
         }
 
-        @trigger_error(sprintf('The signature of the "%s::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.', $r->class), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The signature of the "%s::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.', $r->class), \E_USER_DEPRECATED);
 
         $self = new self();
         $self->dispatcher = $dispatcher;
@@ -59,13 +59,13 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
 
         if (\is_object($event)) {
             $eventName = $eventName ?? \get_class($event);
-        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof Event)) {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', ContractsEventDispatcherInterface::class), E_USER_DEPRECATED);
+        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) {
+            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', ContractsEventDispatcherInterface::class), \E_USER_DEPRECATED);
             $swap = $event;
             $event = $eventName ?? new Event();
             $eventName = $swap;
         } else {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, %s given.', ContractsEventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
+            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', ContractsEventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
         }
 
         $listeners = $this->getListeners($eventName);
@@ -116,7 +116,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
     /**
      * {@inheritdoc}
      */
-    public function getListeners($eventName = null)
+    public function getListeners($eventName = null): array
     {
         return $this->dispatcher->getListeners($eventName);
     }
@@ -124,7 +124,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
     /**
      * {@inheritdoc}
      */
-    public function getListenerPriority($eventName, $listener)
+    public function getListenerPriority($eventName, $listener): ?int
     {
         return $this->dispatcher->getListenerPriority($eventName, $listener);
     }
@@ -132,7 +132,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
     /**
      * {@inheritdoc}
      */
-    public function hasListeners($eventName = null)
+    public function hasListeners($eventName = null): bool
     {
         return $this->dispatcher->hasListeners($eventName);
     }
diff --git a/vendor/symfony/event-dispatcher/LegacyEventProxy.php b/vendor/symfony/event-dispatcher/LegacyEventProxy.php
index cad8cfaedb724af76eb9dcfcff81afa50d5fe054..45ee251d6a98dc2450fa77186528455811ce8287 100644
--- a/vendor/symfony/event-dispatcher/LegacyEventProxy.php
+++ b/vendor/symfony/event-dispatcher/LegacyEventProxy.php
@@ -37,7 +37,7 @@ final class LegacyEventProxy extends Event
         return $this->event;
     }
 
-    public function isPropagationStopped()
+    public function isPropagationStopped(): bool
     {
         if (!$this->event instanceof ContractsEvent && !$this->event instanceof StoppableEventInterface) {
             return false;
diff --git a/vendor/symfony/event-dispatcher/README.md b/vendor/symfony/event-dispatcher/README.md
index 185c3fecf8fee623ac3b03005fd32ec302147bd4..e0d38eed017f8f46eac131d33e05ac2bdac4929b 100644
--- a/vendor/symfony/event-dispatcher/README.md
+++ b/vendor/symfony/event-dispatcher/README.md
@@ -8,7 +8,7 @@ them.
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/event_dispatcher/index.html)
+  * [Documentation](https://symfony.com/doc/current/components/event_dispatcher.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/event-dispatcher/Tests/ChildEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/ChildEventDispatcherTest.php
deleted file mode 100644
index 442b88fbb39e1febf029d230f8eace7b991b042b..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/ChildEventDispatcherTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-
-class ChildEventDispatcherTest extends EventDispatcherTest
-{
-    protected function createEventDispatcher()
-    {
-        return new ChildEventDispatcher();
-    }
-}
-
-class ChildEventDispatcher extends EventDispatcher
-{
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
deleted file mode 100644
index ea476eee04c8e3c27810b1fb808f9640592713f0..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
+++ /dev/null
@@ -1,319 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-class TraceableEventDispatcherTest extends TestCase
-{
-    public function testAddRemoveListener()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', $listener = function () {});
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertCount(1, $listeners);
-        $this->assertSame($listener, $listeners[0]);
-
-        $tdispatcher->removeListener('foo', $listener);
-        $this->assertCount(0, $dispatcher->getListeners('foo'));
-    }
-
-    public function testGetListeners()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', $listener = function () {});
-        $this->assertSame($dispatcher->getListeners('foo'), $tdispatcher->getListeners('foo'));
-    }
-
-    public function testHasListeners()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $this->assertFalse($dispatcher->hasListeners('foo'));
-        $this->assertFalse($tdispatcher->hasListeners('foo'));
-
-        $tdispatcher->addListener('foo', $listener = function () {});
-        $this->assertTrue($dispatcher->hasListeners('foo'));
-        $this->assertTrue($tdispatcher->hasListeners('foo'));
-    }
-
-    public function testGetListenerPriority()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', function () {}, 123);
-
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertSame(123, $tdispatcher->getListenerPriority('foo', $listeners[0]));
-
-        // Verify that priority is preserved when listener is removed and re-added
-        // in preProcess() and postProcess().
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertSame(123, $tdispatcher->getListenerPriority('foo', $listeners[0]));
-    }
-
-    public function testGetListenerPriorityWhileDispatching()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $priorityWhileDispatching = null;
-
-        $listener = function () use ($tdispatcher, &$priorityWhileDispatching, &$listener) {
-            $priorityWhileDispatching = $tdispatcher->getListenerPriority('bar', $listener);
-        };
-
-        $tdispatcher->addListener('bar', $listener, 5);
-        $tdispatcher->dispatch(new Event(), 'bar');
-        $this->assertSame(5, $priorityWhileDispatching);
-    }
-
-    public function testAddRemoveSubscriber()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $subscriber = new EventSubscriber();
-
-        $tdispatcher->addSubscriber($subscriber);
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertCount(1, $listeners);
-        $this->assertSame([$subscriber, 'call'], $listeners[0]);
-
-        $tdispatcher->removeSubscriber($subscriber);
-        $this->assertCount(0, $dispatcher->getListeners('foo'));
-    }
-
-    public function testGetCalledListeners()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {}, 5);
-
-        $listeners = $tdispatcher->getNotCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-        unset($listeners[0]['stub']);
-        $this->assertEquals([], $tdispatcher->getCalledListeners());
-        $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-
-        $listeners = $tdispatcher->getCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-        unset($listeners[0]['stub']);
-        $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
-        $this->assertEquals([], $tdispatcher->getNotCalledListeners());
-    }
-
-    public function testClearCalledListeners()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {}, 5);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $tdispatcher->reset();
-
-        $listeners = $tdispatcher->getNotCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-        unset($listeners[0]['stub']);
-        $this->assertEquals([], $tdispatcher->getCalledListeners());
-        $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
-    }
-
-    public function testDispatchContractsEvent()
-    {
-        $expectedEvent = new ContractsEvent();
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function ($event) use ($expectedEvent) {
-            $this->assertSame($event, $expectedEvent);
-        }, 5);
-        $tdispatcher->dispatch($expectedEvent, 'foo');
-
-        $listeners = $tdispatcher->getCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-    }
-
-    public function testDispatchAfterReset()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {}, 5);
-
-        $tdispatcher->reset();
-        $tdispatcher->dispatch(new Event(), 'foo');
-
-        $listeners = $tdispatcher->getCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-    }
-
-    public function testGetCalledListenersNested()
-    {
-        $tdispatcher = null;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('foo', function (Event $event, $eventName, $dispatcher) use (&$tdispatcher) {
-            $tdispatcher = $dispatcher;
-            $dispatcher->dispatch(new Event(), 'bar');
-        });
-        $dispatcher->addListener('bar', function (Event $event) {});
-        $dispatcher->dispatch(new Event(), 'foo');
-        $this->assertSame($dispatcher, $tdispatcher);
-        $this->assertCount(2, $dispatcher->getCalledListeners());
-    }
-
-    public function testItReturnsNoOrphanedEventsWhenCreated()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertEmpty($events);
-    }
-
-    public function testItReturnsOrphanedEventsAfterDispatch()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertCount(1, $events);
-        $this->assertEquals(['foo'], $events);
-    }
-
-    public function testItDoesNotReturnHandledEvents()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {});
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertEmpty($events);
-    }
-
-    public function testLogger()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
-        $tdispatcher->addListener('foo', $listener1 = function () {});
-        $tdispatcher->addListener('foo', $listener2 = function () {});
-
-        $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
-        $logger->expects($this->at(1))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-    }
-
-    public function testLoggerWithStoppedEvent()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
-        $tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); });
-        $tdispatcher->addListener('foo', $listener2 = function () {});
-
-        $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
-        $logger->expects($this->at(1))->method('debug')->with('Listener "{listener}" stopped propagation of the event "{event}".', ['event' => 'foo', 'listener' => 'closure']);
-        $logger->expects($this->at(2))->method('debug')->with('Listener "{listener}" was not called for event "{event}".', ['event' => 'foo', 'listener' => 'closure']);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-    }
-
-    public function testDispatchCallListeners()
-    {
-        $called = [];
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-        $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo1'; }, 10);
-        $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo2'; }, 20);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertSame(['foo2', 'foo1'], $called);
-    }
-
-    public function testDispatchNested()
-    {
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $loop = 1;
-        $dispatchedEvents = 0;
-        $dispatcher->addListener('foo', $listener1 = function () use ($dispatcher, &$loop) {
-            ++$loop;
-            if (2 == $loop) {
-                $dispatcher->dispatch(new Event(), 'foo');
-            }
-        });
-        $dispatcher->addListener('foo', function () use (&$dispatchedEvents) {
-            ++$dispatchedEvents;
-        });
-
-        $dispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertSame(2, $dispatchedEvents);
-    }
-
-    public function testDispatchReusedEventNested()
-    {
-        $nestedCall = false;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('foo', function (Event $e) use ($dispatcher) {
-            $dispatcher->dispatch(new Event(), 'bar', $e);
-        });
-        $dispatcher->addListener('bar', function (Event $e) use (&$nestedCall) {
-            $nestedCall = true;
-        });
-
-        $this->assertFalse($nestedCall);
-        $dispatcher->dispatch(new Event(), 'foo');
-        $this->assertTrue($nestedCall);
-    }
-
-    public function testListenerCanRemoveItselfWhenExecuted()
-    {
-        $eventDispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $listener1 = function ($event, $eventName, EventDispatcherInterface $dispatcher) use (&$listener1) {
-            $dispatcher->removeListener('foo', $listener1);
-        };
-        $eventDispatcher->addListener('foo', $listener1);
-        $eventDispatcher->addListener('foo', function () {});
-        $eventDispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertCount(1, $eventDispatcher->getListeners('foo'), 'expected listener1 to be removed');
-    }
-
-    public function testClearOrphanedEvents()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertCount(1, $events);
-        $tdispatcher->reset();
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertCount(0, $events);
-    }
-}
-
-class EventSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return ['foo' => 'call'];
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/Debug/WrappedListenerTest.php b/vendor/symfony/event-dispatcher/Tests/Debug/WrappedListenerTest.php
deleted file mode 100644
index 75e90120736ec88192cff59162473eb79ea428ce..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/Debug/WrappedListenerTest.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Debug\WrappedListener;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class WrappedListenerTest extends TestCase
-{
-    /**
-     * @dataProvider provideListenersToDescribe
-     */
-    public function testListenerDescription($listener, $expected)
-    {
-        $wrappedListener = new WrappedListener($listener, null, $this->getMockBuilder(Stopwatch::class)->getMock(), $this->getMockBuilder(EventDispatcherInterface::class)->getMock());
-
-        $this->assertStringMatchesFormat($expected, $wrappedListener->getPretty());
-    }
-
-    public function provideListenersToDescribe()
-    {
-        return [
-            [new FooListener(), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::__invoke'],
-            [[new FooListener(), 'listen'], 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listen'],
-            [['Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'listenStatic'], 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listenStatic'],
-            [['Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'invalidMethod'], 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::invalidMethod'],
-            ['var_dump', 'var_dump'],
-            [function () {}, 'closure'],
-            [\Closure::fromCallable([new FooListener(), 'listen']), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listen'],
-            [\Closure::fromCallable(['Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'listenStatic']), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listenStatic'],
-            [\Closure::fromCallable(function () {}), 'closure'],
-        ];
-    }
-}
-
-class FooListener
-{
-    public function listen()
-    {
-    }
-
-    public function __invoke()
-    {
-    }
-
-    public static function listenStatic()
-    {
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php b/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
deleted file mode 100644
index 780f7087f44079fec549c4e793d76bc9ee5e0e7f..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
+++ /dev/null
@@ -1,258 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-class RegisterListenersPassTest extends TestCase
-{
-    /**
-     * Tests that event subscribers not implementing EventSubscriberInterface
-     * trigger an exception.
-     */
-    public function testEventSubscriberWithoutInterface()
-    {
-        $this->expectException('InvalidArgumentException');
-        $builder = new ContainerBuilder();
-        $builder->register('event_dispatcher');
-        $builder->register('my_event_subscriber', 'stdClass')
-            ->addTag('kernel.event_subscriber');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-    }
-
-    public function testValidEventSubscriber()
-    {
-        $builder = new ContainerBuilder();
-        $eventDispatcherDefinition = $builder->register('event_dispatcher');
-        $builder->register('my_event_subscriber', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService')
-            ->addTag('kernel.event_subscriber');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'event',
-                    [new ServiceClosureArgument(new Reference('my_event_subscriber')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $eventDispatcherDefinition->getMethodCalls());
-    }
-
-    public function testAliasedEventSubscriber(): void
-    {
-        $builder = new ContainerBuilder();
-        $builder->setParameter('event_dispatcher.event_aliases', [AliasedEvent::class => 'aliased_event']);
-        $builder->register('event_dispatcher');
-        $builder->register('my_event_subscriber', AliasedSubscriber::class)
-            ->addTag('kernel.event_subscriber');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'aliased_event',
-                    [new ServiceClosureArgument(new Reference('my_event_subscriber')), 'onAliasedEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $builder->getDefinition('event_dispatcher')->getMethodCalls());
-    }
-
-    public function testAbstractEventListener()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The service "foo" tagged "kernel.event_listener" must not be abstract.');
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_listener', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    public function testAbstractEventSubscriber()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The service "foo" tagged "kernel.event_subscriber" must not be abstract.');
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    public function testEventSubscriberResolvableClassName()
-    {
-        $container = new ContainerBuilder();
-
-        $container->setParameter('subscriber.class', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService');
-        $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-
-        $definition = $container->getDefinition('event_dispatcher');
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'event',
-                    [new ServiceClosureArgument(new Reference('foo')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $definition->getMethodCalls());
-    }
-
-    public function testHotPathEvents()
-    {
-        $container = new ContainerBuilder();
-
-        $container->register('foo', SubscriberService::class)->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        (new RegisterListenersPass())->setHotPathEvents(['event'])->process($container);
-
-        $this->assertTrue($container->getDefinition('foo')->hasTag('container.hot_path'));
-    }
-
-    public function testEventSubscriberUnresolvableClassName()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('You have requested a non-existent parameter "subscriber.class"');
-        $container = new ContainerBuilder();
-        $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    public function testInvokableEventListener()
-    {
-        $container = new ContainerBuilder();
-        $container->register('foo', \stdClass::class)->addTag('kernel.event_listener', ['event' => 'foo.bar']);
-        $container->register('bar', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => 'foo.bar']);
-        $container->register('baz', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => 'event']);
-        $container->register('event_dispatcher', \stdClass::class);
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-
-        $definition = $container->getDefinition('event_dispatcher');
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'foo.bar',
-                    [new ServiceClosureArgument(new Reference('foo')), 'onFooBar'],
-                    0,
-                ],
-            ],
-            [
-                'addListener',
-                [
-                    'foo.bar',
-                    [new ServiceClosureArgument(new Reference('bar')), '__invoke'],
-                    0,
-                ],
-            ],
-            [
-                'addListener',
-                [
-                    'event',
-                    [new ServiceClosureArgument(new Reference('baz')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $definition->getMethodCalls());
-    }
-
-    public function testAliasedEventListener(): void
-    {
-        $container = new ContainerBuilder();
-        $container->setParameter('event_dispatcher.event_aliases', [AliasedEvent::class => 'aliased_event']);
-        $container->register('foo', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => AliasedEvent::class, 'method' => 'onEvent']);
-        $container->register('event_dispatcher');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-
-        $definition = $container->getDefinition('event_dispatcher');
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'aliased_event',
-                    [new ServiceClosureArgument(new Reference('foo')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $definition->getMethodCalls());
-    }
-}
-
-class SubscriberService implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return [
-            'event' => 'onEvent',
-        ];
-    }
-}
-
-class InvokableListenerService
-{
-    public function __invoke()
-    {
-    }
-
-    public function onEvent()
-    {
-    }
-}
-
-final class AliasedSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents(): array
-    {
-        return [
-            AliasedEvent::class => 'onAliasedEvent',
-        ];
-    }
-}
-
-final class AliasedEvent
-{
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
deleted file mode 100644
index 83d10a89be7445e5e7f3e3107a4f78d1c54a16f5..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
+++ /dev/null
@@ -1,511 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-class EventDispatcherTest extends TestCase
-{
-    /* Some pseudo events */
-    const preFoo = 'pre.foo';
-    const postFoo = 'post.foo';
-    const preBar = 'pre.bar';
-    const postBar = 'post.bar';
-
-    /**
-     * @var EventDispatcher
-     */
-    private $dispatcher;
-
-    private $listener;
-
-    protected function setUp(): void
-    {
-        $this->dispatcher = $this->createEventDispatcher();
-        $this->listener = new TestEventListener();
-    }
-
-    protected function tearDown(): void
-    {
-        $this->dispatcher = null;
-        $this->listener = null;
-    }
-
-    protected function createEventDispatcher()
-    {
-        return new EventDispatcher();
-    }
-
-    public function testInitialState()
-    {
-        $this->assertEquals([], $this->dispatcher->getListeners());
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertFalse($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testAddListener()
-    {
-        $this->dispatcher->addListener('pre.foo', [$this->listener, 'preFoo']);
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo']);
-        $this->assertTrue($this->dispatcher->hasListeners());
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-        $this->assertCount(1, $this->dispatcher->getListeners(self::preFoo));
-        $this->assertCount(1, $this->dispatcher->getListeners(self::postFoo));
-        $this->assertCount(2, $this->dispatcher->getListeners());
-    }
-
-    public function testGetListenersSortsByPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-        $listener3 = new TestEventListener();
-        $listener1->name = '1';
-        $listener2->name = '2';
-        $listener3->name = '3';
-
-        $this->dispatcher->addListener('pre.foo', [$listener1, 'preFoo'], -10);
-        $this->dispatcher->addListener('pre.foo', [$listener2, 'preFoo'], 10);
-        $this->dispatcher->addListener('pre.foo', [$listener3, 'preFoo']);
-
-        $expected = [
-            [$listener2, 'preFoo'],
-            [$listener3, 'preFoo'],
-            [$listener1, 'preFoo'],
-        ];
-
-        $this->assertSame($expected, $this->dispatcher->getListeners('pre.foo'));
-    }
-
-    public function testGetAllListenersSortsByPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-        $listener3 = new TestEventListener();
-        $listener4 = new TestEventListener();
-        $listener5 = new TestEventListener();
-        $listener6 = new TestEventListener();
-
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-        $this->dispatcher->addListener('pre.foo', $listener3, 10);
-        $this->dispatcher->addListener('post.foo', $listener4, -10);
-        $this->dispatcher->addListener('post.foo', $listener5);
-        $this->dispatcher->addListener('post.foo', $listener6, 10);
-
-        $expected = [
-            'pre.foo' => [$listener3, $listener2, $listener1],
-            'post.foo' => [$listener6, $listener5, $listener4],
-        ];
-
-        $this->assertSame($expected, $this->dispatcher->getListeners());
-    }
-
-    public function testGetListenerPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-
-        $this->assertSame(-10, $this->dispatcher->getListenerPriority('pre.foo', $listener1));
-        $this->assertSame(0, $this->dispatcher->getListenerPriority('pre.foo', $listener2));
-        $this->assertNull($this->dispatcher->getListenerPriority('pre.bar', $listener2));
-        $this->assertNull($this->dispatcher->getListenerPriority('pre.foo', function () {}));
-    }
-
-    public function testDispatch()
-    {
-        $this->dispatcher->addListener('pre.foo', [$this->listener, 'preFoo']);
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo']);
-        $this->dispatcher->dispatch(new Event(), self::preFoo);
-        $this->assertTrue($this->listener->preFooInvoked);
-        $this->assertFalse($this->listener->postFooInvoked);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), 'noevent'));
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), self::preFoo));
-        $event = new Event();
-        $return = $this->dispatcher->dispatch($event, self::preFoo);
-        $this->assertSame($event, $return);
-    }
-
-    public function testDispatchContractsEvent()
-    {
-        $this->dispatcher->addListener('pre.foo', [$this->listener, 'preFoo']);
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo']);
-        $this->dispatcher->dispatch(new ContractsEvent(), self::preFoo);
-        $this->assertTrue($this->listener->preFooInvoked);
-        $this->assertFalse($this->listener->postFooInvoked);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), 'noevent'));
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), self::preFoo));
-        $event = new Event();
-        $return = $this->dispatcher->dispatch($event, self::preFoo);
-        $this->assertSame($event, $return);
-    }
-
-    public function testDispatchForClosure()
-    {
-        $invoked = 0;
-        $listener = function () use (&$invoked) {
-            ++$invoked;
-        };
-        $this->dispatcher->addListener('pre.foo', $listener);
-        $this->dispatcher->addListener('post.foo', $listener);
-        $this->dispatcher->dispatch(new Event(), self::preFoo);
-        $this->assertEquals(1, $invoked);
-    }
-
-    public function testStopEventPropagation()
-    {
-        $otherListener = new TestEventListener();
-
-        // postFoo() stops the propagation, so only one listener should
-        // be executed
-        // Manually set priority to enforce $this->listener to be called first
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo'], 10);
-        $this->dispatcher->addListener('post.foo', [$otherListener, 'postFoo']);
-        $this->dispatcher->dispatch(new Event(), self::postFoo);
-        $this->assertTrue($this->listener->postFooInvoked);
-        $this->assertFalse($otherListener->postFooInvoked);
-    }
-
-    public function testDispatchByPriority()
-    {
-        $invoked = [];
-        $listener1 = function () use (&$invoked) {
-            $invoked[] = '1';
-        };
-        $listener2 = function () use (&$invoked) {
-            $invoked[] = '2';
-        };
-        $listener3 = function () use (&$invoked) {
-            $invoked[] = '3';
-        };
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-        $this->dispatcher->addListener('pre.foo', $listener3, 10);
-        $this->dispatcher->dispatch(new Event(), self::preFoo);
-        $this->assertEquals(['3', '2', '1'], $invoked);
-    }
-
-    public function testRemoveListener()
-    {
-        $this->dispatcher->addListener('pre.bar', $this->listener);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preBar));
-        $this->dispatcher->removeListener('pre.bar', $this->listener);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preBar));
-        $this->dispatcher->removeListener('notExists', $this->listener);
-    }
-
-    public function testAddSubscriber()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testAddSubscriberWithPriorities()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $eventSubscriber = new TestEventSubscriberWithPriorities();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $listeners = $this->dispatcher->getListeners('pre.foo');
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $listeners);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Tests\TestEventSubscriberWithPriorities', $listeners[0][0]);
-    }
-
-    public function testAddSubscriberWithMultipleListeners()
-    {
-        $eventSubscriber = new TestEventSubscriberWithMultipleListeners();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $listeners = $this->dispatcher->getListeners('pre.foo');
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $listeners);
-        $this->assertEquals('preFoo2', $listeners[0][1]);
-    }
-
-    public function testRemoveSubscriber()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertFalse($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testRemoveSubscriberWithPriorities()
-    {
-        $eventSubscriber = new TestEventSubscriberWithPriorities();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-    }
-
-    public function testRemoveSubscriberWithMultipleListeners()
-    {
-        $eventSubscriber = new TestEventSubscriberWithMultipleListeners();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $this->dispatcher->getListeners(self::preFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-    }
-
-    public function testEventReceivesTheDispatcherInstanceAsArgument()
-    {
-        $listener = new TestWithDispatcher();
-        $this->dispatcher->addListener('test', [$listener, 'foo']);
-        $this->assertNull($listener->name);
-        $this->assertNull($listener->dispatcher);
-        $this->dispatcher->dispatch(new Event(), 'test');
-        $this->assertEquals('test', $listener->name);
-        $this->assertSame($this->dispatcher, $listener->dispatcher);
-    }
-
-    /**
-     * @see https://bugs.php.net/62976
-     *
-     * This bug affects:
-     *  - The PHP 5.3 branch for versions < 5.3.18
-     *  - The PHP 5.4 branch for versions < 5.4.8
-     *  - The PHP 5.5 branch is not affected
-     */
-    public function testWorkaroundForPhpBug62976()
-    {
-        $dispatcher = $this->createEventDispatcher();
-        $dispatcher->addListener('bug.62976', new CallableClass());
-        $dispatcher->removeListener('bug.62976', function () {});
-        $this->assertTrue($dispatcher->hasListeners('bug.62976'));
-    }
-
-    public function testHasListenersWhenAddedCallbackListenerIsRemoved()
-    {
-        $listener = function () {};
-        $this->dispatcher->addListener('foo', $listener);
-        $this->dispatcher->removeListener('foo', $listener);
-        $this->assertFalse($this->dispatcher->hasListeners());
-    }
-
-    public function testGetListenersWhenAddedCallbackListenerIsRemoved()
-    {
-        $listener = function () {};
-        $this->dispatcher->addListener('foo', $listener);
-        $this->dispatcher->removeListener('foo', $listener);
-        $this->assertSame([], $this->dispatcher->getListeners());
-    }
-
-    public function testHasListenersWithoutEventsReturnsFalseAfterHasListenersWithEventHasBeenCalled()
-    {
-        $this->assertFalse($this->dispatcher->hasListeners('foo'));
-        $this->assertFalse($this->dispatcher->hasListeners());
-    }
-
-    public function testHasListenersIsLazy()
-    {
-        $called = 0;
-        $listener = [function () use (&$called) { ++$called; }, 'onFoo'];
-        $this->dispatcher->addListener('foo', $listener);
-        $this->assertTrue($this->dispatcher->hasListeners());
-        $this->assertTrue($this->dispatcher->hasListeners('foo'));
-        $this->assertSame(0, $called);
-    }
-
-    public function testDispatchLazyListener()
-    {
-        $called = 0;
-        $factory = function () use (&$called) {
-            ++$called;
-
-            return new TestWithDispatcher();
-        };
-        $this->dispatcher->addListener('foo', [$factory, 'foo']);
-        $this->assertSame(0, $called);
-        $this->dispatcher->dispatch(new Event(), 'foo');
-        $this->dispatcher->dispatch(new Event(), 'foo');
-        $this->assertSame(1, $called);
-    }
-
-    public function testRemoveFindsLazyListeners()
-    {
-        $test = new TestWithDispatcher();
-        $factory = function () use ($test) { return $test; };
-
-        $this->dispatcher->addListener('foo', [$factory, 'foo']);
-        $this->assertTrue($this->dispatcher->hasListeners('foo'));
-        $this->dispatcher->removeListener('foo', [$test, 'foo']);
-        $this->assertFalse($this->dispatcher->hasListeners('foo'));
-
-        $this->dispatcher->addListener('foo', [$test, 'foo']);
-        $this->assertTrue($this->dispatcher->hasListeners('foo'));
-        $this->dispatcher->removeListener('foo', [$factory, 'foo']);
-        $this->assertFalse($this->dispatcher->hasListeners('foo'));
-    }
-
-    public function testPriorityFindsLazyListeners()
-    {
-        $test = new TestWithDispatcher();
-        $factory = function () use ($test) { return $test; };
-
-        $this->dispatcher->addListener('foo', [$factory, 'foo'], 3);
-        $this->assertSame(3, $this->dispatcher->getListenerPriority('foo', [$test, 'foo']));
-        $this->dispatcher->removeListener('foo', [$factory, 'foo']);
-
-        $this->dispatcher->addListener('foo', [$test, 'foo'], 5);
-        $this->assertSame(5, $this->dispatcher->getListenerPriority('foo', [$factory, 'foo']));
-    }
-
-    public function testGetLazyListeners()
-    {
-        $test = new TestWithDispatcher();
-        $factory = function () use ($test) { return $test; };
-
-        $this->dispatcher->addListener('foo', [$factory, 'foo'], 3);
-        $this->assertSame([[$test, 'foo']], $this->dispatcher->getListeners('foo'));
-
-        $this->dispatcher->removeListener('foo', [$test, 'foo']);
-        $this->dispatcher->addListener('bar', [$factory, 'foo'], 3);
-        $this->assertSame(['bar' => [[$test, 'foo']]], $this->dispatcher->getListeners());
-    }
-
-    public function testMutatingWhilePropagationIsStopped()
-    {
-        $testLoaded = false;
-        $test = new TestEventListener();
-        $this->dispatcher->addListener('foo', [$test, 'postFoo']);
-        $this->dispatcher->addListener('foo', [function () use ($test, &$testLoaded) {
-            $testLoaded = true;
-
-            return $test;
-        }, 'preFoo']);
-
-        $this->dispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertTrue($test->postFooInvoked);
-        $this->assertFalse($test->preFooInvoked);
-
-        $this->assertsame(0, $this->dispatcher->getListenerPriority('foo', [$test, 'preFoo']));
-
-        $test->preFoo(new Event());
-        $this->dispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertTrue($testLoaded);
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling the "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithoutEvent()
-    {
-        $this->dispatcher->dispatch('foo');
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling the "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithEvent()
-    {
-        $this->dispatcher->dispatch('foo', new Event());
-    }
-
-    public function testLegacySignatureWithNewEventObject()
-    {
-        $this->expectException('TypeError');
-        $this->expectExceptionMessage('Argument 1 passed to "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" must be an object, string given.');
-        $this->dispatcher->dispatch('foo', new ContractsEvent());
-    }
-}
-
-class CallableClass
-{
-    public function __invoke()
-    {
-    }
-}
-
-class TestEventListener
-{
-    public $preFooInvoked = false;
-    public $postFooInvoked = false;
-
-    /* Listener methods */
-
-    public function preFoo($e)
-    {
-        $this->preFooInvoked = true;
-    }
-
-    public function postFoo($e)
-    {
-        $this->postFooInvoked = true;
-
-        if (!$this->preFooInvoked) {
-            $e->stopPropagation();
-        }
-    }
-}
-
-class TestWithDispatcher
-{
-    public $name;
-    public $dispatcher;
-
-    public function foo($e, $name, $dispatcher)
-    {
-        $this->name = $name;
-        $this->dispatcher = $dispatcher;
-    }
-}
-
-class TestEventSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return ['pre.foo' => 'preFoo', 'post.foo' => 'postFoo'];
-    }
-}
-
-class TestEventSubscriberWithPriorities implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return [
-            'pre.foo' => ['preFoo', 10],
-            'post.foo' => ['postFoo'],
-        ];
-    }
-}
-
-class TestEventSubscriberWithMultipleListeners implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return ['pre.foo' => [
-            ['preFoo1'],
-            ['preFoo2', 10],
-        ]];
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/EventTest.php b/vendor/symfony/event-dispatcher/Tests/EventTest.php
deleted file mode 100644
index 34ed3ba70ec4afd3ff4335e5d33667f52180fe99..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/EventTest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-
-/**
- * @group legacy
- */
-class EventTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\EventDispatcher\Event
-     */
-    protected $event;
-
-    /**
-     * Sets up the fixture, for example, opens a network connection.
-     * This method is called before a test is executed.
-     */
-    protected function setUp(): void
-    {
-        $this->event = new Event();
-    }
-
-    /**
-     * Tears down the fixture, for example, closes a network connection.
-     * This method is called after a test is executed.
-     */
-    protected function tearDown(): void
-    {
-        $this->event = null;
-    }
-
-    public function testIsPropagationStopped()
-    {
-        $this->assertFalse($this->event->isPropagationStopped());
-    }
-
-    public function testStopPropagationAndIsPropagationStopped()
-    {
-        $this->event->stopPropagation();
-        $this->assertTrue($this->event->isPropagationStopped());
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php b/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php
deleted file mode 100644
index 484e1a5f3e11a0021a3d7dff2f5e845db467afd1..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\GenericEvent;
-
-/**
- * Test class for Event.
- */
-class GenericEventTest extends TestCase
-{
-    /**
-     * @var GenericEvent
-     */
-    private $event;
-
-    private $subject;
-
-    /**
-     * Prepares the environment before running a test.
-     */
-    protected function setUp(): void
-    {
-        $this->subject = new \stdClass();
-        $this->event = new GenericEvent($this->subject, ['name' => 'Event']);
-    }
-
-    /**
-     * Cleans up the environment after running a test.
-     */
-    protected function tearDown(): void
-    {
-        $this->subject = null;
-        $this->event = null;
-    }
-
-    public function testConstruct()
-    {
-        $this->assertEquals($this->event, new GenericEvent($this->subject, ['name' => 'Event']));
-    }
-
-    /**
-     * Tests Event->getArgs().
-     */
-    public function testGetArguments()
-    {
-        // test getting all
-        $this->assertSame(['name' => 'Event'], $this->event->getArguments());
-    }
-
-    public function testSetArguments()
-    {
-        $result = $this->event->setArguments(['foo' => 'bar']);
-        $this->assertSame(['foo' => 'bar'], $this->event->getArguments());
-        $this->assertSame($this->event, $result);
-    }
-
-    public function testSetArgument()
-    {
-        $result = $this->event->setArgument('foo2', 'bar2');
-        $this->assertSame(['name' => 'Event', 'foo2' => 'bar2'], $this->event->getArguments());
-        $this->assertEquals($this->event, $result);
-    }
-
-    public function testGetArgument()
-    {
-        // test getting key
-        $this->assertEquals('Event', $this->event->getArgument('name'));
-    }
-
-    public function testGetArgException()
-    {
-        $this->expectException('\InvalidArgumentException');
-        $this->event->getArgument('nameNotExist');
-    }
-
-    public function testOffsetGet()
-    {
-        // test getting key
-        $this->assertEquals('Event', $this->event['name']);
-
-        // test getting invalid arg
-        $this->expectException('InvalidArgumentException');
-        $this->assertFalse($this->event['nameNotExist']);
-    }
-
-    public function testOffsetSet()
-    {
-        $this->event['foo2'] = 'bar2';
-        $this->assertSame(['name' => 'Event', 'foo2' => 'bar2'], $this->event->getArguments());
-    }
-
-    public function testOffsetUnset()
-    {
-        unset($this->event['name']);
-        $this->assertSame([], $this->event->getArguments());
-    }
-
-    public function testOffsetIsset()
-    {
-        $this->assertArrayHasKey('name', $this->event);
-        $this->assertArrayNotHasKey('nameNotExist', $this->event);
-    }
-
-    public function testHasArgument()
-    {
-        $this->assertTrue($this->event->hasArgument('name'));
-        $this->assertFalse($this->event->hasArgument('nameNotExist'));
-    }
-
-    public function testGetSubject()
-    {
-        $this->assertSame($this->subject, $this->event->getSubject());
-    }
-
-    public function testHasIterator()
-    {
-        $data = [];
-        foreach ($this->event as $key => $value) {
-            $data[$key] = $value;
-        }
-        $this->assertEquals(['name' => 'Event'], $data);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php
deleted file mode 100644
index edce6f199d30d63bcf12223d0b3f1b621f7795a3..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\MockObject\MockObject;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\ImmutableEventDispatcher;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ImmutableEventDispatcherTest extends TestCase
-{
-    /**
-     * @var MockObject
-     */
-    private $innerDispatcher;
-
-    /**
-     * @var ImmutableEventDispatcher
-     */
-    private $dispatcher;
-
-    protected function setUp(): void
-    {
-        $this->innerDispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcherInterface')->getMock();
-        $this->dispatcher = new ImmutableEventDispatcher($this->innerDispatcher);
-    }
-
-    public function testDispatchDelegates()
-    {
-        $event = new Event();
-        $resultEvent = new Event();
-
-        $this->innerDispatcher->expects($this->once())
-            ->method('dispatch')
-            ->with($event, 'event')
-            ->willReturn($resultEvent);
-
-        $this->assertSame($resultEvent, $this->dispatcher->dispatch('event', $event));
-    }
-
-    public function testGetListenersDelegates()
-    {
-        $this->innerDispatcher->expects($this->once())
-            ->method('getListeners')
-            ->with('event')
-            ->willReturn(['result']);
-
-        $this->assertSame(['result'], $this->dispatcher->getListeners('event'));
-    }
-
-    public function testHasListenersDelegates()
-    {
-        $this->innerDispatcher->expects($this->once())
-            ->method('hasListeners')
-            ->with('event')
-            ->willReturn(true);
-
-        $this->assertTrue($this->dispatcher->hasListeners('event'));
-    }
-
-    public function testAddListenerDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $this->dispatcher->addListener('event', function () { return 'foo'; });
-    }
-
-    public function testAddSubscriberDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $subscriber = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventSubscriberInterface')->getMock();
-
-        $this->dispatcher->addSubscriber($subscriber);
-    }
-
-    public function testRemoveListenerDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $this->dispatcher->removeListener('event', function () { return 'foo'; });
-    }
-
-    public function testRemoveSubscriberDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $subscriber = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventSubscriberInterface')->getMock();
-
-        $this->dispatcher->removeSubscriber($subscriber);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php
deleted file mode 100644
index 30bd0c33463bd85f9d3cdbd00e7cde157005e506..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-/**
- * @group legacy
- */
-class LegacyEventDispatcherTest extends EventDispatcherTest
-{
-    /**
-     * @group legacy
-     * @expectedDeprecation The signature of the "Symfony\Component\EventDispatcher\Tests\TestLegacyEventDispatcher::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.
-     * @expectedDeprecation Calling the "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithoutEvent()
-    {
-        $this->createEventDispatcher()->dispatch('foo');
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation The signature of the "Symfony\Component\EventDispatcher\Tests\TestLegacyEventDispatcher::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.
-     * @expectedDeprecation Calling the "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithEvent()
-    {
-        $this->createEventDispatcher()->dispatch('foo', new Event());
-    }
-
-    public function testLegacySignatureWithNewEventObject()
-    {
-        $this->expectException('TypeError');
-        $this->expectExceptionMessage('Argument 1 passed to "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" must be an object, string given.');
-        $this->createEventDispatcher()->dispatch('foo', new ContractsEvent());
-    }
-
-    protected function createEventDispatcher()
-    {
-        return LegacyEventDispatcherProxy::decorate(new TestLegacyEventDispatcher());
-    }
-}
-
-class TestLegacyEventDispatcher extends EventDispatcher
-{
-    public function dispatch($eventName, Event $event = null)
-    {
-        return parent::dispatch($event, $eventName);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/composer.json b/vendor/symfony/event-dispatcher/composer.json
index 8449c4785d93a59079e5601dc0201fa5bc6b4931..5bb0f7d4e68228f33f8ee5e652391f78149ae462 100644
--- a/vendor/symfony/event-dispatcher/composer.json
+++ b/vendor/symfony/event-dispatcher/composer.json
@@ -16,16 +16,17 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
+        "php": ">=7.1.3",
         "symfony/event-dispatcher-contracts": "^1.1"
     },
     "require-dev": {
-        "symfony/dependency-injection": "~3.4|~4.0",
-        "symfony/expression-language": "~3.4|~4.0",
-        "symfony/config": "~3.4|~4.0",
-        "symfony/http-foundation": "^3.4|^4.0",
-        "symfony/service-contracts": "^1.1",
-        "symfony/stopwatch": "~3.4|~4.0",
+        "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+        "symfony/expression-language": "^3.4|^4.0|^5.0",
+        "symfony/config": "^3.4|^4.0|^5.0",
+        "symfony/error-handler": "~3.4|~4.4",
+        "symfony/http-foundation": "^3.4|^4.0|^5.0",
+        "symfony/service-contracts": "^1.1|^2",
+        "symfony/stopwatch": "^3.4|^4.0|^5.0",
         "psr/log": "~1.0"
     },
     "conflict": {
@@ -45,10 +46,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/event-dispatcher/phpunit.xml.dist b/vendor/symfony/event-dispatcher/phpunit.xml.dist
deleted file mode 100644
index f2eb1692cdbbab8633d66aa8b109e017821ed3d8..0000000000000000000000000000000000000000
--- a/vendor/symfony/event-dispatcher/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony EventDispatcher Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/http-foundation/.gitignore b/vendor/symfony/http-foundation/.gitignore
deleted file mode 100644
index c49a5d8df5c6548379f00c77fe572a7217bce218..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/http-foundation/AcceptHeader.php b/vendor/symfony/http-foundation/AcceptHeader.php
index 3f5fbb8f3b5cd510825888f55a39a8f297839f0e..c3c8d0c3560e19708e7a8c1640a941ca7632c3c1 100644
--- a/vendor/symfony/http-foundation/AcceptHeader.php
+++ b/vendor/symfony/http-foundation/AcceptHeader.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\HttpFoundation;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(AcceptHeaderItem::class);
+
 /**
  * Represents an Accept-* header.
  *
@@ -153,7 +156,7 @@ class AcceptHeader
     /**
      * Sorts items by descending quality.
      */
-    private function sort()
+    private function sort(): void
     {
         if (!$this->sorted) {
             uasort($this->items, function (AcceptHeaderItem $a, AcceptHeaderItem $b) {
diff --git a/vendor/symfony/http-foundation/ApacheRequest.php b/vendor/symfony/http-foundation/ApacheRequest.php
index 4e99186dcd503d9ae5d82e7d34c92a418ed439b3..5d9426879de183ac221a70380469a73dfa0d8517 100644
--- a/vendor/symfony/http-foundation/ApacheRequest.php
+++ b/vendor/symfony/http-foundation/ApacheRequest.php
@@ -11,9 +11,13 @@
 
 namespace Symfony\Component\HttpFoundation;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ApacheRequest::class, Request::class), \E_USER_DEPRECATED);
+
 /**
  * Request represents an HTTP request from an Apache server.
  *
+ * @deprecated since Symfony 4.4. Use the Request class instead.
+ *
  * @author Fabien Potencier <fabien@symfony.com>
  */
 class ApacheRequest extends Request
diff --git a/vendor/symfony/http-foundation/BinaryFileResponse.php b/vendor/symfony/http-foundation/BinaryFileResponse.php
index de3c159b08f4e9dc2f1df032f0b05ef40a88c4a5..07ecb1fc8a749d1abe7dab0d789c2244f8310298 100644
--- a/vendor/symfony/http-foundation/BinaryFileResponse.php
+++ b/vendor/symfony/http-foundation/BinaryFileResponse.php
@@ -204,7 +204,7 @@ class BinaryFileResponse extends Response
 
         if (!$this->headers->has('Accept-Ranges')) {
             // Only accept ranges on safe HTTP methods
-            $this->headers->set('Accept-Ranges', $request->isMethodSafe(false) ? 'bytes' : 'none');
+            $this->headers->set('Accept-Ranges', $request->isMethodSafe() ? 'bytes' : 'none');
         }
 
         if (self::$trustXSendfileTypeHeader && $request->headers->has('X-Sendfile-Type')) {
@@ -217,7 +217,7 @@ class BinaryFileResponse extends Response
             }
             if ('x-accel-redirect' === strtolower($type)) {
                 // Do X-Accel-Mapping substitutions.
-                // @link http://wiki.nginx.org/X-accel#X-Accel-Redirect
+                // @link https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/#x-accel-redirect
                 $parts = HeaderUtils::split($request->headers->get('X-Accel-Mapping', ''), ',=');
                 foreach ($parts as $part) {
                     list($pathPrefix, $location) = $part;
@@ -234,33 +234,36 @@ class BinaryFileResponse extends Response
                 $this->headers->set($type, $path);
                 $this->maxlen = 0;
             }
-        } elseif ($request->headers->has('Range')) {
+        } elseif ($request->headers->has('Range') && $request->isMethod('GET')) {
             // Process the range headers.
             if (!$request->headers->has('If-Range') || $this->hasValidIfRangeHeader($request->headers->get('If-Range'))) {
                 $range = $request->headers->get('Range');
 
-                list($start, $end) = explode('-', substr($range, 6), 2) + [0];
+                if (0 === strpos($range, 'bytes=')) {
+                    list($start, $end) = explode('-', substr($range, 6), 2) + [0];
 
-                $end = ('' === $end) ? $fileSize - 1 : (int) $end;
+                    $end = ('' === $end) ? $fileSize - 1 : (int) $end;
 
-                if ('' === $start) {
-                    $start = $fileSize - $end;
-                    $end = $fileSize - 1;
-                } else {
-                    $start = (int) $start;
-                }
+                    if ('' === $start) {
+                        $start = $fileSize - $end;
+                        $end = $fileSize - 1;
+                    } else {
+                        $start = (int) $start;
+                    }
 
-                if ($start <= $end) {
-                    if ($start < 0 || $end > $fileSize - 1) {
-                        $this->setStatusCode(416);
-                        $this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize));
-                    } elseif (0 !== $start || $end !== $fileSize - 1) {
-                        $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1;
-                        $this->offset = $start;
-
-                        $this->setStatusCode(206);
-                        $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize));
-                        $this->headers->set('Content-Length', $end - $start + 1);
+                    if ($start <= $end) {
+                        $end = min($end, $fileSize - 1);
+                        if ($start < 0 || $start > $end) {
+                            $this->setStatusCode(416);
+                            $this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize));
+                        } elseif ($end - $start < $fileSize - 1) {
+                            $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1;
+                            $this->offset = $start;
+
+                            $this->setStatusCode(206);
+                            $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize));
+                            $this->headers->set('Content-Length', $end - $start + 1);
+                        }
                     }
                 }
             }
@@ -269,7 +272,7 @@ class BinaryFileResponse extends Response
         return $this;
     }
 
-    private function hasValidIfRangeHeader($header)
+    private function hasValidIfRangeHeader(?string $header): bool
     {
         if ($this->getEtag() === $header) {
             return true;
@@ -343,7 +346,7 @@ class BinaryFileResponse extends Response
     }
 
     /**
-     * If this is set to true, the file will be unlinked after the request is send
+     * If this is set to true, the file will be unlinked after the request is sent
      * Note: If the X-Sendfile header is used, the deleteFileAfterSend setting will not be used.
      *
      * @param bool $shouldDelete
diff --git a/vendor/symfony/http-foundation/CHANGELOG.md b/vendor/symfony/http-foundation/CHANGELOG.md
index 1ce01aea240bbbe36eae93cc318d3e980e5c93ab..3fa73a26a907496cdf3103f5d2a11fc4f7783db8 100644
--- a/vendor/symfony/http-foundation/CHANGELOG.md
+++ b/vendor/symfony/http-foundation/CHANGELOG.md
@@ -1,6 +1,21 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * passing arguments to `Request::isMethodSafe()` is deprecated.
+ * `ApacheRequest` is deprecated, use the `Request` class instead.
+ * passing a third argument to `HeaderBag::get()` is deprecated, use method `all()` instead
+ * [BC BREAK] `PdoSessionHandler` with MySQL changed the type of the lifetime column,
+   make sure to run `ALTER TABLE sessions MODIFY sess_lifetime INTEGER UNSIGNED NOT NULL` to
+   update your database.
+ * `PdoSessionHandler` now precalculates the expiry timestamp in the lifetime column,
+    make sure to run `CREATE INDEX EXPIRY ON sessions (sess_lifetime)` to update your database
+    to speed up garbage collection of expired sessions.
+ * added `SessionHandlerFactory` to create session handlers with a DSN
+ * added `IpUtils::anonymize()` to help with GDPR compliance.
+
 4.3.0
 -----
 
diff --git a/vendor/symfony/http-foundation/Cookie.php b/vendor/symfony/http-foundation/Cookie.php
index 1e22c745a03fb63734d7102b3cb15fb7306696ac..70eb5ea8845b5d14dffb5920fdf04019a1a331bd 100644
--- a/vendor/symfony/http-foundation/Cookie.php
+++ b/vendor/symfony/http-foundation/Cookie.php
@@ -94,7 +94,7 @@ class Cookie
     public function __construct(string $name, string $value = null, $expire = 0, ?string $path = '/', string $domain = null, ?bool $secure = false, bool $httpOnly = true, bool $raw = false, string $sameSite = null)
     {
         if (9 > \func_num_args()) {
-            @trigger_error(sprintf('The default value of the "$secure" and "$samesite" arguments of "%s"\'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The default value of the "$secure" and "$samesite" arguments of "%s"\'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         // from PHP source code
diff --git a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php b/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
index c25c3629bb617b8072b2c8dda248069e72ef0f71..136d2a9f51b162edcd4ad7930b9795d2e49bef7e 100644
--- a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
+++ b/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
@@ -18,9 +18,6 @@ namespace Symfony\Component\HttpFoundation\File\Exception;
  */
 class AccessDeniedException extends FileException
 {
-    /**
-     * @param string $path The path to the accessed file
-     */
     public function __construct(string $path)
     {
         parent::__construct(sprintf('The file %s could not be accessed', $path));
diff --git a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php b/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
index 0f1f3f951d806f76d2a5e78e9be94e76ecb70a4e..31bdf68fef7b5229949af260463df7aad620f7c2 100644
--- a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
+++ b/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
@@ -18,9 +18,6 @@ namespace Symfony\Component\HttpFoundation\File\Exception;
  */
 class FileNotFoundException extends FileException
 {
-    /**
-     * @param string $path The path to the file that was not found
-     */
     public function __construct(string $path)
     {
         parent::__construct(sprintf('The file "%s" does not exist', $path));
diff --git a/vendor/symfony/http-foundation/File/File.php b/vendor/symfony/http-foundation/File/File.php
index 396ff3450ed8c84210b8bbf13c972c015effdb79..c72a6d991b04162efda8da6535c67b4ea57a5903 100644
--- a/vendor/symfony/http-foundation/File/File.php
+++ b/vendor/symfony/http-foundation/File/File.php
@@ -91,7 +91,7 @@ class File extends \SplFileInfo
         $renamed = rename($this->getPathname(), $target);
         restore_error_handler();
         if (!$renamed) {
-            throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error)));
+            throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error)));
         }
 
         @chmod($target, 0666 & ~umask());
@@ -99,14 +99,17 @@ class File extends \SplFileInfo
         return $target;
     }
 
+    /**
+     * @return self
+     */
     protected function getTargetFile($directory, $name = null)
     {
         if (!is_dir($directory)) {
             if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) {
-                throw new FileException(sprintf('Unable to create the "%s" directory', $directory));
+                throw new FileException(sprintf('Unable to create the "%s" directory.', $directory));
             }
         } elseif (!is_writable($directory)) {
-            throw new FileException(sprintf('Unable to write in the "%s" directory', $directory));
+            throw new FileException(sprintf('Unable to write in the "%s" directory.', $directory));
         }
 
         $target = rtrim($directory, '/\\').\DIRECTORY_SEPARATOR.(null === $name ? $this->getBasename() : $this->getName($name));
@@ -119,7 +122,7 @@ class File extends \SplFileInfo
      *
      * @param string $name The new file name
      *
-     * @return string containing
+     * @return string
      */
     protected function getName($name)
     {
diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
index 4ac2013305c0e7e4fa0f17df9922e9ea81665c46..f35bb37bf5646fb4b1b81140ba8935b3470c5532 100644
--- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
@@ -13,7 +13,7 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
 
 use Symfony\Component\Mime\MimeTypes;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
 
 /**
  * A singleton mime type to file extension guesser.
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
index 9633f0174ec69b20d0b2a76a39705397ce837bfd..6d2c274a9dd5ba920db12f4c763d08c3843238b5 100644
--- a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
@@ -15,7 +15,7 @@ use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
 use Symfony\Component\Mime\FileBinaryMimeTypeGuesser as NewFileBinaryMimeTypeGuesser;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileBinaryMimeTypeGuesser::class, NewFileBinaryMimeTypeGuesser::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileBinaryMimeTypeGuesser::class, NewFileBinaryMimeTypeGuesser::class), \E_USER_DEPRECATED);
 
 /**
  * Guesses the mime type with the binary "file" (only available on *nix).
@@ -36,7 +36,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
      *
      * @param string $cmd The command to run to get the mime type of a file
      */
-    public function __construct(string $cmd = 'file -b --mime %s 2>/dev/null')
+    public function __construct(string $cmd = 'file -b --mime -- %s 2>/dev/null')
     {
         $this->cmd = $cmd;
     }
@@ -85,7 +85,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
         ob_start();
 
         // need to use --mime instead of -i. see #6641
-        passthru(sprintf($this->cmd, escapeshellarg($path)), $return);
+        passthru(sprintf($this->cmd, escapeshellarg((0 === strpos($path, '-') ? './' : '').$path)), $return);
         if ($return > 0) {
             ob_end_clean();
 
@@ -94,7 +94,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
 
         $type = trim(ob_get_clean());
 
-        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\.]+)#i', $type, $match)) {
+        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\+\.]+)#i', $type, $match)) {
             // it's not a type, but an error message
             return null;
         }
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
index 70a01d7aecd0dd43c38c09b41cd8a5d26b448900..658ad607ee87abf82452af6fa3826cee8a01c422 100644
--- a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
@@ -15,7 +15,7 @@ use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
 use Symfony\Component\Mime\FileinfoMimeTypeGuesser as NewFileinfoMimeTypeGuesser;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileinfoMimeTypeGuesser::class, NewFileinfoMimeTypeGuesser::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileinfoMimeTypeGuesser::class, NewFileinfoMimeTypeGuesser::class), \E_USER_DEPRECATED);
 
 /**
  * Guesses the mime type using the PECL extension FileInfo.
@@ -65,10 +65,16 @@ class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
             return null;
         }
 
-        if (!$finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) {
+        if (!$finfo = new \finfo(\FILEINFO_MIME_TYPE, $this->magicFile)) {
             return null;
         }
+        $mimeType = $finfo->file($path);
 
-        return $finfo->file($path);
+        if ($mimeType && 0 === (\strlen($mimeType) % 2)) {
+            $mimeStart = substr($mimeType, 0, \strlen($mimeType) >> 1);
+            $mimeType = $mimeStart.$mimeStart === $mimeType ? $mimeStart : $mimeType;
+        }
+
+        return $mimeType;
     }
 }
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
index 651be070e122b792cfdf733b910b819833c7dec9..2380919bca77f950337792f7b5bb0fc1a666d81e 100644
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
@@ -13,7 +13,7 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
 
 use Symfony\Component\Mime\MimeTypes;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeExtensionGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
 
 /**
  * Provides a best-guess mapping of mime type to file extension.
@@ -625,7 +625,7 @@ class MimeTypeExtensionGuesser implements ExtensionGuesserInterface
         'audio/basic' => 'au',
         'audio/midi' => 'mid',
         'audio/mp4' => 'm4a',
-        'audio/mpeg' => 'mpga',
+        'audio/mpeg' => 'mp3',
         'audio/ogg' => 'oga',
         'audio/s3m' => 's3m',
         'audio/silk' => 'sil',
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
index ece2109caee08fa74869833cf80c687f529dc78d..bdac43149779c9640695bafd0f064e5c60e3385d 100644
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
@@ -15,7 +15,7 @@ use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
 use Symfony\Component\Mime\MimeTypes;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
 
 /**
  * A singleton mime type guesser.
@@ -130,7 +130,7 @@ class MimeTypeGuesser implements MimeTypeGuesserInterface
         }
 
         if (2 === \count($this->guessers) && !FileBinaryMimeTypeGuesser::isSupported() && !FileinfoMimeTypeGuesser::isSupported()) {
-            throw new \LogicException('Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)');
+            throw new \LogicException('Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?).');
         }
 
         return null;
diff --git a/vendor/symfony/http-foundation/File/UploadedFile.php b/vendor/symfony/http-foundation/File/UploadedFile.php
index 2367098a39ee33d4b5e8fbbb7f899d9cb2f0dbb9..e0b068a5dc498a793434860273b563d8540316b3 100644
--- a/vendor/symfony/http-foundation/File/UploadedFile.php
+++ b/vendor/symfony/http-foundation/File/UploadedFile.php
@@ -31,7 +31,7 @@ use Symfony\Component\Mime\MimeTypes;
  */
 class UploadedFile extends File
 {
-    private $test = false;
+    private $test;
     private $originalName;
     private $mimeType;
     private $error;
@@ -66,15 +66,15 @@ class UploadedFile extends File
         $this->mimeType = $mimeType ?: 'application/octet-stream';
 
         if (4 < \func_num_args() ? !\is_bool($test) : null !== $error && @filesize($path) === $error) {
-            @trigger_error(sprintf('Passing a size as 4th argument to the constructor of "%s" is deprecated since Symfony 4.1.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a size as 4th argument to the constructor of "%s" is deprecated since Symfony 4.1.', __CLASS__), \E_USER_DEPRECATED);
             $error = $test;
             $test = 5 < \func_num_args() ? func_get_arg(5) : false;
         }
 
-        $this->error = $error ?: UPLOAD_ERR_OK;
+        $this->error = $error ?: \UPLOAD_ERR_OK;
         $this->test = $test;
 
-        parent::__construct($path, UPLOAD_ERR_OK === $this->error);
+        parent::__construct($path, \UPLOAD_ERR_OK === $this->error);
     }
 
     /**
@@ -83,7 +83,7 @@ class UploadedFile extends File
      * It is extracted from the request from which the file has been uploaded.
      * Then it should not be considered as a safe value.
      *
-     * @return string|null The original name
+     * @return string The original name
      */
     public function getClientOriginalName()
     {
@@ -100,7 +100,7 @@ class UploadedFile extends File
      */
     public function getClientOriginalExtension()
     {
-        return pathinfo($this->originalName, PATHINFO_EXTENSION);
+        return pathinfo($this->originalName, \PATHINFO_EXTENSION);
     }
 
     /**
@@ -112,7 +112,7 @@ class UploadedFile extends File
      * For a trusted mime type, use getMimeType() instead (which guesses the mime
      * type based on the file content).
      *
-     * @return string|null The mime type
+     * @return string The mime type
      *
      * @see getMimeType()
      */
@@ -155,7 +155,7 @@ class UploadedFile extends File
      */
     public function getClientSize()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1. Use getSize() instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1. Use getSize() instead.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->getSize();
     }
@@ -180,7 +180,7 @@ class UploadedFile extends File
      */
     public function isValid()
     {
-        $isOk = UPLOAD_ERR_OK === $this->error;
+        $isOk = \UPLOAD_ERR_OK === $this->error;
 
         return $this->test ? $isOk : $isOk && is_uploaded_file($this->getPathname());
     }
@@ -208,7 +208,7 @@ class UploadedFile extends File
             $moved = move_uploaded_file($this->getPathname(), $target);
             restore_error_handler();
             if (!$moved) {
-                throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error)));
+                throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error)));
             }
 
             @chmod($target, 0666 & ~umask());
@@ -217,19 +217,19 @@ class UploadedFile extends File
         }
 
         switch ($this->error) {
-            case UPLOAD_ERR_INI_SIZE:
+            case \UPLOAD_ERR_INI_SIZE:
                 throw new IniSizeFileException($this->getErrorMessage());
-            case UPLOAD_ERR_FORM_SIZE:
+            case \UPLOAD_ERR_FORM_SIZE:
                 throw new FormSizeFileException($this->getErrorMessage());
-            case UPLOAD_ERR_PARTIAL:
+            case \UPLOAD_ERR_PARTIAL:
                 throw new PartialFileException($this->getErrorMessage());
-            case UPLOAD_ERR_NO_FILE:
+            case \UPLOAD_ERR_NO_FILE:
                 throw new NoFileException($this->getErrorMessage());
-            case UPLOAD_ERR_CANT_WRITE:
+            case \UPLOAD_ERR_CANT_WRITE:
                 throw new CannotWriteFileException($this->getErrorMessage());
-            case UPLOAD_ERR_NO_TMP_DIR:
+            case \UPLOAD_ERR_NO_TMP_DIR:
                 throw new NoTmpDirFileException($this->getErrorMessage());
-            case UPLOAD_ERR_EXTENSION:
+            case \UPLOAD_ERR_EXTENSION:
                 throw new ExtensionFileException($this->getErrorMessage());
         }
 
@@ -246,15 +246,13 @@ class UploadedFile extends File
         $sizePostMax = self::parseFilesize(ini_get('post_max_size'));
         $sizeUploadMax = self::parseFilesize(ini_get('upload_max_filesize'));
 
-        return min($sizePostMax ?: PHP_INT_MAX, $sizeUploadMax ?: PHP_INT_MAX);
+        return min($sizePostMax ?: \PHP_INT_MAX, $sizeUploadMax ?: \PHP_INT_MAX);
     }
 
     /**
      * Returns the given size from an ini value in bytes.
-     *
-     * @return int The given size in bytes
      */
-    private static function parseFilesize($size)
+    private static function parseFilesize($size): int
     {
         if ('' === $size) {
             return 0;
@@ -292,17 +290,17 @@ class UploadedFile extends File
     public function getErrorMessage()
     {
         static $errors = [
-            UPLOAD_ERR_INI_SIZE => 'The file "%s" exceeds your upload_max_filesize ini directive (limit is %d KiB).',
-            UPLOAD_ERR_FORM_SIZE => 'The file "%s" exceeds the upload limit defined in your form.',
-            UPLOAD_ERR_PARTIAL => 'The file "%s" was only partially uploaded.',
-            UPLOAD_ERR_NO_FILE => 'No file was uploaded.',
-            UPLOAD_ERR_CANT_WRITE => 'The file "%s" could not be written on disk.',
-            UPLOAD_ERR_NO_TMP_DIR => 'File could not be uploaded: missing temporary directory.',
-            UPLOAD_ERR_EXTENSION => 'File upload was stopped by a PHP extension.',
+            \UPLOAD_ERR_INI_SIZE => 'The file "%s" exceeds your upload_max_filesize ini directive (limit is %d KiB).',
+            \UPLOAD_ERR_FORM_SIZE => 'The file "%s" exceeds the upload limit defined in your form.',
+            \UPLOAD_ERR_PARTIAL => 'The file "%s" was only partially uploaded.',
+            \UPLOAD_ERR_NO_FILE => 'No file was uploaded.',
+            \UPLOAD_ERR_CANT_WRITE => 'The file "%s" could not be written on disk.',
+            \UPLOAD_ERR_NO_TMP_DIR => 'File could not be uploaded: missing temporary directory.',
+            \UPLOAD_ERR_EXTENSION => 'File upload was stopped by a PHP extension.',
         ];
 
         $errorCode = $this->error;
-        $maxFilesize = UPLOAD_ERR_INI_SIZE === $errorCode ? self::getMaxFilesize() / 1024 : 0;
+        $maxFilesize = \UPLOAD_ERR_INI_SIZE === $errorCode ? self::getMaxFilesize() / 1024 : 0;
         $message = isset($errors[$errorCode]) ? $errors[$errorCode] : 'The file "%s" was not uploaded due to an unknown error.';
 
         return sprintf($message, $this->getClientOriginalName(), $maxFilesize);
diff --git a/vendor/symfony/http-foundation/FileBag.php b/vendor/symfony/http-foundation/FileBag.php
index f3248a5941e8af3e825f464f93dc96866abe4fa4..46744434590b26cfcf6c2df0df62a6bdc44460c4 100644
--- a/vendor/symfony/http-foundation/FileBag.php
+++ b/vendor/symfony/http-foundation/FileBag.php
@@ -24,7 +24,7 @@ class FileBag extends ParameterBag
     private static $fileKeys = ['error', 'name', 'size', 'tmp_name', 'type'];
 
     /**
-     * @param array $parameters An array of HTTP files
+     * @param array|UploadedFile[] $parameters An array of HTTP files
      */
     public function __construct(array $parameters = [])
     {
@@ -81,7 +81,7 @@ class FileBag extends ParameterBag
             sort($keys);
 
             if ($keys == self::$fileKeys) {
-                if (UPLOAD_ERR_NO_FILE == $file['error']) {
+                if (\UPLOAD_ERR_NO_FILE == $file['error']) {
                     $file = null;
                 } else {
                     $file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['error'], false);
diff --git a/vendor/symfony/http-foundation/HeaderBag.php b/vendor/symfony/http-foundation/HeaderBag.php
index 7782f74244ab80e93b64deefaf374caecd1a6842..a74dce883be5404001be13dbc510daa6fa4460f9 100644
--- a/vendor/symfony/http-foundation/HeaderBag.php
+++ b/vendor/symfony/http-foundation/HeaderBag.php
@@ -18,12 +18,12 @@ namespace Symfony\Component\HttpFoundation;
  */
 class HeaderBag implements \IteratorAggregate, \Countable
 {
+    protected const UPPER = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+    protected const LOWER = '-abcdefghijklmnopqrstuvwxyz';
+
     protected $headers = [];
     protected $cacheControl = [];
 
-    /**
-     * @param array $headers An array of HTTP headers
-     */
     public function __construct(array $headers = [])
     {
         foreach ($headers as $key => $values) {
@@ -58,10 +58,16 @@ class HeaderBag implements \IteratorAggregate, \Countable
     /**
      * Returns the headers.
      *
+     * @param string|null $key The name of the headers to return or null to get them all
+     *
      * @return array An array of headers
      */
-    public function all()
+    public function all(/*string $key = null*/)
     {
+        if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) {
+            return $this->headers[strtr($key, self::UPPER, self::LOWER)] ?? [];
+        }
+
         return $this->headers;
     }
 
@@ -77,8 +83,6 @@ class HeaderBag implements \IteratorAggregate, \Countable
 
     /**
      * Replaces the current HTTP headers by a new set.
-     *
-     * @param array $headers An array of HTTP headers
      */
     public function replace(array $headers = [])
     {
@@ -88,8 +92,6 @@ class HeaderBag implements \IteratorAggregate, \Countable
 
     /**
      * Adds new headers the current HTTP headers set.
-     *
-     * @param array $headers An array of HTTP headers
      */
     public function add(array $headers)
     {
@@ -103,36 +105,29 @@ class HeaderBag implements \IteratorAggregate, \Countable
      *
      * @param string      $key     The header name
      * @param string|null $default The default value
-     * @param bool        $first   Whether to return the first value or all header values
      *
-     * @return string|string[]|null The first header value or default value if $first is true, an array of values otherwise
+     * @return string|null The first header value or default value
      */
-    public function get($key, $default = null, $first = true)
+    public function get($key, $default = null)
     {
-        $key = str_replace('_', '-', strtolower($key));
-        $headers = $this->all();
+        $headers = $this->all((string) $key);
+        if (2 < \func_num_args()) {
+            @trigger_error(sprintf('Passing a third argument to "%s()" is deprecated since Symfony 4.4, use method "all()" instead', __METHOD__), \E_USER_DEPRECATED);
 
-        if (!\array_key_exists($key, $headers)) {
-            if (null === $default) {
-                return $first ? null : [];
+            if (!func_get_arg(2)) {
+                return $headers;
             }
-
-            return $first ? $default : [$default];
         }
 
-        if ($first) {
-            if (!$headers[$key]) {
-                return $default;
-            }
-
-            if (null === $headers[$key][0]) {
-                return null;
-            }
+        if (!$headers) {
+            return $default;
+        }
 
-            return (string) $headers[$key][0];
+        if (null === $headers[0]) {
+            return null;
         }
 
-        return $headers[$key];
+        return (string) $headers[0];
     }
 
     /**
@@ -144,7 +139,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function set($key, $values, $replace = true)
     {
-        $key = str_replace('_', '-', strtolower($key));
+        $key = strtr($key, self::UPPER, self::LOWER);
 
         if (\is_array($values)) {
             $values = array_values($values);
@@ -176,7 +171,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function has($key)
     {
-        return \array_key_exists(str_replace('_', '-', strtolower($key)), $this->all());
+        return \array_key_exists(strtr($key, self::UPPER, self::LOWER), $this->all());
     }
 
     /**
@@ -189,7 +184,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function contains($key, $value)
     {
-        return \in_array($value, $this->get($key, null, false));
+        return \in_array($value, $this->all((string) $key));
     }
 
     /**
@@ -199,7 +194,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function remove($key)
     {
-        $key = str_replace('_', '-', strtolower($key));
+        $key = strtr($key, self::UPPER, self::LOWER);
 
         unset($this->headers[$key]);
 
@@ -211,10 +206,9 @@ class HeaderBag implements \IteratorAggregate, \Countable
     /**
      * Returns the HTTP header value converted to a date.
      *
-     * @param string    $key     The parameter key
-     * @param \DateTime $default The default value
+     * @param string $key The parameter key
      *
-     * @return \DateTime|null The parsed DateTime or the default value if the header does not exist
+     * @return \DateTimeInterface|null The parsed DateTime or the default value if the header does not exist
      *
      * @throws \RuntimeException When the HTTP header is not parseable
      */
@@ -224,8 +218,8 @@ class HeaderBag implements \IteratorAggregate, \Countable
             return $default;
         }
 
-        if (false === $date = \DateTime::createFromFormat(DATE_RFC2822, $value)) {
-            throw new \RuntimeException(sprintf('The %s HTTP header is not parseable (%s).', $key, $value));
+        if (false === $date = \DateTime::createFromFormat(\DATE_RFC2822, $value)) {
+            throw new \RuntimeException(sprintf('The "%s" HTTP header is not parseable (%s).', $key, $value));
         }
 
         return $date;
diff --git a/vendor/symfony/http-foundation/HeaderUtils.php b/vendor/symfony/http-foundation/HeaderUtils.php
index 5866e3b2b53e650796eaf68f417f1875895edd5b..f4add930eb22b14f00eaba1507120517a5653acf 100644
--- a/vendor/symfony/http-foundation/HeaderUtils.php
+++ b/vendor/symfony/http-foundation/HeaderUtils.php
@@ -62,7 +62,7 @@ class HeaderUtils
                 \s*
                 (?<separator>['.$quotedSeparators.'])
                 \s*
-            /x', trim($header), $matches, PREG_SET_ORDER);
+            /x', trim($header), $matches, \PREG_SET_ORDER);
 
         return self::groupParts($matches, $separators);
     }
diff --git a/vendor/symfony/http-foundation/IpUtils.php b/vendor/symfony/http-foundation/IpUtils.php
index 67d13e57aafce553b40259116ddca89db429a996..a61d3e53f930e982fefb5df4101162a08183137c 100644
--- a/vendor/symfony/http-foundation/IpUtils.php
+++ b/vendor/symfony/http-foundation/IpUtils.php
@@ -68,7 +68,7 @@ class IpUtils
             return self::$checkedIps[$cacheKey];
         }
 
-        if (!filter_var($requestIp, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+        if (!filter_var($requestIp, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4)) {
             return self::$checkedIps[$cacheKey] = false;
         }
 
@@ -76,7 +76,7 @@ class IpUtils
             list($address, $netmask) = explode('/', $ip, 2);
 
             if ('0' === $netmask) {
-                return self::$checkedIps[$cacheKey] = filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
+                return self::$checkedIps[$cacheKey] = filter_var($address, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4);
             }
 
             if ($netmask < 0 || $netmask > 32) {
@@ -153,4 +153,36 @@ class IpUtils
 
         return self::$checkedIps[$cacheKey] = true;
     }
+
+    /**
+     * Anonymizes an IP/IPv6.
+     *
+     * Removes the last byte for v4 and the last 8 bytes for v6 IPs
+     */
+    public static function anonymize(string $ip): string
+    {
+        $wrappedIPv6 = false;
+        if ('[' === substr($ip, 0, 1) && ']' === substr($ip, -1, 1)) {
+            $wrappedIPv6 = true;
+            $ip = substr($ip, 1, -1);
+        }
+
+        $packedAddress = inet_pton($ip);
+        if (4 === \strlen($packedAddress)) {
+            $mask = '255.255.255.0';
+        } elseif ($ip === inet_ntop($packedAddress & inet_pton('::ffff:ffff:ffff'))) {
+            $mask = '::ffff:ffff:ff00';
+        } elseif ($ip === inet_ntop($packedAddress & inet_pton('::ffff:ffff'))) {
+            $mask = '::ffff:ff00';
+        } else {
+            $mask = 'ffff:ffff:ffff:ffff:0000:0000:0000:0000';
+        }
+        $ip = inet_ntop($packedAddress & inet_pton($mask));
+
+        if ($wrappedIPv6) {
+            $ip = '['.$ip.']';
+        }
+
+        return $ip;
+    }
 }
diff --git a/vendor/symfony/http-foundation/JsonResponse.php b/vendor/symfony/http-foundation/JsonResponse.php
index 11a0bebf883026be1b170ac73e049887aaac7aee..f6b247bfa1f10996094dcde6b397c5d68207008b 100644
--- a/vendor/symfony/http-foundation/JsonResponse.php
+++ b/vendor/symfony/http-foundation/JsonResponse.php
@@ -159,11 +159,11 @@ class JsonResponse extends Response
             throw $e;
         }
 
-        if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $this->encodingOptions)) {
+        if (\PHP_VERSION_ID >= 70300 && (\JSON_THROW_ON_ERROR & $this->encodingOptions)) {
             return $this->setJson($data);
         }
 
-        if (JSON_ERROR_NONE !== json_last_error()) {
+        if (\JSON_ERROR_NONE !== json_last_error()) {
             throw new \InvalidArgumentException(json_last_error_msg());
         }
 
diff --git a/vendor/symfony/http-foundation/LICENSE b/vendor/symfony/http-foundation/LICENSE
index a677f43763ca467472898351b328aee41e2edd7c..9e936ec0448b8549e5edf08e5ac5f01491a8bfc8 100644
--- a/vendor/symfony/http-foundation/LICENSE
+++ b/vendor/symfony/http-foundation/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/http-foundation/ParameterBag.php b/vendor/symfony/http-foundation/ParameterBag.php
index 194ba2c6c57ef04077610d6a2e0947702c5ec168..1de753d3da37bfeb82279094b711e4ff49ca8145 100644
--- a/vendor/symfony/http-foundation/ParameterBag.php
+++ b/vendor/symfony/http-foundation/ParameterBag.php
@@ -23,9 +23,6 @@ class ParameterBag implements \IteratorAggregate, \Countable
      */
     protected $parameters;
 
-    /**
-     * @param array $parameters An array of parameters
-     */
     public function __construct(array $parameters = [])
     {
         $this->parameters = $parameters;
@@ -53,8 +50,6 @@ class ParameterBag implements \IteratorAggregate, \Countable
 
     /**
      * Replaces the current parameters by a new set.
-     *
-     * @param array $parameters An array of parameters
      */
     public function replace(array $parameters = [])
     {
@@ -63,8 +58,6 @@ class ParameterBag implements \IteratorAggregate, \Countable
 
     /**
      * Adds parameters.
-     *
-     * @param array $parameters An array of parameters
      */
     public function add(array $parameters = [])
     {
@@ -154,7 +147,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
     public function getDigits($key, $default = '')
     {
         // we need to remove - and + because they're allowed in the filter
-        return str_replace(['-', '+'], '', $this->filter($key, $default, FILTER_SANITIZE_NUMBER_INT));
+        return str_replace(['-', '+'], '', $this->filter($key, $default, \FILTER_SANITIZE_NUMBER_INT));
     }
 
     /**
@@ -180,7 +173,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
      */
     public function getBoolean($key, $default = false)
     {
-        return $this->filter($key, $default, FILTER_VALIDATE_BOOLEAN);
+        return $this->filter($key, $default, \FILTER_VALIDATE_BOOLEAN);
     }
 
     /**
@@ -195,7 +188,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
      *
      * @return mixed
      */
-    public function filter($key, $default = null, $filter = FILTER_DEFAULT, $options = [])
+    public function filter($key, $default = null, $filter = \FILTER_DEFAULT, $options = [])
     {
         $value = $this->get($key, $default);
 
@@ -206,7 +199,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
 
         // Add a convenience check for arrays.
         if (\is_array($value) && !isset($options['flags'])) {
-            $options['flags'] = FILTER_REQUIRE_ARRAY;
+            $options['flags'] = \FILTER_REQUIRE_ARRAY;
         }
 
         return filter_var($value, $filter, $options);
diff --git a/vendor/symfony/http-foundation/README.md b/vendor/symfony/http-foundation/README.md
index 8907f0b9678966d1ca561d4963ddfb239da99609..ac98f9b80ad5de3f85f6d797f05b5cfecf382d82 100644
--- a/vendor/symfony/http-foundation/README.md
+++ b/vendor/symfony/http-foundation/README.md
@@ -7,7 +7,7 @@ specification.
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/http_foundation/index.html)
+  * [Documentation](https://symfony.com/doc/current/components/http_foundation.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/http-foundation/RedirectResponse.php b/vendor/symfony/http-foundation/RedirectResponse.php
index 3abdf3eb4448f1d50218f7136eb43db5f37cbdec..6348aca5026ef56c100ca4825761e4cfdd3c158a 100644
--- a/vendor/symfony/http-foundation/RedirectResponse.php
+++ b/vendor/symfony/http-foundation/RedirectResponse.php
@@ -34,6 +34,11 @@ class RedirectResponse extends Response
      */
     public function __construct(?string $url, int $status = 302, array $headers = [])
     {
+        if (null === $url) {
+            @trigger_error(sprintf('Passing a null url when instantiating a "%s" is deprecated since Symfony 4.4.', __CLASS__), \E_USER_DEPRECATED);
+            $url = '';
+        }
+
         parent::__construct('', $status, $headers);
 
         $this->setTargetUrl($url);
@@ -82,7 +87,7 @@ class RedirectResponse extends Response
      */
     public function setTargetUrl($url)
     {
-        if (empty($url)) {
+        if ('' === ($url ?? '')) {
             throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
         }
 
@@ -93,14 +98,14 @@ class RedirectResponse extends Response
 <html>
     <head>
         <meta charset="UTF-8" />
-        <meta http-equiv="refresh" content="0;url=%1$s" />
+        <meta http-equiv="refresh" content="0;url=\'%1$s\'" />
 
         <title>Redirecting to %1$s</title>
     </head>
     <body>
         Redirecting to <a href="%1$s">%1$s</a>.
     </body>
-</html>', htmlspecialchars($url, ENT_QUOTES, 'UTF-8')));
+</html>', htmlspecialchars($url, \ENT_QUOTES, 'UTF-8')));
 
         $this->headers->set('Location', $url);
 
diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php
index 9af2c28256fab4fded3f8b89ca373d9a95a31df8..faaa65f991225a956971c953accb28967aafb87f 100644
--- a/vendor/symfony/http-foundation/Request.php
+++ b/vendor/symfony/http-foundation/Request.php
@@ -15,6 +15,14 @@ use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
 use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
 use Symfony\Component\HttpFoundation\Session\SessionInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(AcceptHeader::class);
+class_exists(FileBag::class);
+class_exists(HeaderBag::class);
+class_exists(HeaderUtils::class);
+class_exists(ParameterBag::class);
+class_exists(ServerBag::class);
+
 /**
  * Request represents an HTTP request.
  *
@@ -192,6 +200,10 @@ class Request
 
     protected static $requestFactory;
 
+    /**
+     * @var string|null
+     */
+    private $preferredFormat;
     private $isHostValid = true;
     private $isForwardedValid = true;
 
@@ -499,7 +511,7 @@ class Request
                 throw $e;
             }
 
-            return trigger_error($e, E_USER_ERROR);
+            return trigger_error($e, \E_USER_ERROR);
         }
 
         $cookieHeader = '';
@@ -537,7 +549,7 @@ class Request
 
         foreach ($this->headers->all() as $key => $value) {
             $key = strtoupper(str_replace('-', '_', $key));
-            if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH'])) {
+            if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
                 $_SERVER[$key] = implode(', ', $value);
             } else {
                 $_SERVER['HTTP_'.$key] = implode(', ', $value);
@@ -563,14 +575,22 @@ class Request
      *
      * You should only list the reverse proxies that you manage directly.
      *
-     * @param array $proxies          A list of trusted proxies
+     * @param array $proxies          A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
      * @param int   $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
      *
      * @throws \InvalidArgumentException When $trustedHeaderSet is invalid
      */
     public static function setTrustedProxies(array $proxies, int $trustedHeaderSet)
     {
-        self::$trustedProxies = $proxies;
+        self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) {
+            if ('REMOTE_ADDR' !== $proxy) {
+                $proxies[] = $proxy;
+            } elseif (isset($_SERVER['REMOTE_ADDR'])) {
+                $proxies[] = $_SERVER['REMOTE_ADDR'];
+            }
+
+            return $proxies;
+        }, []);
         self::$trustedHeaderSet = $trustedHeaderSet;
     }
 
@@ -632,14 +652,14 @@ class Request
      */
     public static function normalizeQueryString($qs)
     {
-        if ('' == $qs) {
+        if ('' === ($qs ?? '')) {
             return '';
         }
 
         parse_str($qs, $qs);
         ksort($qs);
 
-        return http_build_query($qs, '', '&', PHP_QUERY_RFC3986);
+        return http_build_query($qs, '', '&', \PHP_QUERY_RFC3986);
     }
 
     /**
@@ -702,7 +722,7 @@ class Request
     /**
      * Gets the Session.
      *
-     * @return SessionInterface|null The session
+     * @return SessionInterface The session
      */
     public function getSession()
     {
@@ -712,8 +732,8 @@ class Request
         }
 
         if (null === $session) {
-            @trigger_error(sprintf('Calling "%s()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.', __METHOD__), E_USER_DEPRECATED);
-            // throw new \BadMethodCallException('Session has not been set');
+            @trigger_error(sprintf('Calling "%s()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.', __METHOD__), \E_USER_DEPRECATED);
+            // throw new \BadMethodCallException('Session has not been set.');
         }
 
         return $session;
@@ -745,11 +765,6 @@ class Request
         return null !== $this->session;
     }
 
-    /**
-     * Sets the Session.
-     *
-     * @param SessionInterface $session The Session
-     */
     public function setSession(SessionInterface $session)
     {
         $this->session = $session;
@@ -1353,6 +1368,8 @@ class Request
      *  * _format request attribute
      *  * $default
      *
+     * @see getPreferredFormat
+     *
      * @param string|null $default The default format
      *
      * @return string|null The request format
@@ -1447,15 +1464,12 @@ class Request
      *
      * @see https://tools.ietf.org/html/rfc7231#section-4.2.1
      *
-     * @param bool $andCacheable Adds the additional condition that the method should be cacheable. True by default.
-     *
      * @return bool
      */
-    public function isMethodSafe(/* $andCacheable = true */)
+    public function isMethodSafe()
     {
-        if (!\func_num_args() || func_get_arg(0)) {
-            // setting $andCacheable to false should be deprecated in 4.1
-            throw new \BadMethodCallException('Checking only for cacheable HTTP methods with Symfony\Component\HttpFoundation\Request::isMethodSafe() is not supported.');
+        if (\func_num_args() > 0) {
+            @trigger_error(sprintf('Passing arguments to "%s()" has been deprecated since Symfony 4.4; use "%s::isMethodCacheable()" to check if the method is cacheable instead.', __METHOD__, __CLASS__), \E_USER_DEPRECATED);
         }
 
         return \in_array($this->getMethod(), ['GET', 'HEAD', 'OPTIONS', 'TRACE']);
@@ -1561,7 +1575,7 @@ class Request
      */
     public function getETags()
     {
-        return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, PREG_SPLIT_NO_EMPTY);
+        return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, \PREG_SPLIT_NO_EMPTY);
     }
 
     /**
@@ -1572,10 +1586,33 @@ class Request
         return $this->headers->hasCacheControlDirective('no-cache') || 'no-cache' == $this->headers->get('Pragma');
     }
 
+    /**
+     * Gets the preferred format for the response by inspecting, in the following order:
+     *   * the request format set using setRequestFormat
+     *   * the values of the Accept HTTP header.
+     *
+     * Note that if you use this method, you should send the "Vary: Accept" header
+     * in the response to prevent any issues with intermediary HTTP caches.
+     */
+    public function getPreferredFormat(?string $default = 'html'): ?string
+    {
+        if (null !== $this->preferredFormat || null !== $this->preferredFormat = $this->getRequestFormat(null)) {
+            return $this->preferredFormat;
+        }
+
+        foreach ($this->getAcceptableContentTypes() as $mimeType) {
+            if ($this->preferredFormat = $this->getFormat($mimeType)) {
+                return $this->preferredFormat;
+            }
+        }
+
+        return $default;
+    }
+
     /**
      * Returns the preferred language.
      *
-     * @param array $locales An array of ordered available locales
+     * @param string[] $locales An array of ordered available locales
      *
      * @return string|null The preferred locale
      */
@@ -1795,12 +1832,12 @@ class Request
             $requestUri = '/'.$requestUri;
         }
 
-        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
+        if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
             // full $baseUrl matches
             return $prefix;
         }
 
-        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(\dirname($baseUrl), '/'.\DIRECTORY_SEPARATOR).'/')) {
+        if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(\dirname($baseUrl), '/'.\DIRECTORY_SEPARATOR).'/')) {
             // directory portion of $baseUrl matches
             return rtrim($prefix, '/'.\DIRECTORY_SEPARATOR);
         }
@@ -1904,7 +1941,7 @@ class Request
         ];
     }
 
-    private function setPhpDefaultLocale(string $locale)
+    private function setPhpDefaultLocale(string $locale): void
     {
         // if either the class Locale doesn't exist, or an exception is thrown when
         // setting the default locale, the intl module is not installed, and
@@ -1919,14 +1956,12 @@ class Request
 
     /**
      * Returns the prefix as encoded in the string when the string starts with
-     * the given prefix, false otherwise.
-     *
-     * @return string|false The prefix as it is encoded in $string, or false
+     * the given prefix, null otherwise.
      */
-    private function getUrlencodedPrefix(string $string, string $prefix)
+    private function getUrlencodedPrefix(string $string, string $prefix): ?string
     {
         if (0 !== strpos(rawurldecode($string), $prefix)) {
-            return false;
+            return null;
         }
 
         $len = \strlen($prefix);
@@ -1935,10 +1970,10 @@ class Request
             return $match[0];
         }
 
-        return false;
+        return null;
     }
 
-    private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null)
+    private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null): self
     {
         if (self::$requestFactory) {
             $request = (self::$requestFactory)($query, $request, $attributes, $cookies, $files, $server, $content);
@@ -1966,7 +2001,7 @@ class Request
         return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR'), self::$trustedProxies);
     }
 
-    private function getTrustedValues($type, $ip = null)
+    private function getTrustedValues(int $type, string $ip = null): array
     {
         $clientValues = [];
         $forwardedValues = [];
@@ -2017,7 +2052,7 @@ class Request
         throw new ConflictingHeadersException(sprintf('The request has both a trusted "%s" header and a trusted "%s" header, conflicting with each other. You should either configure your proxy to remove one of them, or configure your project to distrust the offending one.', self::$trustedHeaders[self::HEADER_FORWARDED], self::$trustedHeaders[$type]));
     }
 
-    private function normalizeAndFilterClientIps(array $clientIps, $ip)
+    private function normalizeAndFilterClientIps(array $clientIps, string $ip): array
     {
         if (!$clientIps) {
             return [];
@@ -2039,7 +2074,7 @@ class Request
                 $clientIps[$key] = $clientIp = substr($clientIp, 1, $i - 1);
             }
 
-            if (!filter_var($clientIp, FILTER_VALIDATE_IP)) {
+            if (!filter_var($clientIp, \FILTER_VALIDATE_IP)) {
                 unset($clientIps[$key]);
 
                 continue;
diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php
index 1e616453c92db5a149c196d48aaaaf06ce352c62..e64b2729460f04cf1c0d3a3f685813dde75228e2 100644
--- a/vendor/symfony/http-foundation/Response.php
+++ b/vendor/symfony/http-foundation/Response.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\HttpFoundation;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(ResponseHeaderBag::class);
+
 /**
  * Response represents an HTTP response.
  *
@@ -267,10 +270,12 @@ class Response
             $this->setContent(null);
             $headers->remove('Content-Type');
             $headers->remove('Content-Length');
+            // prevent PHP from sending the Content-Type header based on default_mimetype
+            ini_set('default_mimetype', '');
         } else {
             // Content-type based on the Request
             if (!$headers->has('Content-Type')) {
-                $format = $request->getRequestFormat();
+                $format = $request->getRequestFormat(null);
                 if (null !== $format && $mimeType = $request->getMimeType($format)) {
                     $headers->set('Content-Type', $mimeType);
                 }
@@ -628,7 +633,7 @@ class Response
     }
 
     /**
-     * Returns true if the response must be revalidated by caches.
+     * Returns true if the response must be revalidated by shared caches once it has become stale.
      *
      * This method indicates that the response must not be served stale by a
      * cache in any circumstance without first revalidating with the origin.
@@ -1024,7 +1029,7 @@ class Response
      */
     public function getVary(): array
     {
-        if (!$vary = $this->headers->get('Vary', null, false)) {
+        if (!$vary = $this->headers->all('Vary')) {
             return [];
         }
 
@@ -1208,11 +1213,11 @@ class Response
      *
      * @final
      */
-    public static function closeOutputBuffers(int $targetLevel, bool $flush)
+    public static function closeOutputBuffers(int $targetLevel, bool $flush): void
     {
         $status = ob_get_status(true);
         $level = \count($status);
-        $flags = PHP_OUTPUT_HANDLER_REMOVABLE | ($flush ? PHP_OUTPUT_HANDLER_FLUSHABLE : PHP_OUTPUT_HANDLER_CLEANABLE);
+        $flags = \PHP_OUTPUT_HANDLER_REMOVABLE | ($flush ? \PHP_OUTPUT_HANDLER_FLUSHABLE : \PHP_OUTPUT_HANDLER_CLEANABLE);
 
         while ($level-- > $targetLevel && ($s = $status[$level]) && (!isset($s['del']) ? !isset($s['flags']) || ($s['flags'] & $flags) === $flags : $s['del'])) {
             if ($flush) {
@@ -1230,7 +1235,7 @@ class Response
      *
      * @final
      */
-    protected function ensureIEOverSSLCompatibility(Request $request)
+    protected function ensureIEOverSSLCompatibility(Request $request): void
     {
         if (false !== stripos($this->headers->get('Content-Disposition'), 'attachment') && 1 == preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) && true === $request->isSecure()) {
             if ((int) preg_replace('/(MSIE )(.*?);/', '$2', $match[0]) < 9) {
diff --git a/vendor/symfony/http-foundation/ResponseHeaderBag.php b/vendor/symfony/http-foundation/ResponseHeaderBag.php
index cf44d0eceba8e3dddb473de0687bbcedccee8e3d..e71034abac98b1bd616fa98a330ec2f9487cef1d 100644
--- a/vendor/symfony/http-foundation/ResponseHeaderBag.php
+++ b/vendor/symfony/http-foundation/ResponseHeaderBag.php
@@ -51,7 +51,7 @@ class ResponseHeaderBag extends HeaderBag
     {
         $headers = [];
         foreach ($this->all() as $name => $value) {
-            $headers[isset($this->headerNames[$name]) ? $this->headerNames[$name] : $name] = $value;
+            $headers[$this->headerNames[$name] ?? $name] = $value;
         }
 
         return $headers;
@@ -87,10 +87,19 @@ class ResponseHeaderBag extends HeaderBag
 
     /**
      * {@inheritdoc}
+     *
+     * @param string|null $key The name of the headers to return or null to get them all
      */
-    public function all()
+    public function all(/*string $key = null*/)
     {
         $headers = parent::all();
+
+        if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) {
+            $key = strtr($key, self::UPPER, self::LOWER);
+
+            return 'set-cookie' !== $key ? $headers[$key] ?? [] : array_map('strval', $this->getCookies());
+        }
+
         foreach ($this->getCookies() as $cookie) {
             $headers['set-cookie'][] = (string) $cookie;
         }
@@ -103,7 +112,7 @@ class ResponseHeaderBag extends HeaderBag
      */
     public function set($key, $values, $replace = true)
     {
-        $uniqueKey = str_replace('_', '-', strtolower($key));
+        $uniqueKey = strtr($key, self::UPPER, self::LOWER);
 
         if ('set-cookie' === $uniqueKey) {
             if ($replace) {
@@ -134,7 +143,7 @@ class ResponseHeaderBag extends HeaderBag
      */
     public function remove($key)
     {
-        $uniqueKey = str_replace('_', '-', strtolower($key));
+        $uniqueKey = strtr($key, self::UPPER, self::LOWER);
         unset($this->headerNames[$uniqueKey]);
 
         if ('set-cookie' === $uniqueKey) {
@@ -243,10 +252,13 @@ class ResponseHeaderBag extends HeaderBag
      * @param string $domain
      * @param bool   $secure
      * @param bool   $httpOnly
+     * @param string $sameSite
      */
-    public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true)
+    public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true/*, $sameSite = null*/)
     {
-        $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, null));
+        $sameSite = \func_num_args() > 5 ? func_get_arg(5) : null;
+
+        $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, $sameSite));
     }
 
     /**
@@ -267,13 +279,13 @@ class ResponseHeaderBag extends HeaderBag
      */
     protected function computeCacheControlValue()
     {
-        if (!$this->cacheControl && !$this->has('ETag') && !$this->has('Last-Modified') && !$this->has('Expires')) {
-            return 'no-cache, private';
-        }
-
         if (!$this->cacheControl) {
+            if ($this->has('Last-Modified') || $this->has('Expires')) {
+                return 'private, must-revalidate'; // allows for heuristic expiration (RFC 7234 Section 4.2.2) in the case of "Last-Modified"
+            }
+
             // conservative by default
-            return 'private, must-revalidate';
+            return 'no-cache, private';
         }
 
         $header = $this->getCacheControlHeader();
@@ -289,7 +301,7 @@ class ResponseHeaderBag extends HeaderBag
         return $header;
     }
 
-    private function initDate()
+    private function initDate(): void
     {
         $now = \DateTime::createFromFormat('U', time());
         $now->setTimezone(new \DateTimeZone('UTC'));
diff --git a/vendor/symfony/http-foundation/ServerBag.php b/vendor/symfony/http-foundation/ServerBag.php
index 4c82b1774873ff32a3a5274a920f17857e44aa06..02c70911c19f1b184c13aadd1f77025543c57627 100644
--- a/vendor/symfony/http-foundation/ServerBag.php
+++ b/vendor/symfony/http-foundation/ServerBag.php
@@ -28,13 +28,10 @@ class ServerBag extends ParameterBag
     public function getHeaders()
     {
         $headers = [];
-        $contentHeaders = ['CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true];
         foreach ($this->parameters as $key => $value) {
             if (0 === strpos($key, 'HTTP_')) {
                 $headers[substr($key, 5)] = $value;
-            }
-            // CONTENT_* are not prefixed with HTTP_
-            elseif (isset($contentHeaders[$key])) {
+            } elseif (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
                 $headers[$key] = $value;
             }
         }
@@ -46,13 +43,13 @@ class ServerBag extends ParameterBag
             /*
              * php-cgi under Apache does not pass HTTP Basic user/pass to PHP by default
              * For this workaround to work, add these lines to your .htaccess file:
-             * RewriteCond %{HTTP:Authorization} ^(.+)$
-             * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+             * RewriteCond %{HTTP:Authorization} .+
+             * RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
              *
              * A sample .htaccess file:
              * RewriteEngine On
-             * RewriteCond %{HTTP:Authorization} ^(.+)$
-             * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+             * RewriteCond %{HTTP:Authorization} .+
+             * RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
              * RewriteCond %{REQUEST_FILENAME} !-f
              * RewriteRule ^(.*)$ app.php [QSA,L]
              */
diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
index 0d8d17991be704f5f64d41b13bfacc6a70944393..6fa2293970b90d007900d1641403a4cb4a30507d 100644
--- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
+++ b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
@@ -50,15 +50,10 @@ interface AttributeBagInterface extends SessionBagInterface
     /**
      * Returns attributes.
      *
-     * @return array Attributes
+     * @return array
      */
     public function all();
 
-    /**
-     * Sets attributes.
-     *
-     * @param array $attributes Attributes
-     */
     public function replace(array $attributes);
 
     /**
diff --git a/vendor/symfony/http-foundation/Session/Session.php b/vendor/symfony/http-foundation/Session/Session.php
index db0b9aeb0b1186323cffb7a46ae04d9c887788ff..b6973aaabb9892a8c4b6efe0c81f61c5bb78b1e5 100644
--- a/vendor/symfony/http-foundation/Session/Session.php
+++ b/vendor/symfony/http-foundation/Session/Session.php
@@ -18,6 +18,11 @@ use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
 use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
 use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(AttributeBag::class);
+class_exists(FlashBag::class);
+class_exists(SessionBagProxy::class);
+
 /**
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Drak <drak@zikula.org>
@@ -31,11 +36,6 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable
     private $data = [];
     private $usageIndex = 0;
 
-    /**
-     * @param SessionStorageInterface $storage    A SessionStorageInterface instance
-     * @param AttributeBagInterface   $attributes An AttributeBagInterface instance, (defaults null for default AttributeBag)
-     * @param FlashBagInterface       $flashes    A FlashBagInterface instance (defaults null for default FlashBag)
-     */
     public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
     {
         $this->storage = $storage ?: new NativeSessionStorage();
@@ -134,29 +134,22 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable
     /**
      * Returns the number of attributes.
      *
-     * @return int The number of attributes
+     * @return int
      */
     public function count()
     {
         return \count($this->getAttributeBag()->all());
     }
 
-    /**
-     * @return int
-     *
-     * @internal
-     */
-    public function getUsageIndex()
+    public function &getUsageIndex(): int
     {
         return $this->usageIndex;
     }
 
     /**
-     * @return bool
-     *
      * @internal
      */
-    public function isEmpty()
+    public function isEmpty(): bool
     {
         if ($this->isStarted()) {
             ++$this->usageIndex;
@@ -272,10 +265,8 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable
      * Gets the attributebag interface.
      *
      * Note that this method was added to help with IDE autocompletion.
-     *
-     * @return AttributeBagInterface
      */
-    private function getAttributeBag()
+    private function getAttributeBag(): AttributeBagInterface
     {
         return $this->getBag($this->attributeName);
     }
diff --git a/vendor/symfony/http-foundation/Session/SessionBagProxy.php b/vendor/symfony/http-foundation/Session/SessionBagProxy.php
index 3504bdfe7b4a6fe1c52c0bf8e628ec703857445a..0ae8231ef8fb24e91cd95e4bd1c9b557f6f16fbe 100644
--- a/vendor/symfony/http-foundation/Session/SessionBagProxy.php
+++ b/vendor/symfony/http-foundation/Session/SessionBagProxy.php
@@ -22,27 +22,21 @@ final class SessionBagProxy implements SessionBagInterface
     private $data;
     private $usageIndex;
 
-    public function __construct(SessionBagInterface $bag, array &$data, &$usageIndex)
+    public function __construct(SessionBagInterface $bag, array &$data, ?int &$usageIndex)
     {
         $this->bag = $bag;
         $this->data = &$data;
         $this->usageIndex = &$usageIndex;
     }
 
-    /**
-     * @return SessionBagInterface
-     */
-    public function getBag()
+    public function getBag(): SessionBagInterface
     {
         ++$this->usageIndex;
 
         return $this->bag;
     }
 
-    /**
-     * @return bool
-     */
-    public function isEmpty()
+    public function isEmpty(): bool
     {
         if (!isset($this->data[$this->bag->getStorageKey()])) {
             return true;
@@ -55,7 +49,7 @@ final class SessionBagProxy implements SessionBagInterface
     /**
      * {@inheritdoc}
      */
-    public function getName()
+    public function getName(): string
     {
         return $this->bag->getName();
     }
@@ -63,7 +57,7 @@ final class SessionBagProxy implements SessionBagInterface
     /**
      * {@inheritdoc}
      */
-    public function initialize(array &$array)
+    public function initialize(array &$array): void
     {
         ++$this->usageIndex;
         $this->data[$this->bag->getStorageKey()] = &$array;
@@ -74,7 +68,7 @@ final class SessionBagProxy implements SessionBagInterface
     /**
      * {@inheritdoc}
      */
-    public function getStorageKey()
+    public function getStorageKey(): string
     {
         return $this->bag->getStorageKey();
     }
diff --git a/vendor/symfony/http-foundation/Session/SessionInterface.php b/vendor/symfony/http-foundation/Session/SessionInterface.php
index 95fca857e24303ada742d0f6ae00a3829ee5433b..e758c6bda6018b4d799659ee2a3a524863d5e1c5 100644
--- a/vendor/symfony/http-foundation/Session/SessionInterface.php
+++ b/vendor/symfony/http-foundation/Session/SessionInterface.php
@@ -23,7 +23,7 @@ interface SessionInterface
     /**
      * Starts the session storage.
      *
-     * @return bool True if session started
+     * @return bool
      *
      * @throws \RuntimeException if session fails to start
      */
@@ -32,7 +32,7 @@ interface SessionInterface
     /**
      * Returns the session ID.
      *
-     * @return string The session ID
+     * @return string
      */
     public function getId();
 
@@ -46,7 +46,7 @@ interface SessionInterface
     /**
      * Returns the session name.
      *
-     * @return mixed The session name
+     * @return string
      */
     public function getName();
 
@@ -68,7 +68,7 @@ interface SessionInterface
      *                      to expire with browser session. Time is in seconds, and is
      *                      not a Unix timestamp.
      *
-     * @return bool True if session invalidated, false if error
+     * @return bool
      */
     public function invalidate($lifetime = null);
 
@@ -82,7 +82,7 @@ interface SessionInterface
      *                       to expire with browser session. Time is in seconds, and is
      *                       not a Unix timestamp.
      *
-     * @return bool True if session migrated, false if error
+     * @return bool
      */
     public function migrate($destroy = false, $lifetime = null);
 
@@ -100,7 +100,7 @@ interface SessionInterface
      *
      * @param string $name The attribute name
      *
-     * @return bool true if the attribute is defined, false otherwise
+     * @return bool
      */
     public function has($name);
 
@@ -125,14 +125,12 @@ interface SessionInterface
     /**
      * Returns attributes.
      *
-     * @return array Attributes
+     * @return array
      */
     public function all();
 
     /**
      * Sets attributes.
-     *
-     * @param array $attributes Attributes
      */
     public function replace(array $attributes);
 
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
index 78340efbd2228f97221dc283f04903ae7af8c89e..42c3df54a28400ae5411b226afa22c80b87ffbbe 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
@@ -29,7 +29,7 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     private $igbinaryEmptyData;
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -64,18 +64,27 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     abstract protected function doDestroy($sessionId);
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
         $this->prefetchData = $this->read($sessionId);
         $this->prefetchId = $sessionId;
 
+        if (\PHP_VERSION_ID < 70317 || (70400 <= \PHP_VERSION_ID && \PHP_VERSION_ID < 70405)) {
+            // work around https://bugs.php.net/79413
+            foreach (debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) {
+                if (!isset($frame['class']) && isset($frame['function']) && \in_array($frame['function'], ['session_regenerate_id', 'session_create_id'], true)) {
+                    return '' === $this->prefetchData;
+                }
+            }
+        }
+
         return '' !== $this->prefetchData;
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -98,7 +107,7 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function write($sessionId, $data)
     {
@@ -115,13 +124,13 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
-        if (!headers_sent() && filter_var(ini_get('session.use_cookies'), FILTER_VALIDATE_BOOLEAN)) {
+        if (!headers_sent() && filter_var(ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOLEAN)) {
             if (!$this->sessionName) {
-                throw new \LogicException(sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', \get_class($this)));
+                throw new \LogicException(sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', static::class));
             }
             $cookie = SessionUtils::popSessionCookie($this->sessionName, $sessionId);
 
@@ -134,7 +143,7 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
              */
             if (null === $cookie || isset($_COOKIE[$this->sessionName])) {
                 if (\PHP_VERSION_ID < 70300) {
-                    setcookie($this->sessionName, '', 0, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN), filter_var(ini_get('session.cookie_httponly'), FILTER_VALIDATE_BOOLEAN));
+                    setcookie($this->sessionName, '', 0, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), filter_var(ini_get('session.cookie_secure'), \FILTER_VALIDATE_BOOLEAN), filter_var(ini_get('session.cookie_httponly'), \FILTER_VALIDATE_BOOLEAN));
                 } else {
                     $params = session_get_cookie_params();
                     unset($params['lifetime']);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
index a399be5fd8ee7d62463dcf613a153bca764e93c3..6711e0a55f9d7246088da9ae96bb160296397575 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
@@ -47,7 +47,7 @@ class MemcachedSessionHandler extends AbstractSessionHandler
         $this->memcached = $memcached;
 
         if ($diff = array_diff(array_keys($options), ['prefix', 'expiretime'])) {
-            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s"', implode(', ', $diff)));
+            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff)));
         }
 
         $this->ttl = isset($options['expiretime']) ? (int) $options['expiretime'] : 86400;
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
index 253d8cb68509842b6b95ae48e7f0d02d393212b9..c6b16d11c854423e3de531009b03ca2a6b7eb80d 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
@@ -39,7 +39,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -50,7 +50,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
@@ -72,7 +72,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -83,7 +83,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -92,7 +92,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function write($sessionId, $sessionData)
     {
@@ -103,7 +103,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
@@ -112,7 +112,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $sessionData)
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
index db85f06e3ed07fe0fbaaf9b7843d538196dbbd64..6cb8847786538c2cc8b9d3c3028011f27008ff3b 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
@@ -61,15 +61,12 @@ class MongoDbSessionHandler extends AbstractSessionHandler
      * If you use such an index, you can drop `gc_probability` to 0 since
      * no garbage-collection is required.
      *
-     * @param \MongoDB\Client $mongo   A MongoDB\Client instance
-     * @param array           $options An associative array of field options
-     *
      * @throws \InvalidArgumentException When "database" or "collection" not provided
      */
     public function __construct(\MongoDB\Client $mongo, array $options)
     {
         if (!isset($options['database']) || !isset($options['collection'])) {
-            throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler');
+            throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler.');
         }
 
         $this->mongo = $mongo;
@@ -83,7 +80,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -103,7 +100,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function gc($maxlifetime)
     {
@@ -137,7 +134,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
@@ -171,10 +168,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
         return $dbData[$this->options['data_field']]->getData();
     }
 
-    /**
-     * @return \MongoDB\Collection
-     */
-    private function getCollection()
+    private function getCollection(): \MongoDB\Collection
     {
         if (null === $this->collection) {
             $this->collection = $this->mongo->selectCollection($this->options['database'], $this->options['collection']);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
index bdfc9d819e8128ff404a88f67bdf824bb69260b6..effc9db544bcfb835966645c033d61ff3ae9a6a4 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
@@ -38,7 +38,7 @@ class NativeFileSessionHandler extends \SessionHandler
 
         if ($count = substr_count($savePath, ';')) {
             if ($count > 2) {
-                throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'', $savePath));
+                throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'.', $savePath));
             }
 
             // characters after last ';' are the path
@@ -46,7 +46,7 @@ class NativeFileSessionHandler extends \SessionHandler
         }
 
         if ($baseDir && !is_dir($baseDir) && !@mkdir($baseDir, 0777, true) && !is_dir($baseDir)) {
-            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s"', $baseDir));
+            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $baseDir));
         }
 
         ini_set('session.save_path', $savePath);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
index 3ba9378ca7aed3d3bc4db94247c1a848338438b7..0634e46dd53f4152ca27bdeb77bec60b28621640 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
@@ -19,7 +19,7 @@ namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
 class NullSessionHandler extends AbstractSessionHandler
 {
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -27,7 +27,7 @@ class NullSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
@@ -43,7 +43,7 @@ class NullSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
index 4f770c14ed2cc41b79d453749186feed9cee691c..01b4120519d29189cbbf22de7f1676e26f4abc61 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
@@ -65,6 +65,8 @@ class PdoSessionHandler extends AbstractSessionHandler
      */
     const LOCK_TRANSACTIONAL = 2;
 
+    private const MAX_LIFETIME = 315576000;
+
     /**
      * @var \PDO|null PDO instance or null when not connected yet
      */
@@ -165,7 +167,6 @@ class PdoSessionHandler extends AbstractSessionHandler
      *  * lock_mode: The strategy for locking, see constants [default: LOCK_TRANSACTIONAL]
      *
      * @param \PDO|string|null $pdoOrDsn A \PDO instance or DSN string or URL string or null
-     * @param array            $options  An associative array of options
      *
      * @throws \InvalidArgumentException When PDO error mode is not PDO::ERRMODE_EXCEPTION
      */
@@ -173,7 +174,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     {
         if ($pdoOrDsn instanceof \PDO) {
             if (\PDO::ERRMODE_EXCEPTION !== $pdoOrDsn->getAttribute(\PDO::ATTR_ERRMODE)) {
-                throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION))', __CLASS__));
+                throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)).', __CLASS__));
             }
 
             $this->pdo = $pdoOrDsn;
@@ -218,7 +219,7 @@ class PdoSessionHandler extends AbstractSessionHandler
                 // - trailing space removal
                 // - case-insensitivity
                 // - language processing like é == e
-                $sql = "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol MEDIUMINT NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8_bin, ENGINE = InnoDB";
+                $sql = "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER UNSIGNED NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8mb4_bin, ENGINE = InnoDB";
                 break;
             case 'sqlite':
                 $sql = "CREATE TABLE $this->table ($this->idCol TEXT NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
@@ -238,6 +239,7 @@ class PdoSessionHandler extends AbstractSessionHandler
 
         try {
             $this->pdo->exec($sql);
+            $this->pdo->exec("CREATE INDEX EXPIRY ON $this->table ($this->lifetimeCol)");
         } catch (\PDOException $e) {
             $this->rollback();
 
@@ -258,7 +260,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -272,7 +274,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -365,18 +367,18 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
-        $maxlifetime = (int) ini_get('session.gc_maxlifetime');
+        $expiry = time() + (int) ini_get('session.gc_maxlifetime');
 
         try {
             $updateStmt = $this->pdo->prepare(
-                "UPDATE $this->table SET $this->lifetimeCol = :lifetime, $this->timeCol = :time WHERE $this->idCol = :id"
+                "UPDATE $this->table SET $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id"
             );
             $updateStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $updateStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+            $updateStmt->bindParam(':expiry', $expiry, \PDO::PARAM_INT);
             $updateStmt->bindValue(':time', time(), \PDO::PARAM_INT);
             $updateStmt->execute();
         } catch (\PDOException $e) {
@@ -389,7 +391,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -403,14 +405,21 @@ class PdoSessionHandler extends AbstractSessionHandler
             $this->gcCalled = false;
 
             // delete the session records that have expired
+            $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol < :time AND $this->lifetimeCol > :min";
+            $stmt = $this->pdo->prepare($sql);
+            $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
+            $stmt->bindValue(':min', self::MAX_LIFETIME, \PDO::PARAM_INT);
+            $stmt->execute();
+            // to be removed in 6.0
             if ('mysql' === $this->driver) {
-                $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol + $this->timeCol < :time";
+                $legacySql = "DELETE FROM $this->table WHERE $this->lifetimeCol <= :min AND $this->lifetimeCol + $this->timeCol < :time";
             } else {
-                $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol < :time - $this->timeCol";
+                $legacySql = "DELETE FROM $this->table WHERE $this->lifetimeCol <= :min AND $this->lifetimeCol < :time - $this->timeCol";
             }
 
-            $stmt = $this->pdo->prepare($sql);
+            $stmt = $this->pdo->prepare($legacySql);
             $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
+            $stmt->bindValue(':min', self::MAX_LIFETIME, \PDO::PARAM_INT);
             $stmt->execute();
         }
 
@@ -423,10 +432,8 @@ class PdoSessionHandler extends AbstractSessionHandler
 
     /**
      * Lazy-connects to the database.
-     *
-     * @param string $dsn DSN string
      */
-    private function connect($dsn)
+    private function connect(string $dsn): void
     {
         $this->pdo = new \PDO($dsn, $this->username, $this->password, $this->connectionOptions);
         $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
@@ -436,13 +443,9 @@ class PdoSessionHandler extends AbstractSessionHandler
     /**
      * Builds a PDO DSN from a URL-like connection string.
      *
-     * @param string $dsnOrUrl
-     *
-     * @return string
-     *
      * @todo implement missing support for oci DSN (which look totally different from other PDO ones)
      */
-    private function buildDsnFromUrl($dsnOrUrl)
+    private function buildDsnFromUrl(string $dsnOrUrl): string
     {
         // (pdo_)?sqlite3?:///... => (pdo_)?sqlite3?://localhost/... or else the URL will be invalid
         $url = preg_replace('#^((?:pdo_)?sqlite3?):///#', '$1://localhost/', $dsnOrUrl);
@@ -465,7 +468,7 @@ class PdoSessionHandler extends AbstractSessionHandler
         }
 
         if (!isset($params['scheme'])) {
-            throw new \InvalidArgumentException('URLs without scheme are not supported to configure the PdoSessionHandler');
+            throw new \InvalidArgumentException('URLs without scheme are not supported to configure the PdoSessionHandler.');
         }
 
         $driverAliasMap = [
@@ -541,7 +544,7 @@ class PdoSessionHandler extends AbstractSessionHandler
      * due to https://percona.com/blog/2013/12/12/one-more-innodb-gap-lock-to-avoid/ .
      * So we change it to READ COMMITTED.
      */
-    private function beginTransaction()
+    private function beginTransaction(): void
     {
         if (!$this->inTransaction) {
             if ('sqlite' === $this->driver) {
@@ -559,7 +562,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     /**
      * Helper method to commit a transaction.
      */
-    private function commit()
+    private function commit(): void
     {
         if ($this->inTransaction) {
             try {
@@ -581,7 +584,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     /**
      * Helper method to rollback a transaction.
      */
-    private function rollback()
+    private function rollback(): void
     {
         // We only need to rollback if we are in a transaction. Otherwise the resulting
         // error would hide the real problem why rollback was called. We might not be
@@ -623,7 +626,12 @@ class PdoSessionHandler extends AbstractSessionHandler
             $sessionRows = $selectStmt->fetchAll(\PDO::FETCH_NUM);
 
             if ($sessionRows) {
-                if ($sessionRows[0][1] + $sessionRows[0][2] < time()) {
+                $expiry = (int) $sessionRows[0][1];
+                if ($expiry <= self::MAX_LIFETIME) {
+                    $expiry += $sessionRows[0][2];
+                }
+
+                if ($expiry < time()) {
                     $this->sessionExpired = true;
 
                     return '';
@@ -637,7 +645,7 @@ class PdoSessionHandler extends AbstractSessionHandler
                 throw new \RuntimeException('Failed to read session: INSERT reported a duplicate id but next SELECT did not return any data.');
             }
 
-            if (!filter_var(ini_get('session.use_strict_mode'), FILTER_VALIDATE_BOOLEAN) && self::LOCK_TRANSACTIONAL === $this->lockMode && 'sqlite' !== $this->driver) {
+            if (!filter_var(ini_get('session.use_strict_mode'), \FILTER_VALIDATE_BOOLEAN) && self::LOCK_TRANSACTIONAL === $this->lockMode && 'sqlite' !== $this->driver) {
                 // In strict mode, session fixation is not possible: new sessions always start with a unique
                 // random id, so that concurrency is not possible and this code path can be skipped.
                 // Exclusive-reading of non-existent rows does not block, so we need to do an insert to block
@@ -676,7 +684,7 @@ class PdoSessionHandler extends AbstractSessionHandler
      *       - for oci using DBMS_LOCK.REQUEST
      *       - for sqlsrv using sp_getapplock with LockOwner = Session
      */
-    private function doAdvisoryLock(string $sessionId)
+    private function doAdvisoryLock(string $sessionId): \PDOStatement
     {
         switch ($this->driver) {
             case 'mysql':
@@ -754,6 +762,7 @@ class PdoSessionHandler extends AbstractSessionHandler
         if (self::LOCK_TRANSACTIONAL === $this->lockMode) {
             $this->beginTransaction();
 
+            // selecting the time column should be removed in 6.0
             switch ($this->driver) {
                 case 'mysql':
                 case 'oci':
@@ -774,32 +783,26 @@ class PdoSessionHandler extends AbstractSessionHandler
 
     /**
      * Returns an insert statement supported by the database for writing session data.
-     *
-     * @param string $sessionId   Session ID
-     * @param string $sessionData Encoded session data
-     * @param int    $maxlifetime session.gc_maxlifetime
-     *
-     * @return \PDOStatement The insert statement
      */
-    private function getInsertStatement($sessionId, $sessionData, $maxlifetime)
+    private function getInsertStatement(string $sessionId, string $sessionData, int $maxlifetime): \PDOStatement
     {
         switch ($this->driver) {
             case 'oci':
                 $data = fopen('php://memory', 'r+');
                 fwrite($data, $sessionData);
                 rewind($data);
-                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, EMPTY_BLOB(), :lifetime, :time) RETURNING $this->dataCol into :data";
+                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, EMPTY_BLOB(), :expiry, :time) RETURNING $this->dataCol into :data";
                 break;
             default:
                 $data = $sessionData;
-                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time)";
+                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)";
                 break;
         }
 
         $stmt = $this->pdo->prepare($sql);
         $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
         $stmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-        $stmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+        $stmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
         $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
 
         return $stmt;
@@ -807,32 +810,26 @@ class PdoSessionHandler extends AbstractSessionHandler
 
     /**
      * Returns an update statement supported by the database for writing session data.
-     *
-     * @param string $sessionId   Session ID
-     * @param string $sessionData Encoded session data
-     * @param int    $maxlifetime session.gc_maxlifetime
-     *
-     * @return \PDOStatement The update statement
      */
-    private function getUpdateStatement($sessionId, $sessionData, $maxlifetime)
+    private function getUpdateStatement(string $sessionId, string $sessionData, int $maxlifetime): \PDOStatement
     {
         switch ($this->driver) {
             case 'oci':
                 $data = fopen('php://memory', 'r+');
                 fwrite($data, $sessionData);
                 rewind($data);
-                $sql = "UPDATE $this->table SET $this->dataCol = EMPTY_BLOB(), $this->lifetimeCol = :lifetime, $this->timeCol = :time WHERE $this->idCol = :id RETURNING $this->dataCol into :data";
+                $sql = "UPDATE $this->table SET $this->dataCol = EMPTY_BLOB(), $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id RETURNING $this->dataCol into :data";
                 break;
             default:
                 $data = $sessionData;
-                $sql = "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :lifetime, $this->timeCol = :time WHERE $this->idCol = :id";
+                $sql = "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id";
                 break;
         }
 
         $stmt = $this->pdo->prepare($sql);
         $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
         $stmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-        $stmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+        $stmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
         $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
 
         return $stmt;
@@ -845,7 +842,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     {
         switch (true) {
             case 'mysql' === $this->driver:
-                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time) ".
+                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time) ".
                     "ON DUPLICATE KEY UPDATE $this->dataCol = VALUES($this->dataCol), $this->lifetimeCol = VALUES($this->lifetimeCol), $this->timeCol = VALUES($this->timeCol)";
                 break;
             case 'sqlsrv' === $this->driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '10', '>='):
@@ -856,10 +853,10 @@ class PdoSessionHandler extends AbstractSessionHandler
                     "WHEN MATCHED THEN UPDATE SET $this->dataCol = ?, $this->lifetimeCol = ?, $this->timeCol = ?;";
                 break;
             case 'sqlite' === $this->driver:
-                $mergeSql = "INSERT OR REPLACE INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time)";
+                $mergeSql = "INSERT OR REPLACE INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)";
                 break;
             case 'pgsql' === $this->driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '9.5', '>='):
-                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time) ".
+                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time) ".
                     "ON CONFLICT ($this->idCol) DO UPDATE SET ($this->dataCol, $this->lifetimeCol, $this->timeCol) = (EXCLUDED.$this->dataCol, EXCLUDED.$this->lifetimeCol, EXCLUDED.$this->timeCol)";
                 break;
             default:
@@ -873,15 +870,15 @@ class PdoSessionHandler extends AbstractSessionHandler
             $mergeStmt->bindParam(1, $sessionId, \PDO::PARAM_STR);
             $mergeStmt->bindParam(2, $sessionId, \PDO::PARAM_STR);
             $mergeStmt->bindParam(3, $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindParam(4, $maxlifetime, \PDO::PARAM_INT);
+            $mergeStmt->bindValue(4, time() + $maxlifetime, \PDO::PARAM_INT);
             $mergeStmt->bindValue(5, time(), \PDO::PARAM_INT);
             $mergeStmt->bindParam(6, $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindParam(7, $maxlifetime, \PDO::PARAM_INT);
+            $mergeStmt->bindValue(7, time() + $maxlifetime, \PDO::PARAM_INT);
             $mergeStmt->bindValue(8, time(), \PDO::PARAM_INT);
         } else {
             $mergeStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
             $mergeStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+            $mergeStmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
             $mergeStmt->bindValue(':time', time(), \PDO::PARAM_INT);
         }
 
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
index 46ca6796d8ebba99e1b1c054701f715ca5711cf9..699d6da6f65efa5b5931b23bedfad3243ffd04f3 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
@@ -30,12 +30,17 @@ class RedisSessionHandler extends AbstractSessionHandler
      */
     private $prefix;
 
+    /**
+     * @var int Time to live in seconds
+     */
+    private $ttl;
+
     /**
      * List of available options:
-     *  * prefix: The prefix to use for the keys in order to avoid collision on the Redis server.
+     *  * prefix: The prefix to use for the keys in order to avoid collision on the Redis server
+     *  * ttl: The time to live in seconds.
      *
-     * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface|RedisProxy $redis
-     * @param array                                                               $options An associative array of options
+     * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface|RedisProxy|RedisClusterProxy $redis
      *
      * @throws \InvalidArgumentException When unsupported client or options are passed
      */
@@ -49,15 +54,16 @@ class RedisSessionHandler extends AbstractSessionHandler
             !$redis instanceof RedisProxy &&
             !$redis instanceof RedisClusterProxy
         ) {
-            throw new \InvalidArgumentException(sprintf('%s() expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, %s given', __METHOD__, \is_object($redis) ? \get_class($redis) : \gettype($redis)));
+            throw new \InvalidArgumentException(sprintf('"%s()" expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, "%s" given.', __METHOD__, \is_object($redis) ? \get_class($redis) : \gettype($redis)));
         }
 
-        if ($diff = array_diff(array_keys($options), ['prefix'])) {
-            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s"', implode(', ', $diff)));
+        if ($diff = array_diff(array_keys($options), ['prefix', 'ttl'])) {
+            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff)));
         }
 
         $this->redis = $redis;
         $this->prefix = $options['prefix'] ?? 'sf_s';
+        $this->ttl = $options['ttl'] ?? null;
     }
 
     /**
@@ -73,7 +79,7 @@ class RedisSessionHandler extends AbstractSessionHandler
      */
     protected function doWrite($sessionId, $data): bool
     {
-        $result = $this->redis->setEx($this->prefix.$sessionId, (int) ini_get('session.gc_maxlifetime'), $data);
+        $result = $this->redis->setEx($this->prefix.$sessionId, (int) ($this->ttl ?? ini_get('session.gc_maxlifetime')), $data);
 
         return $result && !$result instanceof ErrorInterface;
     }
@@ -105,10 +111,10 @@ class RedisSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
-        return (bool) $this->redis->expire($this->prefix.$sessionId, (int) ini_get('session.gc_maxlifetime'));
+        return (bool) $this->redis->expire($this->prefix.$sessionId, (int) ($this->ttl ?? ini_get('session.gc_maxlifetime')));
     }
 }
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
index fab8e9a16d8d96a2e477cd52bcccc44e42e21d3d..3144ea597ea6b4d3a6b76949179ac4a8341f2314 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
@@ -31,7 +31,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -49,7 +49,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
@@ -65,7 +65,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
@@ -86,7 +86,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
index 2eff4109b43ab7ac77d2f116f5b457337fa7f906..5fe40fc1061837d4ce3b3110d4c559580d6d3750 100644
--- a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
+++ b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
@@ -159,7 +159,7 @@ class MetadataBag implements SessionBagInterface
         $this->name = $name;
     }
 
-    private function stampCreated($lifetime = null)
+    private function stampCreated(int $lifetime = null): void
     {
         $timeStamp = time();
         $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
index 37b6f145b87cc60d81f86ac25c389b898442915d..db8f85e75d1793ce0b50614937eac79b5041843f 100644
--- a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
@@ -148,7 +148,7 @@ class MockArraySessionStorage implements SessionStorageInterface
     public function save()
     {
         if (!$this->started || $this->closed) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed');
+            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.');
         }
         // nothing to do since we don't persist the session data
         $this->closed = false;
@@ -186,7 +186,7 @@ class MockArraySessionStorage implements SessionStorageInterface
     public function getBag($name)
     {
         if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name));
+            throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name));
         }
 
         if (!$this->started) {
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
index c0316c2c74e7c1f3753da2ae5acdb21ebfc7fd9d..c96b3cd9dc5684a151c0f7a79feb6d267684cf37 100644
--- a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
@@ -27,9 +27,8 @@ class MockFileSessionStorage extends MockArraySessionStorage
     private $savePath;
 
     /**
-     * @param string      $savePath Path of directory to save session files
-     * @param string      $name     Session name
-     * @param MetadataBag $metaBag  MetadataBag instance
+     * @param string $savePath Path of directory to save session files
+     * @param string $name     Session name
      */
     public function __construct(string $savePath = null, string $name = 'MOCKSESSID', MetadataBag $metaBag = null)
     {
@@ -38,7 +37,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
         }
 
         if (!is_dir($savePath) && !@mkdir($savePath, 0777, true) && !is_dir($savePath)) {
-            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s"', $savePath));
+            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $savePath));
         }
 
         $this->savePath = $savePath;
@@ -88,7 +87,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
     public function save()
     {
         if (!$this->started) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed');
+            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.');
         }
 
         $data = $this->data;
@@ -122,7 +121,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
      * Deletes a session from persistent storage.
      * Deliberately leaves session data in memory intact.
      */
-    private function destroy()
+    private function destroy(): void
     {
         if (is_file($this->getFilePath())) {
             unlink($this->getFilePath());
@@ -131,10 +130,8 @@ class MockFileSessionStorage extends MockArraySessionStorage
 
     /**
      * Calculate path to file.
-     *
-     * @return string File path
      */
-    private function getFilePath()
+    private function getFilePath(): string
     {
         return $this->savePath.'/'.$this->id.'.mocksess';
     }
@@ -142,7 +139,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
     /**
      * Reads session from storage and loads session.
      */
-    private function read()
+    private function read(): void
     {
         $filePath = $this->getFilePath();
         $this->data = is_readable($filePath) && is_file($filePath) ? unserialize(file_get_contents($filePath)) : [];
diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
index 202f3a5a6a166db1362ddf3043eedf46025fd841..e1da95509e1e66fa6318d5a39463f5ed5f2e18fb 100644
--- a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
@@ -17,6 +17,11 @@ use Symfony\Component\HttpFoundation\Session\Storage\Handler\StrictSessionHandle
 use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
 use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(MetadataBag::class);
+class_exists(StrictSessionHandler::class);
+class_exists(SessionHandlerProxy::class);
+
 /**
  * This provides a base class for session attribute storage.
  *
@@ -97,9 +102,7 @@ class NativeSessionStorage implements SessionStorageInterface
      * trans_sid_hosts, $_SERVER['HTTP_HOST']
      * trans_sid_tags, "a=href,area=href,frame=src,form="
      *
-     * @param array                         $options Session configuration options
-     * @param \SessionHandlerInterface|null $handler
-     * @param MetadataBag                   $metaBag MetadataBag
+     * @param AbstractProxy|\SessionHandlerInterface|null $handler
      */
     public function __construct(array $options = [], $handler = null, MetadataBag $metaBag = null)
     {
@@ -145,13 +148,13 @@ class NativeSessionStorage implements SessionStorageInterface
             throw new \RuntimeException('Failed to start the session: already started by PHP.');
         }
 
-        if (filter_var(ini_get('session.use_cookies'), FILTER_VALIDATE_BOOLEAN) && headers_sent($file, $line)) {
+        if (filter_var(ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOLEAN) && headers_sent($file, $line)) {
             throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line));
         }
 
         // ok to try and start the session
         if (!session_start()) {
-            throw new \RuntimeException('Failed to start the session');
+            throw new \RuntimeException('Failed to start the session.');
         }
 
         if (null !== $this->emulateSameSite) {
@@ -212,8 +215,10 @@ class NativeSessionStorage implements SessionStorageInterface
             return false;
         }
 
-        if (null !== $lifetime) {
+        if (null !== $lifetime && $lifetime != ini_get('session.cookie_lifetime')) {
+            $this->save();
             ini_set('session.cookie_lifetime', $lifetime);
+            $this->start();
         }
 
         if ($destroy) {
@@ -222,10 +227,6 @@ class NativeSessionStorage implements SessionStorageInterface
 
         $isRegenerated = session_regenerate_id($destroy);
 
-        // The reference to $_SESSION in session bags is lost in PHP7 and we need to re-create it.
-        // @see https://bugs.php.net/70013
-        $this->loadSession();
-
         if (null !== $this->emulateSameSite) {
             $originalCookie = SessionUtils::popSessionCookie(session_name(), session_id());
             if (null !== $originalCookie) {
@@ -255,7 +256,7 @@ class NativeSessionStorage implements SessionStorageInterface
 
         // Register error handler to add information about the current save handler
         $previousHandler = set_error_handler(function ($type, $msg, $file, $line) use (&$previousHandler) {
-            if (E_WARNING === $type && 0 === strpos($msg, 'session_write_close():')) {
+            if (\E_WARNING === $type && 0 === strpos($msg, 'session_write_close():')) {
                 $handler = $this->saveHandler instanceof SessionHandlerProxy ? $this->saveHandler->getHandler() : $this->saveHandler;
                 $msg = sprintf('session_write_close(): Failed to write session data with "%s" handler', \get_class($handler));
             }
@@ -313,7 +314,7 @@ class NativeSessionStorage implements SessionStorageInterface
     public function getBag($name)
     {
         if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name));
+            throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name));
         }
 
         if (!$this->started && $this->saveHandler->isActive()) {
@@ -403,15 +404,13 @@ class NativeSessionStorage implements SessionStorageInterface
      *     ini_set('session.save_path', '/tmp');
      *
      * or pass in a \SessionHandler instance which configures session.save_handler in the
-     * constructor, for a template see NativeFileSessionHandler or use handlers in
-     * composer package drak/native-session
+     * constructor, for a template see NativeFileSessionHandler.
      *
      * @see https://php.net/session-set-save-handler
      * @see https://php.net/sessionhandlerinterface
      * @see https://php.net/sessionhandler
-     * @see https://github.com/zikula/NativeSession
      *
-     * @param \SessionHandlerInterface|null $saveHandler
+     * @param AbstractProxy|\SessionHandlerInterface|null $saveHandler
      *
      * @throws \InvalidArgumentException
      */
diff --git a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
index 8969e609aaf95782deae4c56617650e4eb0b9a68..72dbef134671b8331b3c69e209ad0dd58387de37 100644
--- a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\HttpFoundation\Session\Storage;
 
+use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
+
 /**
  * Allows session to be started by PHP and managed by Symfony.
  *
@@ -19,8 +21,7 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
 class PhpBridgeSessionStorage extends NativeSessionStorage
 {
     /**
-     * @param \SessionHandlerInterface|null $handler
-     * @param MetadataBag                   $metaBag MetadataBag
+     * @param AbstractProxy|\SessionHandlerInterface|null $handler
      */
     public function __construct($handler = null, MetadataBag $metaBag = null)
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
index 0303729e7b387b0b5b60dfa3a077cc54cf850836..9e1c94ddf6c6489072b7544c9c749ac3383513fe 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
@@ -88,7 +88,7 @@ abstract class AbstractProxy
     public function setId($id)
     {
         if ($this->isActive()) {
-            throw new \LogicException('Cannot change the ID of an active session');
+            throw new \LogicException('Cannot change the ID of an active session.');
         }
 
         session_id($id);
@@ -114,7 +114,7 @@ abstract class AbstractProxy
     public function setName($name)
     {
         if ($this->isActive()) {
-            throw new \LogicException('Cannot change the name of an active session');
+            throw new \LogicException('Cannot change the name of an active session.');
         }
 
         session_name($name);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
index e40712d93f637144c482d7a3da9aa24a93eb9201..de4f550badbc5576166d1c585d6b20863fee68ac 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
@@ -36,7 +36,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     // \SessionHandlerInterface
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -44,7 +44,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -52,7 +52,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -60,7 +60,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function write($sessionId, $data)
     {
@@ -68,7 +68,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
@@ -84,7 +84,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
@@ -92,7 +92,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
diff --git a/vendor/symfony/http-foundation/StreamedResponse.php b/vendor/symfony/http-foundation/StreamedResponse.php
index bfbcae9a53769e61e60521df14bcb84798ae629b..ef8095bbe22e60ba8163a42306ac3db60c2efd5b 100644
--- a/vendor/symfony/http-foundation/StreamedResponse.php
+++ b/vendor/symfony/http-foundation/StreamedResponse.php
@@ -63,8 +63,6 @@ class StreamedResponse extends Response
     /**
      * Sets the PHP callback associated with this Response.
      *
-     * @param callable $callback A valid PHP callback
-     *
      * @return $this
      */
     public function setCallback(callable $callback)
diff --git a/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php b/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
index 2d105627860ef6970f607a21988eab2e433b1d3f..cb216ea12a6a41a58f7359e61f13daec0804c9d2 100644
--- a/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
+++ b/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpFoundation\Test\Constraint;
 
 use PHPUnit\Framework\Constraint\Constraint;
+use Symfony\Component\HttpFoundation\Request;
 
 final class RequestAttributeValueSame extends Constraint
 {
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
index bd792b0d876b2b7bdeb923b309cc41d28da5f638..eae9e271bc74bda5312165506b150ebfcf2b51ce 100644
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
+++ b/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
@@ -64,7 +64,7 @@ final class ResponseHasCookie extends Constraint
         return 'the Response '.$this->toString();
     }
 
-    protected function getCookie(Response $response): ?Cookie
+    private function getCookie(Response $response): ?Cookie
     {
         $cookies = $response->headers->getCookies();
 
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
index acdea71d154ec8f72acc8df98bdea6cb89a0f115..a27d0c73fded6ff79759663062a7d4f5fac7e882 100644
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
+++ b/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
@@ -40,7 +40,7 @@ final class ResponseHeaderSame extends Constraint
      */
     protected function matches($response): bool
     {
-        return $this->expectedValue === $response->headers->get($this->headerName, null, true);
+        return $this->expectedValue === $response->headers->get($this->headerName, null);
     }
 
     /**
diff --git a/vendor/symfony/http-foundation/Tests/AcceptHeaderItemTest.php b/vendor/symfony/http-foundation/Tests/AcceptHeaderItemTest.php
deleted file mode 100644
index 516bd5551a0f34e816e0ef739e9ad271669b4924..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/AcceptHeaderItemTest.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\AcceptHeaderItem;
-
-class AcceptHeaderItemTest extends TestCase
-{
-    /**
-     * @dataProvider provideFromStringData
-     */
-    public function testFromString($string, $value, array $attributes)
-    {
-        $item = AcceptHeaderItem::fromString($string);
-        $this->assertEquals($value, $item->getValue());
-        $this->assertEquals($attributes, $item->getAttributes());
-    }
-
-    public function provideFromStringData()
-    {
-        return [
-            [
-                'text/html',
-                'text/html', [],
-            ],
-            [
-                '"this;should,not=matter"',
-                'this;should,not=matter', [],
-            ],
-            [
-                "text/plain; charset=utf-8;param=\"this;should,not=matter\";\tfootnotes=true",
-                'text/plain', ['charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true'],
-            ],
-            [
-                '"this;should,not=matter";charset=utf-8',
-                'this;should,not=matter', ['charset' => 'utf-8'],
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider provideToStringData
-     */
-    public function testToString($value, array $attributes, $string)
-    {
-        $item = new AcceptHeaderItem($value, $attributes);
-        $this->assertEquals($string, (string) $item);
-    }
-
-    public function provideToStringData()
-    {
-        return [
-            [
-                'text/html', [],
-                'text/html',
-            ],
-            [
-                'text/plain', ['charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true'],
-                'text/plain; charset=utf-8; param="this;should,not=matter"; footnotes=true',
-            ],
-        ];
-    }
-
-    public function testValue()
-    {
-        $item = new AcceptHeaderItem('value', []);
-        $this->assertEquals('value', $item->getValue());
-
-        $item->setValue('new value');
-        $this->assertEquals('new value', $item->getValue());
-
-        $item->setValue(1);
-        $this->assertEquals('1', $item->getValue());
-    }
-
-    public function testQuality()
-    {
-        $item = new AcceptHeaderItem('value', []);
-        $this->assertEquals(1.0, $item->getQuality());
-
-        $item->setQuality(0.5);
-        $this->assertEquals(0.5, $item->getQuality());
-
-        $item->setAttribute('q', 0.75);
-        $this->assertEquals(0.75, $item->getQuality());
-        $this->assertFalse($item->hasAttribute('q'));
-    }
-
-    public function testAttribute()
-    {
-        $item = new AcceptHeaderItem('value', []);
-        $this->assertEquals([], $item->getAttributes());
-        $this->assertFalse($item->hasAttribute('test'));
-        $this->assertNull($item->getAttribute('test'));
-        $this->assertEquals('default', $item->getAttribute('test', 'default'));
-
-        $item->setAttribute('test', 'value');
-        $this->assertEquals(['test' => 'value'], $item->getAttributes());
-        $this->assertTrue($item->hasAttribute('test'));
-        $this->assertEquals('value', $item->getAttribute('test'));
-        $this->assertEquals('value', $item->getAttribute('test', 'default'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/AcceptHeaderTest.php b/vendor/symfony/http-foundation/Tests/AcceptHeaderTest.php
deleted file mode 100644
index 1987e97fb8bc7296f0549d31487e9a5efeecb5bc..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/AcceptHeaderTest.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\AcceptHeader;
-use Symfony\Component\HttpFoundation\AcceptHeaderItem;
-
-class AcceptHeaderTest extends TestCase
-{
-    public function testFirst()
-    {
-        $header = AcceptHeader::fromString('text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c');
-        $this->assertSame('text/html', $header->first()->getValue());
-    }
-
-    /**
-     * @dataProvider provideFromStringData
-     */
-    public function testFromString($string, array $items)
-    {
-        $header = AcceptHeader::fromString($string);
-        $parsed = array_values($header->all());
-        // reset index since the fixtures don't have them set
-        foreach ($parsed as $item) {
-            $item->setIndex(0);
-        }
-        $this->assertEquals($items, $parsed);
-    }
-
-    public function provideFromStringData()
-    {
-        return [
-            ['', []],
-            ['gzip', [new AcceptHeaderItem('gzip')]],
-            ['gzip,deflate,sdch', [new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')]],
-            ["gzip, deflate\t,sdch", [new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')]],
-            ['"this;should,not=matter"', [new AcceptHeaderItem('this;should,not=matter')]],
-        ];
-    }
-
-    /**
-     * @dataProvider provideToStringData
-     */
-    public function testToString(array $items, $string)
-    {
-        $header = new AcceptHeader($items);
-        $this->assertEquals($string, (string) $header);
-    }
-
-    public function provideToStringData()
-    {
-        return [
-            [[], ''],
-            [[new AcceptHeaderItem('gzip')], 'gzip'],
-            [[new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')], 'gzip,deflate,sdch'],
-            [[new AcceptHeaderItem('this;should,not=matter')], 'this;should,not=matter'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideFilterData
-     */
-    public function testFilter($string, $filter, array $values)
-    {
-        $header = AcceptHeader::fromString($string)->filter($filter);
-        $this->assertEquals($values, array_keys($header->all()));
-    }
-
-    public function provideFilterData()
-    {
-        return [
-            ['fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4', '/fr.*/', ['fr-FR', 'fr']],
-        ];
-    }
-
-    /**
-     * @dataProvider provideSortingData
-     */
-    public function testSorting($string, array $values)
-    {
-        $header = AcceptHeader::fromString($string);
-        $this->assertEquals($values, array_keys($header->all()));
-    }
-
-    public function provideSortingData()
-    {
-        return [
-            'quality has priority' => ['*;q=0.3,ISO-8859-1,utf-8;q=0.7', ['ISO-8859-1', 'utf-8', '*']],
-            'order matters when q is equal' => ['*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7', ['ISO-8859-1', 'utf-8', '*']],
-            'order matters when q is equal2' => ['*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', ['utf-8', 'ISO-8859-1', '*']],
-        ];
-    }
-
-    /**
-     * @dataProvider provideDefaultValueData
-     */
-    public function testDefaultValue($acceptHeader, $value, $expectedQuality)
-    {
-        $header = AcceptHeader::fromString($acceptHeader);
-        $this->assertSame($expectedQuality, $header->get($value)->getQuality());
-    }
-
-    public function provideDefaultValueData()
-    {
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, *;q=0.3', 'text/xml', 0.3];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/xml', 0.3];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/html', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/plain', 0.5];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', '*', 0.3];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', '*', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', 'text/xml', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', 'text/*', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/*', 0.8];
-        yield ['text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/html', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/x-dvi', 0.8];
-        yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', '*', 0.3];
-        yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'utf-8', 0.7];
-        yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'SHIFT_JIS', 0.3];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ApacheRequestTest.php b/vendor/symfony/http-foundation/Tests/ApacheRequestTest.php
deleted file mode 100644
index 6fa3b88917055cb1a93fb334dac74fadc54c408a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ApacheRequestTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\ApacheRequest;
-
-class ApacheRequestTest extends TestCase
-{
-    /**
-     * @dataProvider provideServerVars
-     */
-    public function testUriMethods($server, $expectedRequestUri, $expectedBaseUrl, $expectedPathInfo)
-    {
-        $request = new ApacheRequest();
-        $request->server->replace($server);
-
-        $this->assertEquals($expectedRequestUri, $request->getRequestUri(), '->getRequestUri() is correct');
-        $this->assertEquals($expectedBaseUrl, $request->getBaseUrl(), '->getBaseUrl() is correct');
-        $this->assertEquals($expectedPathInfo, $request->getPathInfo(), '->getPathInfo() is correct');
-    }
-
-    public function provideServerVars()
-    {
-        return [
-            [
-                [
-                    'REQUEST_URI' => '/foo/app_dev.php/bar',
-                    'SCRIPT_NAME' => '/foo/app_dev.php',
-                    'PATH_INFO' => '/bar',
-                ],
-                '/foo/app_dev.php/bar',
-                '/foo/app_dev.php',
-                '/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/foo/bar',
-                    'SCRIPT_NAME' => '/foo/app_dev.php',
-                ],
-                '/foo/bar',
-                '/foo',
-                '/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/app_dev.php/foo/bar',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                    'PATH_INFO' => '/foo/bar',
-                ],
-                '/app_dev.php/foo/bar',
-                '/app_dev.php',
-                '/foo/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/foo/bar',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                ],
-                '/foo/bar',
-                '',
-                '/foo/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/app_dev.php',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                ],
-                '/app_dev.php',
-                '/app_dev.php',
-                '/',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                ],
-                '/',
-                '',
-                '/',
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php b/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
deleted file mode 100644
index 734f8e84545b494239b5efd8992c3e18a0c523ba..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
+++ /dev/null
@@ -1,365 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use Symfony\Component\HttpFoundation\BinaryFileResponse;
-use Symfony\Component\HttpFoundation\File\Stream;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\ResponseHeaderBag;
-use Symfony\Component\HttpFoundation\Tests\File\FakeFile;
-
-class BinaryFileResponseTest extends ResponseTestCase
-{
-    public function testConstruction()
-    {
-        $file = __DIR__.'/../README.md';
-        $response = new BinaryFileResponse($file, 404, ['X-Header' => 'Foo'], true, null, true, true);
-        $this->assertEquals(404, $response->getStatusCode());
-        $this->assertEquals('Foo', $response->headers->get('X-Header'));
-        $this->assertTrue($response->headers->has('ETag'));
-        $this->assertTrue($response->headers->has('Last-Modified'));
-        $this->assertFalse($response->headers->has('Content-Disposition'));
-
-        $response = BinaryFileResponse::create($file, 404, [], true, ResponseHeaderBag::DISPOSITION_INLINE);
-        $this->assertEquals(404, $response->getStatusCode());
-        $this->assertFalse($response->headers->has('ETag'));
-        $this->assertEquals('inline; filename=README.md', $response->headers->get('Content-Disposition'));
-    }
-
-    public function testConstructWithNonAsciiFilename()
-    {
-        touch(sys_get_temp_dir().'/fööö.html');
-
-        $response = new BinaryFileResponse(sys_get_temp_dir().'/fööö.html', 200, [], true, 'attachment');
-
-        @unlink(sys_get_temp_dir().'/fööö.html');
-
-        $this->assertSame('fööö.html', $response->getFile()->getFilename());
-    }
-
-    public function testSetContent()
-    {
-        $this->expectException('LogicException');
-        $response = new BinaryFileResponse(__FILE__);
-        $response->setContent('foo');
-    }
-
-    public function testGetContent()
-    {
-        $response = new BinaryFileResponse(__FILE__);
-        $this->assertFalse($response->getContent());
-    }
-
-    public function testSetContentDispositionGeneratesSafeFallbackFilename()
-    {
-        $response = new BinaryFileResponse(__FILE__);
-        $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'föö.html');
-
-        $this->assertSame('attachment; filename=f__.html; filename*=utf-8\'\'f%C3%B6%C3%B6.html', $response->headers->get('Content-Disposition'));
-    }
-
-    public function testSetContentDispositionGeneratesSafeFallbackFilenameForWronglyEncodedFilename()
-    {
-        $response = new BinaryFileResponse(__FILE__);
-
-        $iso88591EncodedFilename = utf8_decode('föö.html');
-        $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $iso88591EncodedFilename);
-
-        // the parameter filename* is invalid in this case (rawurldecode('f%F6%F6') does not provide a UTF-8 string but an ISO-8859-1 encoded one)
-        $this->assertSame('attachment; filename=f__.html; filename*=utf-8\'\'f%F6%F6.html', $response->headers->get('Content-Disposition'));
-    }
-
-    /**
-     * @dataProvider provideRanges
-     */
-    public function testRequests($requestRange, $offset, $length, $responseRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'])->setAutoEtag();
-
-        // do a request to get the ETag
-        $request = Request::create('/');
-        $response->prepare($request);
-        $etag = $response->headers->get('ETag');
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('If-Range', $etag);
-        $request->headers->set('Range', $requestRange);
-
-        $file = fopen(__DIR__.'/File/Fixtures/test.gif', 'r');
-        fseek($file, $offset);
-        $data = fread($file, $length);
-        fclose($file);
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(206, $response->getStatusCode());
-        $this->assertEquals($responseRange, $response->headers->get('Content-Range'));
-        $this->assertSame((string) $length, $response->headers->get('Content-Length'));
-    }
-
-    /**
-     * @dataProvider provideRanges
-     */
-    public function testRequestsWithoutEtag($requestRange, $offset, $length, $responseRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream']);
-
-        // do a request to get the LastModified
-        $request = Request::create('/');
-        $response->prepare($request);
-        $lastModified = $response->headers->get('Last-Modified');
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('If-Range', $lastModified);
-        $request->headers->set('Range', $requestRange);
-
-        $file = fopen(__DIR__.'/File/Fixtures/test.gif', 'r');
-        fseek($file, $offset);
-        $data = fread($file, $length);
-        fclose($file);
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(206, $response->getStatusCode());
-        $this->assertEquals($responseRange, $response->headers->get('Content-Range'));
-    }
-
-    public function provideRanges()
-    {
-        return [
-            ['bytes=1-4', 1, 4, 'bytes 1-4/35'],
-            ['bytes=-5', 30, 5, 'bytes 30-34/35'],
-            ['bytes=30-', 30, 5, 'bytes 30-34/35'],
-            ['bytes=30-30', 30, 1, 'bytes 30-30/35'],
-            ['bytes=30-34', 30, 5, 'bytes 30-34/35'],
-        ];
-    }
-
-    public function testRangeRequestsWithoutLastModifiedDate()
-    {
-        // prevent auto last modified
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'], true, null, false, false);
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('If-Range', date('D, d M Y H:i:s').' GMT');
-        $request->headers->set('Range', 'bytes=1-4');
-
-        $this->expectOutputString(file_get_contents(__DIR__.'/File/Fixtures/test.gif'));
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(200, $response->getStatusCode());
-        $this->assertNull($response->headers->get('Content-Range'));
-    }
-
-    /**
-     * @dataProvider provideFullFileRanges
-     */
-    public function testFullFileRequests($requestRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'])->setAutoEtag();
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('Range', $requestRange);
-
-        $file = fopen(__DIR__.'/File/Fixtures/test.gif', 'r');
-        $data = fread($file, 35);
-        fclose($file);
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(200, $response->getStatusCode());
-    }
-
-    public function provideFullFileRanges()
-    {
-        return [
-            ['bytes=0-'],
-            ['bytes=0-34'],
-            ['bytes=-35'],
-            // Syntactical invalid range-request should also return the full resource
-            ['bytes=20-10'],
-            ['bytes=50-40'],
-        ];
-    }
-
-    public function testUnpreparedResponseSendsFullFile()
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200);
-
-        $data = file_get_contents(__DIR__.'/File/Fixtures/test.gif');
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->sendContent();
-
-        $this->assertEquals(200, $response->getStatusCode());
-    }
-
-    /**
-     * @dataProvider provideInvalidRanges
-     */
-    public function testInvalidRequests($requestRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'])->setAutoEtag();
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('Range', $requestRange);
-
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(416, $response->getStatusCode());
-        $this->assertEquals('bytes */35', $response->headers->get('Content-Range'));
-    }
-
-    public function provideInvalidRanges()
-    {
-        return [
-            ['bytes=-40'],
-            ['bytes=30-40'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideXSendfileFiles
-     */
-    public function testXSendfile($file)
-    {
-        $request = Request::create('/');
-        $request->headers->set('X-Sendfile-Type', 'X-Sendfile');
-
-        BinaryFileResponse::trustXSendfileTypeHeader();
-        $response = BinaryFileResponse::create($file, 200, ['Content-Type' => 'application/octet-stream']);
-        $response->prepare($request);
-
-        $this->expectOutputString('');
-        $response->sendContent();
-
-        $this->assertStringContainsString('README.md', $response->headers->get('X-Sendfile'));
-    }
-
-    public function provideXSendfileFiles()
-    {
-        return [
-            [__DIR__.'/../README.md'],
-            ['file://'.__DIR__.'/../README.md'],
-        ];
-    }
-
-    /**
-     * @dataProvider getSampleXAccelMappings
-     */
-    public function testXAccelMapping($realpath, $mapping, $virtual)
-    {
-        $request = Request::create('/');
-        $request->headers->set('X-Sendfile-Type', 'X-Accel-Redirect');
-        $request->headers->set('X-Accel-Mapping', $mapping);
-
-        $file = new FakeFile($realpath, __DIR__.'/File/Fixtures/test');
-
-        BinaryFileResponse::trustXSendfileTypeHeader();
-        $response = new BinaryFileResponse($file, 200, ['Content-Type' => 'application/octet-stream']);
-        $reflection = new \ReflectionObject($response);
-        $property = $reflection->getProperty('file');
-        $property->setAccessible(true);
-        $property->setValue($response, $file);
-
-        $response->prepare($request);
-        $this->assertEquals($virtual, $response->headers->get('X-Accel-Redirect'));
-    }
-
-    public function testDeleteFileAfterSend()
-    {
-        $request = Request::create('/');
-
-        $path = __DIR__.'/File/Fixtures/to_delete';
-        touch($path);
-        $realPath = realpath($path);
-        $this->assertFileExists($realPath);
-
-        $response = new BinaryFileResponse($realPath, 200, ['Content-Type' => 'application/octet-stream']);
-        $response->deleteFileAfterSend(true);
-
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertFileNotExists($path);
-    }
-
-    public function testAcceptRangeOnUnsafeMethods()
-    {
-        $request = Request::create('/', 'POST');
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream']);
-        $response->prepare($request);
-
-        $this->assertEquals('none', $response->headers->get('Accept-Ranges'));
-    }
-
-    public function testAcceptRangeNotOverriden()
-    {
-        $request = Request::create('/', 'POST');
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream']);
-        $response->headers->set('Accept-Ranges', 'foo');
-        $response->prepare($request);
-
-        $this->assertEquals('foo', $response->headers->get('Accept-Ranges'));
-    }
-
-    public function getSampleXAccelMappings()
-    {
-        return [
-            ['/var/www/var/www/files/foo.txt', '/var/www/=/files/', '/files/var/www/files/foo.txt'],
-            ['/home/Foo/bar.txt', '/var/www/=/files/,/home/Foo/=/baz/', '/baz/bar.txt'],
-            ['/home/Foo/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', '/baz/bar.txt'],
-            ['/tmp/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', null],
-        ];
-    }
-
-    public function testStream()
-    {
-        $request = Request::create('/');
-        $response = new BinaryFileResponse(new Stream(__DIR__.'/../README.md'), 200, ['Content-Type' => 'text/plain']);
-        $response->prepare($request);
-
-        $this->assertNull($response->headers->get('Content-Length'));
-    }
-
-    protected function provideResponse()
-    {
-        return new BinaryFileResponse(__DIR__.'/../README.md', 200, ['Content-Type' => 'application/octet-stream']);
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        $path = __DIR__.'/../Fixtures/to_delete';
-        if (file_exists($path)) {
-            @unlink($path);
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/CookieTest.php b/vendor/symfony/http-foundation/Tests/CookieTest.php
deleted file mode 100644
index 55287e082d996657e8960fa5280cbee17d77410e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/CookieTest.php
+++ /dev/null
@@ -1,264 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Cookie;
-
-/**
- * CookieTest.
- *
- * @author John Kary <john@johnkary.net>
- * @author Hugo Hamon <hugo.hamon@sensio.com>
- *
- * @group time-sensitive
- */
-class CookieTest extends TestCase
-{
-    public function namesWithSpecialCharacters()
-    {
-        return [
-            [',MyName'],
-            [';MyName'],
-            [' MyName'],
-            ["\tMyName"],
-            ["\rMyName"],
-            ["\nMyName"],
-            ["\013MyName"],
-            ["\014MyName"],
-        ];
-    }
-
-    /**
-     * @dataProvider namesWithSpecialCharacters
-     */
-    public function testInstantiationThrowsExceptionIfRawCookieNameContainsSpecialCharacters($name)
-    {
-        $this->expectException('InvalidArgumentException');
-        Cookie::create($name, null, 0, null, null, null, false, true);
-    }
-
-    /**
-     * @dataProvider namesWithSpecialCharacters
-     */
-    public function testInstantiationSucceedNonRawCookieNameContainsSpecialCharacters($name)
-    {
-        $this->assertInstanceOf(Cookie::class, Cookie::create($name));
-    }
-
-    public function testInstantiationThrowsExceptionIfCookieNameIsEmpty()
-    {
-        $this->expectException('InvalidArgumentException');
-        Cookie::create('');
-    }
-
-    public function testInvalidExpiration()
-    {
-        $this->expectException('InvalidArgumentException');
-        Cookie::create('MyCookie', 'foo', 'bar');
-    }
-
-    public function testNegativeExpirationIsNotPossible()
-    {
-        $cookie = Cookie::create('foo', 'bar', -100);
-
-        $this->assertSame(0, $cookie->getExpiresTime());
-    }
-
-    public function testGetValue()
-    {
-        $value = 'MyValue';
-        $cookie = Cookie::create('MyCookie', $value);
-
-        $this->assertSame($value, $cookie->getValue(), '->getValue() returns the proper value');
-    }
-
-    public function testGetPath()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertSame('/', $cookie->getPath(), '->getPath() returns / as the default path');
-    }
-
-    public function testGetExpiresTime()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertEquals(0, $cookie->getExpiresTime(), '->getExpiresTime() returns the default expire date');
-
-        $cookie = Cookie::create('foo', 'bar', $expire = time() + 3600);
-
-        $this->assertEquals($expire, $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date');
-    }
-
-    public function testGetExpiresTimeIsCastToInt()
-    {
-        $cookie = Cookie::create('foo', 'bar', 3600.9);
-
-        $this->assertSame(3600, $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date as an integer');
-    }
-
-    public function testConstructorWithDateTime()
-    {
-        $expire = new \DateTime();
-        $cookie = Cookie::create('foo', 'bar', $expire);
-
-        $this->assertEquals($expire->format('U'), $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date');
-    }
-
-    public function testConstructorWithDateTimeImmutable()
-    {
-        $expire = new \DateTimeImmutable();
-        $cookie = Cookie::create('foo', 'bar', $expire);
-
-        $this->assertEquals($expire->format('U'), $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date');
-    }
-
-    public function testGetExpiresTimeWithStringValue()
-    {
-        $value = '+1 day';
-        $cookie = Cookie::create('foo', 'bar', $value);
-        $expire = strtotime($value);
-
-        $this->assertEqualsWithDelta($expire, $cookie->getExpiresTime(), 1, '->getExpiresTime() returns the expire date');
-    }
-
-    public function testGetDomain()
-    {
-        $cookie = Cookie::create('foo', 'bar', 0, '/', '.myfoodomain.com');
-
-        $this->assertEquals('.myfoodomain.com', $cookie->getDomain(), '->getDomain() returns the domain name on which the cookie is valid');
-    }
-
-    public function testIsSecure()
-    {
-        $cookie = Cookie::create('foo', 'bar', 0, '/', '.myfoodomain.com', true);
-
-        $this->assertTrue($cookie->isSecure(), '->isSecure() returns whether the cookie is transmitted over HTTPS');
-    }
-
-    public function testIsHttpOnly()
-    {
-        $cookie = Cookie::create('foo', 'bar', 0, '/', '.myfoodomain.com', false, true);
-
-        $this->assertTrue($cookie->isHttpOnly(), '->isHttpOnly() returns whether the cookie is only transmitted over HTTP');
-    }
-
-    public function testCookieIsNotCleared()
-    {
-        $cookie = Cookie::create('foo', 'bar', time() + 3600 * 24);
-
-        $this->assertFalse($cookie->isCleared(), '->isCleared() returns false if the cookie did not expire yet');
-    }
-
-    public function testCookieIsCleared()
-    {
-        $cookie = Cookie::create('foo', 'bar', time() - 20);
-
-        $this->assertTrue($cookie->isCleared(), '->isCleared() returns true if the cookie has expired');
-
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertFalse($cookie->isCleared());
-
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertFalse($cookie->isCleared());
-
-        $cookie = Cookie::create('foo', 'bar', -1);
-
-        $this->assertFalse($cookie->isCleared());
-    }
-
-    public function testToString()
-    {
-        $cookie = Cookie::create('foo', 'bar', $expire = strtotime('Fri, 20-May-2011 15:25:52 GMT'), '/', '.myfoodomain.com', true, true, false, null);
-        $this->assertEquals('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; Max-Age=0; path=/; domain=.myfoodomain.com; secure; httponly', (string) $cookie, '->__toString() returns string representation of the cookie');
-
-        $cookie = Cookie::create('foo', 'bar with white spaces', strtotime('Fri, 20-May-2011 15:25:52 GMT'), '/', '.myfoodomain.com', true, true, false, null);
-        $this->assertEquals('foo=bar%20with%20white%20spaces; expires=Fri, 20-May-2011 15:25:52 GMT; Max-Age=0; path=/; domain=.myfoodomain.com; secure; httponly', (string) $cookie, '->__toString() encodes the value of the cookie according to RFC 3986 (white space = %20)');
-
-        $cookie = Cookie::create('foo', null, 1, '/admin/', '.myfoodomain.com', false, true, false, null);
-        $this->assertEquals('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', $expire = time() - 31536001).'; Max-Age=0; path=/admin/; domain=.myfoodomain.com; httponly', (string) $cookie, '->__toString() returns string representation of a cleared cookie if value is NULL');
-
-        $cookie = Cookie::create('foo', 'bar');
-        $this->assertEquals('foo=bar; path=/; httponly; samesite=lax', (string) $cookie);
-    }
-
-    public function testRawCookie()
-    {
-        $cookie = Cookie::create('foo', 'b a r', 0, '/', null, false, false, false, null);
-        $this->assertFalse($cookie->isRaw());
-        $this->assertEquals('foo=b%20a%20r; path=/', (string) $cookie);
-
-        $cookie = Cookie::create('foo', 'b+a+r', 0, '/', null, false, false, true, null);
-        $this->assertTrue($cookie->isRaw());
-        $this->assertEquals('foo=b+a+r; path=/', (string) $cookie);
-    }
-
-    public function testGetMaxAge()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-        $this->assertEquals(0, $cookie->getMaxAge());
-
-        $cookie = Cookie::create('foo', 'bar', $expire = time() + 100);
-        $this->assertEquals($expire - time(), $cookie->getMaxAge());
-
-        $cookie = Cookie::create('foo', 'bar', $expire = time() - 100);
-        $this->assertEquals(0, $cookie->getMaxAge());
-    }
-
-    public function testFromString()
-    {
-        $cookie = Cookie::fromString('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; path=/; domain=.myfoodomain.com; secure; httponly');
-        $this->assertEquals(Cookie::create('foo', 'bar', strtotime('Fri, 20-May-2011 15:25:52 GMT'), '/', '.myfoodomain.com', true, true, true, null), $cookie);
-
-        $cookie = Cookie::fromString('foo=bar', true);
-        $this->assertEquals(Cookie::create('foo', 'bar', 0, '/', null, false, false, false, null), $cookie);
-
-        $cookie = Cookie::fromString('foo', true);
-        $this->assertEquals(Cookie::create('foo', null, 0, '/', null, false, false, false, null), $cookie);
-    }
-
-    public function testFromStringWithHttpOnly()
-    {
-        $cookie = Cookie::fromString('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; path=/; domain=.myfoodomain.com; secure; httponly');
-        $this->assertTrue($cookie->isHttpOnly());
-
-        $cookie = Cookie::fromString('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; path=/; domain=.myfoodomain.com; secure');
-        $this->assertFalse($cookie->isHttpOnly());
-    }
-
-    public function testSameSiteAttribute()
-    {
-        $cookie = new Cookie('foo', 'bar', 0, '/', null, false, true, false, 'Lax');
-        $this->assertEquals('lax', $cookie->getSameSite());
-
-        $cookie = new Cookie('foo', 'bar', 0, '/', null, false, true, false, '');
-        $this->assertNull($cookie->getSameSite());
-    }
-
-    public function testSetSecureDefault()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertFalse($cookie->isSecure());
-
-        $cookie->setSecureDefault(true);
-
-        $this->assertTrue($cookie->isSecure());
-
-        $cookie->setSecureDefault(false);
-
-        $this->assertFalse($cookie->isSecure());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ExpressionRequestMatcherTest.php b/vendor/symfony/http-foundation/Tests/ExpressionRequestMatcherTest.php
deleted file mode 100644
index 8a389329e47ce7c92872689108f1c1d58a63ad36..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ExpressionRequestMatcherTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-use Symfony\Component\HttpFoundation\ExpressionRequestMatcher;
-use Symfony\Component\HttpFoundation\Request;
-
-class ExpressionRequestMatcherTest extends TestCase
-{
-    public function testWhenNoExpressionIsSet()
-    {
-        $this->expectException('LogicException');
-        $expressionRequestMatcher = new ExpressionRequestMatcher();
-        $expressionRequestMatcher->matches(new Request());
-    }
-
-    /**
-     * @dataProvider provideExpressions
-     */
-    public function testMatchesWhenParentMatchesIsTrue($expression, $expected)
-    {
-        $request = Request::create('/foo');
-        $expressionRequestMatcher = new ExpressionRequestMatcher();
-
-        $expressionRequestMatcher->setExpression(new ExpressionLanguage(), $expression);
-        $this->assertSame($expected, $expressionRequestMatcher->matches($request));
-    }
-
-    /**
-     * @dataProvider provideExpressions
-     */
-    public function testMatchesWhenParentMatchesIsFalse($expression)
-    {
-        $request = Request::create('/foo');
-        $request->attributes->set('foo', 'foo');
-        $expressionRequestMatcher = new ExpressionRequestMatcher();
-        $expressionRequestMatcher->matchAttribute('foo', 'bar');
-
-        $expressionRequestMatcher->setExpression(new ExpressionLanguage(), $expression);
-        $this->assertFalse($expressionRequestMatcher->matches($request));
-    }
-
-    public function provideExpressions()
-    {
-        return [
-            ['request.getMethod() == method', true],
-            ['request.getPathInfo() == path', true],
-            ['request.getHost() == host', true],
-            ['request.getClientIp() == ip', true],
-            ['request.attributes.all() == attributes', true],
-            ['request.getMethod() == method && request.getPathInfo() == path && request.getHost() == host && request.getClientIp() == ip &&  request.attributes.all() == attributes', true],
-            ['request.getMethod() != method', false],
-            ['request.getMethod() != method && request.getPathInfo() == path && request.getHost() == host && request.getClientIp() == ip &&  request.attributes.all() == attributes', false],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/FakeFile.php b/vendor/symfony/http-foundation/Tests/File/FakeFile.php
deleted file mode 100644
index c415989f2f7f8320929c940fc69842dd530fb758..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/File/FakeFile.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File;
-
-use Symfony\Component\HttpFoundation\File\File as OrigFile;
-
-class FakeFile extends OrigFile
-{
-    private $realpath;
-
-    public function __construct($realpath, $path)
-    {
-        $this->realpath = $realpath;
-        parent::__construct($path, false);
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function getRealpath()
-    {
-        return $this->realpath;
-    }
-
-    public function getSize()
-    {
-        return 42;
-    }
-
-    public function getMTime()
-    {
-        return time();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/FileTest.php b/vendor/symfony/http-foundation/Tests/File/FileTest.php
deleted file mode 100644
index 2ef259ed1bd5e10f1b694faa5ee129883222acf5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/File/FileTest.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\File;
-
-/**
- * @requires extension fileinfo
- */
-class FileTest extends TestCase
-{
-    protected $file;
-
-    public function testGetMimeTypeUsesMimeTypeGuessers()
-    {
-        $file = new File(__DIR__.'/Fixtures/test.gif');
-        $this->assertEquals('image/gif', $file->getMimeType());
-    }
-
-    public function testGuessExtensionWithoutGuesser()
-    {
-        $file = new File(__DIR__.'/Fixtures/directory/.empty');
-        $this->assertNull($file->guessExtension());
-    }
-
-    public function testGuessExtensionIsBasedOnMimeType()
-    {
-        $file = new File(__DIR__.'/Fixtures/test');
-        $this->assertEquals('gif', $file->guessExtension());
-    }
-
-    public function testConstructWhenFileNotExists()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-
-        new File(__DIR__.'/Fixtures/not_here');
-    }
-
-    public function testMove()
-    {
-        $path = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory';
-        $targetPath = $targetDir.'/test.copy.gif';
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new File($path);
-        $movedFile = $file->move($targetDir);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\File\File', $movedFile);
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function testMoveWithNewName()
-    {
-        $path = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory';
-        $targetPath = $targetDir.'/test.newname.gif';
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new File($path);
-        $movedFile = $file->move($targetDir, 'test.newname.gif');
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function getFilenameFixtures()
-    {
-        return [
-            ['original.gif', 'original.gif'],
-            ['..\\..\\original.gif', 'original.gif'],
-            ['../../original.gif', 'original.gif'],
-            ['файлfile.gif', 'файлfile.gif'],
-            ['..\\..\\файлfile.gif', 'файлfile.gif'],
-            ['../../файлfile.gif', 'файлfile.gif'],
-        ];
-    }
-
-    /**
-     * @dataProvider getFilenameFixtures
-     */
-    public function testMoveWithNonLatinName($filename, $sanitizedFilename)
-    {
-        $path = __DIR__.'/Fixtures/'.$sanitizedFilename;
-        $targetDir = __DIR__.'/Fixtures/directory/';
-        $targetPath = $targetDir.$sanitizedFilename;
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new File($path);
-        $movedFile = $file->move($targetDir, $filename);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\File\File', $movedFile);
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function testMoveToAnUnexistentDirectory()
-    {
-        $sourcePath = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory/sub';
-        $targetPath = $targetDir.'/test.copy.gif';
-        @unlink($sourcePath);
-        @unlink($targetPath);
-        @rmdir($targetDir);
-        copy(__DIR__.'/Fixtures/test.gif', $sourcePath);
-
-        $file = new File($sourcePath);
-        $movedFile = $file->move($targetDir);
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($sourcePath);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($sourcePath);
-        @unlink($targetPath);
-        @rmdir($targetDir);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/.unknownextension b/vendor/symfony/http-foundation/Tests/File/Fixtures/.unknownextension
deleted file mode 100644
index 4d1ae35ba2c8ec712fa2a379db44ad639ca277bd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/File/Fixtures/.unknownextension
+++ /dev/null
@@ -1 +0,0 @@
-f
\ No newline at end of file
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/case-sensitive-mime-type.xlsm b/vendor/symfony/http-foundation/Tests/File/Fixtures/case-sensitive-mime-type.xlsm
deleted file mode 100644
index 94d85e6132c553225a1628f056151bee22f5b352..0000000000000000000000000000000000000000
Binary files a/vendor/symfony/http-foundation/Tests/File/Fixtures/case-sensitive-mime-type.xlsm and /dev/null differ
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/directory/.empty b/vendor/symfony/http-foundation/Tests/File/Fixtures/directory/.empty
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/other-file.example b/vendor/symfony/http-foundation/Tests/File/Fixtures/other-file.example
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/test b/vendor/symfony/http-foundation/Tests/File/Fixtures/test
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
Binary files a/vendor/symfony/http-foundation/Tests/File/Fixtures/test and /dev/null differ
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/test.gif b/vendor/symfony/http-foundation/Tests/File/Fixtures/test.gif
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
Binary files a/vendor/symfony/http-foundation/Tests/File/Fixtures/test.gif and /dev/null differ
diff --git a/vendor/symfony/http-foundation/Tests/File/MimeType/MimeTypeTest.php b/vendor/symfony/http-foundation/Tests/File/MimeType/MimeTypeTest.php
deleted file mode 100644
index a43ce819fb1c0a44d13c7f45334fa1d8b9e256af..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/File/MimeType/MimeTypeTest.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File\MimeType;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser;
-use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
-
-/**
- * @requires extension fileinfo
- * @group legacy
- */
-class MimeTypeTest extends TestCase
-{
-    public function testGuessImageWithoutExtension()
-    {
-        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test'));
-    }
-
-    public function testGuessImageWithDirectory()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-
-        MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/directory');
-    }
-
-    public function testGuessImageWithFileBinaryMimeTypeGuesser()
-    {
-        $guesser = MimeTypeGuesser::getInstance();
-        $guesser->register(new FileBinaryMimeTypeGuesser());
-        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test'));
-    }
-
-    public function testGuessImageWithKnownExtension()
-    {
-        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test.gif'));
-    }
-
-    public function testGuessFileWithUnknownExtension()
-    {
-        $this->assertEquals('application/octet-stream', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/.unknownextension'));
-    }
-
-    public function testGuessWithIncorrectPath()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-        MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/not_here');
-    }
-
-    public function testGuessWithNonReadablePath()
-    {
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $this->markTestSkipped('Can not verify chmod operations on Windows');
-        }
-
-        if (!getenv('USER') || 'root' === getenv('USER')) {
-            $this->markTestSkipped('This test will fail if run under superuser');
-        }
-
-        $path = __DIR__.'/../Fixtures/to_delete';
-        touch($path);
-        @chmod($path, 0333);
-
-        if ('0333' == substr(sprintf('%o', fileperms($path)), -4)) {
-            $this->expectException('Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException');
-            MimeTypeGuesser::getInstance()->guess($path);
-        } else {
-            $this->markTestSkipped('Can not verify chmod operations, change of file permissions failed');
-        }
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        $path = __DIR__.'/../Fixtures/to_delete';
-        if (file_exists($path)) {
-            @chmod($path, 0666);
-            @unlink($path);
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/UploadedFileTest.php b/vendor/symfony/http-foundation/Tests/File/UploadedFileTest.php
deleted file mode 100644
index b31bfcb5bb1bebe69d6119b5e3a64051a25885cf..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/File/UploadedFileTest.php
+++ /dev/null
@@ -1,370 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\Exception\CannotWriteFileException;
-use Symfony\Component\HttpFoundation\File\Exception\ExtensionFileException;
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-use Symfony\Component\HttpFoundation\File\Exception\FormSizeFileException;
-use Symfony\Component\HttpFoundation\File\Exception\IniSizeFileException;
-use Symfony\Component\HttpFoundation\File\Exception\NoFileException;
-use Symfony\Component\HttpFoundation\File\Exception\NoTmpDirFileException;
-use Symfony\Component\HttpFoundation\File\Exception\PartialFileException;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-
-class UploadedFileTest extends TestCase
-{
-    protected function setUp(): void
-    {
-        if (!ini_get('file_uploads')) {
-            $this->markTestSkipped('file_uploads is disabled in php.ini');
-        }
-    }
-
-    public function testConstructWhenFileNotExists()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-
-        new UploadedFile(
-            __DIR__.'/Fixtures/not_here',
-            'original.gif',
-            null
-        );
-    }
-
-    public function testFileUploadsWithNoMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK
-        );
-
-        $this->assertEquals('application/octet-stream', $file->getClientMimeType());
-
-        if (\extension_loaded('fileinfo')) {
-            $this->assertEquals('image/gif', $file->getMimeType());
-        }
-    }
-
-    public function testFileUploadsWithUnknownMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/.unknownextension',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK
-        );
-
-        $this->assertEquals('application/octet-stream', $file->getClientMimeType());
-    }
-
-    public function testGuessClientExtension()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals('gif', $file->guessClientExtension());
-    }
-
-    public function testGuessClientExtensionWithIncorrectMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/jpeg',
-            null
-        );
-
-        $this->assertEquals('jpeg', $file->guessClientExtension());
-    }
-
-    public function testCaseSensitiveMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/case-sensitive-mime-type.xlsm',
-            'test.xlsm',
-            'application/vnd.ms-excel.sheet.macroEnabled.12',
-            null
-        );
-
-        $this->assertEquals('xlsm', $file->guessClientExtension());
-    }
-
-    public function testErrorIsOkByDefault()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals(UPLOAD_ERR_OK, $file->getError());
-    }
-
-    public function testGetClientOriginalName()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals('original.gif', $file->getClientOriginalName());
-    }
-
-    public function testGetClientOriginalExtension()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals('gif', $file->getClientOriginalExtension());
-    }
-
-    public function testMoveLocalFileIsNotAllowed()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileException');
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            UPLOAD_ERR_OK
-        );
-
-        $movedFile = $file->move(__DIR__.'/Fixtures/directory');
-    }
-
-    public function failedUploadedFile()
-    {
-        foreach ([UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_FORM_SIZE, UPLOAD_ERR_PARTIAL, UPLOAD_ERR_NO_FILE, UPLOAD_ERR_CANT_WRITE, UPLOAD_ERR_NO_TMP_DIR, UPLOAD_ERR_EXTENSION, -1] as $error) {
-            yield [new UploadedFile(
-                __DIR__.'/Fixtures/test.gif',
-                'original.gif',
-                'image/gif',
-                $error
-            )];
-        }
-    }
-
-    /**
-     * @dataProvider failedUploadedFile
-     */
-    public function testMoveFailed(UploadedFile $file)
-    {
-        switch ($file->getError()) {
-            case UPLOAD_ERR_INI_SIZE:
-                $exceptionClass = IniSizeFileException::class;
-                break;
-            case UPLOAD_ERR_FORM_SIZE:
-                $exceptionClass = FormSizeFileException::class;
-                break;
-            case UPLOAD_ERR_PARTIAL:
-                $exceptionClass = PartialFileException::class;
-                break;
-            case UPLOAD_ERR_NO_FILE:
-                $exceptionClass = NoFileException::class;
-                break;
-            case UPLOAD_ERR_CANT_WRITE:
-                $exceptionClass = CannotWriteFileException::class;
-                break;
-            case UPLOAD_ERR_NO_TMP_DIR:
-                $exceptionClass = NoTmpDirFileException::class;
-                break;
-            case UPLOAD_ERR_EXTENSION:
-                $exceptionClass = ExtensionFileException::class;
-                break;
-            default:
-                $exceptionClass = FileException::class;
-        }
-
-        $this->expectException($exceptionClass);
-
-        $file->move(__DIR__.'/Fixtures/directory');
-    }
-
-    public function testMoveLocalFileIsAllowedInTestMode()
-    {
-        $path = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory';
-        $targetPath = $targetDir.'/test.copy.gif';
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new UploadedFile(
-            $path,
-            'original.gif',
-            'image/gif',
-            UPLOAD_ERR_OK,
-            true
-        );
-
-        $movedFile = $file->move(__DIR__.'/Fixtures/directory');
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function testGetClientOriginalNameSanitizeFilename()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            '../../original.gif',
-            'image/gif'
-        );
-
-        $this->assertEquals('original.gif', $file->getClientOriginalName());
-    }
-
-    public function testGetSize()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif'
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test.gif'), $file->getSize());
-
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test',
-            'original.gif',
-            'image/gif'
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test'), $file->getSize());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Passing a size as 4th argument to the constructor of "Symfony\Component\HttpFoundation\File\UploadedFile" is deprecated since Symfony 4.1.
-     */
-    public function testConstructDeprecatedSize()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            filesize(__DIR__.'/Fixtures/test.gif'),
-            UPLOAD_ERR_OK,
-            false
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test.gif'), $file->getSize());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Passing a size as 4th argument to the constructor of "Symfony\Component\HttpFoundation\File\UploadedFile" is deprecated since Symfony 4.1.
-     */
-    public function testConstructDeprecatedSizeWhenPassingOnlyThe4Needed()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            filesize(__DIR__.'/Fixtures/test.gif')
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test.gif'), $file->getSize());
-    }
-
-    public function testGetExtension()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif'
-        );
-
-        $this->assertEquals('gif', $file->getExtension());
-    }
-
-    public function testIsValid()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK,
-            true
-        );
-
-        $this->assertTrue($file->isValid());
-    }
-
-    /**
-     * @dataProvider uploadedFileErrorProvider
-     */
-    public function testIsInvalidOnUploadError($error)
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            $error
-        );
-
-        $this->assertFalse($file->isValid());
-    }
-
-    public function uploadedFileErrorProvider()
-    {
-        return [
-            [UPLOAD_ERR_INI_SIZE],
-            [UPLOAD_ERR_FORM_SIZE],
-            [UPLOAD_ERR_PARTIAL],
-            [UPLOAD_ERR_NO_TMP_DIR],
-            [UPLOAD_ERR_EXTENSION],
-        ];
-    }
-
-    public function testIsInvalidIfNotHttpUpload()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK
-        );
-
-        $this->assertFalse($file->isValid());
-    }
-
-    public function testGetMaxFilesize()
-    {
-        $size = UploadedFile::getMaxFilesize();
-
-        $this->assertIsInt($size);
-        $this->assertGreaterThan(0, $size);
-
-        if (0 === (int) ini_get('post_max_size') && 0 === (int) ini_get('upload_max_filesize')) {
-            $this->assertSame(PHP_INT_MAX, $size);
-        } else {
-            $this->assertLessThan(PHP_INT_MAX, $size);
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/FileBagTest.php b/vendor/symfony/http-foundation/Tests/FileBagTest.php
deleted file mode 100644
index bde664194b8574841d478a8d120de4d14f8e3011..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/FileBagTest.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\FileBag;
-
-/**
- * FileBagTest.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class FileBagTest extends TestCase
-{
-    public function testFileMustBeAnArrayOrUploadedFile()
-    {
-        $this->expectException('InvalidArgumentException');
-        new FileBag(['file' => 'foo']);
-    }
-
-    public function testShouldConvertsUploadedFiles()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-
-        $bag = new FileBag(['file' => [
-            'name' => basename($tmpFile),
-            'type' => 'text/plain',
-            'tmp_name' => $tmpFile,
-            'error' => 0,
-            'size' => null,
-        ]]);
-
-        $this->assertEquals($file, $bag->get('file'));
-    }
-
-    public function testShouldSetEmptyUploadedFilesToNull()
-    {
-        $bag = new FileBag(['file' => [
-            'name' => '',
-            'type' => '',
-            'tmp_name' => '',
-            'error' => UPLOAD_ERR_NO_FILE,
-            'size' => 0,
-        ]]);
-
-        $this->assertNull($bag->get('file'));
-    }
-
-    public function testShouldRemoveEmptyUploadedFilesForMultiUpload()
-    {
-        $bag = new FileBag(['files' => [
-            'name' => [''],
-            'type' => [''],
-            'tmp_name' => [''],
-            'error' => [UPLOAD_ERR_NO_FILE],
-            'size' => [0],
-        ]]);
-
-        $this->assertSame([], $bag->get('files'));
-    }
-
-    public function testShouldNotRemoveEmptyUploadedFilesForAssociativeArray()
-    {
-        $bag = new FileBag(['files' => [
-            'name' => ['file1' => ''],
-            'type' => ['file1' => ''],
-            'tmp_name' => ['file1' => ''],
-            'error' => ['file1' => UPLOAD_ERR_NO_FILE],
-            'size' => ['file1' => 0],
-        ]]);
-
-        $this->assertSame(['file1' => null], $bag->get('files'));
-    }
-
-    public function testShouldConvertUploadedFilesWithPhpBug()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-
-        $bag = new FileBag([
-            'child' => [
-                'name' => [
-                    'file' => basename($tmpFile),
-                ],
-                'type' => [
-                    'file' => 'text/plain',
-                ],
-                'tmp_name' => [
-                    'file' => $tmpFile,
-                ],
-                'error' => [
-                    'file' => 0,
-                ],
-                'size' => [
-                    'file' => null,
-                ],
-            ],
-        ]);
-
-        $files = $bag->all();
-        $this->assertEquals($file, $files['child']['file']);
-    }
-
-    public function testShouldConvertNestedUploadedFilesWithPhpBug()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-
-        $bag = new FileBag([
-            'child' => [
-                'name' => [
-                    'sub' => ['file' => basename($tmpFile)],
-                ],
-                'type' => [
-                    'sub' => ['file' => 'text/plain'],
-                ],
-                'tmp_name' => [
-                    'sub' => ['file' => $tmpFile],
-                ],
-                'error' => [
-                    'sub' => ['file' => 0],
-                ],
-                'size' => [
-                    'sub' => ['file' => null],
-                ],
-            ],
-        ]);
-
-        $files = $bag->all();
-        $this->assertEquals($file, $files['child']['sub']['file']);
-    }
-
-    public function testShouldNotConvertNestedUploadedFiles()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-        $bag = new FileBag(['image' => ['file' => $file]]);
-
-        $files = $bag->all();
-        $this->assertEquals($file, $files['image']['file']);
-    }
-
-    protected function createTempFile()
-    {
-        $tempFile = tempnam(sys_get_temp_dir().'/form_test', 'FormTest');
-        file_put_contents($tempFile, '1');
-
-        return $tempFile;
-    }
-
-    protected function setUp(): void
-    {
-        mkdir(sys_get_temp_dir().'/form_test', 0777, true);
-    }
-
-    protected function tearDown(): void
-    {
-        foreach (glob(sys_get_temp_dir().'/form_test/*') as $file) {
-            unlink($file);
-        }
-
-        rmdir(sys_get_temp_dir().'/form_test');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/common.inc b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/common.inc
deleted file mode 100644
index 0bdf9e4b75fddcb25356e09c32a5ca1e8ea19ed6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/common.inc
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Response;
-
-$parent = __DIR__;
-while (!@file_exists($parent.'/vendor/autoload.php')) {
-    if (!@file_exists($parent)) {
-        // open_basedir restriction in effect
-        break;
-    }
-    if ($parent === dirname($parent)) {
-        echo "vendor/autoload.php not found\n";
-        exit(1);
-    }
-
-    $parent = dirname($parent);
-}
-
-require $parent.'/vendor/autoload.php';
-
-error_reporting(-1);
-ini_set('html_errors', 0);
-ini_set('display_errors', 1);
-
-if (filter_var(ini_get('xdebug.default_enable'), FILTER_VALIDATE_BOOLEAN)) {
-    xdebug_disable();
-}
-
-header_remove('X-Powered-By');
-header('Content-Type: text/plain; charset=utf-8');
-
-register_shutdown_function(function () {
-    echo "\n";
-    session_write_close();
-    print_r(headers_list());
-    echo "shutdown\n";
-});
-ob_start();
-
-$r = new Response();
-$r->headers->set('Date', 'Sat, 12 Nov 1955 20:04:00 GMT');
-
-return $r;
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.expected
deleted file mode 100644
index bdb9d023f8f3d135e85c69dc186e139e1eb46a4c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.expected
+++ /dev/null
@@ -1,11 +0,0 @@
-
-Warning: Expiry date cannot have a year greater than 9999 in %scookie_max_age.php on line 10
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: foo=bar; expires=Sat, 01-Jan-10000 02:46:40 GMT; Max-Age=%d; path=/
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.php
deleted file mode 100644
index e18ce525230f0164b2861e52bccc2385a5462593..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$r->headers->setCookie(new Cookie('foo', 'bar', 253402310800, '', null, false, false, false, null));
-$r->sendHeaders();
-
-setcookie('foo2', 'bar', 253402310800, '/');
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.expected
deleted file mode 100644
index 0c097972e78e2d68988b394ba9ca22fc00f1cccd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.expected
+++ /dev/null
@@ -1,10 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: ?*():@&+$/%#[]=?*():@&+$/%#[]; path=/
-    [4] => Set-Cookie: ?*():@&+$/%#[]=?*():@&+$/%#[]; path=/
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php
deleted file mode 100644
index 00c022d9539477a3c0b30fdbeb50d1ecf7a57ca3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$str = '?*():@&+$/%#[]';
-
-$r->headers->setCookie(new Cookie($str, $str, 0, '/', null, false, false, true, null));
-$r->sendHeaders();
-
-setrawcookie($str, $str, 0, '/', null, false, false);
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.expected
deleted file mode 100644
index cbde2cbfe13f3c516f0295b50aa69823d971965d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.expected
+++ /dev/null
@@ -1,9 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: CookieSamesiteLaxTest=LaxValue; path=/; httponly; samesite=lax
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.php
deleted file mode 100644
index 9a476f1d23fab043228d78075a8441aa6e0fd9e7..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$r->headers->setCookie(new Cookie('CookieSamesiteLaxTest', 'LaxValue', 0, '/', null, false, true, false, Cookie::SAMESITE_LAX));
-$r->sendHeaders();
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.expected
deleted file mode 100644
index adc491fd2bc512d83b3a59da90e0b8affdb9afc3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.expected
+++ /dev/null
@@ -1,9 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: CookieSamesiteStrictTest=StrictValue; path=/; httponly; samesite=strict
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.php
deleted file mode 100644
index 3bcb41f8f059e7c2816ade1534c928fd6a0e287d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$r->headers->setCookie(new Cookie('CookieSamesiteStrictTest', 'StrictValue', 0, '/', null, false, true, false, Cookie::SAMESITE_STRICT));
-$r->sendHeaders();
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.expected
deleted file mode 100644
index 17a9efc669043b9c44d838ecb513b55e666d0452..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.expected
+++ /dev/null
@@ -1,11 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: %3D%2C%3B%20%09%0D%0A%0B%0C=%3D%2C%3B%20%09%0D%0A%0B%0C; path=/
-    [4] => Set-Cookie: ?*():@&+$/%#[]=%3F%2A%28%29%3A%40%26%2B%24%2F%25%23%5B%5D; path=/
-    [5] => Set-Cookie: ?*():@&+$/%#[]=%3F%2A%28%29%3A%40%26%2B%24%2F%25%23%5B%5D; path=/
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.php
deleted file mode 100644
index 9ffb0dfec82afc9d30fff32b34b25a71d7f8954b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$str1 = "=,; \t\r\n\v\f";
-$r->headers->setCookie(new Cookie($str1, $str1, 0, '', null, false, false, false, null));
-
-$str2 = '?*():@&+$/%#[]';
-
-$r->headers->setCookie(new Cookie($str2, $str2, 0, '', null, false, false, false, null));
-$r->sendHeaders();
-
-setcookie($str2, $str2, 0, '/');
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.expected
deleted file mode 100644
index 2b560f0bd568960a175f77e836fcc0a3849748f5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.expected
+++ /dev/null
@@ -1,6 +0,0 @@
-The cookie name "Hello + world" contains invalid characters.
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.php
deleted file mode 100644
index 3acf86039d93d3d67348574032cf51cb3973192d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-try {
-    $r->headers->setCookie(new Cookie('Hello + world', 'hodor', 0, null, null, null, false, true));
-} catch (\InvalidArgumentException $e) {
-    echo $e->getMessage();
-}
diff --git a/vendor/symfony/http-foundation/Tests/HeaderBagTest.php b/vendor/symfony/http-foundation/Tests/HeaderBagTest.php
deleted file mode 100644
index dcc266f69c41af2990191028a16b4b00f2571ba3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/HeaderBagTest.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\HeaderBag;
-
-class HeaderBagTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $this->assertTrue($bag->has('foo'));
-    }
-
-    public function testToStringNull()
-    {
-        $bag = new HeaderBag();
-        $this->assertEquals('', $bag->__toString());
-    }
-
-    public function testToStringNotNull()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $this->assertEquals("Foo: bar\r\n", $bag->__toString());
-    }
-
-    public function testKeys()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $keys = $bag->keys();
-        $this->assertEquals('foo', $keys[0]);
-    }
-
-    public function testGetDate()
-    {
-        $bag = new HeaderBag(['foo' => 'Tue, 4 Sep 2012 20:00:00 +0200']);
-        $headerDate = $bag->getDate('foo');
-        $this->assertInstanceOf('DateTime', $headerDate);
-    }
-
-    public function testGetDateNull()
-    {
-        $bag = new HeaderBag(['foo' => null]);
-        $headerDate = $bag->getDate('foo');
-        $this->assertNull($headerDate);
-    }
-
-    public function testGetDateException()
-    {
-        $this->expectException('RuntimeException');
-        $bag = new HeaderBag(['foo' => 'Tue']);
-        $headerDate = $bag->getDate('foo');
-    }
-
-    public function testGetCacheControlHeader()
-    {
-        $bag = new HeaderBag();
-        $bag->addCacheControlDirective('public', '#a');
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertEquals('#a', $bag->getCacheControlDirective('public'));
-    }
-
-    public function testAll()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $this->assertEquals(['foo' => ['bar']], $bag->all(), '->all() gets all the input');
-
-        $bag = new HeaderBag(['FOO' => 'BAR']);
-        $this->assertEquals(['foo' => ['BAR']], $bag->all(), '->all() gets all the input key are lower case');
-    }
-
-    public function testReplace()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-
-        $bag->replace(['NOPE' => 'BAR']);
-        $this->assertEquals(['nope' => ['BAR']], $bag->all(), '->replace() replaces the input with the argument');
-        $this->assertFalse($bag->has('foo'), '->replace() overrides previously set the input');
-    }
-
-    public function testGet()
-    {
-        $bag = new HeaderBag(['foo' => 'bar', 'fuzz' => 'bizz']);
-        $this->assertEquals('bar', $bag->get('foo'), '->get return current value');
-        $this->assertEquals('bar', $bag->get('FoO'), '->get key in case insensitive');
-        $this->assertEquals(['bar'], $bag->get('foo', 'nope', false), '->get return the value as array');
-
-        // defaults
-        $this->assertNull($bag->get('none'), '->get unknown values returns null');
-        $this->assertEquals('default', $bag->get('none', 'default'), '->get unknown values returns default');
-        $this->assertEquals(['default'], $bag->get('none', 'default', false), '->get unknown values returns default as array');
-
-        $bag->set('foo', 'bor', false);
-        $this->assertEquals('bar', $bag->get('foo'), '->get return first value');
-        $this->assertEquals(['bar', 'bor'], $bag->get('foo', 'nope', false), '->get return all values as array');
-
-        $bag->set('baz', null);
-        $this->assertNull($bag->get('baz', 'nope'), '->get return null although different default value is given');
-    }
-
-    public function testSetAssociativeArray()
-    {
-        $bag = new HeaderBag();
-        $bag->set('foo', ['bad-assoc-index' => 'value']);
-        $this->assertSame('value', $bag->get('foo'));
-        $this->assertEquals(['value'], $bag->get('foo', 'nope', false), 'assoc indices of multi-valued headers are ignored');
-    }
-
-    public function testContains()
-    {
-        $bag = new HeaderBag(['foo' => 'bar', 'fuzz' => 'bizz']);
-        $this->assertTrue($bag->contains('foo', 'bar'), '->contains first value');
-        $this->assertTrue($bag->contains('fuzz', 'bizz'), '->contains second value');
-        $this->assertFalse($bag->contains('nope', 'nope'), '->contains unknown value');
-        $this->assertFalse($bag->contains('foo', 'nope'), '->contains unknown value');
-
-        // Multiple values
-        $bag->set('foo', 'bor', false);
-        $this->assertTrue($bag->contains('foo', 'bar'), '->contains first value');
-        $this->assertTrue($bag->contains('foo', 'bor'), '->contains second value');
-        $this->assertFalse($bag->contains('foo', 'nope'), '->contains unknown value');
-    }
-
-    public function testCacheControlDirectiveAccessors()
-    {
-        $bag = new HeaderBag();
-        $bag->addCacheControlDirective('public');
-
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertTrue($bag->getCacheControlDirective('public'));
-        $this->assertEquals('public', $bag->get('cache-control'));
-
-        $bag->addCacheControlDirective('max-age', 10);
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(10, $bag->getCacheControlDirective('max-age'));
-        $this->assertEquals('max-age=10, public', $bag->get('cache-control'));
-
-        $bag->removeCacheControlDirective('max-age');
-        $this->assertFalse($bag->hasCacheControlDirective('max-age'));
-    }
-
-    public function testCacheControlDirectiveParsing()
-    {
-        $bag = new HeaderBag(['cache-control' => 'public, max-age=10']);
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertTrue($bag->getCacheControlDirective('public'));
-
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(10, $bag->getCacheControlDirective('max-age'));
-
-        $bag->addCacheControlDirective('s-maxage', 100);
-        $this->assertEquals('max-age=10, public, s-maxage=100', $bag->get('cache-control'));
-    }
-
-    public function testCacheControlDirectiveParsingQuotedZero()
-    {
-        $bag = new HeaderBag(['cache-control' => 'max-age="0"']);
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(0, $bag->getCacheControlDirective('max-age'));
-    }
-
-    public function testCacheControlDirectiveOverrideWithReplace()
-    {
-        $bag = new HeaderBag(['cache-control' => 'private, max-age=100']);
-        $bag->replace(['cache-control' => 'public, max-age=10']);
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertTrue($bag->getCacheControlDirective('public'));
-
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(10, $bag->getCacheControlDirective('max-age'));
-    }
-
-    public function testCacheControlClone()
-    {
-        $headers = ['foo' => 'bar'];
-        $bag1 = new HeaderBag($headers);
-        $bag2 = new HeaderBag($bag1->all());
-
-        $this->assertEquals($bag1->all(), $bag2->all());
-    }
-
-    public function testGetIterator()
-    {
-        $headers = ['foo' => 'bar', 'hello' => 'world', 'third' => 'charm'];
-        $headerBag = new HeaderBag($headers);
-
-        $i = 0;
-        foreach ($headerBag as $key => $val) {
-            ++$i;
-            $this->assertEquals([$headers[$key]], $val);
-        }
-
-        $this->assertEquals(\count($headers), $i);
-    }
-
-    public function testCount()
-    {
-        $headers = ['foo' => 'bar', 'HELLO' => 'WORLD'];
-        $headerBag = new HeaderBag($headers);
-
-        $this->assertCount(\count($headers), $headerBag);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/HeaderUtilsTest.php b/vendor/symfony/http-foundation/Tests/HeaderUtilsTest.php
deleted file mode 100644
index d2b19ca84d1c64f1e27865ec6f7596d842227bcd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/HeaderUtilsTest.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\HeaderUtils;
-
-class HeaderUtilsTest extends TestCase
-{
-    public function testSplit()
-    {
-        $this->assertSame(['foo=123', 'bar'], HeaderUtils::split('foo=123,bar', ','));
-        $this->assertSame(['foo=123', 'bar'], HeaderUtils::split('foo=123, bar', ','));
-        $this->assertSame([['foo=123', 'bar']], HeaderUtils::split('foo=123; bar', ',;'));
-        $this->assertSame([['foo=123'], ['bar']], HeaderUtils::split('foo=123, bar', ',;'));
-        $this->assertSame(['foo', '123, bar'], HeaderUtils::split('foo=123, bar', '='));
-        $this->assertSame(['foo', '123, bar'], HeaderUtils::split(' foo = 123, bar ', '='));
-        $this->assertSame([['foo', '123'], ['bar']], HeaderUtils::split('foo=123, bar', ',='));
-        $this->assertSame([[['foo', '123']], [['bar'], ['foo', '456']]], HeaderUtils::split('foo=123, bar; foo=456', ',;='));
-        $this->assertSame([[['foo', 'a,b;c=d']]], HeaderUtils::split('foo="a,b;c=d"', ',;='));
-
-        $this->assertSame(['foo', 'bar'], HeaderUtils::split('foo,,,, bar', ','));
-        $this->assertSame(['foo', 'bar'], HeaderUtils::split(',foo, bar,', ','));
-        $this->assertSame(['foo', 'bar'], HeaderUtils::split(' , foo, bar, ', ','));
-        $this->assertSame(['foo bar'], HeaderUtils::split('foo "bar"', ','));
-        $this->assertSame(['foo bar'], HeaderUtils::split('"foo" bar', ','));
-        $this->assertSame(['foo bar'], HeaderUtils::split('"foo" "bar"', ','));
-
-        // These are not a valid header values. We test that they parse anyway,
-        // and that both the valid and invalid parts are returned.
-        $this->assertSame([], HeaderUtils::split('', ','));
-        $this->assertSame([], HeaderUtils::split(',,,', ','));
-        $this->assertSame(['foo', 'bar', 'baz'], HeaderUtils::split('foo, "bar", "baz', ','));
-        $this->assertSame(['foo', 'bar, baz'], HeaderUtils::split('foo, "bar, baz', ','));
-        $this->assertSame(['foo', 'bar, baz\\'], HeaderUtils::split('foo, "bar, baz\\', ','));
-        $this->assertSame(['foo', 'bar, baz\\'], HeaderUtils::split('foo, "bar, baz\\\\', ','));
-    }
-
-    public function testCombine()
-    {
-        $this->assertSame(['foo' => '123'], HeaderUtils::combine([['foo', '123']]));
-        $this->assertSame(['foo' => true], HeaderUtils::combine([['foo']]));
-        $this->assertSame(['foo' => true], HeaderUtils::combine([['Foo']]));
-        $this->assertSame(['foo' => '123', 'bar' => true], HeaderUtils::combine([['foo', '123'], ['bar']]));
-    }
-
-    public function testToString()
-    {
-        $this->assertSame('foo', HeaderUtils::toString(['foo' => true], ','));
-        $this->assertSame('foo; bar', HeaderUtils::toString(['foo' => true, 'bar' => true], ';'));
-        $this->assertSame('foo=123', HeaderUtils::toString(['foo' => '123'], ','));
-        $this->assertSame('foo="1 2 3"', HeaderUtils::toString(['foo' => '1 2 3'], ','));
-        $this->assertSame('foo="1 2 3", bar', HeaderUtils::toString(['foo' => '1 2 3', 'bar' => true], ','));
-    }
-
-    public function testQuote()
-    {
-        $this->assertSame('foo', HeaderUtils::quote('foo'));
-        $this->assertSame('az09!#$%&\'*.^_`|~-', HeaderUtils::quote('az09!#$%&\'*.^_`|~-'));
-        $this->assertSame('"foo bar"', HeaderUtils::quote('foo bar'));
-        $this->assertSame('"foo [bar]"', HeaderUtils::quote('foo [bar]'));
-        $this->assertSame('"foo \"bar\""', HeaderUtils::quote('foo "bar"'));
-        $this->assertSame('"foo \\\\ bar"', HeaderUtils::quote('foo \\ bar'));
-    }
-
-    public function testUnquote()
-    {
-        $this->assertEquals('foo', HeaderUtils::unquote('foo'));
-        $this->assertEquals('az09!#$%&\'*.^_`|~-', HeaderUtils::unquote('az09!#$%&\'*.^_`|~-'));
-        $this->assertEquals('foo bar', HeaderUtils::unquote('"foo bar"'));
-        $this->assertEquals('foo [bar]', HeaderUtils::unquote('"foo [bar]"'));
-        $this->assertEquals('foo "bar"', HeaderUtils::unquote('"foo \"bar\""'));
-        $this->assertEquals('foo "bar"', HeaderUtils::unquote('"foo \"\b\a\r\""'));
-        $this->assertEquals('foo \\ bar', HeaderUtils::unquote('"foo \\\\ bar"'));
-    }
-
-    public function testMakeDispositionInvalidDisposition()
-    {
-        $this->expectException('InvalidArgumentException');
-        HeaderUtils::makeDisposition('invalid', 'foo.html');
-    }
-
-    /**
-     * @dataProvider provideMakeDisposition
-     */
-    public function testMakeDisposition($disposition, $filename, $filenameFallback, $expected)
-    {
-        $this->assertEquals($expected, HeaderUtils::makeDisposition($disposition, $filename, $filenameFallback));
-    }
-
-    public function provideMakeDisposition()
-    {
-        return [
-            ['attachment', 'foo.html', 'foo.html', 'attachment; filename=foo.html'],
-            ['attachment', 'foo.html', '', 'attachment; filename=foo.html'],
-            ['attachment', 'foo bar.html', '', 'attachment; filename="foo bar.html"'],
-            ['attachment', 'foo "bar".html', '', 'attachment; filename="foo \\"bar\\".html"'],
-            ['attachment', 'foo%20bar.html', 'foo bar.html', 'attachment; filename="foo bar.html"; filename*=utf-8\'\'foo%2520bar.html'],
-            ['attachment', 'föö.html', 'foo.html', 'attachment; filename=foo.html; filename*=utf-8\'\'f%C3%B6%C3%B6.html'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideMakeDispositionFail
-     */
-    public function testMakeDispositionFail($disposition, $filename)
-    {
-        $this->expectException('InvalidArgumentException');
-        HeaderUtils::makeDisposition($disposition, $filename);
-    }
-
-    public function provideMakeDispositionFail()
-    {
-        return [
-            ['attachment', 'foo%20bar.html'],
-            ['attachment', 'foo/bar.html'],
-            ['attachment', '/foo.html'],
-            ['attachment', 'foo\bar.html'],
-            ['attachment', '\foo.html'],
-            ['attachment', 'föö.html'],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/IpUtilsTest.php b/vendor/symfony/http-foundation/Tests/IpUtilsTest.php
deleted file mode 100644
index d3b262e048526bdeda870a83a82f497f7a7245f0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/IpUtilsTest.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\IpUtils;
-
-class IpUtilsTest extends TestCase
-{
-    /**
-     * @dataProvider getIpv4Data
-     */
-    public function testIpv4($matches, $remoteAddr, $cidr)
-    {
-        $this->assertSame($matches, IpUtils::checkIp($remoteAddr, $cidr));
-    }
-
-    public function getIpv4Data()
-    {
-        return [
-            [true, '192.168.1.1', '192.168.1.1'],
-            [true, '192.168.1.1', '192.168.1.1/1'],
-            [true, '192.168.1.1', '192.168.1.0/24'],
-            [false, '192.168.1.1', '1.2.3.4/1'],
-            [false, '192.168.1.1', '192.168.1.1/33'], // invalid subnet
-            [true, '192.168.1.1', ['1.2.3.4/1', '192.168.1.0/24']],
-            [true, '192.168.1.1', ['192.168.1.0/24', '1.2.3.4/1']],
-            [false, '192.168.1.1', ['1.2.3.4/1', '4.3.2.1/1']],
-            [true, '1.2.3.4', '0.0.0.0/0'],
-            [true, '1.2.3.4', '192.168.1.0/0'],
-            [false, '1.2.3.4', '256.256.256/0'], // invalid CIDR notation
-            [false, 'an_invalid_ip', '192.168.1.0/24'],
-        ];
-    }
-
-    /**
-     * @dataProvider getIpv6Data
-     */
-    public function testIpv6($matches, $remoteAddr, $cidr)
-    {
-        if (!\defined('AF_INET6')) {
-            $this->markTestSkipped('Only works when PHP is compiled without the option "disable-ipv6".');
-        }
-
-        $this->assertSame($matches, IpUtils::checkIp($remoteAddr, $cidr));
-    }
-
-    public function getIpv6Data()
-    {
-        return [
-            [true, '2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'],
-            [false, '2a00:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'],
-            [false, '2a01:198:603:0:396e:4789:8e99:890f', '::1'],
-            [true, '0:0:0:0:0:0:0:1', '::1'],
-            [false, '0:0:603:0:396e:4789:8e99:0001', '::1'],
-            [true, '0:0:603:0:396e:4789:8e99:0001', '::/0'],
-            [true, '0:0:603:0:396e:4789:8e99:0001', '2a01:198:603:0::/0'],
-            [true, '2a01:198:603:0:396e:4789:8e99:890f', ['::1', '2a01:198:603:0::/65']],
-            [true, '2a01:198:603:0:396e:4789:8e99:890f', ['2a01:198:603:0::/65', '::1']],
-            [false, '2a01:198:603:0:396e:4789:8e99:890f', ['::1', '1a01:198:603:0::/65']],
-            [false, '}__test|O:21:&quot;JDatabaseDriverMysqli&quot;:3:{s:2', '::1'],
-            [false, '2a01:198:603:0:396e:4789:8e99:890f', 'unknown'],
-        ];
-    }
-
-    /**
-     * @requires extension sockets
-     */
-    public function testAnIpv6WithOptionDisabledIpv6()
-    {
-        $this->expectException('RuntimeException');
-        if (\defined('AF_INET6')) {
-            $this->markTestSkipped('Only works when PHP is compiled with the option "disable-ipv6".');
-        }
-
-        IpUtils::checkIp('2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65');
-    }
-
-    /**
-     * @dataProvider invalidIpAddressData
-     */
-    public function testInvalidIpAddressesDoNotMatch($requestIp, $proxyIp)
-    {
-        $this->assertFalse(IpUtils::checkIp4($requestIp, $proxyIp));
-    }
-
-    public function invalidIpAddressData()
-    {
-        return [
-            'invalid proxy wildcard' => ['192.168.20.13', '*'],
-            'invalid proxy missing netmask' => ['192.168.20.13', '0.0.0.0'],
-            'invalid request IP with invalid proxy wildcard' => ['0.0.0.0', '*'],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/JsonResponseTest.php b/vendor/symfony/http-foundation/Tests/JsonResponseTest.php
deleted file mode 100644
index aa8441799b2b6d6fcc26e75fe40c40b310ffd45b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/JsonResponseTest.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\JsonResponse;
-
-class JsonResponseTest extends TestCase
-{
-    public function testConstructorEmptyCreatesJsonObject()
-    {
-        $response = new JsonResponse();
-        $this->assertSame('{}', $response->getContent());
-    }
-
-    public function testConstructorWithArrayCreatesJsonArray()
-    {
-        $response = new JsonResponse([0, 1, 2, 3]);
-        $this->assertSame('[0,1,2,3]', $response->getContent());
-    }
-
-    public function testConstructorWithAssocArrayCreatesJsonObject()
-    {
-        $response = new JsonResponse(['foo' => 'bar']);
-        $this->assertSame('{"foo":"bar"}', $response->getContent());
-    }
-
-    public function testConstructorWithSimpleTypes()
-    {
-        $response = new JsonResponse('foo');
-        $this->assertSame('"foo"', $response->getContent());
-
-        $response = new JsonResponse(0);
-        $this->assertSame('0', $response->getContent());
-
-        $response = new JsonResponse(0.1);
-        $this->assertEquals(0.1, $response->getContent());
-        $this->assertIsString($response->getContent());
-
-        $response = new JsonResponse(true);
-        $this->assertSame('true', $response->getContent());
-    }
-
-    public function testConstructorWithCustomStatus()
-    {
-        $response = new JsonResponse([], 202);
-        $this->assertSame(202, $response->getStatusCode());
-    }
-
-    public function testConstructorAddsContentTypeHeader()
-    {
-        $response = new JsonResponse();
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-    }
-
-    public function testConstructorWithCustomHeaders()
-    {
-        $response = new JsonResponse([], 200, ['ETag' => 'foo']);
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-        $this->assertSame('foo', $response->headers->get('ETag'));
-    }
-
-    public function testConstructorWithCustomContentType()
-    {
-        $headers = ['Content-Type' => 'application/vnd.acme.blog-v1+json'];
-
-        $response = new JsonResponse([], 200, $headers);
-        $this->assertSame('application/vnd.acme.blog-v1+json', $response->headers->get('Content-Type'));
-    }
-
-    public function testSetJson()
-    {
-        $response = new JsonResponse('1', 200, [], true);
-        $this->assertEquals('1', $response->getContent());
-
-        $response = new JsonResponse('[1]', 200, [], true);
-        $this->assertEquals('[1]', $response->getContent());
-
-        $response = new JsonResponse(null, 200, []);
-        $response->setJson('true');
-        $this->assertEquals('true', $response->getContent());
-    }
-
-    public function testCreate()
-    {
-        $response = JsonResponse::create(['foo' => 'bar'], 204);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertEquals('{"foo":"bar"}', $response->getContent());
-        $this->assertEquals(204, $response->getStatusCode());
-    }
-
-    public function testStaticCreateEmptyJsonObject()
-    {
-        $response = JsonResponse::create();
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('{}', $response->getContent());
-    }
-
-    public function testStaticCreateJsonArray()
-    {
-        $response = JsonResponse::create([0, 1, 2, 3]);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('[0,1,2,3]', $response->getContent());
-    }
-
-    public function testStaticCreateJsonObject()
-    {
-        $response = JsonResponse::create(['foo' => 'bar']);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('{"foo":"bar"}', $response->getContent());
-    }
-
-    public function testStaticCreateWithSimpleTypes()
-    {
-        $response = JsonResponse::create('foo');
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('"foo"', $response->getContent());
-
-        $response = JsonResponse::create(0);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('0', $response->getContent());
-
-        $response = JsonResponse::create(0.1);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertEquals(0.1, $response->getContent());
-        $this->assertIsString($response->getContent());
-
-        $response = JsonResponse::create(true);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('true', $response->getContent());
-    }
-
-    public function testStaticCreateWithCustomStatus()
-    {
-        $response = JsonResponse::create([], 202);
-        $this->assertSame(202, $response->getStatusCode());
-    }
-
-    public function testStaticCreateAddsContentTypeHeader()
-    {
-        $response = JsonResponse::create();
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-    }
-
-    public function testStaticCreateWithCustomHeaders()
-    {
-        $response = JsonResponse::create([], 200, ['ETag' => 'foo']);
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-        $this->assertSame('foo', $response->headers->get('ETag'));
-    }
-
-    public function testStaticCreateWithCustomContentType()
-    {
-        $headers = ['Content-Type' => 'application/vnd.acme.blog-v1+json'];
-
-        $response = JsonResponse::create([], 200, $headers);
-        $this->assertSame('application/vnd.acme.blog-v1+json', $response->headers->get('Content-Type'));
-    }
-
-    public function testSetCallback()
-    {
-        $response = JsonResponse::create(['foo' => 'bar'])->setCallback('callback');
-
-        $this->assertEquals('/**/callback({"foo":"bar"});', $response->getContent());
-        $this->assertEquals('text/javascript', $response->headers->get('Content-Type'));
-    }
-
-    public function testJsonEncodeFlags()
-    {
-        $response = new JsonResponse('<>\'&"');
-
-        $this->assertEquals('"\u003C\u003E\u0027\u0026\u0022"', $response->getContent());
-    }
-
-    public function testGetEncodingOptions()
-    {
-        $response = new JsonResponse();
-
-        $this->assertEquals(JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT, $response->getEncodingOptions());
-    }
-
-    public function testSetEncodingOptions()
-    {
-        $response = new JsonResponse();
-        $response->setData([[1, 2, 3]]);
-
-        $this->assertEquals('[[1,2,3]]', $response->getContent());
-
-        $response->setEncodingOptions(JSON_FORCE_OBJECT);
-
-        $this->assertEquals('{"0":{"0":1,"1":2,"2":3}}', $response->getContent());
-    }
-
-    public function testItAcceptsJsonAsString()
-    {
-        $response = JsonResponse::fromJsonString('{"foo":"bar"}');
-        $this->assertSame('{"foo":"bar"}', $response->getContent());
-    }
-
-    public function testSetCallbackInvalidIdentifier()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new JsonResponse('foo');
-        $response->setCallback('+invalid');
-    }
-
-    public function testSetContent()
-    {
-        $this->expectException('InvalidArgumentException');
-        JsonResponse::create("\xB1\x31");
-    }
-
-    public function testSetContentJsonSerializeError()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('This error is expected');
-        if (!interface_exists('JsonSerializable', false)) {
-            $this->markTestSkipped('JsonSerializable is required.');
-        }
-
-        $serializable = new JsonSerializableObject();
-
-        JsonResponse::create($serializable);
-    }
-
-    public function testSetComplexCallback()
-    {
-        $response = JsonResponse::create(['foo' => 'bar']);
-        $response->setCallback('ಠ_ಠ["foo"].bar[0]');
-
-        $this->assertEquals('/**/ಠ_ಠ["foo"].bar[0]({"foo":"bar"});', $response->getContent());
-    }
-}
-
-if (interface_exists('JsonSerializable', false)) {
-    class JsonSerializableObject implements \JsonSerializable
-    {
-        public function jsonSerialize()
-        {
-            throw new \Exception('This error is expected');
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ParameterBagTest.php b/vendor/symfony/http-foundation/Tests/ParameterBagTest.php
deleted file mode 100644
index d2a5c991cc7f68213da34208c9f8000d435d9c54..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ParameterBagTest.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\ParameterBag;
-
-class ParameterBagTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $this->testAll();
-    }
-
-    public function testAll()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $this->assertEquals(['foo' => 'bar'], $bag->all(), '->all() gets all the input');
-    }
-
-    public function testKeys()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $this->assertEquals(['foo'], $bag->keys());
-    }
-
-    public function testAdd()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $bag->add(['bar' => 'bas']);
-        $this->assertEquals(['foo' => 'bar', 'bar' => 'bas'], $bag->all());
-    }
-
-    public function testRemove()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $bag->add(['bar' => 'bas']);
-        $this->assertEquals(['foo' => 'bar', 'bar' => 'bas'], $bag->all());
-        $bag->remove('bar');
-        $this->assertEquals(['foo' => 'bar'], $bag->all());
-    }
-
-    public function testReplace()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-
-        $bag->replace(['FOO' => 'BAR']);
-        $this->assertEquals(['FOO' => 'BAR'], $bag->all(), '->replace() replaces the input with the argument');
-        $this->assertFalse($bag->has('foo'), '->replace() overrides previously set the input');
-    }
-
-    public function testGet()
-    {
-        $bag = new ParameterBag(['foo' => 'bar', 'null' => null]);
-
-        $this->assertEquals('bar', $bag->get('foo'), '->get() gets the value of a parameter');
-        $this->assertEquals('default', $bag->get('unknown', 'default'), '->get() returns second argument as default if a parameter is not defined');
-        $this->assertNull($bag->get('null', 'default'), '->get() returns null if null is set');
-    }
-
-    public function testGetDoesNotUseDeepByDefault()
-    {
-        $bag = new ParameterBag(['foo' => ['bar' => 'moo']]);
-
-        $this->assertNull($bag->get('foo[bar]'));
-    }
-
-    public function testSet()
-    {
-        $bag = new ParameterBag([]);
-
-        $bag->set('foo', 'bar');
-        $this->assertEquals('bar', $bag->get('foo'), '->set() sets the value of parameter');
-
-        $bag->set('foo', 'baz');
-        $this->assertEquals('baz', $bag->get('foo'), '->set() overrides previously set parameter');
-    }
-
-    public function testHas()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-
-        $this->assertTrue($bag->has('foo'), '->has() returns true if a parameter is defined');
-        $this->assertFalse($bag->has('unknown'), '->has() return false if a parameter is not defined');
-    }
-
-    public function testGetAlpha()
-    {
-        $bag = new ParameterBag(['word' => 'foo_BAR_012']);
-
-        $this->assertEquals('fooBAR', $bag->getAlpha('word'), '->getAlpha() gets only alphabetic characters');
-        $this->assertEquals('', $bag->getAlpha('unknown'), '->getAlpha() returns empty string if a parameter is not defined');
-    }
-
-    public function testGetAlnum()
-    {
-        $bag = new ParameterBag(['word' => 'foo_BAR_012']);
-
-        $this->assertEquals('fooBAR012', $bag->getAlnum('word'), '->getAlnum() gets only alphanumeric characters');
-        $this->assertEquals('', $bag->getAlnum('unknown'), '->getAlnum() returns empty string if a parameter is not defined');
-    }
-
-    public function testGetDigits()
-    {
-        $bag = new ParameterBag(['word' => 'foo_BAR_012']);
-
-        $this->assertEquals('012', $bag->getDigits('word'), '->getDigits() gets only digits as string');
-        $this->assertEquals('', $bag->getDigits('unknown'), '->getDigits() returns empty string if a parameter is not defined');
-    }
-
-    public function testGetInt()
-    {
-        $bag = new ParameterBag(['digits' => '0123']);
-
-        $this->assertEquals(123, $bag->getInt('digits'), '->getInt() gets a value of parameter as integer');
-        $this->assertEquals(0, $bag->getInt('unknown'), '->getInt() returns zero if a parameter is not defined');
-    }
-
-    public function testFilter()
-    {
-        $bag = new ParameterBag([
-            'digits' => '0123ab',
-            'email' => 'example@example.com',
-            'url' => 'http://example.com/foo',
-            'dec' => '256',
-            'hex' => '0x100',
-            'array' => ['bang'],
-            ]);
-
-        $this->assertEmpty($bag->filter('nokey'), '->filter() should return empty by default if no key is found');
-
-        $this->assertEquals('0123', $bag->filter('digits', '', FILTER_SANITIZE_NUMBER_INT), '->filter() gets a value of parameter as integer filtering out invalid characters');
-
-        $this->assertEquals('example@example.com', $bag->filter('email', '', FILTER_VALIDATE_EMAIL), '->filter() gets a value of parameter as email');
-
-        $this->assertEquals('http://example.com/foo', $bag->filter('url', '', FILTER_VALIDATE_URL, ['flags' => FILTER_FLAG_PATH_REQUIRED]), '->filter() gets a value of parameter as URL with a path');
-
-        // This test is repeated for code-coverage
-        $this->assertEquals('http://example.com/foo', $bag->filter('url', '', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED), '->filter() gets a value of parameter as URL with a path');
-
-        $this->assertFalse($bag->filter('dec', '', FILTER_VALIDATE_INT, [
-            'flags' => FILTER_FLAG_ALLOW_HEX,
-            'options' => ['min_range' => 1, 'max_range' => 0xff],
-        ]), '->filter() gets a value of parameter as integer between boundaries');
-
-        $this->assertFalse($bag->filter('hex', '', FILTER_VALIDATE_INT, [
-            'flags' => FILTER_FLAG_ALLOW_HEX,
-            'options' => ['min_range' => 1, 'max_range' => 0xff],
-        ]), '->filter() gets a value of parameter as integer between boundaries');
-
-        $this->assertEquals(['bang'], $bag->filter('array', ''), '->filter() gets a value of parameter as an array');
-    }
-
-    public function testGetIterator()
-    {
-        $parameters = ['foo' => 'bar', 'hello' => 'world'];
-        $bag = new ParameterBag($parameters);
-
-        $i = 0;
-        foreach ($bag as $key => $val) {
-            ++$i;
-            $this->assertEquals($parameters[$key], $val);
-        }
-
-        $this->assertEquals(\count($parameters), $i);
-    }
-
-    public function testCount()
-    {
-        $parameters = ['foo' => 'bar', 'hello' => 'world'];
-        $bag = new ParameterBag($parameters);
-
-        $this->assertCount(\count($parameters), $bag);
-    }
-
-    public function testGetBoolean()
-    {
-        $parameters = ['string_true' => 'true', 'string_false' => 'false'];
-        $bag = new ParameterBag($parameters);
-
-        $this->assertTrue($bag->getBoolean('string_true'), '->getBoolean() gets the string true as boolean true');
-        $this->assertFalse($bag->getBoolean('string_false'), '->getBoolean() gets the string false as boolean false');
-        $this->assertFalse($bag->getBoolean('unknown'), '->getBoolean() returns false if a parameter is not defined');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RedirectResponseTest.php b/vendor/symfony/http-foundation/Tests/RedirectResponseTest.php
deleted file mode 100644
index 92f4876da4ff1e0060e572d3c00f4b3d1af8ab30..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/RedirectResponseTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-
-class RedirectResponseTest extends TestCase
-{
-    public function testGenerateMetaRedirect()
-    {
-        $response = new RedirectResponse('foo.bar');
-
-        $this->assertEquals(1, preg_match(
-            '#<meta http-equiv="refresh" content="\d+;url=foo\.bar" />#',
-            preg_replace(['/\s+/', '/\'/'], [' ', '"'], $response->getContent())
-        ));
-    }
-
-    public function testRedirectResponseConstructorNullUrl()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new RedirectResponse(null);
-    }
-
-    public function testRedirectResponseConstructorWrongStatusCode()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new RedirectResponse('foo.bar', 404);
-    }
-
-    public function testGenerateLocationHeader()
-    {
-        $response = new RedirectResponse('foo.bar');
-
-        $this->assertTrue($response->headers->has('Location'));
-        $this->assertEquals('foo.bar', $response->headers->get('Location'));
-    }
-
-    public function testGetTargetUrl()
-    {
-        $response = new RedirectResponse('foo.bar');
-
-        $this->assertEquals('foo.bar', $response->getTargetUrl());
-    }
-
-    public function testSetTargetUrl()
-    {
-        $response = new RedirectResponse('foo.bar');
-        $response->setTargetUrl('baz.beep');
-
-        $this->assertEquals('baz.beep', $response->getTargetUrl());
-    }
-
-    public function testSetTargetUrlNull()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new RedirectResponse('foo.bar');
-        $response->setTargetUrl(null);
-    }
-
-    public function testCreate()
-    {
-        $response = RedirectResponse::create('foo', 301);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\RedirectResponse', $response);
-        $this->assertEquals(301, $response->getStatusCode());
-    }
-
-    public function testCacheHeaders()
-    {
-        $response = new RedirectResponse('foo.bar', 301);
-        $this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
-
-        $response = new RedirectResponse('foo.bar', 301, ['cache-control' => 'max-age=86400']);
-        $this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('max-age'));
-
-        $response = new RedirectResponse('foo.bar', 301, ['Cache-Control' => 'max-age=86400']);
-        $this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('max-age'));
-
-        $response = new RedirectResponse('foo.bar', 302);
-        $this->assertTrue($response->headers->hasCacheControlDirective('no-cache'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RequestMatcherTest.php b/vendor/symfony/http-foundation/Tests/RequestMatcherTest.php
deleted file mode 100644
index 57e9c3d30f2c9dfd6468e84eb39ae7c25c9284ca..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/RequestMatcherTest.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestMatcher;
-
-class RequestMatcherTest extends TestCase
-{
-    /**
-     * @dataProvider getMethodData
-     */
-    public function testMethod($requestMethod, $matcherMethod, $isMatch)
-    {
-        $matcher = new RequestMatcher();
-        $matcher->matchMethod($matcherMethod);
-        $request = Request::create('', $requestMethod);
-        $this->assertSame($isMatch, $matcher->matches($request));
-
-        $matcher = new RequestMatcher(null, null, $matcherMethod);
-        $request = Request::create('', $requestMethod);
-        $this->assertSame($isMatch, $matcher->matches($request));
-    }
-
-    public function getMethodData()
-    {
-        return [
-            ['get', 'get', true],
-            ['get', ['get', 'post'], true],
-            ['get', 'post', false],
-            ['get', 'GET', true],
-            ['get', ['GET', 'POST'], true],
-            ['get', 'POST', false],
-        ];
-    }
-
-    public function testScheme()
-    {
-        $httpRequest = $request = $request = Request::create('');
-        $httpsRequest = $request = $request = Request::create('', 'get', [], [], [], ['HTTPS' => 'on']);
-
-        $matcher = new RequestMatcher();
-        $matcher->matchScheme('https');
-        $this->assertFalse($matcher->matches($httpRequest));
-        $this->assertTrue($matcher->matches($httpsRequest));
-
-        $matcher->matchScheme('http');
-        $this->assertFalse($matcher->matches($httpsRequest));
-        $this->assertTrue($matcher->matches($httpRequest));
-
-        $matcher = new RequestMatcher();
-        $this->assertTrue($matcher->matches($httpsRequest));
-        $this->assertTrue($matcher->matches($httpRequest));
-    }
-
-    /**
-     * @dataProvider getHostData
-     */
-    public function testHost($pattern, $isMatch)
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('', 'get', [], [], [], ['HTTP_HOST' => 'foo.example.com']);
-
-        $matcher->matchHost($pattern);
-        $this->assertSame($isMatch, $matcher->matches($request));
-
-        $matcher = new RequestMatcher(null, $pattern);
-        $this->assertSame($isMatch, $matcher->matches($request));
-    }
-
-    public function testPort()
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('', 'get', [], [], [], ['HTTP_HOST' => null, 'SERVER_PORT' => 8000]);
-
-        $matcher->matchPort(8000);
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchPort(9000);
-        $this->assertFalse($matcher->matches($request));
-
-        $matcher = new RequestMatcher(null, null, null, null, [], null, 8000);
-        $this->assertTrue($matcher->matches($request));
-    }
-
-    public function getHostData()
-    {
-        return [
-            ['.*\.example\.com', true],
-            ['\.example\.com$', true],
-            ['^.*\.example\.com$', true],
-            ['.*\.sensio\.com', false],
-            ['.*\.example\.COM', true],
-            ['\.example\.COM$', true],
-            ['^.*\.example\.COM$', true],
-            ['.*\.sensio\.COM', false],
-        ];
-    }
-
-    public function testPath()
-    {
-        $matcher = new RequestMatcher();
-
-        $request = Request::create('/admin/foo');
-
-        $matcher->matchPath('/admin/.*');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchPath('/admin');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchPath('^/admin/.*$');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchMethod('/blog/.*');
-        $this->assertFalse($matcher->matches($request));
-    }
-
-    public function testPathWithLocaleIsNotSupported()
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('/en/login');
-        $request->setLocale('en');
-
-        $matcher->matchPath('^/{_locale}/login$');
-        $this->assertFalse($matcher->matches($request));
-    }
-
-    public function testPathWithEncodedCharacters()
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('/admin/fo%20o');
-        $matcher->matchPath('^/admin/fo o*$');
-        $this->assertTrue($matcher->matches($request));
-    }
-
-    public function testAttributes()
-    {
-        $matcher = new RequestMatcher();
-
-        $request = Request::create('/admin/foo');
-        $request->attributes->set('foo', 'foo_bar');
-
-        $matcher->matchAttribute('foo', 'foo_.*');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchAttribute('foo', 'foo');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchAttribute('foo', '^foo_bar$');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchAttribute('foo', 'babar');
-        $this->assertFalse($matcher->matches($request));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RequestStackTest.php b/vendor/symfony/http-foundation/Tests/RequestStackTest.php
deleted file mode 100644
index a84fb26f0b59b72927e5e4c7c7a2460ad22e1a84..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/RequestStackTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-
-class RequestStackTest extends TestCase
-{
-    public function testGetCurrentRequest()
-    {
-        $requestStack = new RequestStack();
-        $this->assertNull($requestStack->getCurrentRequest());
-
-        $request = Request::create('/foo');
-
-        $requestStack->push($request);
-        $this->assertSame($request, $requestStack->getCurrentRequest());
-
-        $this->assertSame($request, $requestStack->pop());
-        $this->assertNull($requestStack->getCurrentRequest());
-
-        $this->assertNull($requestStack->pop());
-    }
-
-    public function testGetMasterRequest()
-    {
-        $requestStack = new RequestStack();
-        $this->assertNull($requestStack->getMasterRequest());
-
-        $masterRequest = Request::create('/foo');
-        $subRequest = Request::create('/bar');
-
-        $requestStack->push($masterRequest);
-        $requestStack->push($subRequest);
-
-        $this->assertSame($masterRequest, $requestStack->getMasterRequest());
-    }
-
-    public function testGetParentRequest()
-    {
-        $requestStack = new RequestStack();
-        $this->assertNull($requestStack->getParentRequest());
-
-        $masterRequest = Request::create('/foo');
-
-        $requestStack->push($masterRequest);
-        $this->assertNull($requestStack->getParentRequest());
-
-        $firstSubRequest = Request::create('/bar');
-
-        $requestStack->push($firstSubRequest);
-        $this->assertSame($masterRequest, $requestStack->getParentRequest());
-
-        $secondSubRequest = Request::create('/baz');
-
-        $requestStack->push($secondSubRequest);
-        $this->assertSame($firstSubRequest, $requestStack->getParentRequest());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RequestTest.php b/vendor/symfony/http-foundation/Tests/RequestTest.php
deleted file mode 100644
index d56ef31476f59c0e6cf3132e63decd48af45b315..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/RequestTest.php
+++ /dev/null
@@ -1,2325 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-
-class RequestTest extends TestCase
-{
-    protected function tearDown(): void
-    {
-        Request::setTrustedProxies([], -1);
-        Request::setTrustedHosts([]);
-    }
-
-    public function testInitialize()
-    {
-        $request = new Request();
-
-        $request->initialize(['foo' => 'bar']);
-        $this->assertEquals('bar', $request->query->get('foo'), '->initialize() takes an array of query parameters as its first argument');
-
-        $request->initialize([], ['foo' => 'bar']);
-        $this->assertEquals('bar', $request->request->get('foo'), '->initialize() takes an array of request parameters as its second argument');
-
-        $request->initialize([], [], ['foo' => 'bar']);
-        $this->assertEquals('bar', $request->attributes->get('foo'), '->initialize() takes an array of attributes as its third argument');
-
-        $request->initialize([], [], [], [], [], ['HTTP_FOO' => 'bar']);
-        $this->assertEquals('bar', $request->headers->get('FOO'), '->initialize() takes an array of HTTP headers as its sixth argument');
-    }
-
-    public function testGetLocale()
-    {
-        $request = new Request();
-        $request->setLocale('pl');
-        $locale = $request->getLocale();
-        $this->assertEquals('pl', $locale);
-    }
-
-    public function testGetUser()
-    {
-        $request = Request::create('http://user:password@test.com');
-        $user = $request->getUser();
-
-        $this->assertEquals('user', $user);
-    }
-
-    public function testGetPassword()
-    {
-        $request = Request::create('http://user:password@test.com');
-        $password = $request->getPassword();
-
-        $this->assertEquals('password', $password);
-    }
-
-    public function testIsNoCache()
-    {
-        $request = new Request();
-        $isNoCache = $request->isNoCache();
-
-        $this->assertFalse($isNoCache);
-    }
-
-    public function testGetContentType()
-    {
-        $request = new Request();
-        $contentType = $request->getContentType();
-
-        $this->assertNull($contentType);
-    }
-
-    public function testSetDefaultLocale()
-    {
-        $request = new Request();
-        $request->setDefaultLocale('pl');
-        $locale = $request->getLocale();
-
-        $this->assertEquals('pl', $locale);
-    }
-
-    public function testCreate()
-    {
-        $request = Request::create('http://test.com/foo?bar=baz');
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/foo', 'GET', ['bar' => 'baz']);
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/foo?bar=foo', 'GET', ['bar' => 'baz']);
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('https://test.com/foo?bar=baz');
-        $this->assertEquals('https://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('test.com:90/foo');
-        $this->assertEquals('http://test.com:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('https://test.com:90/foo');
-        $this->assertEquals('https://test.com:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('https://127.0.0.1:90/foo');
-        $this->assertEquals('https://127.0.0.1:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('127.0.0.1', $request->getHost());
-        $this->assertEquals('127.0.0.1:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('https://[::1]:90/foo');
-        $this->assertEquals('https://[::1]:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('[::1]', $request->getHost());
-        $this->assertEquals('[::1]:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('https://[::1]/foo');
-        $this->assertEquals('https://[::1]/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('[::1]', $request->getHost());
-        $this->assertEquals('[::1]', $request->getHttpHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $json = '{"jsonrpc":"2.0","method":"echo","id":7,"params":["Hello World"]}';
-        $request = Request::create('http://example.com/jsonrpc', 'POST', [], [], [], [], $json);
-        $this->assertEquals($json, $request->getContent());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com');
-        $this->assertEquals('http://test.com/', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com?test=1');
-        $this->assertEquals('http://test.com/?test=1', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('test=1', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com:90/?test=1');
-        $this->assertEquals('http://test.com:90/?test=1', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('test=1', $request->getQueryString());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertEquals('test.com:90', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://username:password@test.com');
-        $this->assertEquals('http://test.com/', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals('username', $request->getUser());
-        $this->assertEquals('password', $request->getPassword());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://username@test.com');
-        $this->assertEquals('http://test.com/', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals('username', $request->getUser());
-        $this->assertSame('', $request->getPassword());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/?foo');
-        $this->assertEquals('/?foo', $request->getRequestUri());
-        $this->assertEquals(['foo' => ''], $request->query->all());
-
-        // assume rewrite rule: (.*) --> app/app.php; app/ is a symlink to a symfony web/ directory
-        $request = Request::create('http://test.com/apparthotel-1234', 'GET', [], [], [],
-            [
-                'DOCUMENT_ROOT' => '/var/www/www.test.com',
-                'SCRIPT_FILENAME' => '/var/www/www.test.com/app/app.php',
-                'SCRIPT_NAME' => '/app/app.php',
-                'PHP_SELF' => '/app/app.php/apparthotel-1234',
-            ]);
-        $this->assertEquals('http://test.com/apparthotel-1234', $request->getUri());
-        $this->assertEquals('/apparthotel-1234', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        // Fragment should not be included in the URI
-        $request = Request::create('http://test.com/foo#bar');
-        $this->assertEquals('http://test.com/foo', $request->getUri());
-    }
-
-    public function testCreateWithRequestUri()
-    {
-        $request = Request::create('http://test.com:80/foo');
-        $request->server->set('REQUEST_URI', 'http://test.com:80/foo');
-        $this->assertEquals('http://test.com/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com:8080/foo');
-        $request->server->set('REQUEST_URI', 'http://test.com:8080/foo');
-        $this->assertEquals('http://test.com:8080/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com:8080', $request->getHttpHost());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/foo?bar=foo', 'GET', ['bar' => 'baz']);
-        $request->server->set('REQUEST_URI', 'http://test.com/foo?bar=foo');
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('https://test.com:443/foo');
-        $request->server->set('REQUEST_URI', 'https://test.com:443/foo');
-        $this->assertEquals('https://test.com/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        // Fragment should not be included in the URI
-        $request = Request::create('http://test.com/foo#bar');
-        $request->server->set('REQUEST_URI', 'http://test.com/foo#bar');
-        $this->assertEquals('http://test.com/foo', $request->getUri());
-    }
-
-    /**
-     * @dataProvider getRequestUriData
-     */
-    public function testGetRequestUri($serverRequestUri, $expected, $message)
-    {
-        $request = new Request();
-        $request->server->add([
-            'REQUEST_URI' => $serverRequestUri,
-
-            // For having http://test.com
-            'SERVER_NAME' => 'test.com',
-            'SERVER_PORT' => 80,
-        ]);
-
-        $this->assertSame($expected, $request->getRequestUri(), $message);
-        $this->assertSame($expected, $request->server->get('REQUEST_URI'), 'Normalize the request URI.');
-    }
-
-    public function getRequestUriData()
-    {
-        $message = 'Do not modify the path.';
-        yield ['/foo', '/foo', $message];
-        yield ['//bar/foo', '//bar/foo', $message];
-        yield ['///bar/foo', '///bar/foo', $message];
-
-        $message = 'Handle when the scheme, host are on REQUEST_URI.';
-        yield ['http://test.com/foo?bar=baz', '/foo?bar=baz', $message];
-
-        $message = 'Handle when the scheme, host and port are on REQUEST_URI.';
-        yield ['http://test.com:80/foo', '/foo', $message];
-        yield ['https://test.com:8080/foo', '/foo', $message];
-        yield ['https://test.com:443/foo', '/foo', $message];
-
-        $message = 'Fragment should not be included in the URI';
-        yield ['http://test.com/foo#bar', '/foo', $message];
-        yield ['/foo#bar', '/foo', $message];
-    }
-
-    public function testGetRequestUriWithoutRequiredHeader()
-    {
-        $expected = '';
-
-        $request = new Request();
-
-        $message = 'Fallback to empty URI when headers are missing.';
-        $this->assertSame($expected, $request->getRequestUri(), $message);
-        $this->assertSame($expected, $request->server->get('REQUEST_URI'), 'Normalize the request URI.');
-    }
-
-    public function testCreateCheckPrecedence()
-    {
-        // server is used by default
-        $request = Request::create('/', 'DELETE', [], [], [], [
-            'HTTP_HOST' => 'example.com',
-            'HTTPS' => 'on',
-            'SERVER_PORT' => 443,
-            'PHP_AUTH_USER' => 'fabien',
-            'PHP_AUTH_PW' => 'pa$$',
-            'QUERY_STRING' => 'foo=bar',
-            'CONTENT_TYPE' => 'application/json',
-        ]);
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-        $this->assertEquals('fabien', $request->getUser());
-        $this->assertEquals('pa$$', $request->getPassword());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals('application/json', $request->headers->get('CONTENT_TYPE'));
-
-        // URI has precedence over server
-        $request = Request::create('http://thomas:pokemon@example.net:8080/?foo=bar', 'GET', [], [], [], [
-            'HTTP_HOST' => 'example.com',
-            'HTTPS' => 'on',
-            'SERVER_PORT' => 443,
-        ]);
-        $this->assertEquals('example.net', $request->getHost());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertFalse($request->isSecure());
-        $this->assertEquals('thomas', $request->getUser());
-        $this->assertEquals('pokemon', $request->getPassword());
-        $this->assertEquals('foo=bar', $request->getQueryString());
-    }
-
-    public function testDuplicate()
-    {
-        $request = new Request(['foo' => 'bar'], ['foo' => 'bar'], ['foo' => 'bar'], [], [], ['HTTP_FOO' => 'bar']);
-        $dup = $request->duplicate();
-
-        $this->assertEquals($request->query->all(), $dup->query->all(), '->duplicate() duplicates a request an copy the current query parameters');
-        $this->assertEquals($request->request->all(), $dup->request->all(), '->duplicate() duplicates a request an copy the current request parameters');
-        $this->assertEquals($request->attributes->all(), $dup->attributes->all(), '->duplicate() duplicates a request an copy the current attributes');
-        $this->assertEquals($request->headers->all(), $dup->headers->all(), '->duplicate() duplicates a request an copy the current HTTP headers');
-
-        $dup = $request->duplicate(['foo' => 'foobar'], ['foo' => 'foobar'], ['foo' => 'foobar'], [], [], ['HTTP_FOO' => 'foobar']);
-
-        $this->assertEquals(['foo' => 'foobar'], $dup->query->all(), '->duplicate() overrides the query parameters if provided');
-        $this->assertEquals(['foo' => 'foobar'], $dup->request->all(), '->duplicate() overrides the request parameters if provided');
-        $this->assertEquals(['foo' => 'foobar'], $dup->attributes->all(), '->duplicate() overrides the attributes if provided');
-        $this->assertEquals(['foo' => ['foobar']], $dup->headers->all(), '->duplicate() overrides the HTTP header if provided');
-    }
-
-    public function testDuplicateWithFormat()
-    {
-        $request = new Request([], [], ['_format' => 'json']);
-        $dup = $request->duplicate();
-
-        $this->assertEquals('json', $dup->getRequestFormat());
-        $this->assertEquals('json', $dup->attributes->get('_format'));
-
-        $request = new Request();
-        $request->setRequestFormat('xml');
-        $dup = $request->duplicate();
-
-        $this->assertEquals('xml', $dup->getRequestFormat());
-    }
-
-    /**
-     * @dataProvider getFormatToMimeTypeMapProviderWithAdditionalNullFormat
-     */
-    public function testGetFormatFromMimeType($format, $mimeTypes)
-    {
-        $request = new Request();
-        foreach ($mimeTypes as $mime) {
-            $this->assertEquals($format, $request->getFormat($mime));
-        }
-        $request->setFormat($format, $mimeTypes);
-        foreach ($mimeTypes as $mime) {
-            $this->assertEquals($format, $request->getFormat($mime));
-
-            if (null !== $format) {
-                $this->assertEquals($mimeTypes[0], $request->getMimeType($format));
-            }
-        }
-    }
-
-    public function getFormatToMimeTypeMapProviderWithAdditionalNullFormat()
-    {
-        return array_merge(
-            [[null, [null, 'unexistent-mime-type']]],
-            $this->getFormatToMimeTypeMapProvider()
-        );
-    }
-
-    public function testGetFormatFromMimeTypeWithParameters()
-    {
-        $request = new Request();
-        $this->assertEquals('json', $request->getFormat('application/json; charset=utf-8'));
-        $this->assertEquals('json', $request->getFormat('application/json;charset=utf-8'));
-        $this->assertEquals('json', $request->getFormat('application/json ; charset=utf-8'));
-        $this->assertEquals('json', $request->getFormat('application/json ;charset=utf-8'));
-    }
-
-    /**
-     * @dataProvider getFormatToMimeTypeMapProvider
-     */
-    public function testGetMimeTypeFromFormat($format, $mimeTypes)
-    {
-        $request = new Request();
-        $this->assertEquals($mimeTypes[0], $request->getMimeType($format));
-    }
-
-    /**
-     * @dataProvider getFormatToMimeTypeMapProvider
-     */
-    public function testGetMimeTypesFromFormat($format, $mimeTypes)
-    {
-        $this->assertEquals($mimeTypes, Request::getMimeTypes($format));
-    }
-
-    public function testGetMimeTypesFromInexistentFormat()
-    {
-        $request = new Request();
-        $this->assertNull($request->getMimeType('foo'));
-        $this->assertEquals([], Request::getMimeTypes('foo'));
-    }
-
-    public function testGetFormatWithCustomMimeType()
-    {
-        $request = new Request();
-        $request->setFormat('custom', 'application/vnd.foo.api;myversion=2.3');
-        $this->assertEquals('custom', $request->getFormat('application/vnd.foo.api;myversion=2.3'));
-    }
-
-    public function getFormatToMimeTypeMapProvider()
-    {
-        return [
-            ['txt', ['text/plain']],
-            ['js', ['application/javascript', 'application/x-javascript', 'text/javascript']],
-            ['css', ['text/css']],
-            ['json', ['application/json', 'application/x-json']],
-            ['jsonld', ['application/ld+json']],
-            ['xml', ['text/xml', 'application/xml', 'application/x-xml']],
-            ['rdf', ['application/rdf+xml']],
-            ['atom', ['application/atom+xml']],
-        ];
-    }
-
-    public function testGetUri()
-    {
-        $server = [];
-
-        // Standard Request on non default PORT
-        // http://host:8080/index.php/path/info?query=string
-
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/index.php/path/info?query=string';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PATH_INFO'] = '/path/info';
-        $server['PATH_TRANSLATED'] = 'redirect:/index.php/path/info';
-        $server['PHP_SELF'] = '/index_dev.php/path/info';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request = new Request();
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host:8080/index.php/path/info?query=string', $request->getUri(), '->getUri() with non default port');
-
-        // Use std port number
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/index.php/path/info?query=string', $request->getUri(), '->getUri() with default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/index.php/path/info?query=string', $request->getUri(), '->getUri() with default port without HOST_HEADER');
-
-        // Request with URL REWRITING (hide index.php)
-        //   RewriteCond %{REQUEST_FILENAME} !-f
-        //   RewriteRule ^(.*)$ index.php [QSA,L]
-        // http://host:8080/path/info?query=string
-        $server = [];
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['REDIRECT_QUERY_STRING'] = 'query=string';
-        $server['REDIRECT_URL'] = '/path/info';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/path/info?toto=test&1=1';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PHP_SELF'] = '/index.php';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/path/info?query=string', $request->getUri(), '->getUri() with rewrite');
-
-        // Use std port number
-        //  http://host/path/info?query=string
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/path/info?query=string', $request->getUri(), '->getUri() with rewrite and default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/path/info?query=string', $request->getUri(), '->getUri() with rewrite, default port without HOST_HEADER');
-
-        // With encoded characters
-
-        $server = [
-            'HTTP_HOST' => 'host:8080',
-            'SERVER_NAME' => 'servername',
-            'SERVER_PORT' => '8080',
-            'QUERY_STRING' => 'query=string',
-            'REQUEST_URI' => '/ba%20se/index_dev.php/foo%20bar/in+fo?query=string',
-            'SCRIPT_NAME' => '/ba se/index_dev.php',
-            'PATH_TRANSLATED' => 'redirect:/index.php/foo bar/in+fo',
-            'PHP_SELF' => '/ba se/index_dev.php/path/info',
-            'SCRIPT_FILENAME' => '/some/where/ba se/index_dev.php',
-        ];
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals(
-            'http://host:8080/ba%20se/index_dev.php/foo%20bar/in+fo?query=string',
-            $request->getUri()
-        );
-
-        // with user info
-
-        $server['PHP_AUTH_USER'] = 'fabien';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/ba%20se/index_dev.php/foo%20bar/in+fo?query=string', $request->getUri());
-
-        $server['PHP_AUTH_PW'] = 'symfony';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/ba%20se/index_dev.php/foo%20bar/in+fo?query=string', $request->getUri());
-    }
-
-    public function testGetUriForPath()
-    {
-        $request = Request::create('http://test.com/foo?bar=baz');
-        $this->assertEquals('http://test.com/some/path', $request->getUriForPath('/some/path'));
-
-        $request = Request::create('http://test.com:90/foo?bar=baz');
-        $this->assertEquals('http://test.com:90/some/path', $request->getUriForPath('/some/path'));
-
-        $request = Request::create('https://test.com/foo?bar=baz');
-        $this->assertEquals('https://test.com/some/path', $request->getUriForPath('/some/path'));
-
-        $request = Request::create('https://test.com:90/foo?bar=baz');
-        $this->assertEquals('https://test.com:90/some/path', $request->getUriForPath('/some/path'));
-
-        $server = [];
-
-        // Standard Request on non default PORT
-        // http://host:8080/index.php/path/info?query=string
-
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/index.php/path/info?query=string';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PATH_INFO'] = '/path/info';
-        $server['PATH_TRANSLATED'] = 'redirect:/index.php/path/info';
-        $server['PHP_SELF'] = '/index_dev.php/path/info';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request = new Request();
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host:8080/index.php/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with non default port');
-
-        // Use std port number
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/index.php/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/index.php/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with default port without HOST_HEADER');
-
-        // Request with URL REWRITING (hide index.php)
-        //   RewriteCond %{REQUEST_FILENAME} !-f
-        //   RewriteRule ^(.*)$ index.php [QSA,L]
-        // http://host:8080/path/info?query=string
-        $server = [];
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['REDIRECT_QUERY_STRING'] = 'query=string';
-        $server['REDIRECT_URL'] = '/path/info';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/path/info?toto=test&1=1';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PHP_SELF'] = '/index.php';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/some/path', $request->getUriForPath('/some/path'), '->getUri() with rewrite');
-
-        // Use std port number
-        //  http://host/path/info?query=string
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with rewrite and default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with rewrite, default port without HOST_HEADER');
-        $this->assertEquals('servername', $request->getHttpHost());
-
-        // with user info
-
-        $server['PHP_AUTH_USER'] = 'fabien';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername/some/path', $request->getUriForPath('/some/path'));
-
-        $server['PHP_AUTH_PW'] = 'symfony';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername/some/path', $request->getUriForPath('/some/path'));
-    }
-
-    /**
-     * @dataProvider getRelativeUriForPathData()
-     */
-    public function testGetRelativeUriForPath($expected, $pathinfo, $path)
-    {
-        $this->assertEquals($expected, Request::create($pathinfo)->getRelativeUriForPath($path));
-    }
-
-    public function getRelativeUriForPathData()
-    {
-        return [
-            ['me.png', '/foo', '/me.png'],
-            ['../me.png', '/foo/bar', '/me.png'],
-            ['me.png', '/foo/bar', '/foo/me.png'],
-            ['../baz/me.png', '/foo/bar/b', '/foo/baz/me.png'],
-            ['../../fooz/baz/me.png', '/foo/bar/b', '/fooz/baz/me.png'],
-            ['baz/me.png', '/foo/bar/b', 'baz/me.png'],
-        ];
-    }
-
-    public function testGetUserInfo()
-    {
-        $request = new Request();
-
-        $server = ['PHP_AUTH_USER' => 'fabien'];
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('fabien', $request->getUserInfo());
-
-        $server['PHP_AUTH_USER'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('0', $request->getUserInfo());
-
-        $server['PHP_AUTH_PW'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('0:0', $request->getUserInfo());
-    }
-
-    public function testGetSchemeAndHttpHost()
-    {
-        $request = new Request();
-
-        $server = [];
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '90';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-
-        $server['PHP_AUTH_USER'] = 'fabien';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-
-        $server['PHP_AUTH_USER'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-
-        $server['PHP_AUTH_PW'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-    }
-
-    /**
-     * @dataProvider getQueryStringNormalizationData
-     */
-    public function testGetQueryString($query, $expectedQuery, $msg)
-    {
-        $request = new Request();
-
-        $request->server->set('QUERY_STRING', $query);
-        $this->assertSame($expectedQuery, $request->getQueryString(), $msg);
-    }
-
-    public function getQueryStringNormalizationData()
-    {
-        return [
-            ['foo', 'foo=', 'works with valueless parameters'],
-            ['foo=', 'foo=', 'includes a dangling equal sign'],
-            ['bar=&foo=bar', 'bar=&foo=bar', '->works with empty parameters'],
-            ['foo=bar&bar=', 'bar=&foo=bar', 'sorts keys alphabetically'],
-
-            // GET parameters, that are submitted from a HTML form, encode spaces as "+" by default (as defined in enctype application/x-www-form-urlencoded).
-            // PHP also converts "+" to spaces when filling the global _GET or when using the function parse_str.
-            ['baz=Foo%20Baz&bar=Foo+Bar', 'bar=Foo%20Bar&baz=Foo%20Baz', 'normalizes spaces in both encodings "%20" and "+"'],
-
-            ['foo[]=1&foo[]=2', 'foo%5B0%5D=1&foo%5B1%5D=2', 'allows array notation'],
-            ['foo=1&foo=2', 'foo=2', 'merges repeated parameters'],
-            ['pa%3Dram=foo%26bar%3Dbaz&test=test', 'pa%3Dram=foo%26bar%3Dbaz&test=test', 'works with encoded delimiters'],
-            ['0', '0=', 'allows "0"'],
-            ['Foo Bar&Foo%20Baz', 'Foo_Bar=&Foo_Baz=', 'normalizes encoding in keys'],
-            ['bar=Foo Bar&baz=Foo%20Baz', 'bar=Foo%20Bar&baz=Foo%20Baz', 'normalizes encoding in values'],
-            ['foo=bar&&&test&&', 'foo=bar&test=', 'removes unneeded delimiters'],
-            ['formula=e=m*c^2', 'formula=e%3Dm%2Ac%5E2', 'correctly treats only the first "=" as delimiter and the next as value'],
-
-            // Ignore pairs with empty key, even if there was a value, e.g. "=value", as such nameless values cannot be retrieved anyway.
-            // PHP also does not include them when building _GET.
-            ['foo=bar&=a=b&=x=y', 'foo=bar', 'removes params with empty key'],
-
-            // Don't reorder nested query string keys
-            ['foo[]=Z&foo[]=A', 'foo%5B0%5D=Z&foo%5B1%5D=A', 'keeps order of values'],
-            ['foo[Z]=B&foo[A]=B', 'foo%5BZ%5D=B&foo%5BA%5D=B', 'keeps order of keys'],
-
-            ['utf8=✓', 'utf8=%E2%9C%93', 'encodes UTF-8'],
-        ];
-    }
-
-    public function testGetQueryStringReturnsNull()
-    {
-        $request = new Request();
-
-        $this->assertNull($request->getQueryString(), '->getQueryString() returns null for non-existent query string');
-
-        $request->server->set('QUERY_STRING', '');
-        $this->assertNull($request->getQueryString(), '->getQueryString() returns null for empty query string');
-    }
-
-    public function testGetHost()
-    {
-        $request = new Request();
-
-        $request->initialize(['foo' => 'bar']);
-        $this->assertEquals('', $request->getHost(), '->getHost() return empty string if not initialized');
-
-        $request->initialize([], [], [], [], [], ['HTTP_HOST' => 'www.example.com']);
-        $this->assertEquals('www.example.com', $request->getHost(), '->getHost() from Host Header');
-
-        // Host header with port number
-        $request->initialize([], [], [], [], [], ['HTTP_HOST' => 'www.example.com:8080']);
-        $this->assertEquals('www.example.com', $request->getHost(), '->getHost() from Host Header with port number');
-
-        // Server values
-        $request->initialize([], [], [], [], [], ['SERVER_NAME' => 'www.example.com']);
-        $this->assertEquals('www.example.com', $request->getHost(), '->getHost() from server name');
-
-        $request->initialize([], [], [], [], [], ['SERVER_NAME' => 'www.example.com', 'HTTP_HOST' => 'www.host.com']);
-        $this->assertEquals('www.host.com', $request->getHost(), '->getHost() value from Host header has priority over SERVER_NAME ');
-    }
-
-    public function testGetPort()
-    {
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'https',
-            'HTTP_X_FORWARDED_PORT' => '443',
-        ]);
-        $port = $request->getPort();
-
-        $this->assertEquals(80, $port, 'Without trusted proxies FORWARDED_PROTO and FORWARDED_PORT are ignored.');
-
-        Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_ALL);
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'https',
-            'HTTP_X_FORWARDED_PORT' => '8443',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With PROTO and PORT on untrusted connection server value takes precedence.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(8443, $request->getPort(), 'With PROTO and PORT set PORT takes precedence.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'https',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With only PROTO set getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(443, $request->getPort(), 'With only PROTO set getPort() defaults to 443.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'http',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'If X_FORWARDED_PROTO is set to HTTP getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(80, $request->getPort(), 'If X_FORWARDED_PROTO is set to HTTP getPort() returns port of the original request.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'On',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With only PROTO set and value is On, getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(443, $request->getPort(), 'With only PROTO set and value is On, getPort() defaults to 443.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => '1',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With only PROTO set and value is 1, getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(443, $request->getPort(), 'With only PROTO set and value is 1, getPort() defaults to 443.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'something-else',
-        ]);
-        $port = $request->getPort();
-        $this->assertEquals(80, $port, 'With only PROTO set and value is not recognized, getPort() defaults to 80.');
-    }
-
-    public function testGetHostWithFakeHttpHostValue()
-    {
-        $this->expectException('RuntimeException');
-        $request = new Request();
-        $request->initialize([], [], [], [], [], ['HTTP_HOST' => 'www.host.com?query=string']);
-        $request->getHost();
-    }
-
-    public function testGetSetMethod()
-    {
-        $request = new Request();
-
-        $this->assertEquals('GET', $request->getMethod(), '->getMethod() returns GET if no method is defined');
-
-        $request->setMethod('get');
-        $this->assertEquals('GET', $request->getMethod(), '->getMethod() returns an uppercased string');
-
-        $request->setMethod('PURGE');
-        $this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method even if it is not a standard one');
-
-        $request->setMethod('POST');
-        $this->assertEquals('POST', $request->getMethod(), '->getMethod() returns the method POST if no _method is defined');
-
-        $request->setMethod('POST');
-        $request->request->set('_method', 'purge');
-        $this->assertEquals('POST', $request->getMethod(), '->getMethod() does not return the method from _method if defined and POST but support not enabled');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->request->set('_method', 'purge');
-
-        $this->assertFalse(Request::getHttpMethodParameterOverride(), 'httpMethodParameterOverride should be disabled by default');
-
-        Request::enableHttpMethodParameterOverride();
-
-        $this->assertTrue(Request::getHttpMethodParameterOverride(), 'httpMethodParameterOverride should be enabled now but it is not');
-
-        $this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method from _method if defined and POST');
-        $this->disableHttpMethodParameterOverride();
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->query->set('_method', 'purge');
-        $this->assertEquals('POST', $request->getMethod(), '->getMethod() does not return the method from _method if defined and POST but support not enabled');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->query->set('_method', 'purge');
-        Request::enableHttpMethodParameterOverride();
-        $this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method from _method if defined and POST');
-        $this->disableHttpMethodParameterOverride();
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->headers->set('X-HTTP-METHOD-OVERRIDE', 'delete');
-        $this->assertEquals('DELETE', $request->getMethod(), '->getMethod() returns the method from X-HTTP-Method-Override even though _method is set if defined and POST');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->headers->set('X-HTTP-METHOD-OVERRIDE', 'delete');
-        $this->assertEquals('DELETE', $request->getMethod(), '->getMethod() returns the method from X-HTTP-Method-Override if defined and POST');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->query->set('_method', ['delete', 'patch']);
-        $this->assertSame('POST', $request->getMethod(), '->getMethod() returns the request method if invalid type is defined in query');
-    }
-
-    /**
-     * @dataProvider getClientIpsProvider
-     */
-    public function testGetClientIp($expected, $remoteAddr, $httpForwardedFor, $trustedProxies)
-    {
-        $request = $this->getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies);
-
-        $this->assertEquals($expected[0], $request->getClientIp());
-    }
-
-    /**
-     * @dataProvider getClientIpsProvider
-     */
-    public function testGetClientIps($expected, $remoteAddr, $httpForwardedFor, $trustedProxies)
-    {
-        $request = $this->getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies);
-
-        $this->assertEquals($expected, $request->getClientIps());
-    }
-
-    /**
-     * @dataProvider getClientIpsForwardedProvider
-     */
-    public function testGetClientIpsForwarded($expected, $remoteAddr, $httpForwarded, $trustedProxies)
-    {
-        $request = $this->getRequestInstanceForClientIpsForwardedTests($remoteAddr, $httpForwarded, $trustedProxies);
-
-        $this->assertEquals($expected, $request->getClientIps());
-    }
-
-    public function getClientIpsForwardedProvider()
-    {
-        //              $expected                                  $remoteAddr  $httpForwarded                                       $trustedProxies
-        return [
-            [['127.0.0.1'],                              '127.0.0.1', 'for="_gazonk"',                                      null],
-            [['127.0.0.1'],                              '127.0.0.1', 'for="_gazonk"',                                      ['127.0.0.1']],
-            [['88.88.88.88'],                            '127.0.0.1', 'for="88.88.88.88:80"',                               ['127.0.0.1']],
-            [['192.0.2.60'],                             '::1',       'for=192.0.2.60;proto=http;by=203.0.113.43',          ['::1']],
-            [['2620:0:1cfe:face:b00c::3', '192.0.2.43'], '::1',       'for=192.0.2.43, for="[2620:0:1cfe:face:b00c::3]"',   ['::1']],
-            [['2001:db8:cafe::17'],                      '::1',       'for="[2001:db8:cafe::17]:4711',                      ['::1']],
-        ];
-    }
-
-    public function getClientIpsProvider()
-    {
-        //        $expected                          $remoteAddr                 $httpForwardedFor            $trustedProxies
-        return [
-            // simple IPv4
-            [['88.88.88.88'],              '88.88.88.88',              null,                        null],
-            // trust the IPv4 remote addr
-            [['88.88.88.88'],              '88.88.88.88',              null,                        ['88.88.88.88']],
-
-            // simple IPv6
-            [['::1'],                      '::1',                      null,                        null],
-            // trust the IPv6 remote addr
-            [['::1'],                      '::1',                      null,                        ['::1']],
-
-            // forwarded for with remote IPv4 addr not trusted
-            [['127.0.0.1'],                '127.0.0.1',                '88.88.88.88',               null],
-            // forwarded for with remote IPv4 addr trusted + comma
-            [['88.88.88.88'],              '127.0.0.1',                '88.88.88.88,',              ['127.0.0.1']],
-            // forwarded for with remote IPv4 and all FF addrs trusted
-            [['88.88.88.88'],              '127.0.0.1',                '88.88.88.88',               ['127.0.0.1', '88.88.88.88']],
-            // forwarded for with remote IPv4 range trusted
-            [['88.88.88.88'],              '123.45.67.89',             '88.88.88.88',               ['123.45.67.0/24']],
-
-            // forwarded for with remote IPv6 addr not trusted
-            [['1620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '2620:0:1cfe:face:b00c::3',  null],
-            // forwarded for with remote IPv6 addr trusted
-            [['2620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '2620:0:1cfe:face:b00c::3',  ['1620:0:1cfe:face:b00c::3']],
-            // forwarded for with remote IPv6 range trusted
-            [['88.88.88.88'],              '2a01:198:603:0:396e:4789:8e99:890f', '88.88.88.88',     ['2a01:198:603:0::/65']],
-
-            // multiple forwarded for with remote IPv4 addr trusted
-            [['88.88.88.88', '87.65.43.21', '127.0.0.1'], '123.45.67.89', '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89']],
-            // multiple forwarded for with remote IPv4 addr and some reverse proxies trusted
-            [['87.65.43.21', '127.0.0.1'], '123.45.67.89',             '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89', '88.88.88.88']],
-            // multiple forwarded for with remote IPv4 addr and some reverse proxies trusted but in the middle
-            [['88.88.88.88', '127.0.0.1'], '123.45.67.89',             '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89', '87.65.43.21']],
-            // multiple forwarded for with remote IPv4 addr and all reverse proxies trusted
-            [['127.0.0.1'],                '123.45.67.89',             '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89', '87.65.43.21', '88.88.88.88', '127.0.0.1']],
-
-            // multiple forwarded for with remote IPv6 addr trusted
-            [['2620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3,2620:0:1cfe:face:b00c::3', ['1620:0:1cfe:face:b00c::3']],
-            // multiple forwarded for with remote IPv6 addr and some reverse proxies trusted
-            [['3620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3,2620:0:1cfe:face:b00c::3', ['1620:0:1cfe:face:b00c::3', '2620:0:1cfe:face:b00c::3']],
-            // multiple forwarded for with remote IPv4 addr and some reverse proxies trusted but in the middle
-            [['2620:0:1cfe:face:b00c::3', '4620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '4620:0:1cfe:face:b00c::3,3620:0:1cfe:face:b00c::3,2620:0:1cfe:face:b00c::3', ['1620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3']],
-
-            // client IP with port
-            [['88.88.88.88'], '127.0.0.1', '88.88.88.88:12345, 127.0.0.1', ['127.0.0.1']],
-
-            // invalid forwarded IP is ignored
-            [['88.88.88.88'], '127.0.0.1', 'unknown,88.88.88.88', ['127.0.0.1']],
-            [['88.88.88.88'], '127.0.0.1', '}__test|O:21:&quot;JDatabaseDriverMysqli&quot;:3:{s:2,88.88.88.88', ['127.0.0.1']],
-        ];
-    }
-
-    /**
-     * @dataProvider getClientIpsWithConflictingHeadersProvider
-     */
-    public function testGetClientIpsWithConflictingHeaders($httpForwarded, $httpXForwardedFor)
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException');
-        $request = new Request();
-
-        $server = [
-            'REMOTE_ADDR' => '88.88.88.88',
-            'HTTP_FORWARDED' => $httpForwarded,
-            'HTTP_X_FORWARDED_FOR' => $httpXForwardedFor,
-        ];
-
-        Request::setTrustedProxies(['88.88.88.88'], Request::HEADER_X_FORWARDED_ALL | Request::HEADER_FORWARDED);
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $request->getClientIps();
-    }
-
-    /**
-     * @dataProvider getClientIpsWithConflictingHeadersProvider
-     */
-    public function testGetClientIpsOnlyXHttpForwardedForTrusted($httpForwarded, $httpXForwardedFor)
-    {
-        $request = new Request();
-
-        $server = [
-            'REMOTE_ADDR' => '88.88.88.88',
-            'HTTP_FORWARDED' => $httpForwarded,
-            'HTTP_X_FORWARDED_FOR' => $httpXForwardedFor,
-        ];
-
-        Request::setTrustedProxies(['88.88.88.88'], Request::HEADER_X_FORWARDED_FOR);
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertSame(array_reverse(explode(',', $httpXForwardedFor)), $request->getClientIps());
-    }
-
-    public function getClientIpsWithConflictingHeadersProvider()
-    {
-        //        $httpForwarded                   $httpXForwardedFor
-        return [
-            ['for=87.65.43.21',                 '192.0.2.60'],
-            ['for=87.65.43.21, for=192.0.2.60', '192.0.2.60'],
-            ['for=192.0.2.60',                  '192.0.2.60,87.65.43.21'],
-            ['for="::face", for=192.0.2.60',    '192.0.2.60,192.0.2.43'],
-            ['for=87.65.43.21, for=192.0.2.60', '192.0.2.60,87.65.43.21'],
-        ];
-    }
-
-    /**
-     * @dataProvider getClientIpsWithAgreeingHeadersProvider
-     */
-    public function testGetClientIpsWithAgreeingHeaders($httpForwarded, $httpXForwardedFor, $expectedIps)
-    {
-        $request = new Request();
-
-        $server = [
-            'REMOTE_ADDR' => '88.88.88.88',
-            'HTTP_FORWARDED' => $httpForwarded,
-            'HTTP_X_FORWARDED_FOR' => $httpXForwardedFor,
-        ];
-
-        Request::setTrustedProxies(['88.88.88.88'], -1);
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $clientIps = $request->getClientIps();
-
-        $this->assertSame($expectedIps, $clientIps);
-    }
-
-    public function getClientIpsWithAgreeingHeadersProvider()
-    {
-        //        $httpForwarded                               $httpXForwardedFor
-        return [
-            ['for="192.0.2.60"',                          '192.0.2.60',             ['192.0.2.60']],
-            ['for=192.0.2.60, for=87.65.43.21',           '192.0.2.60,87.65.43.21', ['87.65.43.21', '192.0.2.60']],
-            ['for="[::face]", for=192.0.2.60',            '::face,192.0.2.60',      ['192.0.2.60', '::face']],
-            ['for="192.0.2.60:80"',                       '192.0.2.60',             ['192.0.2.60']],
-            ['for=192.0.2.60;proto=http;by=203.0.113.43', '192.0.2.60',             ['192.0.2.60']],
-            ['for="[2001:db8:cafe::17]:4711"',            '2001:db8:cafe::17',      ['2001:db8:cafe::17']],
-        ];
-    }
-
-    public function testGetContentWorksTwiceInDefaultMode()
-    {
-        $req = new Request();
-        $this->assertEquals('', $req->getContent());
-        $this->assertEquals('', $req->getContent());
-    }
-
-    public function testGetContentReturnsResource()
-    {
-        $req = new Request();
-        $retval = $req->getContent(true);
-        $this->assertIsResource($retval);
-        $this->assertEquals('', fread($retval, 1));
-        $this->assertTrue(feof($retval));
-    }
-
-    public function testGetContentReturnsResourceWhenContentSetInConstructor()
-    {
-        $req = new Request([], [], [], [], [], [], 'MyContent');
-        $resource = $req->getContent(true);
-
-        $this->assertIsResource($resource);
-        $this->assertEquals('MyContent', stream_get_contents($resource));
-    }
-
-    public function testContentAsResource()
-    {
-        $resource = fopen('php://memory', 'r+');
-        fwrite($resource, 'My other content');
-        rewind($resource);
-
-        $req = new Request([], [], [], [], [], [], $resource);
-        $this->assertEquals('My other content', stream_get_contents($req->getContent(true)));
-        $this->assertEquals('My other content', $req->getContent());
-    }
-
-    public function getContentCantBeCalledTwiceWithResourcesProvider()
-    {
-        return [
-            'Resource then fetch' => [true, false],
-            'Resource then resource' => [true, true],
-        ];
-    }
-
-    /**
-     * @dataProvider getContentCanBeCalledTwiceWithResourcesProvider
-     */
-    public function testGetContentCanBeCalledTwiceWithResources($first, $second)
-    {
-        $req = new Request();
-        $a = $req->getContent($first);
-        $b = $req->getContent($second);
-
-        if ($first) {
-            $a = stream_get_contents($a);
-        }
-
-        if ($second) {
-            $b = stream_get_contents($b);
-        }
-
-        $this->assertSame($a, $b);
-    }
-
-    public function getContentCanBeCalledTwiceWithResourcesProvider()
-    {
-        return [
-            'Fetch then fetch' => [false, false],
-            'Fetch then resource' => [false, true],
-            'Resource then fetch' => [true, false],
-            'Resource then resource' => [true, true],
-        ];
-    }
-
-    public function provideOverloadedMethods()
-    {
-        return [
-            ['PUT'],
-            ['DELETE'],
-            ['PATCH'],
-            ['put'],
-            ['delete'],
-            ['patch'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideOverloadedMethods
-     */
-    public function testCreateFromGlobals($method)
-    {
-        $normalizedMethod = strtoupper($method);
-
-        $_GET['foo1'] = 'bar1';
-        $_POST['foo2'] = 'bar2';
-        $_COOKIE['foo3'] = 'bar3';
-        $_FILES['foo4'] = ['bar4'];
-        $_SERVER['foo5'] = 'bar5';
-
-        $request = Request::createFromGlobals();
-        $this->assertEquals('bar1', $request->query->get('foo1'), '::fromGlobals() uses values from $_GET');
-        $this->assertEquals('bar2', $request->request->get('foo2'), '::fromGlobals() uses values from $_POST');
-        $this->assertEquals('bar3', $request->cookies->get('foo3'), '::fromGlobals() uses values from $_COOKIE');
-        $this->assertEquals(['bar4'], $request->files->get('foo4'), '::fromGlobals() uses values from $_FILES');
-        $this->assertEquals('bar5', $request->server->get('foo5'), '::fromGlobals() uses values from $_SERVER');
-
-        unset($_GET['foo1'], $_POST['foo2'], $_COOKIE['foo3'], $_FILES['foo4'], $_SERVER['foo5']);
-
-        $_SERVER['REQUEST_METHOD'] = $method;
-        $_SERVER['CONTENT_TYPE'] = 'application/x-www-form-urlencoded';
-        $request = RequestContentProxy::createFromGlobals();
-        $this->assertEquals($normalizedMethod, $request->getMethod());
-        $this->assertEquals('mycontent', $request->request->get('content'));
-
-        unset($_SERVER['REQUEST_METHOD'], $_SERVER['CONTENT_TYPE']);
-
-        Request::createFromGlobals();
-        Request::enableHttpMethodParameterOverride();
-        $_POST['_method'] = $method;
-        $_POST['foo6'] = 'bar6';
-        $_SERVER['REQUEST_METHOD'] = 'PoSt';
-        $request = Request::createFromGlobals();
-        $this->assertEquals($normalizedMethod, $request->getMethod());
-        $this->assertEquals('POST', $request->getRealMethod());
-        $this->assertEquals('bar6', $request->request->get('foo6'));
-
-        unset($_POST['_method'], $_POST['foo6'], $_SERVER['REQUEST_METHOD']);
-        $this->disableHttpMethodParameterOverride();
-    }
-
-    public function testOverrideGlobals()
-    {
-        $request = new Request();
-        $request->initialize(['foo' => 'bar']);
-
-        // as the Request::overrideGlobals really work, it erase $_SERVER, so we must backup it
-        $server = $_SERVER;
-
-        $request->overrideGlobals();
-
-        $this->assertEquals(['foo' => 'bar'], $_GET);
-
-        $request->initialize([], ['foo' => 'bar']);
-        $request->overrideGlobals();
-
-        $this->assertEquals(['foo' => 'bar'], $_POST);
-
-        $this->assertArrayNotHasKey('HTTP_X_FORWARDED_PROTO', $_SERVER);
-
-        $request->headers->set('X_FORWARDED_PROTO', 'https');
-
-        Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertFalse($request->isSecure());
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertTrue($request->isSecure());
-
-        $request->overrideGlobals();
-
-        $this->assertArrayHasKey('HTTP_X_FORWARDED_PROTO', $_SERVER);
-
-        $request->headers->set('CONTENT_TYPE', 'multipart/form-data');
-        $request->headers->set('CONTENT_LENGTH', 12345);
-
-        $request->overrideGlobals();
-
-        $this->assertArrayHasKey('CONTENT_TYPE', $_SERVER);
-        $this->assertArrayHasKey('CONTENT_LENGTH', $_SERVER);
-
-        $request->initialize(['foo' => 'bar', 'baz' => 'foo']);
-        $request->query->remove('baz');
-
-        $request->overrideGlobals();
-
-        $this->assertEquals(['foo' => 'bar'], $_GET);
-        $this->assertEquals('foo=bar', $_SERVER['QUERY_STRING']);
-        $this->assertEquals('foo=bar', $request->server->get('QUERY_STRING'));
-
-        // restore initial $_SERVER array
-        $_SERVER = $server;
-    }
-
-    public function testGetScriptName()
-    {
-        $request = new Request();
-        $this->assertEquals('', $request->getScriptName());
-
-        $server = [];
-        $server['SCRIPT_NAME'] = '/index.php';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/index.php', $request->getScriptName());
-
-        $server = [];
-        $server['ORIG_SCRIPT_NAME'] = '/frontend.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/frontend.php', $request->getScriptName());
-
-        $server = [];
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['ORIG_SCRIPT_NAME'] = '/frontend.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/index.php', $request->getScriptName());
-    }
-
-    public function testGetBasePath()
-    {
-        $request = new Request();
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $server['PHP_SELF'] = '/index.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $server['ORIG_SCRIPT_NAME'] = '/index.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('', $request->getBasePath());
-    }
-
-    public function testGetPathInfo()
-    {
-        $request = new Request();
-        $this->assertEquals('/', $request->getPathInfo());
-
-        $server = [];
-        $server['REQUEST_URI'] = '/path/info';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/path/info', $request->getPathInfo());
-
-        $server = [];
-        $server['REQUEST_URI'] = '/path%20test/info';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/path%20test/info', $request->getPathInfo());
-
-        $server = [];
-        $server['REQUEST_URI'] = '?a=b';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/', $request->getPathInfo());
-    }
-
-    public function testGetParameterPrecedence()
-    {
-        $request = new Request();
-        $request->attributes->set('foo', 'attr');
-        $request->query->set('foo', 'query');
-        $request->request->set('foo', 'body');
-
-        $this->assertSame('attr', $request->get('foo'));
-
-        $request->attributes->remove('foo');
-        $this->assertSame('query', $request->get('foo'));
-
-        $request->query->remove('foo');
-        $this->assertSame('body', $request->get('foo'));
-
-        $request->request->remove('foo');
-        $this->assertNull($request->get('foo'));
-    }
-
-    public function testGetPreferredLanguage()
-    {
-        $request = new Request();
-        $this->assertNull($request->getPreferredLanguage());
-        $this->assertNull($request->getPreferredLanguage([]));
-        $this->assertEquals('fr', $request->getPreferredLanguage(['fr']));
-        $this->assertEquals('fr', $request->getPreferredLanguage(['fr', 'en']));
-        $this->assertEquals('en', $request->getPreferredLanguage(['en', 'fr']));
-        $this->assertEquals('fr-ch', $request->getPreferredLanguage(['fr-ch', 'fr-fr']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $this->assertEquals('en', $request->getPreferredLanguage(['en', 'en-us']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $this->assertEquals('en', $request->getPreferredLanguage(['fr', 'en']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8');
-        $this->assertEquals('en', $request->getPreferredLanguage(['fr', 'en']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, fr-fr; q=0.6, fr; q=0.5');
-        $this->assertEquals('en', $request->getPreferredLanguage(['fr', 'en']));
-    }
-
-    public function testIsXmlHttpRequest()
-    {
-        $request = new Request();
-        $this->assertFalse($request->isXmlHttpRequest());
-
-        $request->headers->set('X-Requested-With', 'XMLHttpRequest');
-        $this->assertTrue($request->isXmlHttpRequest());
-
-        $request->headers->remove('X-Requested-With');
-        $this->assertFalse($request->isXmlHttpRequest());
-    }
-
-    /**
-     * @requires extension intl
-     */
-    public function testIntlLocale()
-    {
-        $request = new Request();
-
-        $request->setDefaultLocale('fr');
-        $this->assertEquals('fr', $request->getLocale());
-        $this->assertEquals('fr', \Locale::getDefault());
-
-        $request->setLocale('en');
-        $this->assertEquals('en', $request->getLocale());
-        $this->assertEquals('en', \Locale::getDefault());
-
-        $request->setDefaultLocale('de');
-        $this->assertEquals('en', $request->getLocale());
-        $this->assertEquals('en', \Locale::getDefault());
-    }
-
-    public function testGetCharsets()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getCharsets());
-        $request->headers->set('Accept-Charset', 'ISO-8859-1, US-ASCII, UTF-8; q=0.8, ISO-10646-UCS-2; q=0.6');
-        $this->assertEquals([], $request->getCharsets()); // testing caching
-
-        $request = new Request();
-        $request->headers->set('Accept-Charset', 'ISO-8859-1, US-ASCII, UTF-8; q=0.8, ISO-10646-UCS-2; q=0.6');
-        $this->assertEquals(['ISO-8859-1', 'US-ASCII', 'UTF-8', 'ISO-10646-UCS-2'], $request->getCharsets());
-
-        $request = new Request();
-        $request->headers->set('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7');
-        $this->assertEquals(['ISO-8859-1', 'utf-8', '*'], $request->getCharsets());
-    }
-
-    public function testGetEncodings()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getEncodings());
-        $request->headers->set('Accept-Encoding', 'gzip,deflate,sdch');
-        $this->assertEquals([], $request->getEncodings()); // testing caching
-
-        $request = new Request();
-        $request->headers->set('Accept-Encoding', 'gzip,deflate,sdch');
-        $this->assertEquals(['gzip', 'deflate', 'sdch'], $request->getEncodings());
-
-        $request = new Request();
-        $request->headers->set('Accept-Encoding', 'gzip;q=0.4,deflate;q=0.9,compress;q=0.7');
-        $this->assertEquals(['deflate', 'compress', 'gzip'], $request->getEncodings());
-    }
-
-    public function testGetAcceptableContentTypes()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getAcceptableContentTypes());
-        $request->headers->set('Accept', 'application/vnd.wap.wmlscriptc, text/vnd.wap.wml, application/vnd.wap.xhtml+xml, application/xhtml+xml, text/html, multipart/mixed, */*');
-        $this->assertEquals([], $request->getAcceptableContentTypes()); // testing caching
-
-        $request = new Request();
-        $request->headers->set('Accept', 'application/vnd.wap.wmlscriptc, text/vnd.wap.wml, application/vnd.wap.xhtml+xml, application/xhtml+xml, text/html, multipart/mixed, */*');
-        $this->assertEquals(['application/vnd.wap.wmlscriptc', 'text/vnd.wap.wml', 'application/vnd.wap.xhtml+xml', 'application/xhtml+xml', 'text/html', 'multipart/mixed', '*/*'], $request->getAcceptableContentTypes());
-    }
-
-    public function testGetLanguages()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getLanguages());
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $this->assertEquals(['zh', 'en_US', 'en'], $request->getLanguages());
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.6, en; q=0.8');
-        $this->assertEquals(['zh', 'en', 'en_US'], $request->getLanguages()); // Test out of order qvalues
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en, en-us');
-        $this->assertEquals(['zh', 'en', 'en_US'], $request->getLanguages()); // Test equal weighting without qvalues
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh; q=0.6, en, en-us; q=0.6');
-        $this->assertEquals(['en', 'zh', 'en_US'], $request->getLanguages()); // Test equal weighting with qvalues
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, i-cherokee; q=0.6');
-        $this->assertEquals(['zh', 'cherokee'], $request->getLanguages());
-    }
-
-    public function testGetRequestFormat()
-    {
-        $request = new Request();
-        $this->assertEquals('html', $request->getRequestFormat());
-
-        // Ensure that setting different default values over time is possible,
-        // aka. setRequestFormat determines the state.
-        $this->assertEquals('json', $request->getRequestFormat('json'));
-        $this->assertEquals('html', $request->getRequestFormat('html'));
-
-        $request = new Request();
-        $this->assertNull($request->getRequestFormat(null));
-
-        $request = new Request();
-        $this->assertNull($request->setRequestFormat('foo'));
-        $this->assertEquals('foo', $request->getRequestFormat(null));
-
-        $request = new Request(['_format' => 'foo']);
-        $this->assertEquals('html', $request->getRequestFormat());
-    }
-
-    public function testHasSession()
-    {
-        $request = new Request();
-
-        $this->assertFalse($request->hasSession());
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $this->assertTrue($request->hasSession());
-    }
-
-    public function testGetSession()
-    {
-        $request = new Request();
-
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $this->assertTrue($request->hasSession());
-
-        $session = $request->getSession();
-        $this->assertObjectHasAttribute('storage', $session);
-        $this->assertObjectHasAttribute('flashName', $session);
-        $this->assertObjectHasAttribute('attributeName', $session);
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling "Symfony\Component\HttpFoundation\Request::getSession()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.
-     */
-    public function testGetSessionNullable()
-    {
-        (new Request())->getSession();
-    }
-
-    public function testHasPreviousSession()
-    {
-        $request = new Request();
-
-        $this->assertFalse($request->hasPreviousSession());
-        $request->cookies->set('MOCKSESSID', 'foo');
-        $this->assertFalse($request->hasPreviousSession());
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $this->assertTrue($request->hasPreviousSession());
-    }
-
-    public function testToString()
-    {
-        $request = new Request();
-
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $request->cookies->set('Foo', 'Bar');
-
-        $asString = (string) $request;
-
-        $this->assertStringContainsString('Accept-Language: zh, en-us; q=0.8, en; q=0.6', $asString);
-        $this->assertStringContainsString('Cookie: Foo=Bar', $asString);
-
-        $request->cookies->set('Another', 'Cookie');
-
-        $asString = (string) $request;
-
-        $this->assertStringContainsString('Cookie: Foo=Bar; Another=Cookie', $asString);
-    }
-
-    public function testIsMethod()
-    {
-        $request = new Request();
-        $request->setMethod('POST');
-        $this->assertTrue($request->isMethod('POST'));
-        $this->assertTrue($request->isMethod('post'));
-        $this->assertFalse($request->isMethod('GET'));
-        $this->assertFalse($request->isMethod('get'));
-
-        $request->setMethod('GET');
-        $this->assertTrue($request->isMethod('GET'));
-        $this->assertTrue($request->isMethod('get'));
-        $this->assertFalse($request->isMethod('POST'));
-        $this->assertFalse($request->isMethod('post'));
-    }
-
-    /**
-     * @dataProvider getBaseUrlData
-     */
-    public function testGetBaseUrl($uri, $server, $expectedBaseUrl, $expectedPathInfo)
-    {
-        $request = Request::create($uri, 'GET', [], [], [], $server);
-
-        $this->assertSame($expectedBaseUrl, $request->getBaseUrl(), 'baseUrl');
-        $this->assertSame($expectedPathInfo, $request->getPathInfo(), 'pathInfo');
-    }
-
-    public function getBaseUrlData()
-    {
-        return [
-            [
-                '/fruit/strawberry/1234index.php/blah',
-                [
-                    'SCRIPT_FILENAME' => 'E:/Sites/cc-new/public_html/fruit/index.php',
-                    'SCRIPT_NAME' => '/fruit/index.php',
-                    'PHP_SELF' => '/fruit/index.php',
-                ],
-                '/fruit',
-                '/strawberry/1234index.php/blah',
-            ],
-            [
-                '/fruit/strawberry/1234index.php/blah',
-                [
-                    'SCRIPT_FILENAME' => 'E:/Sites/cc-new/public_html/index.php',
-                    'SCRIPT_NAME' => '/index.php',
-                    'PHP_SELF' => '/index.php',
-                ],
-                '',
-                '/fruit/strawberry/1234index.php/blah',
-            ],
-            [
-                '/foo%20bar/',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar',
-                '/',
-            ],
-            [
-                '/foo%20bar/home',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar',
-                '/home',
-            ],
-            [
-                '/foo%20bar/app.php/home',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar/app.php',
-                '/home',
-            ],
-            [
-                '/foo%20bar/app.php/home%3Dbaz',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar/app.php',
-                '/home%3Dbaz',
-            ],
-            [
-                '/foo/bar+baz',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo/app.php',
-                    'SCRIPT_NAME' => '/foo/app.php',
-                    'PHP_SELF' => '/foo/app.php',
-                ],
-                '/foo',
-                '/bar+baz',
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider urlencodedStringPrefixData
-     */
-    public function testUrlencodedStringPrefix($string, $prefix, $expect)
-    {
-        $request = new Request();
-
-        $me = new \ReflectionMethod($request, 'getUrlencodedPrefix');
-        $me->setAccessible(true);
-
-        $this->assertSame($expect, $me->invoke($request, $string, $prefix));
-    }
-
-    public function urlencodedStringPrefixData()
-    {
-        return [
-            ['foo', 'foo', 'foo'],
-            ['fo%6f', 'foo', 'fo%6f'],
-            ['foo/bar', 'foo', 'foo'],
-            ['fo%6f/bar', 'foo', 'fo%6f'],
-            ['f%6f%6f/bar', 'foo', 'f%6f%6f'],
-            ['%66%6F%6F/bar', 'foo', '%66%6F%6F'],
-            ['fo+o/bar', 'fo+o', 'fo+o'],
-            ['fo%2Bo/bar', 'fo+o', 'fo%2Bo'],
-        ];
-    }
-
-    private function disableHttpMethodParameterOverride()
-    {
-        $class = new \ReflectionClass('Symfony\\Component\\HttpFoundation\\Request');
-        $property = $class->getProperty('httpMethodParameterOverride');
-        $property->setAccessible(true);
-        $property->setValue(false);
-    }
-
-    private function getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies)
-    {
-        $request = new Request();
-
-        $server = ['REMOTE_ADDR' => $remoteAddr];
-        if (null !== $httpForwardedFor) {
-            $server['HTTP_X_FORWARDED_FOR'] = $httpForwardedFor;
-        }
-
-        if ($trustedProxies) {
-            Request::setTrustedProxies($trustedProxies, Request::HEADER_X_FORWARDED_ALL);
-        }
-
-        $request->initialize([], [], [], [], [], $server);
-
-        return $request;
-    }
-
-    private function getRequestInstanceForClientIpsForwardedTests($remoteAddr, $httpForwarded, $trustedProxies)
-    {
-        $request = new Request();
-
-        $server = ['REMOTE_ADDR' => $remoteAddr];
-
-        if (null !== $httpForwarded) {
-            $server['HTTP_FORWARDED'] = $httpForwarded;
-        }
-
-        if ($trustedProxies) {
-            Request::setTrustedProxies($trustedProxies, Request::HEADER_FORWARDED);
-        }
-
-        $request->initialize([], [], [], [], [], $server);
-
-        return $request;
-    }
-
-    public function testTrustedProxiesXForwardedFor()
-    {
-        $request = Request::create('http://example.com/');
-        $request->server->set('REMOTE_ADDR', '3.3.3.3');
-        $request->headers->set('X_FORWARDED_FOR', '1.1.1.1, 2.2.2.2');
-        $request->headers->set('X_FORWARDED_HOST', 'foo.example.com:1234, real.example.com:8080');
-        $request->headers->set('X_FORWARDED_PROTO', 'https');
-        $request->headers->set('X_FORWARDED_PORT', 443);
-
-        // no trusted proxies
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // disabling proxy trusting
-        Request::setTrustedProxies([], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // request is forwarded by a non-trusted proxy
-        Request::setTrustedProxies(['2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('1.1.1.1', $request->getClientIp());
-        $this->assertEquals('foo.example.com', $request->getHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.4', '2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // check various X_FORWARDED_PROTO header values
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $request->headers->set('X_FORWARDED_PROTO', 'ssl');
-        $this->assertTrue($request->isSecure());
-
-        $request->headers->set('X_FORWARDED_PROTO', 'https, http');
-        $this->assertTrue($request->isSecure());
-    }
-
-    public function testTrustedProxiesForwarded()
-    {
-        $request = Request::create('http://example.com/');
-        $request->server->set('REMOTE_ADDR', '3.3.3.3');
-        $request->headers->set('FORWARDED', 'for=1.1.1.1, host=foo.example.com:8080, proto=https, for=2.2.2.2, host=real.example.com:8080');
-
-        // no trusted proxies
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // disabling proxy trusting
-        Request::setTrustedProxies([], Request::HEADER_FORWARDED);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // request is forwarded by a non-trusted proxy
-        Request::setTrustedProxies(['2.2.2.2'], Request::HEADER_FORWARDED);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_FORWARDED);
-        $this->assertEquals('1.1.1.1', $request->getClientIp());
-        $this->assertEquals('foo.example.com', $request->getHost());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.4', '2.2.2.2'], Request::HEADER_FORWARDED);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // check various X_FORWARDED_PROTO header values
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_FORWARDED);
-        $request->headers->set('FORWARDED', 'proto=ssl');
-        $this->assertTrue($request->isSecure());
-
-        $request->headers->set('FORWARDED', 'proto=https, proto=http');
-        $this->assertTrue($request->isSecure());
-    }
-
-    /**
-     * @dataProvider iisRequestUriProvider
-     */
-    public function testIISRequestUri($headers, $server, $expectedRequestUri)
-    {
-        $request = new Request();
-        $request->headers->replace($headers);
-        $request->server->replace($server);
-
-        $this->assertEquals($expectedRequestUri, $request->getRequestUri(), '->getRequestUri() is correct');
-
-        $subRequestUri = '/bar/foo';
-        $subRequest = Request::create($subRequestUri, 'get', [], [], [], $request->server->all());
-        $this->assertEquals($subRequestUri, $subRequest->getRequestUri(), '->getRequestUri() is correct in sub request');
-    }
-
-    public function iisRequestUriProvider()
-    {
-        return [
-            [
-                [],
-                [
-                    'IIS_WasUrlRewritten' => '1',
-                    'UNENCODED_URL' => '/foo/bar',
-                ],
-                '/foo/bar',
-            ],
-            [
-                [],
-                [
-                    'ORIG_PATH_INFO' => '/foo/bar',
-                ],
-                '/foo/bar',
-            ],
-            [
-                [],
-                [
-                    'ORIG_PATH_INFO' => '/foo/bar',
-                    'QUERY_STRING' => 'foo=bar',
-                ],
-                '/foo/bar?foo=bar',
-            ],
-        ];
-    }
-
-    public function testTrustedHosts()
-    {
-        // create a request
-        $request = Request::create('/');
-
-        // no trusted host set -> no host check
-        $request->headers->set('host', 'evil.com');
-        $this->assertEquals('evil.com', $request->getHost());
-
-        // add a trusted domain and all its subdomains
-        Request::setTrustedHosts(['^([a-z]{9}\.)?trusted\.com$']);
-
-        // untrusted host
-        $request->headers->set('host', 'evil.com');
-        try {
-            $request->getHost();
-            $this->fail('Request::getHost() should throw an exception when host is not trusted.');
-        } catch (SuspiciousOperationException $e) {
-            $this->assertEquals('Untrusted Host "evil.com".', $e->getMessage());
-        }
-
-        // trusted hosts
-        $request->headers->set('host', 'trusted.com');
-        $this->assertEquals('trusted.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-
-        $request->server->set('HTTPS', true);
-        $request->headers->set('host', 'trusted.com');
-        $this->assertEquals('trusted.com', $request->getHost());
-        $this->assertEquals(443, $request->getPort());
-        $request->server->set('HTTPS', false);
-
-        $request->headers->set('host', 'trusted.com:8000');
-        $this->assertEquals('trusted.com', $request->getHost());
-        $this->assertEquals(8000, $request->getPort());
-
-        $request->headers->set('host', 'subdomain.trusted.com');
-        $this->assertEquals('subdomain.trusted.com', $request->getHost());
-    }
-
-    public function testSetTrustedHostsDoesNotBreakOnSpecialCharacters()
-    {
-        Request::setTrustedHosts(['localhost(\.local){0,1}#,example.com', 'localhost']);
-
-        $request = Request::create('/');
-        $request->headers->set('host', 'localhost');
-        $this->assertSame('localhost', $request->getHost());
-    }
-
-    public function testFactory()
-    {
-        Request::setFactory(function (array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) {
-            return new NewRequest();
-        });
-
-        $this->assertEquals('foo', Request::create('/')->getFoo());
-
-        Request::setFactory(null);
-    }
-
-    /**
-     * @dataProvider getLongHostNames
-     */
-    public function testVeryLongHosts($host)
-    {
-        $start = microtime(true);
-
-        $request = Request::create('/');
-        $request->headers->set('host', $host);
-        $this->assertEquals($host, $request->getHost());
-        $this->assertLessThan(5, microtime(true) - $start);
-    }
-
-    /**
-     * @dataProvider getHostValidities
-     */
-    public function testHostValidity($host, $isValid, $expectedHost = null, $expectedPort = null)
-    {
-        $request = Request::create('/');
-        $request->headers->set('host', $host);
-
-        if ($isValid) {
-            $this->assertSame($expectedHost ?: $host, $request->getHost());
-            if ($expectedPort) {
-                $this->assertSame($expectedPort, $request->getPort());
-            }
-        } else {
-            $this->expectException(SuspiciousOperationException::class);
-            $this->expectExceptionMessage('Invalid Host');
-
-            $request->getHost();
-        }
-    }
-
-    public function getHostValidities()
-    {
-        return [
-            ['.a', false],
-            ['a..', false],
-            ['a.', true],
-            ["\xE9", false],
-            ['[::1]', true],
-            ['[::1]:80', true, '[::1]', 80],
-            [str_repeat('.', 101), false],
-        ];
-    }
-
-    public function getLongHostNames()
-    {
-        return [
-            ['a'.str_repeat('.a', 40000)],
-            [str_repeat(':', 101)],
-        ];
-    }
-
-    /**
-     * @dataProvider methodIdempotentProvider
-     */
-    public function testMethodIdempotent($method, $idempotent)
-    {
-        $request = new Request();
-        $request->setMethod($method);
-        $this->assertEquals($idempotent, $request->isMethodIdempotent());
-    }
-
-    public function methodIdempotentProvider()
-    {
-        return [
-            ['HEAD', true],
-            ['GET', true],
-            ['POST', false],
-            ['PUT', true],
-            ['PATCH', false],
-            ['DELETE', true],
-            ['PURGE', true],
-            ['OPTIONS', true],
-            ['TRACE', true],
-            ['CONNECT', false],
-        ];
-    }
-
-    /**
-     * @dataProvider methodSafeProvider
-     */
-    public function testMethodSafe($method, $safe)
-    {
-        $request = new Request();
-        $request->setMethod($method);
-        $this->assertEquals($safe, $request->isMethodSafe(false));
-    }
-
-    public function methodSafeProvider()
-    {
-        return [
-            ['HEAD', true],
-            ['GET', true],
-            ['POST', false],
-            ['PUT', false],
-            ['PATCH', false],
-            ['DELETE', false],
-            ['PURGE', false],
-            ['OPTIONS', true],
-            ['TRACE', true],
-            ['CONNECT', false],
-        ];
-    }
-
-    public function testMethodSafeChecksCacheable()
-    {
-        $this->expectException('BadMethodCallException');
-        $request = new Request();
-        $request->setMethod('OPTIONS');
-        $request->isMethodSafe();
-    }
-
-    /**
-     * @dataProvider methodCacheableProvider
-     */
-    public function testMethodCacheable($method, $cacheable)
-    {
-        $request = new Request();
-        $request->setMethod($method);
-        $this->assertEquals($cacheable, $request->isMethodCacheable());
-    }
-
-    public function methodCacheableProvider()
-    {
-        return [
-            ['HEAD', true],
-            ['GET', true],
-            ['POST', false],
-            ['PUT', false],
-            ['PATCH', false],
-            ['DELETE', false],
-            ['PURGE', false],
-            ['OPTIONS', false],
-            ['TRACE', false],
-            ['CONNECT', false],
-        ];
-    }
-
-    /**
-     * @dataProvider protocolVersionProvider
-     */
-    public function testProtocolVersion($serverProtocol, $trustedProxy, $via, $expected)
-    {
-        if ($trustedProxy) {
-            Request::setTrustedProxies(['1.1.1.1'], -1);
-        }
-
-        $request = new Request();
-        $request->server->set('SERVER_PROTOCOL', $serverProtocol);
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Via', $via);
-
-        $this->assertSame($expected, $request->getProtocolVersion());
-    }
-
-    public function protocolVersionProvider()
-    {
-        return [
-            'untrusted without via' => ['HTTP/2.0', false, '', 'HTTP/2.0'],
-            'untrusted with via' => ['HTTP/2.0', false, '1.0 fred, 1.1 nowhere.com (Apache/1.1)', 'HTTP/2.0'],
-            'trusted without via' => ['HTTP/2.0', true, '', 'HTTP/2.0'],
-            'trusted with via' => ['HTTP/2.0', true, '1.0 fred, 1.1 nowhere.com (Apache/1.1)', 'HTTP/1.0'],
-            'trusted with via and protocol name' => ['HTTP/2.0', true, 'HTTP/1.0 fred, HTTP/1.1 nowhere.com (Apache/1.1)', 'HTTP/1.0'],
-            'trusted with broken via' => ['HTTP/2.0', true, 'HTTP/1^0 foo', 'HTTP/2.0'],
-            'trusted with partially-broken via' => ['HTTP/2.0', true, '1.0 fred, foo', 'HTTP/1.0'],
-        ];
-    }
-
-    public function nonstandardRequestsData()
-    {
-        return [
-            ['',  '', '/', 'http://host:8080/', ''],
-            ['/', '', '/', 'http://host:8080/', ''],
-
-            ['hello/app.php/x',  '', '/x', 'http://host:8080/hello/app.php/x', '/hello', '/hello/app.php'],
-            ['/hello/app.php/x', '', '/x', 'http://host:8080/hello/app.php/x', '/hello', '/hello/app.php'],
-
-            ['',      'a=b', '/', 'http://host:8080/?a=b'],
-            ['?a=b',  'a=b', '/', 'http://host:8080/?a=b'],
-            ['/?a=b', 'a=b', '/', 'http://host:8080/?a=b'],
-
-            ['x',      'a=b', '/x', 'http://host:8080/x?a=b'],
-            ['x?a=b',  'a=b', '/x', 'http://host:8080/x?a=b'],
-            ['/x?a=b', 'a=b', '/x', 'http://host:8080/x?a=b'],
-
-            ['hello/x',  '', '/x', 'http://host:8080/hello/x', '/hello'],
-            ['/hello/x', '', '/x', 'http://host:8080/hello/x', '/hello'],
-
-            ['hello/app.php/x',      'a=b', '/x', 'http://host:8080/hello/app.php/x?a=b', '/hello', '/hello/app.php'],
-            ['hello/app.php/x?a=b',  'a=b', '/x', 'http://host:8080/hello/app.php/x?a=b', '/hello', '/hello/app.php'],
-            ['/hello/app.php/x?a=b', 'a=b', '/x', 'http://host:8080/hello/app.php/x?a=b', '/hello', '/hello/app.php'],
-        ];
-    }
-
-    /**
-     * @dataProvider nonstandardRequestsData
-     */
-    public function testNonstandardRequests($requestUri, $queryString, $expectedPathInfo, $expectedUri, $expectedBasePath = '', $expectedBaseUrl = null)
-    {
-        if (null === $expectedBaseUrl) {
-            $expectedBaseUrl = $expectedBasePath;
-        }
-
-        $server = [
-            'HTTP_HOST' => 'host:8080',
-            'SERVER_PORT' => '8080',
-            'QUERY_STRING' => $queryString,
-            'PHP_SELF' => '/hello/app.php',
-            'SCRIPT_FILENAME' => '/some/path/app.php',
-            'REQUEST_URI' => $requestUri,
-        ];
-
-        $request = new Request([], [], [], [], [], $server);
-
-        $this->assertEquals($expectedPathInfo, $request->getPathInfo());
-        $this->assertEquals($expectedUri, $request->getUri());
-        $this->assertEquals($queryString, $request->getQueryString());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertEquals('host:8080', $request->getHttpHost());
-        $this->assertEquals($expectedBaseUrl, $request->getBaseUrl());
-        $this->assertEquals($expectedBasePath, $request->getBasePath());
-    }
-
-    public function testTrustedHost()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], -1);
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host=localhost:8080');
-        $request->headers->set('X-Forwarded-Host', 'localhost:8080');
-
-        $this->assertSame('localhost:8080', $request->getHttpHost());
-        $this->assertSame(8080, $request->getPort());
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host="[::1]:443"');
-        $request->headers->set('X-Forwarded-Host', '[::1]:443');
-        $request->headers->set('X-Forwarded-Port', 443);
-
-        $this->assertSame('[::1]:443', $request->getHttpHost());
-        $this->assertSame(443, $request->getPort());
-    }
-
-    public function testTrustedPort()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], -1);
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host=localhost:8080');
-        $request->headers->set('X-Forwarded-Port', 8080);
-
-        $this->assertSame(8080, $request->getPort());
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host=localhost');
-        $request->headers->set('X-Forwarded-Port', 80);
-
-        $this->assertSame(80, $request->getPort());
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host="[::1]"');
-        $request->headers->set('X-Forwarded-Proto', 'https');
-        $request->headers->set('X-Forwarded-Port', 443);
-
-        $this->assertSame(443, $request->getPort());
-    }
-
-    public function testTrustedPortDoesNotDefaultToZero()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_ALL);
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('X-Forwarded-Host', 'test.example.com');
-        $request->headers->set('X-Forwarded-Port', '');
-
-        $this->assertSame(80, $request->getPort());
-    }
-}
-
-class RequestContentProxy extends Request
-{
-    public function getContent($asResource = false)
-    {
-        return http_build_query(['_method' => 'PUT', 'content' => 'mycontent'], '', '&');
-    }
-}
-
-class NewRequest extends Request
-{
-    public function getFoo()
-    {
-        return 'foo';
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseFunctionalTest.php b/vendor/symfony/http-foundation/Tests/ResponseFunctionalTest.php
deleted file mode 100644
index 21a66bbf861e08fb3bd5407a95b353098c162b58..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ResponseFunctionalTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @requires PHP 7.0
- */
-class ResponseFunctionalTest extends TestCase
-{
-    private static $server;
-
-    public static function setUpBeforeClass(): void
-    {
-        $spec = [
-            1 => ['file', '/dev/null', 'w'],
-            2 => ['file', '/dev/null', 'w'],
-        ];
-        if (!self::$server = @proc_open('exec php -S localhost:8054', $spec, $pipes, __DIR__.'/Fixtures/response-functional')) {
-            self::markTestSkipped('PHP server unable to start.');
-        }
-        sleep(1);
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        if (self::$server) {
-            proc_terminate(self::$server);
-            proc_close(self::$server);
-        }
-    }
-
-    /**
-     * @dataProvider provideCookie
-     */
-    public function testCookie($fixture)
-    {
-        $result = file_get_contents(sprintf('http://localhost:8054/%s.php', $fixture));
-        $this->assertStringMatchesFormatFile(__DIR__.sprintf('/Fixtures/response-functional/%s.expected', $fixture), $result);
-    }
-
-    public function provideCookie()
-    {
-        foreach (glob(__DIR__.'/Fixtures/response-functional/*.php') as $file) {
-            yield [pathinfo($file, PATHINFO_FILENAME)];
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseHeaderBagTest.php b/vendor/symfony/http-foundation/Tests/ResponseHeaderBagTest.php
deleted file mode 100644
index dc4f7105f4d8e4afaafeab93d1052e7783acd15e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ResponseHeaderBagTest.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\ResponseHeaderBag;
-
-/**
- * @group time-sensitive
- */
-class ResponseHeaderBagTest extends TestCase
-{
-    public function testAllPreserveCase()
-    {
-        $headers = [
-            'fOo' => 'BAR',
-            'ETag' => 'xyzzy',
-            'Content-MD5' => 'Q2hlY2sgSW50ZWdyaXR5IQ==',
-            'P3P' => 'CP="CAO PSA OUR"',
-            'WWW-Authenticate' => 'Basic realm="WallyWorld"',
-            'X-UA-Compatible' => 'IE=edge,chrome=1',
-            'X-XSS-Protection' => '1; mode=block',
-        ];
-
-        $bag = new ResponseHeaderBag($headers);
-        $allPreservedCase = $bag->allPreserveCase();
-
-        foreach (array_keys($headers) as $headerName) {
-            $this->assertArrayHasKey($headerName, $allPreservedCase, '->allPreserveCase() gets all input keys in original case');
-        }
-    }
-
-    public function testCacheControlHeader()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-
-        $bag = new ResponseHeaderBag(['Cache-Control' => 'public']);
-        $this->assertEquals('public', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-
-        $bag = new ResponseHeaderBag(['ETag' => 'abcde']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('private'));
-        $this->assertTrue($bag->hasCacheControlDirective('must-revalidate'));
-        $this->assertFalse($bag->hasCacheControlDirective('max-age'));
-
-        $bag = new ResponseHeaderBag(['Expires' => 'Wed, 16 Feb 2011 14:17:43 GMT']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag([
-            'Expires' => 'Wed, 16 Feb 2011 14:17:43 GMT',
-            'Cache-Control' => 'max-age=3600',
-        ]);
-        $this->assertEquals('max-age=3600, private', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['Last-Modified' => 'abcde']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['Etag' => 'abcde', 'Last-Modified' => 'abcde']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 'max-age=100']);
-        $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 's-maxage=100']);
-        $this->assertEquals('s-maxage=100', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 'private, max-age=100']);
-        $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 'public, max-age=100']);
-        $this->assertEquals('max-age=100, public', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag();
-        $bag->set('Last-Modified', 'abcde');
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag();
-        $bag->set('Cache-Control', ['public', 'must-revalidate']);
-        $this->assertCount(1, $bag->get('Cache-Control', null, false));
-        $this->assertEquals('must-revalidate, public', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag();
-        $bag->set('Cache-Control', 'public');
-        $bag->set('Cache-Control', 'must-revalidate', false);
-        $this->assertCount(1, $bag->get('Cache-Control', null, false));
-        $this->assertEquals('must-revalidate, public', $bag->get('Cache-Control'));
-    }
-
-    public function testCacheControlClone()
-    {
-        $headers = ['foo' => 'bar'];
-        $bag1 = new ResponseHeaderBag($headers);
-        $bag2 = new ResponseHeaderBag($bag1->allPreserveCase());
-        $this->assertEquals($bag1->allPreserveCase(), $bag2->allPreserveCase());
-    }
-
-    public function testToStringIncludesCookieHeaders()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $bag->setCookie(Cookie::create('foo', 'bar'));
-
-        $this->assertSetCookieHeader('foo=bar; path=/; httponly; samesite=lax', $bag);
-
-        $bag->clearCookie('foo');
-
-        $this->assertSetCookieHeader('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001).'; Max-Age=0; path=/; httponly', $bag);
-    }
-
-    public function testClearCookieSecureNotHttpOnly()
-    {
-        $bag = new ResponseHeaderBag([]);
-
-        $bag->clearCookie('foo', '/', null, true, false);
-
-        $this->assertSetCookieHeader('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001).'; Max-Age=0; path=/; secure', $bag);
-    }
-
-    public function testReplace()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-
-        $bag->replace(['Cache-Control' => 'public']);
-        $this->assertEquals('public', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-    }
-
-    public function testReplaceWithRemove()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-
-        $bag->remove('Cache-Control');
-        $bag->replace([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-    }
-
-    public function testCookiesWithSameNames()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/foo', 'foo.bar'));
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/bar', 'foo.bar'));
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/bar', 'bar.foo'));
-        $bag->setCookie(Cookie::create('foo', 'bar'));
-
-        $this->assertCount(4, $bag->getCookies());
-        $this->assertEquals('foo=bar; path=/path/foo; domain=foo.bar; httponly; samesite=lax', $bag->get('set-cookie'));
-        $this->assertEquals([
-            'foo=bar; path=/path/foo; domain=foo.bar; httponly; samesite=lax',
-            'foo=bar; path=/path/bar; domain=foo.bar; httponly; samesite=lax',
-            'foo=bar; path=/path/bar; domain=bar.foo; httponly; samesite=lax',
-            'foo=bar; path=/; httponly; samesite=lax',
-        ], $bag->get('set-cookie', null, false));
-
-        $this->assertSetCookieHeader('foo=bar; path=/path/foo; domain=foo.bar; httponly; samesite=lax', $bag);
-        $this->assertSetCookieHeader('foo=bar; path=/path/bar; domain=foo.bar; httponly; samesite=lax', $bag);
-        $this->assertSetCookieHeader('foo=bar; path=/path/bar; domain=bar.foo; httponly; samesite=lax', $bag);
-        $this->assertSetCookieHeader('foo=bar; path=/; httponly; samesite=lax', $bag);
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-
-        $this->assertArrayHasKey('foo', $cookies['foo.bar']['/path/foo']);
-        $this->assertArrayHasKey('foo', $cookies['foo.bar']['/path/bar']);
-        $this->assertArrayHasKey('foo', $cookies['bar.foo']['/path/bar']);
-        $this->assertArrayHasKey('foo', $cookies['']['/']);
-    }
-
-    public function testRemoveCookie()
-    {
-        $bag = new ResponseHeaderBag();
-        $this->assertFalse($bag->has('set-cookie'));
-
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/foo', 'foo.bar'));
-        $bag->setCookie(Cookie::create('bar', 'foo', 0, '/path/bar', 'foo.bar'));
-        $this->assertTrue($bag->has('set-cookie'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayHasKey('/path/foo', $cookies['foo.bar']);
-
-        $bag->removeCookie('foo', '/path/foo', 'foo.bar');
-        $this->assertTrue($bag->has('set-cookie'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayNotHasKey('/path/foo', $cookies['foo.bar']);
-
-        $bag->removeCookie('bar', '/path/bar', 'foo.bar');
-        $this->assertFalse($bag->has('set-cookie'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayNotHasKey('foo.bar', $cookies);
-    }
-
-    public function testRemoveCookieWithNullRemove()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->setCookie(Cookie::create('foo', 'bar'));
-        $bag->setCookie(Cookie::create('bar', 'foo'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayHasKey('/', $cookies['']);
-
-        $bag->removeCookie('foo', null);
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayNotHasKey('foo', $cookies['']['/']);
-
-        $bag->removeCookie('bar', null);
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertFalse(isset($cookies['']['/']['bar']));
-    }
-
-    public function testSetCookieHeader()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->set('set-cookie', 'foo=bar');
-        $this->assertEquals([Cookie::create('foo', 'bar', 0, '/', null, false, false, true, null)], $bag->getCookies());
-
-        $bag->set('set-cookie', 'foo2=bar2', false);
-        $this->assertEquals([
-            Cookie::create('foo', 'bar', 0, '/', null, false, false, true, null),
-            Cookie::create('foo2', 'bar2', 0, '/', null, false, false, true, null),
-        ], $bag->getCookies());
-
-        $bag->remove('set-cookie');
-        $this->assertEquals([], $bag->getCookies());
-    }
-
-    public function testGetCookiesWithInvalidArgument()
-    {
-        $this->expectException('InvalidArgumentException');
-        $bag = new ResponseHeaderBag();
-
-        $bag->getCookies('invalid_argument');
-    }
-
-    public function testToStringDoesntMessUpHeaders()
-    {
-        $headers = new ResponseHeaderBag();
-
-        $headers->set('Location', 'http://www.symfony.com');
-        $headers->set('Content-type', 'text/html');
-
-        (string) $headers;
-
-        $allHeaders = $headers->allPreserveCase();
-        $this->assertEquals(['http://www.symfony.com'], $allHeaders['Location']);
-        $this->assertEquals(['text/html'], $allHeaders['Content-type']);
-    }
-
-    public function testDateHeaderAddedOnCreation()
-    {
-        $now = time();
-
-        $bag = new ResponseHeaderBag();
-        $this->assertTrue($bag->has('Date'));
-
-        $this->assertEquals($now, $bag->getDate('Date')->getTimestamp());
-    }
-
-    public function testDateHeaderCanBeSetOnCreation()
-    {
-        $someDate = 'Thu, 23 Mar 2017 09:15:12 GMT';
-        $bag = new ResponseHeaderBag(['Date' => $someDate]);
-
-        $this->assertEquals($someDate, $bag->get('Date'));
-    }
-
-    public function testDateHeaderWillBeRecreatedWhenRemoved()
-    {
-        $someDate = 'Thu, 23 Mar 2017 09:15:12 GMT';
-        $bag = new ResponseHeaderBag(['Date' => $someDate]);
-        $bag->remove('Date');
-
-        // a (new) Date header is still present
-        $this->assertTrue($bag->has('Date'));
-        $this->assertNotEquals($someDate, $bag->get('Date'));
-    }
-
-    public function testDateHeaderWillBeRecreatedWhenHeadersAreReplaced()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->replace([]);
-
-        $this->assertTrue($bag->has('Date'));
-    }
-
-    private function assertSetCookieHeader($expected, ResponseHeaderBag $actual)
-    {
-        $this->assertRegExp('#^Set-Cookie:\s+'.preg_quote($expected, '#').'$#m', str_replace("\r\n", "\n", (string) $actual));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseTest.php b/vendor/symfony/http-foundation/Tests/ResponseTest.php
deleted file mode 100644
index ad1f806d7379b73ce923414c7552ae5eb285444b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ResponseTest.php
+++ /dev/null
@@ -1,1070 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * @group time-sensitive
- */
-class ResponseTest extends ResponseTestCase
-{
-    public function testCreate()
-    {
-        $response = Response::create('foo', 301, ['Foo' => 'bar']);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
-        $this->assertEquals(301, $response->getStatusCode());
-        $this->assertEquals('bar', $response->headers->get('foo'));
-    }
-
-    public function testToString()
-    {
-        $response = new Response();
-        $response = explode("\r\n", $response);
-        $this->assertEquals('HTTP/1.0 200 OK', $response[0]);
-        $this->assertEquals('Cache-Control: no-cache, private', $response[1]);
-    }
-
-    public function testClone()
-    {
-        $response = new Response();
-        $responseClone = clone $response;
-        $this->assertEquals($response, $responseClone);
-    }
-
-    public function testSendHeaders()
-    {
-        $response = new Response();
-        $headers = $response->sendHeaders();
-        $this->assertObjectHasAttribute('headers', $headers);
-        $this->assertObjectHasAttribute('content', $headers);
-        $this->assertObjectHasAttribute('version', $headers);
-        $this->assertObjectHasAttribute('statusCode', $headers);
-        $this->assertObjectHasAttribute('statusText', $headers);
-        $this->assertObjectHasAttribute('charset', $headers);
-    }
-
-    public function testSend()
-    {
-        $response = new Response();
-        $responseSend = $response->send();
-        $this->assertObjectHasAttribute('headers', $responseSend);
-        $this->assertObjectHasAttribute('content', $responseSend);
-        $this->assertObjectHasAttribute('version', $responseSend);
-        $this->assertObjectHasAttribute('statusCode', $responseSend);
-        $this->assertObjectHasAttribute('statusText', $responseSend);
-        $this->assertObjectHasAttribute('charset', $responseSend);
-    }
-
-    public function testGetCharset()
-    {
-        $response = new Response();
-        $charsetOrigin = 'UTF-8';
-        $response->setCharset($charsetOrigin);
-        $charset = $response->getCharset();
-        $this->assertEquals($charsetOrigin, $charset);
-    }
-
-    public function testIsCacheable()
-    {
-        $response = new Response();
-        $this->assertFalse($response->isCacheable());
-    }
-
-    public function testIsCacheableWithErrorCode()
-    {
-        $response = new Response('', 500);
-        $this->assertFalse($response->isCacheable());
-    }
-
-    public function testIsCacheableWithNoStoreDirective()
-    {
-        $response = new Response();
-        $response->headers->set('cache-control', 'private');
-        $this->assertFalse($response->isCacheable());
-    }
-
-    public function testIsCacheableWithSetTtl()
-    {
-        $response = new Response();
-        $response->setTtl(10);
-        $this->assertTrue($response->isCacheable());
-    }
-
-    public function testMustRevalidate()
-    {
-        $response = new Response();
-        $this->assertFalse($response->mustRevalidate());
-    }
-
-    public function testMustRevalidateWithMustRevalidateCacheControlHeader()
-    {
-        $response = new Response();
-        $response->headers->set('cache-control', 'must-revalidate');
-
-        $this->assertTrue($response->mustRevalidate());
-    }
-
-    public function testMustRevalidateWithProxyRevalidateCacheControlHeader()
-    {
-        $response = new Response();
-        $response->headers->set('cache-control', 'proxy-revalidate');
-
-        $this->assertTrue($response->mustRevalidate());
-    }
-
-    public function testSetNotModified()
-    {
-        $response = new Response('foo');
-        $modified = $response->setNotModified();
-        $this->assertObjectHasAttribute('headers', $modified);
-        $this->assertObjectHasAttribute('content', $modified);
-        $this->assertObjectHasAttribute('version', $modified);
-        $this->assertObjectHasAttribute('statusCode', $modified);
-        $this->assertObjectHasAttribute('statusText', $modified);
-        $this->assertObjectHasAttribute('charset', $modified);
-        $this->assertEquals(304, $modified->getStatusCode());
-
-        ob_start();
-        $modified->sendContent();
-        $string = ob_get_clean();
-        $this->assertEmpty($string);
-    }
-
-    public function testIsSuccessful()
-    {
-        $response = new Response();
-        $this->assertTrue($response->isSuccessful());
-    }
-
-    public function testIsNotModified()
-    {
-        $response = new Response();
-        $modified = $response->isNotModified(new Request());
-        $this->assertFalse($modified);
-    }
-
-    public function testIsNotModifiedNotSafe()
-    {
-        $request = Request::create('/homepage', 'POST');
-
-        $response = new Response();
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedLastModified()
-    {
-        $before = 'Sun, 25 Aug 2013 18:32:31 GMT';
-        $modified = 'Sun, 25 Aug 2013 18:33:31 GMT';
-        $after = 'Sun, 25 Aug 2013 19:33:31 GMT';
-
-        $request = new Request();
-        $request->headers->set('If-Modified-Since', $modified);
-
-        $response = new Response();
-
-        $response->headers->set('Last-Modified', $modified);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('Last-Modified', $before);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('Last-Modified', $after);
-        $this->assertFalse($response->isNotModified($request));
-
-        $response->headers->set('Last-Modified', '');
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedEtag()
-    {
-        $etagOne = 'randomly_generated_etag';
-        $etagTwo = 'randomly_generated_etag_2';
-
-        $request = new Request();
-        $request->headers->set('if_none_match', sprintf('%s, %s, %s', $etagOne, $etagTwo, 'etagThree'));
-
-        $response = new Response();
-
-        $response->headers->set('ETag', $etagOne);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('ETag', $etagTwo);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('ETag', '');
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedLastModifiedAndEtag()
-    {
-        $before = 'Sun, 25 Aug 2013 18:32:31 GMT';
-        $modified = 'Sun, 25 Aug 2013 18:33:31 GMT';
-        $after = 'Sun, 25 Aug 2013 19:33:31 GMT';
-        $etag = 'randomly_generated_etag';
-
-        $request = new Request();
-        $request->headers->set('if_none_match', sprintf('%s, %s', $etag, 'etagThree'));
-        $request->headers->set('If-Modified-Since', $modified);
-
-        $response = new Response();
-
-        $response->headers->set('ETag', $etag);
-        $response->headers->set('Last-Modified', $after);
-        $this->assertFalse($response->isNotModified($request));
-
-        $response->headers->set('ETag', 'non-existent-etag');
-        $response->headers->set('Last-Modified', $before);
-        $this->assertFalse($response->isNotModified($request));
-
-        $response->headers->set('ETag', $etag);
-        $response->headers->set('Last-Modified', $modified);
-        $this->assertTrue($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedIfModifiedSinceAndEtagWithoutLastModified()
-    {
-        $modified = 'Sun, 25 Aug 2013 18:33:31 GMT';
-        $etag = 'randomly_generated_etag';
-
-        $request = new Request();
-        $request->headers->set('if_none_match', sprintf('%s, %s', $etag, 'etagThree'));
-        $request->headers->set('If-Modified-Since', $modified);
-
-        $response = new Response();
-
-        $response->headers->set('ETag', $etag);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('ETag', 'non-existent-etag');
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsValidateable()
-    {
-        $response = new Response('', 200, ['Last-Modified' => $this->createDateTimeOneHourAgo()->format(DATE_RFC2822)]);
-        $this->assertTrue($response->isValidateable(), '->isValidateable() returns true if Last-Modified is present');
-
-        $response = new Response('', 200, ['ETag' => '"12345"']);
-        $this->assertTrue($response->isValidateable(), '->isValidateable() returns true if ETag is present');
-
-        $response = new Response();
-        $this->assertFalse($response->isValidateable(), '->isValidateable() returns false when no validator is present');
-    }
-
-    public function testGetDate()
-    {
-        $oneHourAgo = $this->createDateTimeOneHourAgo();
-        $response = new Response('', 200, ['Date' => $oneHourAgo->format(DATE_RFC2822)]);
-        $date = $response->getDate();
-        $this->assertEquals($oneHourAgo->getTimestamp(), $date->getTimestamp(), '->getDate() returns the Date header if present');
-
-        $response = new Response();
-        $date = $response->getDate();
-        $this->assertEquals(time(), $date->getTimestamp(), '->getDate() returns the current Date if no Date header present');
-
-        $response = new Response('', 200, ['Date' => $this->createDateTimeOneHourAgo()->format(DATE_RFC2822)]);
-        $now = $this->createDateTimeNow();
-        $response->headers->set('Date', $now->format(DATE_RFC2822));
-        $date = $response->getDate();
-        $this->assertEquals($now->getTimestamp(), $date->getTimestamp(), '->getDate() returns the date when the header has been modified');
-
-        $response = new Response('', 200);
-        $now = $this->createDateTimeNow();
-        $response->headers->remove('Date');
-        $date = $response->getDate();
-        $this->assertEquals($now->getTimestamp(), $date->getTimestamp(), '->getDate() returns the current Date when the header has previously been removed');
-    }
-
-    public function testGetMaxAge()
-    {
-        $response = new Response();
-        $response->headers->set('Cache-Control', 's-maxage=600, max-age=0');
-        $this->assertEquals(600, $response->getMaxAge(), '->getMaxAge() uses s-maxage cache control directive when present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=600');
-        $this->assertEquals(600, $response->getMaxAge(), '->getMaxAge() falls back to max-age when no s-maxage directive present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'must-revalidate');
-        $response->headers->set('Expires', $this->createDateTimeOneHourLater()->format(DATE_RFC2822));
-        $this->assertEquals(3600, $response->getMaxAge(), '->getMaxAge() falls back to Expires when no max-age or s-maxage directive present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'must-revalidate');
-        $response->headers->set('Expires', -1);
-        $this->assertLessThanOrEqual(time() - 2 * 86400, $response->getExpires()->format('U'));
-
-        $response = new Response();
-        $this->assertNull($response->getMaxAge(), '->getMaxAge() returns null if no freshness information available');
-    }
-
-    public function testSetSharedMaxAge()
-    {
-        $response = new Response();
-        $response->setSharedMaxAge(20);
-
-        $cacheControl = $response->headers->get('Cache-Control');
-        $this->assertEquals('public, s-maxage=20', $cacheControl);
-    }
-
-    public function testIsPrivate()
-    {
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=100');
-        $response->setPrivate();
-        $this->assertEquals(100, $response->headers->getCacheControlDirective('max-age'), '->isPrivate() adds the private Cache-Control directive when set to true');
-        $this->assertTrue($response->headers->getCacheControlDirective('private'), '->isPrivate() adds the private Cache-Control directive when set to true');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'public, max-age=100');
-        $response->setPrivate();
-        $this->assertEquals(100, $response->headers->getCacheControlDirective('max-age'), '->isPrivate() adds the private Cache-Control directive when set to true');
-        $this->assertTrue($response->headers->getCacheControlDirective('private'), '->isPrivate() adds the private Cache-Control directive when set to true');
-        $this->assertFalse($response->headers->hasCacheControlDirective('public'), '->isPrivate() removes the public Cache-Control directive');
-    }
-
-    public function testExpire()
-    {
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=100');
-        $response->expire();
-        $this->assertEquals(100, $response->headers->get('Age'), '->expire() sets the Age to max-age when present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=100, s-maxage=500');
-        $response->expire();
-        $this->assertEquals(500, $response->headers->get('Age'), '->expire() sets the Age to s-maxage when both max-age and s-maxage are present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=5, s-maxage=500');
-        $response->headers->set('Age', '1000');
-        $response->expire();
-        $this->assertEquals(1000, $response->headers->get('Age'), '->expire() does nothing when the response is already stale/expired');
-
-        $response = new Response();
-        $response->expire();
-        $this->assertFalse($response->headers->has('Age'), '->expire() does nothing when the response does not include freshness information');
-
-        $response = new Response();
-        $response->headers->set('Expires', -1);
-        $response->expire();
-        $this->assertNull($response->headers->get('Age'), '->expire() does not set the Age when the response is expired');
-
-        $response = new Response();
-        $response->headers->set('Expires', date(DATE_RFC2822, time() + 600));
-        $response->expire();
-        $this->assertNull($response->headers->get('Expires'), '->expire() removes the Expires header when the response is fresh');
-    }
-
-    public function testNullExpireHeader()
-    {
-        $response = new Response(null, 200, ['Expires' => null]);
-        $this->assertNull($response->getExpires());
-    }
-
-    public function testGetTtl()
-    {
-        $response = new Response();
-        $this->assertNull($response->getTtl(), '->getTtl() returns null when no Expires or Cache-Control headers are present');
-
-        $response = new Response();
-        $response->headers->set('Expires', $this->createDateTimeOneHourLater()->format(DATE_RFC2822));
-        $this->assertEquals(3600, $response->getTtl(), '->getTtl() uses the Expires header when no max-age is present');
-
-        $response = new Response();
-        $response->headers->set('Expires', $this->createDateTimeOneHourAgo()->format(DATE_RFC2822));
-        $this->assertLessThan(0, $response->getTtl(), '->getTtl() returns negative values when Expires is in past');
-
-        $response = new Response();
-        $response->headers->set('Expires', $response->getDate()->format(DATE_RFC2822));
-        $response->headers->set('Age', 0);
-        $this->assertSame(0, $response->getTtl(), '->getTtl() correctly handles zero');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=60');
-        $this->assertEquals(60, $response->getTtl(), '->getTtl() uses Cache-Control max-age when present');
-    }
-
-    public function testSetClientTtl()
-    {
-        $response = new Response();
-        $response->setClientTtl(10);
-
-        $this->assertEquals($response->getMaxAge(), $response->getAge() + 10);
-    }
-
-    public function testGetSetProtocolVersion()
-    {
-        $response = new Response();
-
-        $this->assertEquals('1.0', $response->getProtocolVersion());
-
-        $response->setProtocolVersion('1.1');
-
-        $this->assertEquals('1.1', $response->getProtocolVersion());
-    }
-
-    public function testGetVary()
-    {
-        $response = new Response();
-        $this->assertEquals([], $response->getVary(), '->getVary() returns an empty array if no Vary header is present');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language');
-        $this->assertEquals(['Accept-Language'], $response->getVary(), '->getVary() parses a single header name value');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language User-Agent    X-Foo');
-        $this->assertEquals(['Accept-Language', 'User-Agent', 'X-Foo'], $response->getVary(), '->getVary() parses multiple header name values separated by spaces');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language,User-Agent,    X-Foo');
-        $this->assertEquals(['Accept-Language', 'User-Agent', 'X-Foo'], $response->getVary(), '->getVary() parses multiple header name values separated by commas');
-
-        $vary = ['Accept-Language', 'User-Agent', 'X-foo'];
-
-        $response = new Response();
-        $response->headers->set('Vary', $vary);
-        $this->assertEquals($vary, $response->getVary(), '->getVary() parses multiple header name values in arrays');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language, User-Agent, X-foo');
-        $this->assertEquals($vary, $response->getVary(), '->getVary() parses multiple header name values in arrays');
-    }
-
-    public function testSetVary()
-    {
-        $response = new Response();
-        $response->setVary('Accept-Language');
-        $this->assertEquals(['Accept-Language'], $response->getVary());
-
-        $response->setVary('Accept-Language, User-Agent');
-        $this->assertEquals(['Accept-Language', 'User-Agent'], $response->getVary(), '->setVary() replace the vary header by default');
-
-        $response->setVary('X-Foo', false);
-        $this->assertEquals(['Accept-Language', 'User-Agent', 'X-Foo'], $response->getVary(), '->setVary() doesn\'t wipe out earlier Vary headers if replace is set to false');
-    }
-
-    public function testDefaultContentType()
-    {
-        $headerMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\ResponseHeaderBag')->setMethods(['set'])->getMock();
-        $headerMock->expects($this->at(0))
-            ->method('set')
-            ->with('Content-Type', 'text/html');
-        $headerMock->expects($this->at(1))
-            ->method('set')
-            ->with('Content-Type', 'text/html; charset=UTF-8');
-
-        $response = new Response('foo');
-        $response->headers = $headerMock;
-
-        $response->prepare(new Request());
-    }
-
-    public function testContentTypeCharset()
-    {
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/css');
-
-        // force fixContentType() to be called
-        $response->prepare(new Request());
-
-        $this->assertEquals('text/css; charset=UTF-8', $response->headers->get('Content-Type'));
-    }
-
-    public function testPrepareDoesNothingIfContentTypeIsSet()
-    {
-        $response = new Response('foo');
-        $response->headers->set('Content-Type', 'text/plain');
-
-        $response->prepare(new Request());
-
-        $this->assertEquals('text/plain; charset=UTF-8', $response->headers->get('content-type'));
-    }
-
-    public function testPrepareDoesNothingIfRequestFormatIsNotDefined()
-    {
-        $response = new Response('foo');
-
-        $response->prepare(new Request());
-
-        $this->assertEquals('text/html; charset=UTF-8', $response->headers->get('content-type'));
-    }
-
-    public function testPrepareSetContentType()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/');
-        $request->setRequestFormat('json');
-
-        $response->prepare($request);
-
-        $this->assertEquals('application/json', $response->headers->get('content-type'));
-    }
-
-    public function testPrepareRemovesContentForHeadRequests()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/', 'HEAD');
-
-        $length = 12345;
-        $response->headers->set('Content-Length', $length);
-        $response->prepare($request);
-
-        $this->assertEquals('', $response->getContent());
-        $this->assertEquals($length, $response->headers->get('Content-Length'), 'Content-Length should be as if it was GET; see RFC2616 14.13');
-    }
-
-    public function testPrepareRemovesContentForInformationalResponse()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/');
-
-        $response->setContent('content');
-        $response->setStatusCode(101);
-        $response->prepare($request);
-        $this->assertEquals('', $response->getContent());
-        $this->assertFalse($response->headers->has('Content-Type'));
-
-        $response->setContent('content');
-        $response->setStatusCode(304);
-        $response->prepare($request);
-        $this->assertEquals('', $response->getContent());
-        $this->assertFalse($response->headers->has('Content-Type'));
-        $this->assertFalse($response->headers->has('Content-Length'));
-    }
-
-    public function testPrepareRemovesContentLength()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/');
-
-        $response->headers->set('Content-Length', 12345);
-        $response->prepare($request);
-        $this->assertEquals(12345, $response->headers->get('Content-Length'));
-
-        $response->headers->set('Transfer-Encoding', 'chunked');
-        $response->prepare($request);
-        $this->assertFalse($response->headers->has('Content-Length'));
-    }
-
-    public function testPrepareSetsPragmaOnHttp10Only()
-    {
-        $request = Request::create('/', 'GET');
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.0');
-
-        $response = new Response('foo');
-        $response->prepare($request);
-        $this->assertEquals('no-cache', $response->headers->get('pragma'));
-        $this->assertEquals('-1', $response->headers->get('expires'));
-
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.1');
-        $response = new Response('foo');
-        $response->prepare($request);
-        $this->assertFalse($response->headers->has('pragma'));
-        $this->assertFalse($response->headers->has('expires'));
-    }
-
-    public function testPrepareSetsCookiesSecure()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $response = new Response('foo');
-        $response->headers->setCookie($cookie);
-
-        $request = Request::create('/', 'GET');
-        $response->prepare($request);
-
-        $this->assertFalse($cookie->isSecure());
-
-        $request = Request::create('https://localhost/', 'GET');
-        $response->prepare($request);
-
-        $this->assertTrue($cookie->isSecure());
-    }
-
-    public function testSetCache()
-    {
-        $response = new Response();
-        // ['etag', 'last_modified', 'max_age', 's_maxage', 'private', 'public']
-        try {
-            $response->setCache(['wrong option' => 'value']);
-            $this->fail('->setCache() throws an InvalidArgumentException if an option is not supported');
-        } catch (\Exception $e) {
-            $this->assertInstanceOf('InvalidArgumentException', $e, '->setCache() throws an InvalidArgumentException if an option is not supported');
-            $this->assertStringContainsString('"wrong option"', $e->getMessage());
-        }
-
-        $options = ['etag' => '"whatever"'];
-        $response->setCache($options);
-        $this->assertEquals($response->getEtag(), '"whatever"');
-
-        $now = $this->createDateTimeNow();
-        $options = ['last_modified' => $now];
-        $response->setCache($options);
-        $this->assertEquals($response->getLastModified()->getTimestamp(), $now->getTimestamp());
-
-        $options = ['max_age' => 100];
-        $response->setCache($options);
-        $this->assertEquals($response->getMaxAge(), 100);
-
-        $options = ['s_maxage' => 200];
-        $response->setCache($options);
-        $this->assertEquals($response->getMaxAge(), 200);
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['public' => true]);
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['public' => false]);
-        $this->assertFalse($response->headers->hasCacheControlDirective('public'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['private' => true]);
-        $this->assertFalse($response->headers->hasCacheControlDirective('public'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['private' => false]);
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['immutable' => true]);
-        $this->assertTrue($response->headers->hasCacheControlDirective('immutable'));
-
-        $response->setCache(['immutable' => false]);
-        $this->assertFalse($response->headers->hasCacheControlDirective('immutable'));
-    }
-
-    public function testSendContent()
-    {
-        $response = new Response('test response rendering', 200);
-
-        ob_start();
-        $response->sendContent();
-        $string = ob_get_clean();
-        $this->assertStringContainsString('test response rendering', $string);
-    }
-
-    public function testSetPublic()
-    {
-        $response = new Response();
-        $response->setPublic();
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-    }
-
-    public function testSetImmutable()
-    {
-        $response = new Response();
-        $response->setImmutable();
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('immutable'));
-    }
-
-    public function testIsImmutable()
-    {
-        $response = new Response();
-        $response->setImmutable();
-
-        $this->assertTrue($response->isImmutable());
-    }
-
-    public function testSetDate()
-    {
-        $response = new Response();
-        $response->setDate(\DateTime::createFromFormat(\DateTime::ATOM, '2013-01-26T09:21:56+0100', new \DateTimeZone('Europe/Berlin')));
-
-        $this->assertEquals('2013-01-26T08:21:56+00:00', $response->getDate()->format(\DateTime::ATOM));
-    }
-
-    public function testSetDateWithImmutable()
-    {
-        $response = new Response();
-        $response->setDate(\DateTimeImmutable::createFromFormat(\DateTime::ATOM, '2013-01-26T09:21:56+0100', new \DateTimeZone('Europe/Berlin')));
-
-        $this->assertEquals('2013-01-26T08:21:56+00:00', $response->getDate()->format(\DateTime::ATOM));
-    }
-
-    public function testSetExpires()
-    {
-        $response = new Response();
-        $response->setExpires(null);
-
-        $this->assertNull($response->getExpires(), '->setExpires() remove the header when passed null');
-
-        $now = $this->createDateTimeNow();
-        $response->setExpires($now);
-
-        $this->assertEquals($response->getExpires()->getTimestamp(), $now->getTimestamp());
-    }
-
-    public function testSetExpiresWithImmutable()
-    {
-        $response = new Response();
-
-        $now = $this->createDateTimeImmutableNow();
-        $response->setExpires($now);
-
-        $this->assertEquals($response->getExpires()->getTimestamp(), $now->getTimestamp());
-    }
-
-    public function testSetLastModified()
-    {
-        $response = new Response();
-        $response->setLastModified($this->createDateTimeNow());
-        $this->assertNotNull($response->getLastModified());
-
-        $response->setLastModified(null);
-        $this->assertNull($response->getLastModified());
-    }
-
-    public function testSetLastModifiedWithImmutable()
-    {
-        $response = new Response();
-        $response->setLastModified($this->createDateTimeImmutableNow());
-        $this->assertNotNull($response->getLastModified());
-
-        $response->setLastModified(null);
-        $this->assertNull($response->getLastModified());
-    }
-
-    public function testIsInvalid()
-    {
-        $response = new Response();
-
-        try {
-            $response->setStatusCode(99);
-            $this->fail();
-        } catch (\InvalidArgumentException $e) {
-            $this->assertTrue($response->isInvalid());
-        }
-
-        try {
-            $response->setStatusCode(650);
-            $this->fail();
-        } catch (\InvalidArgumentException $e) {
-            $this->assertTrue($response->isInvalid());
-        }
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isInvalid());
-    }
-
-    /**
-     * @dataProvider getStatusCodeFixtures
-     */
-    public function testSetStatusCode($code, $text, $expectedText)
-    {
-        $response = new Response();
-
-        $response->setStatusCode($code, $text);
-
-        $statusText = new \ReflectionProperty($response, 'statusText');
-        $statusText->setAccessible(true);
-
-        $this->assertEquals($expectedText, $statusText->getValue($response));
-    }
-
-    public function getStatusCodeFixtures()
-    {
-        return [
-            ['200', null, 'OK'],
-            ['200', false, ''],
-            ['200', 'foo', 'foo'],
-            ['199', null, 'unknown status'],
-            ['199', false, ''],
-            ['199', 'foo', 'foo'],
-        ];
-    }
-
-    public function testIsInformational()
-    {
-        $response = new Response('', 100);
-        $this->assertTrue($response->isInformational());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isInformational());
-    }
-
-    public function testIsRedirectRedirection()
-    {
-        foreach ([301, 302, 303, 307] as $code) {
-            $response = new Response('', $code);
-            $this->assertTrue($response->isRedirection());
-            $this->assertTrue($response->isRedirect());
-        }
-
-        $response = new Response('', 304);
-        $this->assertTrue($response->isRedirection());
-        $this->assertFalse($response->isRedirect());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isRedirection());
-        $this->assertFalse($response->isRedirect());
-
-        $response = new Response('', 404);
-        $this->assertFalse($response->isRedirection());
-        $this->assertFalse($response->isRedirect());
-
-        $response = new Response('', 301, ['Location' => '/good-uri']);
-        $this->assertFalse($response->isRedirect('/bad-uri'));
-        $this->assertTrue($response->isRedirect('/good-uri'));
-    }
-
-    public function testIsNotFound()
-    {
-        $response = new Response('', 404);
-        $this->assertTrue($response->isNotFound());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isNotFound());
-    }
-
-    public function testIsEmpty()
-    {
-        foreach ([204, 304] as $code) {
-            $response = new Response('', $code);
-            $this->assertTrue($response->isEmpty());
-        }
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isEmpty());
-    }
-
-    public function testIsForbidden()
-    {
-        $response = new Response('', 403);
-        $this->assertTrue($response->isForbidden());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isForbidden());
-    }
-
-    public function testIsOk()
-    {
-        $response = new Response('', 200);
-        $this->assertTrue($response->isOk());
-
-        $response = new Response('', 404);
-        $this->assertFalse($response->isOk());
-    }
-
-    public function testIsServerOrClientError()
-    {
-        $response = new Response('', 404);
-        $this->assertTrue($response->isClientError());
-        $this->assertFalse($response->isServerError());
-
-        $response = new Response('', 500);
-        $this->assertFalse($response->isClientError());
-        $this->assertTrue($response->isServerError());
-    }
-
-    public function testHasVary()
-    {
-        $response = new Response();
-        $this->assertFalse($response->hasVary());
-
-        $response->setVary('User-Agent');
-        $this->assertTrue($response->hasVary());
-    }
-
-    public function testSetEtag()
-    {
-        $response = new Response('', 200, ['ETag' => '"12345"']);
-        $response->setEtag();
-
-        $this->assertNull($response->headers->get('Etag'), '->setEtag() removes Etags when call with null');
-    }
-
-    /**
-     * @dataProvider validContentProvider
-     */
-    public function testSetContent($content)
-    {
-        $response = new Response();
-        $response->setContent($content);
-        $this->assertEquals((string) $content, $response->getContent());
-    }
-
-    /**
-     * @dataProvider invalidContentProvider
-     */
-    public function testSetContentInvalid($content)
-    {
-        $this->expectException('UnexpectedValueException');
-        $response = new Response();
-        $response->setContent($content);
-    }
-
-    public function testSettersAreChainable()
-    {
-        $response = new Response();
-
-        $setters = [
-            'setProtocolVersion' => '1.0',
-            'setCharset' => 'UTF-8',
-            'setPublic' => null,
-            'setPrivate' => null,
-            'setDate' => $this->createDateTimeNow(),
-            'expire' => null,
-            'setMaxAge' => 1,
-            'setSharedMaxAge' => 1,
-            'setTtl' => 1,
-            'setClientTtl' => 1,
-        ];
-
-        foreach ($setters as $setter => $arg) {
-            $this->assertEquals($response, $response->{$setter}($arg));
-        }
-    }
-
-    public function testNoDeprecationsAreTriggered()
-    {
-        new DefaultResponse();
-        $this->getMockBuilder(Response::class)->getMock();
-
-        // we just need to ensure that subclasses of Response can be created without any deprecations
-        // being triggered if the subclass does not override any final methods
-        $this->addToAssertionCount(1);
-    }
-
-    public function validContentProvider()
-    {
-        return [
-            'obj' => [new StringableObject()],
-            'string' => ['Foo'],
-            'int' => [2],
-        ];
-    }
-
-    public function invalidContentProvider()
-    {
-        return [
-            'obj' => [new \stdClass()],
-            'array' => [[]],
-            'bool' => [true, '1'],
-        ];
-    }
-
-    protected function createDateTimeOneHourAgo()
-    {
-        return $this->createDateTimeNow()->sub(new \DateInterval('PT1H'));
-    }
-
-    protected function createDateTimeOneHourLater()
-    {
-        return $this->createDateTimeNow()->add(new \DateInterval('PT1H'));
-    }
-
-    protected function createDateTimeNow()
-    {
-        $date = new \DateTime();
-
-        return $date->setTimestamp(time());
-    }
-
-    protected function createDateTimeImmutableNow()
-    {
-        $date = new \DateTimeImmutable();
-
-        return $date->setTimestamp(time());
-    }
-
-    protected function provideResponse()
-    {
-        return new Response();
-    }
-
-    /**
-     * @see http://github.com/zendframework/zend-diactoros for the canonical source repository
-     *
-     * @author Fábio Pacheco
-     * @copyright Copyright (c) 2015-2016 Zend Technologies USA Inc. (http://www.zend.com)
-     * @license https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
-     */
-    public function ianaCodesReasonPhrasesProvider()
-    {
-        if (!\in_array('https', stream_get_wrappers(), true)) {
-            $this->markTestSkipped('The "https" wrapper is not available');
-        }
-
-        $ianaHttpStatusCodes = new \DOMDocument();
-
-        $context = stream_context_create([
-            'http' => [
-                'method' => 'GET',
-                'timeout' => 30,
-                'user_agent' => __METHOD__,
-            ],
-        ]);
-
-        $ianaHttpStatusCodes->loadXML(file_get_contents('https://www.iana.org/assignments/http-status-codes/http-status-codes.xml', false, $context));
-        if (!$ianaHttpStatusCodes->relaxNGValidate(__DIR__.'/schema/http-status-codes.rng')) {
-            self::fail('Invalid IANA\'s HTTP status code list.');
-        }
-
-        $ianaCodesReasonPhrases = [];
-
-        $xpath = new \DOMXPath($ianaHttpStatusCodes);
-        $xpath->registerNamespace('ns', 'http://www.iana.org/assignments');
-
-        $records = $xpath->query('//ns:record');
-        foreach ($records as $record) {
-            $value = $xpath->query('.//ns:value', $record)->item(0)->nodeValue;
-            $description = $xpath->query('.//ns:description', $record)->item(0)->nodeValue;
-
-            if (\in_array($description, ['Unassigned', '(Unused)'], true)) {
-                continue;
-            }
-
-            if (preg_match('/^([0-9]+)\s*\-\s*([0-9]+)$/', $value, $matches)) {
-                for ($value = $matches[1]; $value <= $matches[2]; ++$value) {
-                    $ianaCodesReasonPhrases[] = [$value, $description];
-                }
-            } else {
-                $ianaCodesReasonPhrases[] = [$value, $description];
-            }
-        }
-
-        return $ianaCodesReasonPhrases;
-    }
-
-    /**
-     * @dataProvider ianaCodesReasonPhrasesProvider
-     */
-    public function testReasonPhraseDefaultsAgainstIana($code, $reasonPhrase)
-    {
-        $this->assertEquals($reasonPhrase, Response::$statusTexts[$code]);
-    }
-}
-
-class StringableObject
-{
-    public function __toString()
-    {
-        return 'Foo';
-    }
-}
-
-class DefaultResponse extends Response
-{
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseTestCase.php b/vendor/symfony/http-foundation/Tests/ResponseTestCase.php
deleted file mode 100644
index 4ead34c1053d5bbfda8d9d58d6452dc462729b04..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ResponseTestCase.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-
-abstract class ResponseTestCase extends TestCase
-{
-    public function testNoCacheControlHeaderOnAttachmentUsingHTTPSAndMSIE()
-    {
-        // Check for HTTPS and IE 8
-        $request = new Request();
-        $request->server->set('HTTPS', true);
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertFalse($response->headers->has('Cache-Control'));
-
-        // Check for IE 10 and HTTPS
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for IE 9 and HTTPS
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for IE 9 and HTTP
-        $request->server->set('HTTPS', false);
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for IE 8 and HTTP
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for non-IE and HTTPS
-        $request->server->set('HTTPS', true);
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for non-IE and HTTP
-        $request->server->set('HTTPS', false);
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-    }
-
-    abstract protected function provideResponse();
-}
diff --git a/vendor/symfony/http-foundation/Tests/ServerBagTest.php b/vendor/symfony/http-foundation/Tests/ServerBagTest.php
deleted file mode 100644
index 0663b118e675e9996646e1417be0dd69254a1932..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/ServerBagTest.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\ServerBag;
-
-/**
- * ServerBagTest.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class ServerBagTest extends TestCase
-{
-    public function testShouldExtractHeadersFromServerArray()
-    {
-        $server = [
-            'SOME_SERVER_VARIABLE' => 'value',
-            'SOME_SERVER_VARIABLE2' => 'value',
-            'ROOT' => 'value',
-            'HTTP_CONTENT_TYPE' => 'text/html',
-            'HTTP_CONTENT_LENGTH' => '0',
-            'HTTP_ETAG' => 'asdf',
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => 'bar',
-        ];
-
-        $bag = new ServerBag($server);
-
-        $this->assertEquals([
-            'CONTENT_TYPE' => 'text/html',
-            'CONTENT_LENGTH' => '0',
-            'ETAG' => 'asdf',
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => 'bar',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpPasswordIsOptional()
-    {
-        $bag = new ServerBag(['PHP_AUTH_USER' => 'foo']);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => '',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpBasicAuthWithPhpCgi()
-    {
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:bar')]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => 'bar',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpBasicAuthWithPhpCgiBogus()
-    {
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic_'.base64_encode('foo:bar')]);
-
-        // Username and passwords should not be set as the header is bogus
-        $headers = $bag->getHeaders();
-        $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
-        $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
-    }
-
-    public function testHttpBasicAuthWithPhpCgiRedirect()
-    {
-        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word')]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word'),
-            'PHP_AUTH_USER' => 'username',
-            'PHP_AUTH_PW' => 'pass:word',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpBasicAuthWithPhpCgiEmptyPassword()
-    {
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:')]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => '',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpDigestAuthWithPhpCgi()
-    {
-        $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $digest]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $digest,
-            'PHP_AUTH_DIGEST' => $digest,
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpDigestAuthWithPhpCgiBogus()
-    {
-        $digest = 'Digest_username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $digest]);
-
-        // Username and passwords should not be set as the header is bogus
-        $headers = $bag->getHeaders();
-        $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
-        $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
-    }
-
-    public function testHttpDigestAuthWithPhpCgiRedirect()
-    {
-        $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
-        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => $digest]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $digest,
-            'PHP_AUTH_DIGEST' => $digest,
-        ], $bag->getHeaders());
-    }
-
-    public function testOAuthBearerAuth()
-    {
-        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $headerContent]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $headerContent,
-        ], $bag->getHeaders());
-    }
-
-    public function testOAuthBearerAuthWithRedirect()
-    {
-        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
-        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => $headerContent]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $headerContent,
-        ], $bag->getHeaders());
-    }
-
-    /**
-     * @see https://github.com/symfony/symfony/issues/17345
-     */
-    public function testItDoesNotOverwriteTheAuthorizationHeaderIfItIsAlreadySet()
-    {
-        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
-        $bag = new ServerBag(['PHP_AUTH_USER' => 'foo', 'HTTP_AUTHORIZATION' => $headerContent]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $headerContent,
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => '',
-        ], $bag->getHeaders());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Attribute/AttributeBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Attribute/AttributeBagTest.php
deleted file mode 100644
index 6313967afa405d80844ee6997982ef90d60361e3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Attribute/AttributeBagTest.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Attribute;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-
-/**
- * Tests AttributeBag.
- *
- * @author Drak <drak@zikula.org>
- */
-class AttributeBagTest extends TestCase
-{
-    private $array = [];
-
-    /**
-     * @var AttributeBag
-     */
-    private $bag;
-
-    protected function setUp(): void
-    {
-        $this->array = [
-            'hello' => 'world',
-            'always' => 'be happy',
-            'user.login' => 'drak',
-            'csrf.token' => [
-                'a' => '1234',
-                'b' => '4321',
-            ],
-            'category' => [
-                'fishing' => [
-                    'first' => 'cod',
-                    'second' => 'sole',
-                ],
-            ],
-        ];
-        $this->bag = new AttributeBag('_sf');
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        $this->array = [];
-    }
-
-    public function testInitialize()
-    {
-        $bag = new AttributeBag();
-        $bag->initialize($this->array);
-        $this->assertEquals($this->array, $bag->all());
-        $array = ['should' => 'change'];
-        $bag->initialize($array);
-        $this->assertEquals($array, $bag->all());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_sf', $this->bag->getStorageKey());
-        $attributeBag = new AttributeBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('attributes', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testHas($key, $value, $exists)
-    {
-        $this->assertEquals($exists, $this->bag->has($key));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testGet($key, $value, $expected)
-    {
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testGetDefaults()
-    {
-        $this->assertNull($this->bag->get('user2.login'));
-        $this->assertEquals('default', $this->bag->get('user2.login', 'default'));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testSet($key, $value, $expected)
-    {
-        $this->bag->set($key, $value);
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testAll()
-    {
-        $this->assertEquals($this->array, $this->bag->all());
-
-        $this->bag->set('hello', 'fabien');
-        $array = $this->array;
-        $array['hello'] = 'fabien';
-        $this->assertEquals($array, $this->bag->all());
-    }
-
-    public function testReplace()
-    {
-        $array = [];
-        $array['name'] = 'jack';
-        $array['foo.bar'] = 'beep';
-        $this->bag->replace($array);
-        $this->assertEquals($array, $this->bag->all());
-        $this->assertNull($this->bag->get('hello'));
-        $this->assertNull($this->bag->get('always'));
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testRemove()
-    {
-        $this->assertEquals('world', $this->bag->get('hello'));
-        $this->bag->remove('hello');
-        $this->assertNull($this->bag->get('hello'));
-
-        $this->assertEquals('be happy', $this->bag->get('always'));
-        $this->bag->remove('always');
-        $this->assertNull($this->bag->get('always'));
-
-        $this->assertEquals('drak', $this->bag->get('user.login'));
-        $this->bag->remove('user.login');
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testClear()
-    {
-        $this->bag->clear();
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function attributesProvider()
-    {
-        return [
-            ['hello', 'world', true],
-            ['always', 'be happy', true],
-            ['user.login', 'drak', true],
-            ['csrf.token', ['a' => '1234', 'b' => '4321'], true],
-            ['category', ['fishing' => ['first' => 'cod', 'second' => 'sole']], true],
-            ['user2.login', null, false],
-            ['never', null, false],
-            ['bye', null, false],
-            ['bye/for/now', null, false],
-        ];
-    }
-
-    public function testGetIterator()
-    {
-        $i = 0;
-        foreach ($this->bag as $key => $val) {
-            $this->assertEquals($this->array[$key], $val);
-            ++$i;
-        }
-
-        $this->assertEquals(\count($this->array), $i);
-    }
-
-    public function testCount()
-    {
-        $this->assertCount(\count($this->array), $this->bag);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Attribute/NamespacedAttributeBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Attribute/NamespacedAttributeBagTest.php
deleted file mode 100644
index 3a3251d05b799ee47d3d63beb2fff9fbccb20854..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Attribute/NamespacedAttributeBagTest.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Attribute;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\NamespacedAttributeBag;
-
-/**
- * Tests NamespacedAttributeBag.
- *
- * @author Drak <drak@zikula.org>
- */
-class NamespacedAttributeBagTest extends TestCase
-{
-    private $array = [];
-
-    /**
-     * @var NamespacedAttributeBag
-     */
-    private $bag;
-
-    protected function setUp(): void
-    {
-        $this->array = [
-            'hello' => 'world',
-            'always' => 'be happy',
-            'user.login' => 'drak',
-            'csrf.token' => [
-                'a' => '1234',
-                'b' => '4321',
-            ],
-            'category' => [
-                'fishing' => [
-                    'first' => 'cod',
-                    'second' => 'sole',
-                ],
-            ],
-        ];
-        $this->bag = new NamespacedAttributeBag('_sf2', '/');
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        $this->array = [];
-    }
-
-    public function testInitialize()
-    {
-        $bag = new NamespacedAttributeBag();
-        $bag->initialize($this->array);
-        $this->assertEquals($this->array, $this->bag->all());
-        $array = ['should' => 'not stick'];
-        $bag->initialize($array);
-
-        // should have remained the same
-        $this->assertEquals($this->array, $this->bag->all());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_sf2', $this->bag->getStorageKey());
-        $attributeBag = new NamespacedAttributeBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testHas($key, $value, $exists)
-    {
-        $this->assertEquals($exists, $this->bag->has($key));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testHasNoSideEffect($key, $value, $expected)
-    {
-        $expected = json_encode($this->bag->all());
-        $this->bag->has($key);
-
-        $this->assertEquals($expected, json_encode($this->bag->all()));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testGet($key, $value, $expected)
-    {
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testGetDefaults()
-    {
-        $this->assertNull($this->bag->get('user2.login'));
-        $this->assertEquals('default', $this->bag->get('user2.login', 'default'));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testGetNoSideEffect($key, $value, $expected)
-    {
-        $expected = json_encode($this->bag->all());
-        $this->bag->get($key);
-
-        $this->assertEquals($expected, json_encode($this->bag->all()));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testSet($key, $value, $expected)
-    {
-        $this->bag->set($key, $value);
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testAll()
-    {
-        $this->assertEquals($this->array, $this->bag->all());
-
-        $this->bag->set('hello', 'fabien');
-        $array = $this->array;
-        $array['hello'] = 'fabien';
-        $this->assertEquals($array, $this->bag->all());
-    }
-
-    public function testReplace()
-    {
-        $array = [];
-        $array['name'] = 'jack';
-        $array['foo.bar'] = 'beep';
-        $this->bag->replace($array);
-        $this->assertEquals($array, $this->bag->all());
-        $this->assertNull($this->bag->get('hello'));
-        $this->assertNull($this->bag->get('always'));
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testRemove()
-    {
-        $this->assertEquals('world', $this->bag->get('hello'));
-        $this->bag->remove('hello');
-        $this->assertNull($this->bag->get('hello'));
-
-        $this->assertEquals('be happy', $this->bag->get('always'));
-        $this->bag->remove('always');
-        $this->assertNull($this->bag->get('always'));
-
-        $this->assertEquals('drak', $this->bag->get('user.login'));
-        $this->bag->remove('user.login');
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testRemoveExistingNamespacedAttribute()
-    {
-        $this->assertSame('cod', $this->bag->remove('category/fishing/first'));
-    }
-
-    public function testRemoveNonexistingNamespacedAttribute()
-    {
-        $this->assertNull($this->bag->remove('foo/bar/baz'));
-    }
-
-    public function testClear()
-    {
-        $this->bag->clear();
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function attributesProvider()
-    {
-        return [
-            ['hello', 'world', true],
-            ['always', 'be happy', true],
-            ['user.login', 'drak', true],
-            ['csrf.token', ['a' => '1234', 'b' => '4321'], true],
-            ['csrf.token/a', '1234', true],
-            ['csrf.token/b', '4321', true],
-            ['category', ['fishing' => ['first' => 'cod', 'second' => 'sole']], true],
-            ['category/fishing', ['first' => 'cod', 'second' => 'sole'], true],
-            ['category/fishing/missing/first', null, false],
-            ['category/fishing/first', 'cod', true],
-            ['category/fishing/second', 'sole', true],
-            ['category/fishing/missing/second', null, false],
-            ['user2.login', null, false],
-            ['never', null, false],
-            ['bye', null, false],
-            ['bye/for/now', null, false],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Flash/AutoExpireFlashBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Flash/AutoExpireFlashBagTest.php
deleted file mode 100644
index ba2687199d7b5187035fbc2fd9ab58fd165501c3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Flash/AutoExpireFlashBagTest.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Flash;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Flash\AutoExpireFlashBag as FlashBag;
-
-/**
- * AutoExpireFlashBagTest.
- *
- * @author Drak <drak@zikula.org>
- */
-class AutoExpireFlashBagTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\Flash\AutoExpireFlashBag
-     */
-    private $bag;
-
-    protected $array = [];
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-        $this->bag = new FlashBag();
-        $this->array = ['new' => ['notice' => ['A previous flash message']]];
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        parent::tearDown();
-    }
-
-    public function testInitialize()
-    {
-        $bag = new FlashBag();
-        $array = ['new' => ['notice' => ['A previous flash message']]];
-        $bag->initialize($array);
-        $this->assertEquals(['A previous flash message'], $bag->peek('notice'));
-        $array = ['new' => [
-                'notice' => ['Something else'],
-                'error' => ['a'],
-            ]];
-        $bag->initialize($array);
-        $this->assertEquals(['Something else'], $bag->peek('notice'));
-        $this->assertEquals(['a'], $bag->peek('error'));
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_symfony_flashes', $this->bag->getStorageKey());
-        $attributeBag = new FlashBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('flashes', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    public function testPeek()
-    {
-        $this->assertEquals([], $this->bag->peek('non_existing'));
-        $this->assertEquals(['default'], $this->bag->peek('non_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-    }
-
-    public function testSet()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-    }
-
-    public function testHas()
-    {
-        $this->assertFalse($this->bag->has('nothing'));
-        $this->assertTrue($this->bag->has('notice'));
-    }
-
-    public function testKeys()
-    {
-        $this->assertEquals(['notice'], $this->bag->keys());
-    }
-
-    public function testPeekAll()
-    {
-        $array = [
-            'new' => [
-                'notice' => 'Foo',
-                'error' => 'Bar',
-            ],
-        ];
-
-        $this->bag->initialize($array);
-        $this->assertEquals([
-            'notice' => 'Foo',
-            'error' => 'Bar',
-            ], $this->bag->peekAll()
-        );
-
-        $this->assertEquals([
-            'notice' => 'Foo',
-            'error' => 'Bar',
-            ], $this->bag->peekAll()
-        );
-    }
-
-    public function testGet()
-    {
-        $this->assertEquals([], $this->bag->get('non_existing'));
-        $this->assertEquals(['default'], $this->bag->get('non_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->get('notice'));
-        $this->assertEquals([], $this->bag->get('notice'));
-    }
-
-    public function testSetAll()
-    {
-        $this->bag->setAll(['a' => 'first', 'b' => 'second']);
-        $this->assertFalse($this->bag->has('a'));
-        $this->assertFalse($this->bag->has('b'));
-    }
-
-    public function testAll()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('error', 'Bar');
-        $this->assertEquals([
-            'notice' => ['A previous flash message'],
-            ], $this->bag->all()
-        );
-
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function testClear()
-    {
-        $this->assertEquals(['notice' => ['A previous flash message']], $this->bag->clear());
-    }
-
-    public function testDoNotRemoveTheNewFlashesWhenDisplayingTheExistingOnes()
-    {
-        $this->bag->add('success', 'Something');
-        $this->bag->all();
-
-        $this->assertEquals(['new' => ['success' => ['Something']], 'display' => []], $this->array);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Flash/FlashBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Flash/FlashBagTest.php
deleted file mode 100644
index 24dbbfe98f05fc9cb2778f057abc7e1a88eede95..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Flash/FlashBagTest.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Flash;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-
-/**
- * FlashBagTest.
- *
- * @author Drak <drak@zikula.org>
- */
-class FlashBagTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface
-     */
-    private $bag;
-
-    protected $array = [];
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-        $this->bag = new FlashBag();
-        $this->array = ['notice' => ['A previous flash message']];
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        parent::tearDown();
-    }
-
-    public function testInitialize()
-    {
-        $bag = new FlashBag();
-        $bag->initialize($this->array);
-        $this->assertEquals($this->array, $bag->peekAll());
-        $array = ['should' => ['change']];
-        $bag->initialize($array);
-        $this->assertEquals($array, $bag->peekAll());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_symfony_flashes', $this->bag->getStorageKey());
-        $attributeBag = new FlashBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('flashes', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    public function testPeek()
-    {
-        $this->assertEquals([], $this->bag->peek('non_existing'));
-        $this->assertEquals(['default'], $this->bag->peek('not_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-    }
-
-    public function testAdd()
-    {
-        $tab = ['bar' => 'baz'];
-        $this->bag->add('string_message', 'lorem');
-        $this->bag->add('object_message', new \stdClass());
-        $this->bag->add('array_message', $tab);
-
-        $this->assertEquals(['lorem'], $this->bag->get('string_message'));
-        $this->assertEquals([new \stdClass()], $this->bag->get('object_message'));
-        $this->assertEquals([$tab], $this->bag->get('array_message'));
-    }
-
-    public function testGet()
-    {
-        $this->assertEquals([], $this->bag->get('non_existing'));
-        $this->assertEquals(['default'], $this->bag->get('not_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->get('notice'));
-        $this->assertEquals([], $this->bag->get('notice'));
-    }
-
-    public function testAll()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('error', 'Bar');
-        $this->assertEquals([
-            'notice' => ['Foo'],
-            'error' => ['Bar'], ], $this->bag->all()
-        );
-
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function testSet()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('notice', 'Bar');
-        $this->assertEquals(['Bar'], $this->bag->peek('notice'));
-    }
-
-    public function testHas()
-    {
-        $this->assertFalse($this->bag->has('nothing'));
-        $this->assertTrue($this->bag->has('notice'));
-    }
-
-    public function testKeys()
-    {
-        $this->assertEquals(['notice'], $this->bag->keys());
-    }
-
-    public function testSetAll()
-    {
-        $this->bag->add('one_flash', 'Foo');
-        $this->bag->add('another_flash', 'Bar');
-        $this->assertTrue($this->bag->has('one_flash'));
-        $this->assertTrue($this->bag->has('another_flash'));
-        $this->bag->setAll(['unique_flash' => 'FooBar']);
-        $this->assertFalse($this->bag->has('one_flash'));
-        $this->assertFalse($this->bag->has('another_flash'));
-        $this->assertSame(['unique_flash' => 'FooBar'], $this->bag->all());
-        $this->assertSame([], $this->bag->all());
-    }
-
-    public function testPeekAll()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('error', 'Bar');
-        $this->assertEquals([
-            'notice' => ['Foo'],
-            'error' => ['Bar'],
-            ], $this->bag->peekAll()
-        );
-        $this->assertTrue($this->bag->has('notice'));
-        $this->assertTrue($this->bag->has('error'));
-        $this->assertEquals([
-            'notice' => ['Foo'],
-            'error' => ['Bar'],
-            ], $this->bag->peekAll()
-        );
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/SessionTest.php b/vendor/symfony/http-foundation/Tests/Session/SessionTest.php
deleted file mode 100644
index e216bfc8c2eef71b5aeb6774b1f31ead735a096f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/SessionTest.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\SessionBagProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-
-/**
- * SessionTest.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Robert Schönthal <seroscho@googlemail.com>
- * @author Drak <drak@zikula.org>
- */
-class SessionTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface
-     */
-    protected $storage;
-
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\SessionInterface
-     */
-    protected $session;
-
-    protected function setUp(): void
-    {
-        $this->storage = new MockArraySessionStorage();
-        $this->session = new Session($this->storage, new AttributeBag(), new FlashBag());
-    }
-
-    protected function tearDown(): void
-    {
-        $this->storage = null;
-        $this->session = null;
-    }
-
-    public function testStart()
-    {
-        $this->assertEquals('', $this->session->getId());
-        $this->assertTrue($this->session->start());
-        $this->assertNotEquals('', $this->session->getId());
-    }
-
-    public function testIsStarted()
-    {
-        $this->assertFalse($this->session->isStarted());
-        $this->session->start();
-        $this->assertTrue($this->session->isStarted());
-    }
-
-    public function testSetId()
-    {
-        $this->assertEquals('', $this->session->getId());
-        $this->session->setId('0123456789abcdef');
-        $this->session->start();
-        $this->assertEquals('0123456789abcdef', $this->session->getId());
-    }
-
-    public function testSetIdAfterStart()
-    {
-        $this->session->start();
-        $id = $this->session->getId();
-
-        $e = null;
-        try {
-            $this->session->setId($id);
-        } catch (\Exception $e) {
-        }
-
-        $this->assertNull($e);
-
-        try {
-            $this->session->setId('different');
-        } catch (\Exception $e) {
-        }
-
-        $this->assertInstanceOf('\LogicException', $e);
-    }
-
-    public function testSetName()
-    {
-        $this->assertEquals('MOCKSESSID', $this->session->getName());
-        $this->session->setName('session.test.com');
-        $this->session->start();
-        $this->assertEquals('session.test.com', $this->session->getName());
-    }
-
-    public function testGet()
-    {
-        // tests defaults
-        $this->assertNull($this->session->get('foo'));
-        $this->assertEquals(1, $this->session->get('foo', 1));
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testSet($key, $value)
-    {
-        $this->session->set($key, $value);
-        $this->assertEquals($value, $this->session->get($key));
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testHas($key, $value)
-    {
-        $this->session->set($key, $value);
-        $this->assertTrue($this->session->has($key));
-        $this->assertFalse($this->session->has($key.'non_value'));
-    }
-
-    public function testReplace()
-    {
-        $this->session->replace(['happiness' => 'be good', 'symfony' => 'awesome']);
-        $this->assertEquals(['happiness' => 'be good', 'symfony' => 'awesome'], $this->session->all());
-        $this->session->replace([]);
-        $this->assertEquals([], $this->session->all());
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testAll($key, $value, $result)
-    {
-        $this->session->set($key, $value);
-        $this->assertEquals($result, $this->session->all());
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testClear($key, $value)
-    {
-        $this->session->set('hi', 'fabien');
-        $this->session->set($key, $value);
-        $this->session->clear();
-        $this->assertEquals([], $this->session->all());
-    }
-
-    public function setProvider()
-    {
-        return [
-            ['foo', 'bar', ['foo' => 'bar']],
-            ['foo.bar', 'too much beer', ['foo.bar' => 'too much beer']],
-            ['great', 'symfony is great', ['great' => 'symfony is great']],
-        ];
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testRemove($key, $value)
-    {
-        $this->session->set('hi.world', 'have a nice day');
-        $this->session->set($key, $value);
-        $this->session->remove($key);
-        $this->assertEquals(['hi.world' => 'have a nice day'], $this->session->all());
-    }
-
-    public function testInvalidate()
-    {
-        $this->session->set('invalidate', 123);
-        $this->session->invalidate();
-        $this->assertEquals([], $this->session->all());
-    }
-
-    public function testMigrate()
-    {
-        $this->session->set('migrate', 321);
-        $this->session->migrate();
-        $this->assertEquals(321, $this->session->get('migrate'));
-    }
-
-    public function testMigrateDestroy()
-    {
-        $this->session->set('migrate', 333);
-        $this->session->migrate(true);
-        $this->assertEquals(333, $this->session->get('migrate'));
-    }
-
-    public function testSave()
-    {
-        $this->session->start();
-        $this->session->save();
-
-        $this->assertFalse($this->session->isStarted());
-    }
-
-    public function testGetId()
-    {
-        $this->assertEquals('', $this->session->getId());
-        $this->session->start();
-        $this->assertNotEquals('', $this->session->getId());
-    }
-
-    public function testGetFlashBag()
-    {
-        $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface', $this->session->getFlashBag());
-    }
-
-    public function testGetIterator()
-    {
-        $attributes = ['hello' => 'world', 'symfony' => 'rocks'];
-        foreach ($attributes as $key => $val) {
-            $this->session->set($key, $val);
-        }
-
-        $i = 0;
-        foreach ($this->session as $key => $val) {
-            $this->assertEquals($attributes[$key], $val);
-            ++$i;
-        }
-
-        $this->assertEquals(\count($attributes), $i);
-    }
-
-    public function testGetCount()
-    {
-        $this->session->set('hello', 'world');
-        $this->session->set('symfony', 'rocks');
-
-        $this->assertCount(2, $this->session);
-    }
-
-    public function testGetMeta()
-    {
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\MetadataBag', $this->session->getMetadataBag());
-    }
-
-    public function testIsEmpty()
-    {
-        $this->assertTrue($this->session->isEmpty());
-
-        $this->session->set('hello', 'world');
-        $this->assertFalse($this->session->isEmpty());
-
-        $this->session->remove('hello');
-        $this->assertTrue($this->session->isEmpty());
-
-        $flash = $this->session->getFlashBag();
-        $flash->set('hello', 'world');
-        $this->assertFalse($this->session->isEmpty());
-
-        $flash->get('hello');
-        $this->assertTrue($this->session->isEmpty());
-    }
-
-    public function testGetBagWithBagImplementingGetBag()
-    {
-        $bag = new AttributeBag();
-        $bag->setName('foo');
-
-        $storage = new MockArraySessionStorage();
-        $storage->registerBag($bag);
-
-        $this->assertSame($bag, (new Session($storage))->getBag('foo'));
-    }
-
-    public function testGetBagWithBagNotImplementingGetBag()
-    {
-        $data = [];
-
-        $bag = new AttributeBag();
-        $bag->setName('foo');
-
-        $storage = new MockArraySessionStorage();
-        $storage->registerBag(new SessionBagProxy($bag, $data, $usageIndex));
-
-        $this->assertSame($bag, (new Session($storage))->getBag('foo'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php
deleted file mode 100644
index 6a15a06873e25a3b7109d05b805dff00e98bf52b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler;
-
-/**
- * @requires extension redis
- * @group time-sensitive
- */
-abstract class AbstractRedisSessionHandlerTestCase extends TestCase
-{
-    protected const PREFIX = 'prefix_';
-
-    /**
-     * @var RedisSessionHandler
-     */
-    protected $storage;
-
-    /**
-     * @var \Redis|\RedisArray|\RedisCluster|\Predis\Client
-     */
-    protected $redisClient;
-
-    /**
-     * @return \Redis|\RedisArray|\RedisCluster|\Predis\Client
-     */
-    abstract protected function createRedisClient(string $host);
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        if (!\extension_loaded('redis')) {
-            self::markTestSkipped('Extension redis required.');
-        }
-
-        $host = getenv('REDIS_HOST') ?: 'localhost';
-
-        $this->redisClient = $this->createRedisClient($host);
-        $this->storage = new RedisSessionHandler(
-            $this->redisClient,
-            ['prefix' => self::PREFIX]
-        );
-    }
-
-    protected function tearDown(): void
-    {
-        $this->redisClient = null;
-        $this->storage = null;
-
-        parent::tearDown();
-    }
-
-    public function testOpenSession()
-    {
-        $this->assertTrue($this->storage->open('', ''));
-    }
-
-    public function testCloseSession()
-    {
-        $this->assertTrue($this->storage->close());
-    }
-
-    public function testReadSession()
-    {
-        $this->redisClient->set(self::PREFIX.'id1', null);
-        $this->redisClient->set(self::PREFIX.'id2', 'abc123');
-
-        $this->assertEquals('', $this->storage->read('id1'));
-        $this->assertEquals('abc123', $this->storage->read('id2'));
-    }
-
-    public function testWriteSession()
-    {
-        $this->assertTrue($this->storage->write('id', 'data'));
-
-        $this->assertTrue((bool) $this->redisClient->exists(self::PREFIX.'id'));
-        $this->assertEquals('data', $this->redisClient->get(self::PREFIX.'id'));
-    }
-
-    public function testUseSessionGcMaxLifetimeAsTimeToLive()
-    {
-        $this->storage->write('id', 'data');
-        $ttl = $this->redisClient->ttl(self::PREFIX.'id');
-
-        $this->assertLessThanOrEqual(ini_get('session.gc_maxlifetime'), $ttl);
-        $this->assertGreaterThanOrEqual(0, $ttl);
-    }
-
-    public function testDestroySession()
-    {
-        $this->redisClient->set(self::PREFIX.'id', 'foo');
-
-        $this->assertTrue((bool) $this->redisClient->exists(self::PREFIX.'id'));
-        $this->assertTrue($this->storage->destroy('id'));
-        $this->assertFalse((bool) $this->redisClient->exists(self::PREFIX.'id'));
-    }
-
-    public function testGcSession()
-    {
-        $this->assertTrue($this->storage->gc(123));
-    }
-
-    public function testUpdateTimestamp()
-    {
-        $lowTtl = 10;
-
-        $this->redisClient->setex(self::PREFIX.'id', $lowTtl, 'foo');
-        $this->storage->updateTimestamp('id', []);
-
-        $this->assertGreaterThan($lowTtl, $this->redisClient->ttl(self::PREFIX.'id'));
-    }
-
-    /**
-     * @dataProvider getOptionFixtures
-     */
-    public function testSupportedParam(array $options, bool $supported)
-    {
-        try {
-            new RedisSessionHandler($this->redisClient, $options);
-            $this->assertTrue($supported);
-        } catch (\InvalidArgumentException $e) {
-            $this->assertFalse($supported);
-        }
-    }
-
-    public function getOptionFixtures(): array
-    {
-        return [
-            [['prefix' => 'session'], true],
-            [['prefix' => 'sfs', 'foo' => 'bar'], false],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php
deleted file mode 100644
index b25b68bbb3703c8c8a1d4ea26e97f3f3c7ee1225..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-
-class AbstractSessionHandlerTest extends TestCase
-{
-    private static $server;
-
-    public static function setUpBeforeClass(): void
-    {
-        $spec = [
-            1 => ['file', '/dev/null', 'w'],
-            2 => ['file', '/dev/null', 'w'],
-        ];
-        if (!self::$server = @proc_open('exec php -S localhost:8053', $spec, $pipes, __DIR__.'/Fixtures')) {
-            self::markTestSkipped('PHP server unable to start.');
-        }
-        sleep(1);
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        if (self::$server) {
-            proc_terminate(self::$server);
-            proc_close(self::$server);
-        }
-    }
-
-    /**
-     * @dataProvider provideSession
-     */
-    public function testSession($fixture)
-    {
-        $context = ['http' => ['header' => "Cookie: sid=123abc\r\n"]];
-        $context = stream_context_create($context);
-        $result = file_get_contents(sprintf('http://localhost:8053/%s.php', $fixture), false, $context);
-
-        $this->assertStringEqualsFile(__DIR__.sprintf('/Fixtures/%s.expected', $fixture), $result);
-    }
-
-    public function provideSession()
-    {
-        foreach (glob(__DIR__.'/Fixtures/*.php') as $file) {
-            yield [pathinfo($file, PATHINFO_FILENAME)];
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/common.inc b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/common.inc
deleted file mode 100644
index a887f607e899a4a1450e5a819267fd5e3b196ff2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/common.inc
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler;
-
-$parent = __DIR__;
-while (!@file_exists($parent.'/vendor/autoload.php')) {
-    if (!@file_exists($parent)) {
-        // open_basedir restriction in effect
-        break;
-    }
-    if ($parent === dirname($parent)) {
-        echo "vendor/autoload.php not found\n";
-        exit(1);
-    }
-
-    $parent = dirname($parent);
-}
-
-require $parent.'/vendor/autoload.php';
-
-error_reporting(-1);
-ini_set('html_errors', 0);
-ini_set('display_errors', 1);
-ini_set('session.gc_probability', 0);
-ini_set('session.serialize_handler', 'php');
-ini_set('session.cookie_lifetime', 0);
-ini_set('session.cookie_domain', '');
-ini_set('session.cookie_secure', '');
-ini_set('session.cookie_httponly', '');
-ini_set('session.use_cookies', 1);
-ini_set('session.use_only_cookies', 1);
-ini_set('session.cache_expire', 180);
-ini_set('session.cookie_path', '/');
-ini_set('session.cookie_domain', '');
-ini_set('session.cookie_secure', 1);
-ini_set('session.cookie_httponly', 1);
-ini_set('session.use_strict_mode', 1);
-ini_set('session.lazy_write', 1);
-ini_set('session.name', 'sid');
-ini_set('session.save_path', __DIR__);
-ini_set('session.cache_limiter', '');
-
-header_remove('X-Powered-By');
-header('Content-Type: text/plain; charset=utf-8');
-
-register_shutdown_function(function () {
-    echo "\n";
-    session_write_close();
-    print_r(headers_list());
-    echo "shutdown\n";
-});
-ob_start();
-
-class TestSessionHandler extends AbstractSessionHandler
-{
-    private $data;
-
-    public function __construct($data = '')
-    {
-        $this->data = $data;
-    }
-
-    public function open($path, $name): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::open($path, $name);
-    }
-
-    public function validateId($sessionId): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::validateId($sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId): string
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::read($sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function updateTimestamp($sessionId, $data): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::write($sessionId, $data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::destroy($sessionId);
-    }
-
-    public function close(): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-
-    public function gc($maxLifetime): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-
-    protected function doRead($sessionId): string
-    {
-        echo __FUNCTION__.': ', $this->data, "\n";
-
-        return $this->data;
-    }
-
-    protected function doWrite($sessionId, $data): bool
-    {
-        echo __FUNCTION__.': ', $data, "\n";
-
-        return true;
-    }
-
-    protected function doDestroy($sessionId): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected
deleted file mode 100644
index 820371474075273ae0d7cca07fe5f9eae360273a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected
+++ /dev/null
@@ -1,17 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-write
-destroy
-doDestroy
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.php
deleted file mode 100644
index 3cfc1250adad16832dab14707a20d9551cc5df49..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-unset($_SESSION['abc']);
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.expected
deleted file mode 100644
index 587adaf158b1d83994b7f54b4581fc5ab495db1d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.expected
+++ /dev/null
@@ -1,14 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-123
-updateTimestamp
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php
deleted file mode 100644
index 3e62fb9ecbbddedd9e452c3401d9569be0a50e79..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-echo $_SESSION['abc'];
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected
deleted file mode 100644
index baa5f2f6f5cb04ab11d243b52b933d765fc1c466..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected
+++ /dev/null
@@ -1,24 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-destroy
-doDestroy
-close
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-write
-doWrite: abc|i:123;
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php
deleted file mode 100644
index a0f635c8712ecc6fb5dde521fac82ab7fe9d4785..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-session_regenerate_id(true);
-
-ob_start(function ($buffer) { return str_replace(session_id(), 'random_session_id', $buffer); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.expected
deleted file mode 100644
index 05a5d5d0b090f2e2897ce3198885ac2e5902de9c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.expected
+++ /dev/null
@@ -1,21 +0,0 @@
-open
-validateId
-read
-doRead: 
-read
-Array
-(
-    [0] => bar
-)
-$_SESSION is not empty
-write
-destroy
-close
-$_SESSION is empty
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=0, private, must-revalidate
-    [2] => Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php
deleted file mode 100644
index 96dca3c2c0006247dc10140e29b0b7d3774ae607..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-$storage = new NativeSessionStorage();
-$storage->setSaveHandler(new TestSessionHandler());
-$flash = new FlashBag();
-$storage->registerBag($flash);
-$storage->start();
-
-$flash->add('foo', 'bar');
-
-print_r($flash->get('foo'));
-echo empty($_SESSION) ? '$_SESSION is empty' : '$_SESSION is not empty';
-echo "\n";
-
-$storage->save();
-
-echo empty($_SESSION) ? '$_SESSION is empty' : '$_SESSION is not empty';
-
-ob_start(function ($buffer) { return str_replace(session_id(), 'random_session_id', $buffer); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected
deleted file mode 100644
index 33da0a5be6e052b0eb3d9eb1fb1a4f1f68c77dd6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected
+++ /dev/null
@@ -1,15 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-updateTimestamp
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: abc=def
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php
deleted file mode 100644
index ffb5b20a3774efd711dbb2023e9677e0b0aae0b5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-setcookie('abc', 'def');
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected
deleted file mode 100644
index 63078228df139b9130357054d9c2c0d90b79427d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected
+++ /dev/null
@@ -1,25 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-updateTimestamp
-close
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-write
-destroy
-doDestroy
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: abc=def
-    [3] => Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php
deleted file mode 100644
index ec5119323b757f6f9f8ae8474e97f6b452756223..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-setcookie('abc', 'def');
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-session_write_close();
-session_start();
-
-$_SESSION['abc'] = 234;
-unset($_SESSION['abc']);
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.expected
deleted file mode 100644
index d20fb88ec052f3979ed38c9b08b2e0fa71b34280..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.expected
+++ /dev/null
@@ -1,16 +0,0 @@
-open
-validateId
-read
-doRead: 
-read
-
-write
-doWrite: foo|s:3:"bar";
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=0, private, must-revalidate
-    [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly; SameSite=lax
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php
deleted file mode 100644
index fc2c4182895acb965d1c92140fed1a4532aeb17e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-$storage = new NativeSessionStorage(['cookie_samesite' => 'lax']);
-$storage->setSaveHandler(new TestSessionHandler());
-$storage->start();
-
-$_SESSION = ['foo' => 'bar'];
-
-ob_start(function ($buffer) { return str_replace(session_id(), 'random_session_id', $buffer); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected
deleted file mode 100644
index 8b5fc08bd375b9764be6c51eb29413a6a9dc01b6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected
+++ /dev/null
@@ -1,23 +0,0 @@
-open
-validateId
-read
-doRead: 
-read
-destroy
-close
-open
-validateId
-read
-doRead: 
-read
-
-write
-doWrite: foo|s:3:"bar";
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=0, private, must-revalidate
-    [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly; SameSite=lax
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.php
deleted file mode 100644
index a28b6fedfc375e0443f9ccce0aa4484d0e367521..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-$storage = new NativeSessionStorage(['cookie_samesite' => 'lax']);
-$storage->setSaveHandler(new TestSessionHandler());
-$storage->start();
-
-$_SESSION = ['foo' => 'bar'];
-
-$storage->regenerate(true);
-
-ob_start(function ($buffer) { return preg_replace('~_sf2_meta.*$~m', '', str_replace(session_id(), 'random_session_id', $buffer)); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php
deleted file mode 100644
index e9c17703a7173a915e89d4dbc6040673e6be613a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler;
-
-/**
- * @requires extension memcached
- * @group time-sensitive
- */
-class MemcachedSessionHandlerTest extends TestCase
-{
-    const PREFIX = 'prefix_';
-    const TTL = 1000;
-
-    /**
-     * @var MemcachedSessionHandler
-     */
-    protected $storage;
-
-    protected $memcached;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        if (version_compare(phpversion('memcached'), '2.2.0', '>=') && version_compare(phpversion('memcached'), '3.0.0b1', '<')) {
-            $this->markTestSkipped('Tests can only be run with memcached extension 2.1.0 or lower, or 3.0.0b1 or higher');
-        }
-
-        $this->memcached = $this->getMockBuilder('Memcached')->getMock();
-        $this->storage = new MemcachedSessionHandler(
-            $this->memcached,
-            ['prefix' => self::PREFIX, 'expiretime' => self::TTL]
-        );
-    }
-
-    protected function tearDown(): void
-    {
-        $this->memcached = null;
-        $this->storage = null;
-        parent::tearDown();
-    }
-
-    public function testOpenSession()
-    {
-        $this->assertTrue($this->storage->open('', ''));
-    }
-
-    public function testCloseSession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('quit')
-            ->willReturn(true)
-        ;
-
-        $this->assertTrue($this->storage->close());
-    }
-
-    public function testReadSession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('get')
-            ->with(self::PREFIX.'id')
-        ;
-
-        $this->assertEquals('', $this->storage->read('id'));
-    }
-
-    public function testWriteSession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('set')
-            ->with(self::PREFIX.'id', 'data', $this->equalTo(time() + self::TTL, 2))
-            ->willReturn(true)
-        ;
-
-        $this->assertTrue($this->storage->write('id', 'data'));
-    }
-
-    public function testDestroySession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('delete')
-            ->with(self::PREFIX.'id')
-            ->willReturn(true)
-        ;
-
-        $this->assertTrue($this->storage->destroy('id'));
-    }
-
-    public function testGcSession()
-    {
-        $this->assertTrue($this->storage->gc(123));
-    }
-
-    /**
-     * @dataProvider getOptionFixtures
-     */
-    public function testSupportedOptions($options, $supported)
-    {
-        try {
-            new MemcachedSessionHandler($this->memcached, $options);
-            $this->assertTrue($supported);
-        } catch (\InvalidArgumentException $e) {
-            $this->assertFalse($supported);
-        }
-    }
-
-    public function getOptionFixtures()
-    {
-        return [
-            [['prefix' => 'session'], true],
-            [['expiretime' => 100], true],
-            [['prefix' => 'session', 'expiretime' => 200], true],
-            [['expiretime' => 100, 'foo' => 'bar'], false],
-        ];
-    }
-
-    public function testGetConnection()
-    {
-        $method = new \ReflectionMethod($this->storage, 'getMemcached');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf('\Memcached', $method->invoke($this->storage));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php
deleted file mode 100644
index 01615e6b1f2eb718895c4dd5eb99ab1049712ade..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\MigratingSessionHandler;
-
-class MigratingSessionHandlerTest extends TestCase
-{
-    private $dualHandler;
-    private $currentHandler;
-    private $writeOnlyHandler;
-
-    protected function setUp(): void
-    {
-        $this->currentHandler = $this->createMock(\SessionHandlerInterface::class);
-        $this->writeOnlyHandler = $this->createMock(\SessionHandlerInterface::class);
-
-        $this->dualHandler = new MigratingSessionHandler($this->currentHandler, $this->writeOnlyHandler);
-    }
-
-    public function testInstanceOf()
-    {
-        $this->assertInstanceOf(\SessionHandlerInterface::class, $this->dualHandler);
-        $this->assertInstanceOf(\SessionUpdateTimestampHandlerInterface::class, $this->dualHandler);
-    }
-
-    public function testClose()
-    {
-        $this->currentHandler->expects($this->once())
-            ->method('close')
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('close')
-            ->willReturn(false);
-
-        $result = $this->dualHandler->close();
-
-        $this->assertTrue($result);
-    }
-
-    public function testDestroy()
-    {
-        $sessionId = 'xyz';
-
-        $this->currentHandler->expects($this->once())
-            ->method('destroy')
-            ->with($sessionId)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('destroy')
-            ->with($sessionId)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->destroy($sessionId);
-
-        $this->assertTrue($result);
-    }
-
-    public function testGc()
-    {
-        $maxlifetime = 357;
-
-        $this->currentHandler->expects($this->once())
-            ->method('gc')
-            ->with($maxlifetime)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('gc')
-            ->with($maxlifetime)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->gc($maxlifetime);
-        $this->assertTrue($result);
-    }
-
-    public function testOpen()
-    {
-        $savePath = '/path/to/save/location';
-        $sessionName = 'xyz';
-
-        $this->currentHandler->expects($this->once())
-            ->method('open')
-            ->with($savePath, $sessionName)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('open')
-            ->with($savePath, $sessionName)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->open($savePath, $sessionName);
-
-        $this->assertTrue($result);
-    }
-
-    public function testRead()
-    {
-        $sessionId = 'xyz';
-        $readValue = 'something';
-
-        $this->currentHandler->expects($this->once())
-            ->method('read')
-            ->with($sessionId)
-            ->willReturn($readValue);
-
-        $this->writeOnlyHandler->expects($this->never())
-            ->method('read')
-            ->with($this->any());
-
-        $result = $this->dualHandler->read($sessionId);
-
-        $this->assertSame($readValue, $result);
-    }
-
-    public function testWrite()
-    {
-        $sessionId = 'xyz';
-        $data = 'my-serialized-data';
-
-        $this->currentHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->write($sessionId, $data);
-
-        $this->assertTrue($result);
-    }
-
-    public function testValidateId()
-    {
-        $sessionId = 'xyz';
-        $readValue = 'something';
-
-        $this->currentHandler->expects($this->once())
-            ->method('read')
-            ->with($sessionId)
-            ->willReturn($readValue);
-
-        $this->writeOnlyHandler->expects($this->never())
-            ->method('read')
-            ->with($this->any());
-
-        $result = $this->dualHandler->validateId($sessionId);
-
-        $this->assertTrue($result);
-    }
-
-    public function testUpdateTimestamp()
-    {
-        $sessionId = 'xyz';
-        $data = 'my-serialized-data';
-
-        $this->currentHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->updateTimestamp($sessionId, $data);
-
-        $this->assertTrue($result);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php
deleted file mode 100644
index f956fa2760f77f036cb788fe239ae29c599692de..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php
+++ /dev/null
@@ -1,208 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\MockObject\MockObject;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler;
-
-/**
- * @author Markus Bachmann <markus.bachmann@bachi.biz>
- * @group time-sensitive
- * @requires extension mongodb
- */
-class MongoDbSessionHandlerTest extends TestCase
-{
-    /**
-     * @var MockObject
-     */
-    private $mongo;
-    private $storage;
-    public $options;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        if (!class_exists(\MongoDB\Client::class)) {
-            $this->markTestSkipped('The mongodb/mongodb package is required.');
-        }
-
-        $this->mongo = $this->getMockBuilder(\MongoDB\Client::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->options = [
-            'id_field' => '_id',
-            'data_field' => 'data',
-            'time_field' => 'time',
-            'expiry_field' => 'expires_at',
-            'database' => 'sf-test',
-            'collection' => 'session-test',
-        ];
-
-        $this->storage = new MongoDbSessionHandler($this->mongo, $this->options);
-    }
-
-    public function testConstructorShouldThrowExceptionForMissingOptions()
-    {
-        $this->expectException('InvalidArgumentException');
-        new MongoDbSessionHandler($this->mongo, []);
-    }
-
-    public function testOpenMethodAlwaysReturnTrue()
-    {
-        $this->assertTrue($this->storage->open('test', 'test'), 'The "open" method should always return true');
-    }
-
-    public function testCloseMethodAlwaysReturnTrue()
-    {
-        $this->assertTrue($this->storage->close(), 'The "close" method should always return true');
-    }
-
-    public function testRead()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        // defining the timeout before the actual method call
-        // allows to test for "greater than" values in the $criteria
-        $testTimeout = time() + 1;
-
-        $collection->expects($this->once())
-            ->method('findOne')
-            ->willReturnCallback(function ($criteria) use ($testTimeout) {
-                $this->assertArrayHasKey($this->options['id_field'], $criteria);
-                $this->assertEquals($criteria[$this->options['id_field']], 'foo');
-
-                $this->assertArrayHasKey($this->options['expiry_field'], $criteria);
-                $this->assertArrayHasKey('$gte', $criteria[$this->options['expiry_field']]);
-
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $criteria[$this->options['expiry_field']]['$gte']);
-                $this->assertGreaterThanOrEqual(round((string) $criteria[$this->options['expiry_field']]['$gte'] / 1000), $testTimeout);
-
-                return [
-                    $this->options['id_field'] => 'foo',
-                    $this->options['expiry_field'] => new \MongoDB\BSON\UTCDateTime(),
-                    $this->options['data_field'] => new \MongoDB\BSON\Binary('bar', \MongoDB\BSON\Binary::TYPE_OLD_BINARY),
-                ];
-            });
-
-        $this->assertEquals('bar', $this->storage->read('foo'));
-    }
-
-    public function testWrite()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $collection->expects($this->once())
-            ->method('updateOne')
-            ->willReturnCallback(function ($criteria, $updateData, $options) {
-                $this->assertEquals([$this->options['id_field'] => 'foo'], $criteria);
-                $this->assertEquals(['upsert' => true], $options);
-
-                $data = $updateData['$set'];
-                $expectedExpiry = time() + (int) ini_get('session.gc_maxlifetime');
-                $this->assertInstanceOf(\MongoDB\BSON\Binary::class, $data[$this->options['data_field']]);
-                $this->assertEquals('bar', $data[$this->options['data_field']]->getData());
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $data[$this->options['time_field']]);
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $data[$this->options['expiry_field']]);
-                $this->assertGreaterThanOrEqual($expectedExpiry, round((string) $data[$this->options['expiry_field']] / 1000));
-            });
-
-        $this->assertTrue($this->storage->write('foo', 'bar'));
-    }
-
-    public function testReplaceSessionData()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $data = [];
-
-        $collection->expects($this->exactly(2))
-            ->method('updateOne')
-            ->willReturnCallback(function ($criteria, $updateData, $options) use (&$data) {
-                $data = $updateData;
-            });
-
-        $this->storage->write('foo', 'bar');
-        $this->storage->write('foo', 'foobar');
-
-        $this->assertEquals('foobar', $data['$set'][$this->options['data_field']]->getData());
-    }
-
-    public function testDestroy()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $collection->expects($this->once())
-            ->method('deleteOne')
-            ->with([$this->options['id_field'] => 'foo']);
-
-        $this->assertTrue($this->storage->destroy('foo'));
-    }
-
-    public function testGc()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $collection->expects($this->once())
-            ->method('deleteMany')
-            ->willReturnCallback(function ($criteria) {
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $criteria[$this->options['expiry_field']]['$lt']);
-                $this->assertGreaterThanOrEqual(time() - 1, round((string) $criteria[$this->options['expiry_field']]['$lt'] / 1000));
-            });
-
-        $this->assertTrue($this->storage->gc(1));
-    }
-
-    public function testGetConnection()
-    {
-        $method = new \ReflectionMethod($this->storage, 'getMongo');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf(\MongoDB\Client::class, $method->invoke($this->storage));
-    }
-
-    private function createMongoCollectionMock()
-    {
-        $collection = $this->getMockBuilder(\MongoDB\Collection::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        return $collection;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NativeFileSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NativeFileSessionHandlerTest.php
deleted file mode 100644
index cd167fb13ab0db9d95c3702aa0f8887182016129..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NativeFileSessionHandlerTest.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-/**
- * Test class for NativeFileSessionHandler.
- *
- * @author Drak <drak@zikula.org>
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class NativeFileSessionHandlerTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $storage = new NativeSessionStorage(['name' => 'TESTING'], new NativeFileSessionHandler(sys_get_temp_dir()));
-
-        $this->assertEquals('user', ini_get('session.save_handler'));
-
-        $this->assertEquals(sys_get_temp_dir(), ini_get('session.save_path'));
-        $this->assertEquals('TESTING', ini_get('session.name'));
-    }
-
-    /**
-     * @dataProvider savePathDataProvider
-     */
-    public function testConstructSavePath($savePath, $expectedSavePath, $path)
-    {
-        $handler = new NativeFileSessionHandler($savePath);
-        $this->assertEquals($expectedSavePath, ini_get('session.save_path'));
-        $this->assertDirectoryExists(realpath($path));
-
-        rmdir($path);
-    }
-
-    public function savePathDataProvider()
-    {
-        $base = sys_get_temp_dir();
-
-        return [
-            ["$base/foo", "$base/foo", "$base/foo"],
-            ["5;$base/foo", "5;$base/foo", "$base/foo"],
-            ["5;0600;$base/foo", "5;0600;$base/foo", "$base/foo"],
-        ];
-    }
-
-    public function testConstructException()
-    {
-        $this->expectException('InvalidArgumentException');
-        $handler = new NativeFileSessionHandler('something;invalid;with;too-many-args');
-    }
-
-    public function testConstructDefault()
-    {
-        $path = ini_get('session.save_path');
-        $storage = new NativeSessionStorage(['name' => 'TESTING'], new NativeFileSessionHandler());
-
-        $this->assertEquals($path, ini_get('session.save_path'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NullSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NullSessionHandlerTest.php
deleted file mode 100644
index 0d246e1aa560b8d32d7c44896bbae4fa56f1d8ad..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NullSessionHandlerTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-/**
- * Test class for NullSessionHandler.
- *
- * @author Drak <drak@zikula.org>
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class NullSessionHandlerTest extends TestCase
-{
-    public function testSaveHandlers()
-    {
-        $storage = $this->getStorage();
-        $this->assertEquals('user', ini_get('session.save_handler'));
-    }
-
-    public function testSession()
-    {
-        session_id('nullsessionstorage');
-        $storage = $this->getStorage();
-        $session = new Session($storage);
-        $this->assertNull($session->get('something'));
-        $session->set('something', 'unique');
-        $this->assertEquals('unique', $session->get('something'));
-    }
-
-    public function testNothingIsPersisted()
-    {
-        session_id('nullsessionstorage');
-        $storage = $this->getStorage();
-        $session = new Session($storage);
-        $session->start();
-        $this->assertEquals('nullsessionstorage', $session->getId());
-        $this->assertNull($session->get('something'));
-    }
-
-    public function getStorage()
-    {
-        return new NativeSessionStorage([], new NullSessionHandler());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php
deleted file mode 100644
index d080ce3ca6e5cf13be1a39a90e820b0e6c9bada1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php
+++ /dev/null
@@ -1,398 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
-
-/**
- * @requires extension pdo_sqlite
- * @group time-sensitive
- */
-class PdoSessionHandlerTest extends TestCase
-{
-    private $dbFile;
-
-    protected function tearDown(): void
-    {
-        // make sure the temporary database file is deleted when it has been created (even when a test fails)
-        if ($this->dbFile) {
-            @unlink($this->dbFile);
-        }
-        parent::tearDown();
-    }
-
-    protected function getPersistentSqliteDsn()
-    {
-        $this->dbFile = tempnam(sys_get_temp_dir(), 'sf_sqlite_sessions');
-
-        return 'sqlite:'.$this->dbFile;
-    }
-
-    protected function getMemorySqlitePdo()
-    {
-        $pdo = new \PDO('sqlite::memory:');
-        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
-        $storage = new PdoSessionHandler($pdo);
-        $storage->createTable();
-
-        return $pdo;
-    }
-
-    public function testWrongPdoErrMode()
-    {
-        $this->expectException('InvalidArgumentException');
-        $pdo = $this->getMemorySqlitePdo();
-        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_SILENT);
-
-        $storage = new PdoSessionHandler($pdo);
-    }
-
-    public function testInexistentTable()
-    {
-        $this->expectException('RuntimeException');
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo(), ['db_table' => 'inexistent_table']);
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-    }
-
-    public function testCreateTableTwice()
-    {
-        $this->expectException('RuntimeException');
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->createTable();
-    }
-
-    public function testWithLazyDsnConnection()
-    {
-        $dsn = $this->getPersistentSqliteDsn();
-
-        $storage = new PdoSessionHandler($dsn);
-        $storage->createTable();
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-        $this->assertSame('', $data, 'New session returns empty string data');
-
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $storage->close();
-        $this->assertSame('data', $data, 'Written value can be read back correctly');
-    }
-
-    public function testWithLazySavePathConnection()
-    {
-        $dsn = $this->getPersistentSqliteDsn();
-
-        // Open is called with what ini_set('session.save_path', $dsn) would mean
-        $storage = new PdoSessionHandler(null);
-        $storage->open($dsn, 'sid');
-        $storage->createTable();
-        $data = $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-        $this->assertSame('', $data, 'New session returns empty string data');
-
-        $storage->open($dsn, 'sid');
-        $data = $storage->read('id');
-        $storage->close();
-        $this->assertSame('data', $data, 'Written value can be read back correctly');
-    }
-
-    public function testReadWriteReadWithNullByte()
-    {
-        $sessionData = 'da'."\0".'ta';
-
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->open('', 'sid');
-        $readData = $storage->read('id');
-        $storage->write('id', $sessionData);
-        $storage->close();
-        $this->assertSame('', $readData, 'New session returns empty string data');
-
-        $storage->open('', 'sid');
-        $readData = $storage->read('id');
-        $storage->close();
-        $this->assertSame($sessionData, $readData, 'Written value can be read back correctly');
-    }
-
-    public function testReadConvertsStreamToString()
-    {
-        $pdo = new MockPdo('pgsql');
-        $pdo->prepareResult = $this->getMockBuilder('PDOStatement')->getMock();
-
-        $content = 'foobar';
-        $stream = $this->createStream($content);
-
-        $pdo->prepareResult->expects($this->once())->method('fetchAll')
-            ->willReturn([[$stream, 42, time()]]);
-
-        $storage = new PdoSessionHandler($pdo);
-        $result = $storage->read('foo');
-
-        $this->assertSame($content, $result);
-    }
-
-    public function testReadLockedConvertsStreamToString()
-    {
-        if (filter_var(ini_get('session.use_strict_mode'), FILTER_VALIDATE_BOOLEAN)) {
-            $this->markTestSkipped('Strict mode needs no locking for new sessions.');
-        }
-
-        $pdo = new MockPdo('pgsql');
-        $selectStmt = $this->getMockBuilder('PDOStatement')->getMock();
-        $insertStmt = $this->getMockBuilder('PDOStatement')->getMock();
-
-        $pdo->prepareResult = function ($statement) use ($selectStmt, $insertStmt) {
-            return 0 === strpos($statement, 'INSERT') ? $insertStmt : $selectStmt;
-        };
-
-        $content = 'foobar';
-        $stream = $this->createStream($content);
-        $exception = null;
-
-        $selectStmt->expects($this->atLeast(2))->method('fetchAll')
-            ->willReturnCallback(function () use (&$exception, $stream) {
-                return $exception ? [[$stream, 42, time()]] : [];
-            });
-
-        $insertStmt->expects($this->once())->method('execute')
-            ->willReturnCallback(function () use (&$exception) {
-                throw $exception = new \PDOException('', '23');
-            });
-
-        $storage = new PdoSessionHandler($pdo);
-        $result = $storage->read('foo');
-
-        $this->assertSame($content, $result);
-    }
-
-    public function testReadingRequiresExactlySameId()
-    {
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->open('', 'sid');
-        $storage->write('id', 'data');
-        $storage->write('test', 'data');
-        $storage->write('space ', 'data');
-        $storage->close();
-
-        $storage->open('', 'sid');
-        $readDataCaseSensitive = $storage->read('ID');
-        $readDataNoCharFolding = $storage->read('tést');
-        $readDataKeepSpace = $storage->read('space ');
-        $readDataExtraSpace = $storage->read('space  ');
-        $storage->close();
-
-        $this->assertSame('', $readDataCaseSensitive, 'Retrieval by ID should be case-sensitive (collation setting)');
-        $this->assertSame('', $readDataNoCharFolding, 'Retrieval by ID should not do character folding (collation setting)');
-        $this->assertSame('data', $readDataKeepSpace, 'Retrieval by ID requires spaces as-is');
-        $this->assertSame('', $readDataExtraSpace, 'Retrieval by ID requires spaces as-is');
-    }
-
-    /**
-     * Simulates session_regenerate_id(true) which will require an INSERT or UPDATE (replace).
-     */
-    public function testWriteDifferentSessionIdThanRead()
-    {
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->destroy('id');
-        $storage->write('new_id', 'data_of_new_session_id');
-        $storage->close();
-
-        $storage->open('', 'sid');
-        $data = $storage->read('new_id');
-        $storage->close();
-
-        $this->assertSame('data_of_new_session_id', $data, 'Data of regenerated session id is available');
-    }
-
-    public function testWrongUsageStillWorks()
-    {
-        // wrong method sequence that should no happen, but still works
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->write('id', 'data');
-        $storage->write('other_id', 'other_data');
-        $storage->destroy('inexistent');
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $otherData = $storage->read('other_id');
-        $storage->close();
-
-        $this->assertSame('data', $data);
-        $this->assertSame('other_data', $otherData);
-    }
-
-    public function testSessionDestroy()
-    {
-        $pdo = $this->getMemorySqlitePdo();
-        $storage = new PdoSessionHandler($pdo);
-
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-        $this->assertEquals(1, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn());
-
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->destroy('id');
-        $storage->close();
-        $this->assertEquals(0, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn());
-
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $storage->close();
-        $this->assertSame('', $data, 'Destroyed session returns empty string');
-    }
-
-    /**
-     * @runInSeparateProcess
-     */
-    public function testSessionGC()
-    {
-        $previousLifeTime = ini_set('session.gc_maxlifetime', 1000);
-        $pdo = $this->getMemorySqlitePdo();
-        $storage = new PdoSessionHandler($pdo);
-
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-
-        $storage->open('', 'sid');
-        $storage->read('gc_id');
-        ini_set('session.gc_maxlifetime', -1); // test that you can set lifetime of a session after it has been read
-        $storage->write('gc_id', 'data');
-        $storage->close();
-        $this->assertEquals(2, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn(), 'No session pruned because gc not called');
-
-        $storage->open('', 'sid');
-        $data = $storage->read('gc_id');
-        $storage->gc(-1);
-        $storage->close();
-
-        ini_set('session.gc_maxlifetime', $previousLifeTime);
-
-        $this->assertSame('', $data, 'Session already considered garbage, so not returning data even if it is not pruned yet');
-        $this->assertEquals(1, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn(), 'Expired session is pruned');
-    }
-
-    public function testGetConnection()
-    {
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-
-        $method = new \ReflectionMethod($storage, 'getConnection');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf('\PDO', $method->invoke($storage));
-    }
-
-    public function testGetConnectionConnectsIfNeeded()
-    {
-        $storage = new PdoSessionHandler('sqlite::memory:');
-
-        $method = new \ReflectionMethod($storage, 'getConnection');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf('\PDO', $method->invoke($storage));
-    }
-
-    /**
-     * @dataProvider provideUrlDsnPairs
-     */
-    public function testUrlDsn($url, $expectedDsn, $expectedUser = null, $expectedPassword = null)
-    {
-        $storage = new PdoSessionHandler($url);
-        $reflection = new \ReflectionClass(PdoSessionHandler::class);
-
-        foreach (['dsn' => $expectedDsn, 'username' => $expectedUser, 'password' => $expectedPassword] as $property => $expectedValue) {
-            if (!isset($expectedValue)) {
-                continue;
-            }
-            $property = $reflection->getProperty($property);
-            $property->setAccessible(true);
-            $this->assertSame($expectedValue, $property->getValue($storage));
-        }
-    }
-
-    public function provideUrlDsnPairs()
-    {
-        yield ['mysql://localhost/test', 'mysql:host=localhost;dbname=test;'];
-        yield ['mysql://localhost:56/test', 'mysql:host=localhost;port=56;dbname=test;'];
-        yield ['mysql2://root:pwd@localhost/test', 'mysql:host=localhost;dbname=test;', 'root', 'pwd'];
-        yield ['postgres://localhost/test', 'pgsql:host=localhost;dbname=test;'];
-        yield ['postgresql://localhost:5634/test', 'pgsql:host=localhost;port=5634;dbname=test;'];
-        yield ['postgres://root:pwd@localhost/test', 'pgsql:host=localhost;dbname=test;', 'root', 'pwd'];
-        yield 'sqlite relative path' => ['sqlite://localhost/tmp/test', 'sqlite:tmp/test'];
-        yield 'sqlite absolute path' => ['sqlite://localhost//tmp/test', 'sqlite:/tmp/test'];
-        yield 'sqlite relative path without host' => ['sqlite:///tmp/test', 'sqlite:tmp/test'];
-        yield 'sqlite absolute path without host' => ['sqlite3:////tmp/test', 'sqlite:/tmp/test'];
-        yield ['sqlite://localhost/:memory:', 'sqlite::memory:'];
-        yield ['mssql://localhost/test', 'sqlsrv:server=localhost;Database=test'];
-        yield ['mssql://localhost:56/test', 'sqlsrv:server=localhost,56;Database=test'];
-    }
-
-    private function createStream($content)
-    {
-        $stream = tmpfile();
-        fwrite($stream, $content);
-        fseek($stream, 0);
-
-        return $stream;
-    }
-}
-
-class MockPdo extends \PDO
-{
-    public $prepareResult;
-    private $driverName;
-    private $errorMode;
-
-    public function __construct($driverName = null, $errorMode = null)
-    {
-        $this->driverName = $driverName;
-        $this->errorMode = null !== $errorMode ?: \PDO::ERRMODE_EXCEPTION;
-    }
-
-    public function getAttribute($attribute)
-    {
-        if (\PDO::ATTR_ERRMODE === $attribute) {
-            return $this->errorMode;
-        }
-
-        if (\PDO::ATTR_DRIVER_NAME === $attribute) {
-            return $this->driverName;
-        }
-
-        return parent::getAttribute($attribute);
-    }
-
-    public function prepare($statement, $driverOptions = [])
-    {
-        return \is_callable($this->prepareResult)
-            ? ($this->prepareResult)($statement, $driverOptions)
-            : $this->prepareResult;
-    }
-
-    public function beginTransaction()
-    {
-    }
-
-    public function rollBack()
-    {
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php
deleted file mode 100644
index 622b42da1a28e9cdf304adfd667d5b1d4f112066..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use Predis\Client;
-
-class PredisClusterSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): Client
-    {
-        return new Client([['host' => $host]]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php
deleted file mode 100644
index 5ecab116f731cbbb1e6b8435492e5b2810c5a8fc..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use Predis\Client;
-
-class PredisSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): Client
-    {
-        return new Client(['host' => $host]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisArraySessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisArraySessionHandlerTest.php
deleted file mode 100644
index b03a37236f57521ccc01c76b3d88e9154b5496d5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisArraySessionHandlerTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-class RedisArraySessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): \RedisArray
-    {
-        return new \RedisArray([$host]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisClusterSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisClusterSessionHandlerTest.php
deleted file mode 100644
index c1ba70dcb08c21067d2ad2c25ceae0e9fbe07d2e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisClusterSessionHandlerTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-class RedisClusterSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    public static function setUpBeforeClass(): void
-    {
-        if (!class_exists('RedisCluster')) {
-            self::markTestSkipped('The RedisCluster class is required.');
-        }
-
-        if (!$hosts = getenv('REDIS_CLUSTER_HOSTS')) {
-            self::markTestSkipped('REDIS_CLUSTER_HOSTS env var is not defined.');
-        }
-    }
-
-    protected function createRedisClient(string $host): \RedisCluster
-    {
-        return new \RedisCluster(null, explode(' ', getenv('REDIS_CLUSTER_HOSTS')));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisSessionHandlerTest.php
deleted file mode 100644
index afdb6c503b659c11d9cd7bd6901f2bcb21e5a551..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisSessionHandlerTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-class RedisSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): \Redis
-    {
-        $client = new \Redis();
-        $client->connect($host);
-
-        return $client;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/StrictSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/StrictSessionHandlerTest.php
deleted file mode 100644
index 6a0d16876e8e0f6ee9104dcefae111bdf0e0d21e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/StrictSessionHandlerTest.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\StrictSessionHandler;
-
-class StrictSessionHandlerTest extends TestCase
-{
-    public function testOpen()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('open')
-            ->with('path', 'name')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertInstanceOf('SessionUpdateTimestampHandlerInterface', $proxy);
-        $this->assertInstanceOf(AbstractSessionHandler::class, $proxy);
-        $this->assertTrue($proxy->open('path', 'name'));
-    }
-
-    public function testCloseSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('close')
-            ->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->close());
-    }
-
-    public function testValidateIdOK()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->validateId('id'));
-    }
-
-    public function testValidateIdKO()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertFalse($proxy->validateId('id'));
-    }
-
-    public function testRead()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('data', $proxy->read('id'));
-    }
-
-    public function testReadWithValidateIdOK()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->validateId('id'));
-        $this->assertSame('data', $proxy->read('id'));
-    }
-
-    public function testReadWithValidateIdMismatch()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->exactly(2))->method('read')
-            ->withConsecutive(['id1'], ['id2'])
-            ->will($this->onConsecutiveCalls('data1', 'data2'));
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->validateId('id1'));
-        $this->assertSame('data2', $proxy->read('id2'));
-    }
-
-    public function testUpdateTimestamp()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('write')
-            ->with('id', 'data')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->updateTimestamp('id', 'data'));
-    }
-
-    public function testWrite()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('write')
-            ->with('id', 'data')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->write('id', 'data'));
-    }
-
-    public function testWriteEmptyNewSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $handler->expects($this->never())->method('write');
-        $handler->expects($this->once())->method('destroy')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertFalse($proxy->validateId('id'));
-        $this->assertSame('', $proxy->read('id'));
-        $this->assertTrue($proxy->write('id', ''));
-    }
-
-    public function testWriteEmptyExistingSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $handler->expects($this->never())->method('write');
-        $handler->expects($this->once())->method('destroy')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('data', $proxy->read('id'));
-        $this->assertTrue($proxy->write('id', ''));
-    }
-
-    public function testDestroy()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('destroy')
-            ->with('id')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->destroy('id'));
-    }
-
-    public function testDestroyNewSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $handler->expects($this->once())->method('destroy')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('', $proxy->read('id'));
-        $this->assertTrue($proxy->destroy('id'));
-    }
-
-    public function testDestroyNonEmptyNewSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $handler->expects($this->once())->method('write')
-            ->with('id', 'data')->willReturn(true);
-        $handler->expects($this->once())->method('destroy')
-            ->with('id')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('', $proxy->read('id'));
-        $this->assertTrue($proxy->write('id', 'data'));
-        $this->assertTrue($proxy->destroy('id'));
-    }
-
-    public function testGc()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('gc')
-            ->with(123)->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->gc(123));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/MetadataBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/MetadataBagTest.php
deleted file mode 100644
index e040f4862755b32898fa67586b63643a1abe628d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/MetadataBagTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag;
-
-/**
- * Test class for MetadataBag.
- *
- * @group time-sensitive
- */
-class MetadataBagTest extends TestCase
-{
-    /**
-     * @var MetadataBag
-     */
-    protected $bag;
-
-    protected $array = [];
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-        $this->bag = new MetadataBag();
-        $this->array = [MetadataBag::CREATED => 1234567, MetadataBag::UPDATED => 12345678, MetadataBag::LIFETIME => 0];
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->array = [];
-        $this->bag = null;
-        parent::tearDown();
-    }
-
-    public function testInitialize()
-    {
-        $sessionMetadata = [];
-
-        $bag1 = new MetadataBag();
-        $bag1->initialize($sessionMetadata);
-        $this->assertGreaterThanOrEqual(time(), $bag1->getCreated());
-        $this->assertEquals($bag1->getCreated(), $bag1->getLastUsed());
-
-        sleep(1);
-        $bag2 = new MetadataBag();
-        $bag2->initialize($sessionMetadata);
-        $this->assertEquals($bag1->getCreated(), $bag2->getCreated());
-        $this->assertEquals($bag1->getLastUsed(), $bag2->getLastUsed());
-        $this->assertEquals($bag2->getCreated(), $bag2->getLastUsed());
-
-        sleep(1);
-        $bag3 = new MetadataBag();
-        $bag3->initialize($sessionMetadata);
-        $this->assertEquals($bag1->getCreated(), $bag3->getCreated());
-        $this->assertGreaterThan($bag2->getLastUsed(), $bag3->getLastUsed());
-        $this->assertNotEquals($bag3->getCreated(), $bag3->getLastUsed());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('__metadata', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_sf2_meta', $this->bag->getStorageKey());
-    }
-
-    public function testGetLifetime()
-    {
-        $bag = new MetadataBag();
-        $array = [MetadataBag::CREATED => 1234567, MetadataBag::UPDATED => 12345678, MetadataBag::LIFETIME => 1000];
-        $bag->initialize($array);
-        $this->assertEquals(1000, $bag->getLifetime());
-    }
-
-    public function testGetCreated()
-    {
-        $this->assertEquals(1234567, $this->bag->getCreated());
-    }
-
-    public function testGetLastUsed()
-    {
-        $this->assertLessThanOrEqual(time(), $this->bag->getLastUsed());
-    }
-
-    public function testClear()
-    {
-        $this->bag->clear();
-
-        // the clear method has no side effects, we just want to ensure it doesn't trigger any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testSkipLastUsedUpdate()
-    {
-        $bag = new MetadataBag('', 30);
-        $timeStamp = time();
-
-        $created = $timeStamp - 15;
-        $sessionMetadata = [
-            MetadataBag::CREATED => $created,
-            MetadataBag::UPDATED => $created,
-            MetadataBag::LIFETIME => 1000,
-        ];
-        $bag->initialize($sessionMetadata);
-
-        $this->assertEquals($created, $sessionMetadata[MetadataBag::UPDATED]);
-    }
-
-    public function testDoesNotSkipLastUsedUpdate()
-    {
-        $bag = new MetadataBag('', 30);
-        $timeStamp = time();
-
-        $created = $timeStamp - 45;
-        $sessionMetadata = [
-            MetadataBag::CREATED => $created,
-            MetadataBag::UPDATED => $created,
-            MetadataBag::LIFETIME => 1000,
-        ];
-        $bag->initialize($sessionMetadata);
-
-        $this->assertEquals($timeStamp, $sessionMetadata[MetadataBag::UPDATED]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/MockArraySessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/MockArraySessionStorageTest.php
deleted file mode 100644
index b99e71985bb88f34ea0c5b9dcf699f393ab5ba03..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/MockArraySessionStorageTest.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-
-/**
- * Test class for MockArraySessionStorage.
- *
- * @author Drak <drak@zikula.org>
- */
-class MockArraySessionStorageTest extends TestCase
-{
-    /**
-     * @var MockArraySessionStorage
-     */
-    private $storage;
-
-    /**
-     * @var AttributeBag
-     */
-    private $attributes;
-
-    /**
-     * @var FlashBag
-     */
-    private $flashes;
-
-    private $data;
-
-    protected function setUp(): void
-    {
-        $this->attributes = new AttributeBag();
-        $this->flashes = new FlashBag();
-
-        $this->data = [
-            $this->attributes->getStorageKey() => ['foo' => 'bar'],
-            $this->flashes->getStorageKey() => ['notice' => 'hello'],
-        ];
-
-        $this->storage = new MockArraySessionStorage();
-        $this->storage->registerBag($this->flashes);
-        $this->storage->registerBag($this->attributes);
-        $this->storage->setSessionData($this->data);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->data = null;
-        $this->flashes = null;
-        $this->attributes = null;
-        $this->storage = null;
-    }
-
-    public function testStart()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->storage->start();
-        $id = $this->storage->getId();
-        $this->assertNotEquals('', $id);
-        $this->storage->start();
-        $this->assertEquals($id, $this->storage->getId());
-    }
-
-    public function testRegenerate()
-    {
-        $this->storage->start();
-        $id = $this->storage->getId();
-        $this->storage->regenerate();
-        $this->assertNotEquals($id, $this->storage->getId());
-        $this->assertEquals(['foo' => 'bar'], $this->storage->getBag('attributes')->all());
-        $this->assertEquals(['notice' => 'hello'], $this->storage->getBag('flashes')->peekAll());
-
-        $id = $this->storage->getId();
-        $this->storage->regenerate(true);
-        $this->assertNotEquals($id, $this->storage->getId());
-        $this->assertEquals(['foo' => 'bar'], $this->storage->getBag('attributes')->all());
-        $this->assertEquals(['notice' => 'hello'], $this->storage->getBag('flashes')->peekAll());
-    }
-
-    public function testGetId()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->storage->start();
-        $this->assertNotEquals('', $this->storage->getId());
-    }
-
-    public function testClearClearsBags()
-    {
-        $this->storage->clear();
-
-        $this->assertSame([], $this->storage->getBag('attributes')->all());
-        $this->assertSame([], $this->storage->getBag('flashes')->peekAll());
-    }
-
-    public function testClearStartsSession()
-    {
-        $this->storage->clear();
-
-        $this->assertTrue($this->storage->isStarted());
-    }
-
-    public function testClearWithNoBagsStartsSession()
-    {
-        $storage = new MockArraySessionStorage();
-
-        $storage->clear();
-
-        $this->assertTrue($storage->isStarted());
-    }
-
-    public function testUnstartedSave()
-    {
-        $this->expectException('RuntimeException');
-        $this->storage->save();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/MockFileSessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/MockFileSessionStorageTest.php
deleted file mode 100644
index d9314075af702b01b2f028745c8c1649123b0ae0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/MockFileSessionStorageTest.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage;
-
-/**
- * Test class for MockFileSessionStorage.
- *
- * @author Drak <drak@zikula.org>
- */
-class MockFileSessionStorageTest extends TestCase
-{
-    /**
-     * @var string
-     */
-    private $sessionDir;
-
-    /**
-     * @var MockFileSessionStorage
-     */
-    protected $storage;
-
-    protected function setUp(): void
-    {
-        $this->sessionDir = sys_get_temp_dir().'/sftest';
-        $this->storage = $this->getStorage();
-    }
-
-    protected function tearDown(): void
-    {
-        $this->sessionDir = null;
-        $this->storage = null;
-        array_map('unlink', glob($this->sessionDir.'/*.session'));
-        if (is_dir($this->sessionDir)) {
-            rmdir($this->sessionDir);
-        }
-    }
-
-    public function testStart()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->assertTrue($this->storage->start());
-        $id = $this->storage->getId();
-        $this->assertNotEquals('', $this->storage->getId());
-        $this->assertTrue($this->storage->start());
-        $this->assertEquals($id, $this->storage->getId());
-    }
-
-    public function testRegenerate()
-    {
-        $this->storage->start();
-        $this->storage->getBag('attributes')->set('regenerate', 1234);
-        $this->storage->regenerate();
-        $this->assertEquals(1234, $this->storage->getBag('attributes')->get('regenerate'));
-        $this->storage->regenerate(true);
-        $this->assertEquals(1234, $this->storage->getBag('attributes')->get('regenerate'));
-    }
-
-    public function testGetId()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->storage->start();
-        $this->assertNotEquals('', $this->storage->getId());
-    }
-
-    public function testSave()
-    {
-        $this->storage->start();
-        $id = $this->storage->getId();
-        $this->assertNotEquals('108', $this->storage->getBag('attributes')->get('new'));
-        $this->assertFalse($this->storage->getBag('flashes')->has('newkey'));
-        $this->storage->getBag('attributes')->set('new', '108');
-        $this->storage->getBag('flashes')->set('newkey', 'test');
-        $this->storage->save();
-
-        $storage = $this->getStorage();
-        $storage->setId($id);
-        $storage->start();
-        $this->assertEquals('108', $storage->getBag('attributes')->get('new'));
-        $this->assertTrue($storage->getBag('flashes')->has('newkey'));
-        $this->assertEquals(['test'], $storage->getBag('flashes')->peek('newkey'));
-    }
-
-    public function testMultipleInstances()
-    {
-        $storage1 = $this->getStorage();
-        $storage1->start();
-        $storage1->getBag('attributes')->set('foo', 'bar');
-        $storage1->save();
-
-        $storage2 = $this->getStorage();
-        $storage2->setId($storage1->getId());
-        $storage2->start();
-        $this->assertEquals('bar', $storage2->getBag('attributes')->get('foo'), 'values persist between instances');
-    }
-
-    public function testSaveWithoutStart()
-    {
-        $this->expectException('RuntimeException');
-        $storage1 = $this->getStorage();
-        $storage1->save();
-    }
-
-    private function getStorage()
-    {
-        $storage = new MockFileSessionStorage($this->sessionDir);
-        $storage->registerBag(new FlashBag());
-        $storage->registerBag(new AttributeBag());
-
-        return $storage;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/NativeSessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/NativeSessionStorageTest.php
deleted file mode 100644
index 17f46bef5e1a198c0809c1f8e8d9df316c654ec6..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/NativeSessionStorageTest.php
+++ /dev/null
@@ -1,290 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-/**
- * Test class for NativeSessionStorage.
- *
- * @author Drak <drak@zikula.org>
- *
- * These tests require separate processes.
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class NativeSessionStorageTest extends TestCase
-{
-    private $savePath;
-
-    protected function setUp(): void
-    {
-        $this->iniSet('session.save_handler', 'files');
-        $this->iniSet('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest');
-        if (!is_dir($this->savePath)) {
-            mkdir($this->savePath);
-        }
-    }
-
-    protected function tearDown(): void
-    {
-        session_write_close();
-        array_map('unlink', glob($this->savePath.'/*'));
-        if (is_dir($this->savePath)) {
-            rmdir($this->savePath);
-        }
-
-        $this->savePath = null;
-    }
-
-    /**
-     * @return NativeSessionStorage
-     */
-    protected function getStorage(array $options = [])
-    {
-        $storage = new NativeSessionStorage($options);
-        $storage->registerBag(new AttributeBag());
-
-        return $storage;
-    }
-
-    public function testBag()
-    {
-        $storage = $this->getStorage();
-        $bag = new FlashBag();
-        $storage->registerBag($bag);
-        $this->assertSame($bag, $storage->getBag($bag->getName()));
-    }
-
-    public function testRegisterBagException()
-    {
-        $this->expectException('InvalidArgumentException');
-        $storage = $this->getStorage();
-        $storage->getBag('non_existing');
-    }
-
-    public function testRegisterBagForAStartedSessionThrowsException()
-    {
-        $this->expectException('LogicException');
-        $storage = $this->getStorage();
-        $storage->start();
-        $storage->registerBag(new AttributeBag());
-    }
-
-    public function testGetId()
-    {
-        $storage = $this->getStorage();
-        $this->assertSame('', $storage->getId(), 'Empty ID before starting session');
-
-        $storage->start();
-        $id = $storage->getId();
-        $this->assertIsString($id);
-        $this->assertNotSame('', $id);
-
-        $storage->save();
-        $this->assertSame($id, $storage->getId(), 'ID stays after saving session');
-    }
-
-    public function testRegenerate()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $id = $storage->getId();
-        $storage->getBag('attributes')->set('lucky', 7);
-        $storage->regenerate();
-        $this->assertNotEquals($id, $storage->getId());
-        $this->assertEquals(7, $storage->getBag('attributes')->get('lucky'));
-    }
-
-    public function testRegenerateDestroy()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $id = $storage->getId();
-        $storage->getBag('attributes')->set('legs', 11);
-        $storage->regenerate(true);
-        $this->assertNotEquals($id, $storage->getId());
-        $this->assertEquals(11, $storage->getBag('attributes')->get('legs'));
-    }
-
-    public function testSessionGlobalIsUpToDateAfterIdRegeneration()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $storage->getBag('attributes')->set('lucky', 7);
-        $storage->regenerate();
-        $storage->getBag('attributes')->set('lucky', 42);
-
-        $this->assertEquals(42, $_SESSION['_sf2_attributes']['lucky']);
-    }
-
-    public function testRegenerationFailureDoesNotFlagStorageAsStarted()
-    {
-        $storage = $this->getStorage();
-        $this->assertFalse($storage->regenerate());
-        $this->assertFalse($storage->isStarted());
-    }
-
-    public function testDefaultSessionCacheLimiter()
-    {
-        $this->iniSet('session.cache_limiter', 'nocache');
-
-        $storage = new NativeSessionStorage();
-        $this->assertEquals('', ini_get('session.cache_limiter'));
-    }
-
-    public function testExplicitSessionCacheLimiter()
-    {
-        $this->iniSet('session.cache_limiter', 'nocache');
-
-        $storage = new NativeSessionStorage(['cache_limiter' => 'public']);
-        $this->assertEquals('public', ini_get('session.cache_limiter'));
-    }
-
-    public function testCookieOptions()
-    {
-        $options = [
-            'cookie_lifetime' => 123456,
-            'cookie_path' => '/my/cookie/path',
-            'cookie_domain' => 'symfony.example.com',
-            'cookie_secure' => true,
-            'cookie_httponly' => false,
-        ];
-
-        if (\PHP_VERSION_ID >= 70300) {
-            $options['cookie_samesite'] = 'lax';
-        }
-
-        $this->getStorage($options);
-        $temp = session_get_cookie_params();
-        $gco = [];
-
-        foreach ($temp as $key => $value) {
-            $gco['cookie_'.$key] = $value;
-        }
-
-        $this->assertEquals($options, $gco);
-    }
-
-    public function testSessionOptions()
-    {
-        if (\defined('HHVM_VERSION')) {
-            $this->markTestSkipped('HHVM is not handled in this test case.');
-        }
-
-        $options = [
-            'url_rewriter.tags' => 'a=href',
-            'cache_expire' => '200',
-        ];
-
-        $this->getStorage($options);
-
-        $this->assertSame('a=href', ini_get('url_rewriter.tags'));
-        $this->assertSame('200', ini_get('session.cache_expire'));
-    }
-
-    public function testSetSaveHandlerException()
-    {
-        $this->expectException('InvalidArgumentException');
-        $storage = $this->getStorage();
-        $storage->setSaveHandler(new \stdClass());
-    }
-
-    public function testSetSaveHandler()
-    {
-        $this->iniSet('session.save_handler', 'files');
-        $storage = $this->getStorage();
-        $storage->setSaveHandler();
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(null);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new SessionHandlerProxy(new NativeFileSessionHandler()));
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new NativeFileSessionHandler());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new SessionHandlerProxy(new NullSessionHandler()));
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new NullSessionHandler());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-    }
-
-    public function testStarted()
-    {
-        $this->expectException('RuntimeException');
-        $storage = $this->getStorage();
-
-        $this->assertFalse($storage->getSaveHandler()->isActive());
-        $this->assertFalse($storage->isStarted());
-
-        session_start();
-        $this->assertTrue(isset($_SESSION));
-        $this->assertTrue($storage->getSaveHandler()->isActive());
-
-        // PHP session might have started, but the storage driver has not, so false is correct here
-        $this->assertFalse($storage->isStarted());
-
-        $key = $storage->getMetadataBag()->getStorageKey();
-        $this->assertArrayNotHasKey($key, $_SESSION);
-        $storage->start();
-    }
-
-    public function testRestart()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $id = $storage->getId();
-        $storage->getBag('attributes')->set('lucky', 7);
-        $storage->save();
-        $storage->start();
-        $this->assertSame($id, $storage->getId(), 'Same session ID after restarting');
-        $this->assertSame(7, $storage->getBag('attributes')->get('lucky'), 'Data still available');
-    }
-
-    public function testCanCreateNativeSessionStorageWhenSessionAlreadyStarted()
-    {
-        session_start();
-        $this->getStorage();
-
-        // Assert no exception has been thrown by `getStorage()`
-        $this->addToAssertionCount(1);
-    }
-
-    public function testSetSessionOptionsOnceSessionStartedIsIgnored()
-    {
-        session_start();
-        $this->getStorage([
-            'name' => 'something-else',
-        ]);
-
-        // Assert no exception has been thrown by `getStorage()`
-        $this->addToAssertionCount(1);
-    }
-
-    public function testGetBagsOnceSessionStartedIsIgnored()
-    {
-        session_start();
-        $bag = new AttributeBag();
-        $bag->setName('flashes');
-
-        $storage = $this->getStorage();
-        $storage->registerBag($bag);
-
-        $this->assertEquals($storage->getBag('flashes'), $bag);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php
deleted file mode 100644
index 7d6827079893328d6b8599392162890a7af74f60..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
-
-/**
- * Test class for PhpSessionStorage.
- *
- * @author Drak <drak@zikula.org>
- *
- * These tests require separate processes.
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class PhpBridgeSessionStorageTest extends TestCase
-{
-    private $savePath;
-
-    protected function setUp(): void
-    {
-        $this->iniSet('session.save_handler', 'files');
-        $this->iniSet('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest');
-        if (!is_dir($this->savePath)) {
-            mkdir($this->savePath);
-        }
-    }
-
-    protected function tearDown(): void
-    {
-        session_write_close();
-        array_map('unlink', glob($this->savePath.'/*'));
-        if (is_dir($this->savePath)) {
-            rmdir($this->savePath);
-        }
-
-        $this->savePath = null;
-    }
-
-    /**
-     * @return PhpBridgeSessionStorage
-     */
-    protected function getStorage()
-    {
-        $storage = new PhpBridgeSessionStorage();
-        $storage->registerBag(new AttributeBag());
-
-        return $storage;
-    }
-
-    public function testPhpSession()
-    {
-        $storage = $this->getStorage();
-
-        $this->assertNotSame(\PHP_SESSION_ACTIVE, session_status());
-        $this->assertFalse($storage->isStarted());
-
-        session_start();
-        $this->assertTrue(isset($_SESSION));
-        $this->assertSame(\PHP_SESSION_ACTIVE, session_status());
-        // PHP session might have started, but the storage driver has not, so false is correct here
-        $this->assertFalse($storage->isStarted());
-
-        $key = $storage->getMetadataBag()->getStorageKey();
-        $this->assertArrayNotHasKey($key, $_SESSION);
-        $storage->start();
-        $this->assertArrayHasKey($key, $_SESSION);
-    }
-
-    public function testClear()
-    {
-        $storage = $this->getStorage();
-        session_start();
-        $_SESSION['drak'] = 'loves symfony';
-        $storage->getBag('attributes')->set('symfony', 'greatness');
-        $key = $storage->getBag('attributes')->getStorageKey();
-        $this->assertEquals($_SESSION[$key], ['symfony' => 'greatness']);
-        $this->assertEquals($_SESSION['drak'], 'loves symfony');
-        $storage->clear();
-        $this->assertEquals($_SESSION[$key], []);
-        $this->assertEquals($_SESSION['drak'], 'loves symfony');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php
deleted file mode 100644
index 4820a6593b92c921c9de00433e684d67553e5e81..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Proxy;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-/**
- * Test class for AbstractProxy.
- *
- * @author Drak <drak@zikula.org>
- */
-class AbstractProxyTest extends TestCase
-{
-    /**
-     * @var AbstractProxy
-     */
-    protected $proxy;
-
-    protected function setUp(): void
-    {
-        $this->proxy = $this->getMockForAbstractClass(AbstractProxy::class);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->proxy = null;
-    }
-
-    public function testGetSaveHandlerName()
-    {
-        $this->assertNull($this->proxy->getSaveHandlerName());
-    }
-
-    public function testIsSessionHandlerInterface()
-    {
-        $this->assertFalse($this->proxy->isSessionHandlerInterface());
-        $sh = new SessionHandlerProxy(new \SessionHandler());
-        $this->assertTrue($sh->isSessionHandlerInterface());
-    }
-
-    public function testIsWrapper()
-    {
-        $this->assertFalse($this->proxy->isWrapper());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testIsActive()
-    {
-        $this->assertFalse($this->proxy->isActive());
-        session_start();
-        $this->assertTrue($this->proxy->isActive());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testName()
-    {
-        $this->assertEquals(session_name(), $this->proxy->getName());
-        $this->proxy->setName('foo');
-        $this->assertEquals('foo', $this->proxy->getName());
-        $this->assertEquals(session_name(), $this->proxy->getName());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testNameException()
-    {
-        $this->expectException('LogicException');
-        session_start();
-        $this->proxy->setName('foo');
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testId()
-    {
-        $this->assertEquals(session_id(), $this->proxy->getId());
-        $this->proxy->setId('foo');
-        $this->assertEquals('foo', $this->proxy->getId());
-        $this->assertEquals(session_id(), $this->proxy->getId());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testIdException()
-    {
-        $this->expectException('LogicException');
-        session_start();
-        $this->proxy->setId('foo');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php
deleted file mode 100644
index 1cf4aed06a25d479242f0545aa99971ce16dee39..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Proxy;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-/**
- * Tests for SessionHandlerProxy class.
- *
- * @author Drak <drak@zikula.org>
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class SessionHandlerProxyTest extends TestCase
-{
-    /**
-     * @var \PHPUnit\Framework\MockObject\Matcher
-     */
-    private $mock;
-
-    /**
-     * @var SessionHandlerProxy
-     */
-    private $proxy;
-
-    protected function setUp(): void
-    {
-        $this->mock = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $this->proxy = new SessionHandlerProxy($this->mock);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->mock = null;
-        $this->proxy = null;
-    }
-
-    public function testOpenTrue()
-    {
-        $this->mock->expects($this->once())
-            ->method('open')
-            ->willReturn(true);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->open('name', 'id');
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testOpenFalse()
-    {
-        $this->mock->expects($this->once())
-            ->method('open')
-            ->willReturn(false);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->open('name', 'id');
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testClose()
-    {
-        $this->mock->expects($this->once())
-            ->method('close')
-            ->willReturn(true);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->close();
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testCloseFalse()
-    {
-        $this->mock->expects($this->once())
-            ->method('close')
-            ->willReturn(false);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->close();
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testRead()
-    {
-        $this->mock->expects($this->once())
-            ->method('read');
-
-        $this->proxy->read('id');
-    }
-
-    public function testWrite()
-    {
-        $this->mock->expects($this->once())
-            ->method('write');
-
-        $this->proxy->write('id', 'data');
-    }
-
-    public function testDestroy()
-    {
-        $this->mock->expects($this->once())
-            ->method('destroy');
-
-        $this->proxy->destroy('id');
-    }
-
-    public function testGc()
-    {
-        $this->mock->expects($this->once())
-            ->method('gc');
-
-        $this->proxy->gc(86400);
-    }
-
-    /**
-     * @requires PHPUnit 5.1
-     */
-    public function testValidateId()
-    {
-        $mock = $this->getMockBuilder(['SessionHandlerInterface', 'SessionUpdateTimestampHandlerInterface'])->getMock();
-        $mock->expects($this->once())
-            ->method('validateId');
-
-        $proxy = new SessionHandlerProxy($mock);
-        $proxy->validateId('id');
-
-        $this->assertTrue($this->proxy->validateId('id'));
-    }
-
-    /**
-     * @requires PHPUnit 5.1
-     */
-    public function testUpdateTimestamp()
-    {
-        $mock = $this->getMockBuilder(['SessionHandlerInterface', 'SessionUpdateTimestampHandlerInterface'])->getMock();
-        $mock->expects($this->once())
-            ->method('updateTimestamp')
-            ->willReturn(false);
-
-        $proxy = new SessionHandlerProxy($mock);
-        $proxy->updateTimestamp('id', 'data');
-
-        $this->mock->expects($this->once())
-            ->method('write');
-
-        $this->proxy->updateTimestamp('id', 'data');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/StreamedResponseTest.php b/vendor/symfony/http-foundation/Tests/StreamedResponseTest.php
deleted file mode 100644
index a084e917dcc0e9947c3b7274cbd4816e54121d12..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/StreamedResponseTest.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-
-class StreamedResponseTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; }, 404, ['Content-Type' => 'text/plain']);
-
-        $this->assertEquals(404, $response->getStatusCode());
-        $this->assertEquals('text/plain', $response->headers->get('Content-Type'));
-    }
-
-    public function testPrepareWith11Protocol()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $request = Request::create('/');
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.1');
-
-        $response->prepare($request);
-
-        $this->assertEquals('1.1', $response->getProtocolVersion());
-        $this->assertNotEquals('chunked', $response->headers->get('Transfer-Encoding'), 'Apache assumes responses with a Transfer-Encoding header set to chunked to already be encoded.');
-    }
-
-    public function testPrepareWith10Protocol()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $request = Request::create('/');
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.0');
-
-        $response->prepare($request);
-
-        $this->assertEquals('1.0', $response->getProtocolVersion());
-        $this->assertNull($response->headers->get('Transfer-Encoding'));
-    }
-
-    public function testPrepareWithHeadRequest()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; }, 200, ['Content-Length' => '123']);
-        $request = Request::create('/', 'HEAD');
-
-        $response->prepare($request);
-
-        $this->assertSame('123', $response->headers->get('Content-Length'));
-    }
-
-    public function testPrepareWithCacheHeaders()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; }, 200, ['Cache-Control' => 'max-age=600, public']);
-        $request = Request::create('/', 'GET');
-
-        $response->prepare($request);
-        $this->assertEquals('max-age=600, public', $response->headers->get('Cache-Control'));
-    }
-
-    public function testSendContent()
-    {
-        $called = 0;
-
-        $response = new StreamedResponse(function () use (&$called) { ++$called; });
-
-        $response->sendContent();
-        $this->assertEquals(1, $called);
-
-        $response->sendContent();
-        $this->assertEquals(1, $called);
-    }
-
-    public function testSendContentWithNonCallable()
-    {
-        $this->expectException('LogicException');
-        $response = new StreamedResponse(null);
-        $response->sendContent();
-    }
-
-    public function testSetContent()
-    {
-        $this->expectException('LogicException');
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $response->setContent('foo');
-    }
-
-    public function testGetContent()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $this->assertFalse($response->getContent());
-    }
-
-    public function testCreate()
-    {
-        $response = StreamedResponse::create(function () {}, 204);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response);
-        $this->assertEquals(204, $response->getStatusCode());
-    }
-
-    public function testReturnThis()
-    {
-        $response = new StreamedResponse(function () {});
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendContent());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendContent());
-
-        $response = new StreamedResponse(function () {});
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendHeaders());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendHeaders());
-    }
-
-    public function testSetNotModified()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $modified = $response->setNotModified();
-        $this->assertObjectHasAttribute('headers', $modified);
-        $this->assertObjectHasAttribute('content', $modified);
-        $this->assertObjectHasAttribute('version', $modified);
-        $this->assertObjectHasAttribute('statusCode', $modified);
-        $this->assertObjectHasAttribute('statusText', $modified);
-        $this->assertObjectHasAttribute('charset', $modified);
-        $this->assertEquals(304, $modified->getStatusCode());
-
-        ob_start();
-        $modified->sendContent();
-        $string = ob_get_clean();
-        $this->assertEmpty($string);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php
deleted file mode 100644
index eca8aed263e214ac4d3c5673fb25c787388f994c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Test\Constraint\RequestAttributeValueSame;
-
-class RequestAttributeValueSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $request = new Request();
-        $request->attributes->set('foo', 'bar');
-        $constraint = new RequestAttributeValueSame('foo', 'bar');
-        $this->assertTrue($constraint->evaluate($request, '', true));
-        $constraint = new RequestAttributeValueSame('bar', 'foo');
-        $this->assertFalse($constraint->evaluate($request, '', true));
-
-        try {
-            $constraint->evaluate($request);
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Request has attribute \"bar\" with value \"foo\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php
deleted file mode 100644
index 778879c328f0d2d858d35ce749324e5629e6b15d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseCookieValueSame;
-
-class ResponseCookieValueSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $response = new Response();
-        $response->headers->setCookie(Cookie::create('foo', 'bar', 0, '/path'));
-        $constraint = new ResponseCookieValueSame('foo', 'bar', '/path');
-        $this->assertTrue($constraint->evaluate($response, '', true));
-        $constraint = new ResponseCookieValueSame('foo', 'bar', '/path');
-        $this->assertTrue($constraint->evaluate($response, '', true));
-        $constraint = new ResponseCookieValueSame('foo', 'babar', '/path');
-        $this->assertFalse($constraint->evaluate($response, '', true));
-
-        try {
-            $constraint->evaluate($response);
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has cookie \"foo\" with path \"/path\" with value \"babar\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php
deleted file mode 100644
index 05ca95fb4656da37426da619c2aa4dafce6fe64b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHasCookie;
-
-class ResponseHasCookieTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $response = new Response();
-        $response->headers->setCookie(Cookie::create('foo', 'bar'));
-        $constraint = new ResponseHasCookie('foo');
-        $this->assertTrue($constraint->evaluate($response, '', true));
-        $constraint = new ResponseHasCookie('bar');
-        $this->assertFalse($constraint->evaluate($response, '', true));
-
-        try {
-            $constraint->evaluate($response);
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has cookie \"bar\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php
deleted file mode 100644
index 7b811a64a2bccdc967b624897df4e06d58c502bb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHasHeader;
-
-class ResponseHasHeaderTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseHasHeader('Date');
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $constraint = new ResponseHasHeader('X-Date');
-        $this->assertFalse($constraint->evaluate(new Response(), '', true));
-
-        try {
-            $constraint->evaluate(new Response());
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has header \"X-Date\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php
deleted file mode 100644
index d527f35de8c28861db8b81602aabcf66a3ea239c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHeaderSame;
-
-class ResponseHeaderSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseHeaderSame('Cache-Control', 'no-cache, private');
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $constraint = new ResponseHeaderSame('Cache-Control', 'public');
-        $this->assertFalse($constraint->evaluate(new Response(), '', true));
-
-        try {
-            $constraint->evaluate(new Response());
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has header \"Cache-Control\" with value \"public\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php
deleted file mode 100644
index a8314c2599468dfd55a8b36ec41d2055bd8ae9d5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseIsRedirected;
-
-class ResponseIsRedirectedTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseIsRedirected();
-
-        $this->assertTrue($constraint->evaluate(new Response('', 301), '', true));
-        $this->assertFalse($constraint->evaluate(new Response(), '', true));
-
-        try {
-            $constraint->evaluate(new Response());
-        } catch (ExpectationFailedException $e) {
-            $this->assertStringContainsString("Failed asserting that the Response is redirected.\nHTTP/1.0 200 OK", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php
deleted file mode 100644
index b59daf8a38b552078df1dc95949f16a5564786cb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseIsSuccessful;
-
-class ResponseIsSuccessfulTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseIsSuccessful();
-
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $this->assertFalse($constraint->evaluate(new Response('', 404), '', true));
-
-        try {
-            $constraint->evaluate(new Response('', 404));
-        } catch (ExpectationFailedException $e) {
-            $this->assertStringContainsString("Failed asserting that the Response is successful.\nHTTP/1.0 404 Not Found", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php
deleted file mode 100644
index 53200fdd03397e4b3d76dcb6e0fe622664c55e03..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseStatusCodeSame;
-
-class ResponseStatusCodeSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseStatusCodeSame(200);
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $this->assertFalse($constraint->evaluate(new Response('', 404), '', true));
-        $constraint = new ResponseStatusCodeSame(404);
-        $this->assertTrue($constraint->evaluate(new Response('', 404), '', true));
-
-        $constraint = new ResponseStatusCodeSame(200);
-        try {
-            $constraint->evaluate(new Response('', 404));
-        } catch (ExpectationFailedException $e) {
-            $this->assertStringContainsString("Failed asserting that the Response status code is 200.\nHTTP/1.0 404 Not Found", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/UrlHelperTest.php b/vendor/symfony/http-foundation/Tests/UrlHelperTest.php
deleted file mode 100644
index 9a750bd8a3bb5d7ed22b801c6d212def2438f2f0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/UrlHelperTest.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\UrlHelper;
-use Symfony\Component\Routing\RequestContext;
-
-class UrlHelperTest extends TestCase
-{
-    /**
-     * @dataProvider getGenerateAbsoluteUrlData()
-     */
-    public function testGenerateAbsoluteUrl($expected, $path, $pathinfo)
-    {
-        $stack = new RequestStack();
-        $stack->push(Request::create($pathinfo));
-        $helper = new UrlHelper($stack);
-
-        $this->assertEquals($expected, $helper->getAbsoluteUrl($path));
-    }
-
-    public function getGenerateAbsoluteUrlData()
-    {
-        return [
-            ['http://localhost/foo.png', '/foo.png', '/foo/bar.html'],
-            ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar.html'],
-            ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar'],
-            ['http://localhost/foo/bar/foo.png', 'foo.png', '/foo/bar/'],
-
-            ['http://example.com/baz', 'http://example.com/baz', '/'],
-            ['https://example.com/baz', 'https://example.com/baz', '/'],
-            ['//example.com/baz', '//example.com/baz', '/'],
-
-            ['http://localhost/foo/bar?baz', '?baz', '/foo/bar'],
-            ['http://localhost/foo/bar?baz=1', '?baz=1', '/foo/bar?foo=1'],
-            ['http://localhost/foo/baz?baz=1', 'baz?baz=1', '/foo/bar?foo=1'],
-
-            ['http://localhost/foo/bar#baz', '#baz', '/foo/bar'],
-            ['http://localhost/foo/bar?0#baz', '#baz', '/foo/bar?0'],
-            ['http://localhost/foo/bar?baz=1#baz', '?baz=1#baz', '/foo/bar?foo=1'],
-            ['http://localhost/foo/baz?baz=1#baz', 'baz?baz=1#baz', '/foo/bar?foo=1'],
-        ];
-    }
-
-    /**
-     * @dataProvider getGenerateAbsoluteUrlRequestContextData
-     */
-    public function testGenerateAbsoluteUrlWithRequestContext($path, $baseUrl, $host, $scheme, $httpPort, $httpsPort, $expected)
-    {
-        if (!class_exists('Symfony\Component\Routing\RequestContext')) {
-            $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
-        }
-
-        $requestContext = new RequestContext($baseUrl, 'GET', $host, $scheme, $httpPort, $httpsPort, $path);
-        $helper = new UrlHelper(new RequestStack(), $requestContext);
-
-        $this->assertEquals($expected, $helper->getAbsoluteUrl($path));
-    }
-
-    /**
-     * @dataProvider getGenerateAbsoluteUrlRequestContextData
-     */
-    public function testGenerateAbsoluteUrlWithoutRequestAndRequestContext($path)
-    {
-        if (!class_exists('Symfony\Component\Routing\RequestContext')) {
-            $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
-        }
-
-        $helper = new UrlHelper(new RequestStack());
-
-        $this->assertEquals($path, $helper->getAbsoluteUrl($path));
-    }
-
-    public function getGenerateAbsoluteUrlRequestContextData()
-    {
-        return [
-            ['/foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo.png'],
-            ['foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo/foo.png'],
-            ['foo.png', '/foo/bar/', 'localhost', 'http', 80, 443, 'http://localhost/foo/bar/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo.png'],
-            ['foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo/foo.png'],
-            ['foo.png', '/foo/bar/', 'localhost', 'https', 80, 443, 'https://localhost/foo/bar/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'http', 443, 80, 'http://localhost:443/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'https', 443, 80, 'https://localhost:80/foo.png'],
-        ];
-    }
-
-    public function testGenerateAbsoluteUrlWithScriptFileName()
-    {
-        $request = Request::create('http://localhost/app/web/app_dev.php');
-        $request->server->set('SCRIPT_FILENAME', '/var/www/app/web/app_dev.php');
-
-        $stack = new RequestStack();
-        $stack->push($request);
-        $helper = new UrlHelper($stack);
-
-        $this->assertEquals(
-            'http://localhost/app/web/bundles/framework/css/structure.css',
-            $helper->getAbsoluteUrl('/app/web/bundles/framework/css/structure.css')
-        );
-    }
-
-    /**
-     * @dataProvider getGenerateRelativePathData()
-     */
-    public function testGenerateRelativePath($expected, $path, $pathinfo)
-    {
-        if (!method_exists('Symfony\Component\HttpFoundation\Request', 'getRelativeUriForPath')) {
-            $this->markTestSkipped('Your version of Symfony HttpFoundation is too old.');
-        }
-
-        $stack = new RequestStack();
-        $stack->push(Request::create($pathinfo));
-        $urlHelper = new UrlHelper($stack);
-
-        $this->assertEquals($expected, $urlHelper->getRelativePath($path));
-    }
-
-    public function getGenerateRelativePathData()
-    {
-        return [
-            ['../foo.png', '/foo.png', '/foo/bar.html'],
-            ['../baz/foo.png', '/baz/foo.png', '/foo/bar.html'],
-            ['baz/foo.png', 'baz/foo.png', '/foo/bar.html'],
-
-            ['http://example.com/baz', 'http://example.com/baz', '/'],
-            ['https://example.com/baz', 'https://example.com/baz', '/'],
-            ['//example.com/baz', '//example.com/baz', '/'],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/schema/http-status-codes.rng b/vendor/symfony/http-foundation/Tests/schema/http-status-codes.rng
deleted file mode 100644
index 73708ca680416476abe79fa0c3d7928addead3ef..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/schema/http-status-codes.rng
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version='1.0'?>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0"
-  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
-  ns="http://www.iana.org/assignments">
-
-  <include href="iana-registry.rng"/>
-
-  <start>
-    <element name="registry">
-      <ref name="registryMeta"/>
-      <element name="registry">
-        <ref name="registryMeta"/>
-        <zeroOrMore>
-          <element name="record">
-            <optional>
-              <attribute name="date"><ref name="genericDate"/></attribute>
-            </optional>
-            <optional>
-              <attribute name="updated"><ref name="genericDate"/></attribute>
-            </optional>
-            <element name="value"><ref name="genericRange"/></element>
-            <element name="description"><text/></element>
-            <ref name="references"/>
-          </element>
-        </zeroOrMore>
-      </element>
-      <ref name="people"/>
-    </element>
-  </start>
-
-</grammar>
diff --git a/vendor/symfony/http-foundation/Tests/schema/iana-registry.rng b/vendor/symfony/http-foundation/Tests/schema/iana-registry.rng
deleted file mode 100644
index b9c3ca9d940030e80e8494002bcd72c49837c594..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/Tests/schema/iana-registry.rng
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version='1.0'?>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0"
-  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
-  ns="http://www.iana.org/assignments">
-
-  <define name="registryMeta">
-    <interleave>
-      <attribute name="id"><data type="ID"/></attribute>
-      <optional><element name="title"><ref name="text_with_references"/></element></optional>
-      <optional><element name="created"><ref name="genericDate"/></element></optional>
-      <optional><element name="updated"><data type="date"/></element></optional>
-      <optional><element name="registration_rule"><ref
-            name="text_with_references"/></element></optional>
-      <optional><element name="expert"><text/></element></optional>
-      <optional><element name="description"><ref name="text_with_references"/></element></optional>
-      <zeroOrMore><element name="note"><ref name="text_with_references"/></element></zeroOrMore>
-      <ref name="references"/>
-      <optional><element name="hide"><empty/></element></optional>
-      <zeroOrMore><element name="category"><text/></element></zeroOrMore>
-      <zeroOrMore><ref name="range"/></zeroOrMore>
-      <optional><ref name="file"/></optional>
-    </interleave>
-  </define>
-
-  <define name="range">
-    <element name="range">
-       <interleave>
-	  <element name="value"><text/></element>
-	  <optional><element name="hex"><text/></element></optional>
-	  <element name="registration_rule"><ref name="text_with_references"/></element>
-	  <optional><element name="note"><ref name="text_with_references"/></element></optional>
-	  <optional><ref name="xref"/></optional>
-       </interleave>
-    </element>
-  </define>
-
-  <define name="people">
-    <element name="people">
-      <zeroOrMore>
-        <element name="person">
-          <attribute name="id"><data type="ID"/></attribute>
-          <optional><element name="name"><text/></element></optional>
-          <optional><element name="org"><text/></element></optional>
-          <zeroOrMore><element name="uri"><data type="anyURI"/></element></zeroOrMore>
-          <optional><element name="updated"><ref name="genericDate"/></element></optional>
-        </element>
-      </zeroOrMore>
-    </element>
-  </define>
-
-  <define name="xref">
-    <element name="xref">
-      <optional>
-        <attribute name="lastupdated"><ref name="genericDate"/></attribute>
-      </optional>
-      <choice>
-        <group>
-          <attribute name="type"><value>uri</value></attribute>
-          <attribute name="data"><data type="anyURI"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>rfc</value></attribute>
-          <attribute name="data">
-            <data type="string">
-              <param name="pattern">(rfc|bcp|std)\d+</param>
-            </data>
-          </attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>rfc-errata</value></attribute>
-          <attribute name="data"><data type="positiveInteger"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>draft</value></attribute>
-          <attribute name="data">
-            <data type="string">
-              <param name="pattern">(draft|RFC)(-[a-zA-Z0-9]+)+</param>
-            </data>
-          </attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>registry</value></attribute>
-          <attribute name="data"><data type="NCName"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>person</value></attribute>
-          <attribute name="data"><data type="NCName"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>text</value></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>note</value></attribute>
-          <attribute name="data"><data type="positiveInteger"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>unicode</value></attribute>
-          <attribute name="data">
-            <data type="string">
-              <param name="pattern">ucd\d+\.\d+\.\d+</param>
-            </data>
-          </attribute>
-        </group>
-      </choice>
-      <text/>
-    </element>
-  </define>
-
-  <define name="references">
-    <zeroOrMore>
-      <ref name="xref"/>
-    </zeroOrMore>
-  </define>
-
-  <define name="text_with_references">
-    <interleave>
-      <zeroOrMore>
-        <text/>
-        <optional><ref name="xref"/></optional>
-      </zeroOrMore>
-    </interleave>
-  </define>
-
-  <define name="richText">
-    <zeroOrMore>
-      <choice>
-        <interleave>
-          <ref name="text_with_references"/>
-          <optional><element name="br"><empty/></element></optional>
-        </interleave>
-        <element name="paragraph">
-          <interleave>
-            <ref name="text_with_references"/>
-            <optional><element name="br"><empty/></element></optional>
-          </interleave>
-        </element>
-        <element name="artwork"><text/></element>
-      </choice>
-    </zeroOrMore>
-  </define>
-
-  <define name="genericRange">
-    <data type="string">
-      <param name="pattern">(\d+|0x[\da-fA-F]+)(\s*-\s*(\d+|0x[\da-fA-F]+))?</param>
-    </data>
-  </define>
-
-  <define name="genericDate">
-    <choice>
-      <data type="date"/>
-      <data type="gYearMonth"/>
-    </choice>
-  </define>
-
-  <define name="hex32">
-    <data type="string">
-      <param name="pattern">0x[0-9]{8}</param>
-    </data>
-  </define>
-
-  <define name="binary">
-    <data type="string">
-      <param name="pattern">[0-1]+</param>
-    </data>
-  </define>
-
-  <define name="footnotes">
-    <zeroOrMore>
-      <element name="footnote">
-        <attribute name="anchor"><data type="positiveInteger"/></attribute>
-        <interleave>
-          <zeroOrMore>
-            <text/>
-            <optional><ref name="xref"/></optional>
-          </zeroOrMore>
-        </interleave>
-      </element>
-    </zeroOrMore>
-  </define>
-
-  <define name="file">
-    <element name="file">
-      <attribute name="type">
-        <choice>
-          <value>legacy</value>
-          <value>mib</value>
-          <value>template</value>
-          <value>json</value>
-        </choice>
-      </attribute>
-      <optional>
-        <attribute name="name"/>
-      </optional>
-      <data type="anyURI"/>
-    </element>
-  </define>
-
-</grammar>
diff --git a/vendor/symfony/http-foundation/composer.json b/vendor/symfony/http-foundation/composer.json
index f30975114f6042dd57c221b9f2c4219bf2a8667e..79f4b396d0753326565a4ce1d99c6e13992f871b 100644
--- a/vendor/symfony/http-foundation/composer.json
+++ b/vendor/symfony/http-foundation/composer.json
@@ -16,13 +16,13 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
-        "symfony/mime": "^4.3",
+        "php": ">=7.1.3",
+        "symfony/mime": "^4.3|^5.0",
         "symfony/polyfill-mbstring": "~1.1"
     },
     "require-dev": {
         "predis/predis": "~1.0",
-        "symfony/expression-language": "~3.4|~4.0"
+        "symfony/expression-language": "^3.4|^4.0|^5.0"
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" },
@@ -30,10 +30,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/http-foundation/phpunit.xml.dist b/vendor/symfony/http-foundation/phpunit.xml.dist
deleted file mode 100644
index f57bc9e62d5eb37cc83a86db4459969d4c06864e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-foundation/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony HttpFoundation Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/http-kernel/.gitignore b/vendor/symfony/http-kernel/.gitignore
deleted file mode 100644
index 94a6a2528878364d8732c83d2234d177e4cd1862..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
-Tests/Fixtures/cache/
-Tests/Fixtures/logs/
diff --git a/vendor/symfony/http-kernel/Bundle/Bundle.php b/vendor/symfony/http-kernel/Bundle/Bundle.php
index a769e96034fabce5ccdf366ee1270f0ff8a7a6f8..e8057737ed9afdb7e56d69f69b38bb580a9366be 100644
--- a/vendor/symfony/http-kernel/Bundle/Bundle.php
+++ b/vendor/symfony/http-kernel/Bundle/Bundle.php
@@ -69,7 +69,7 @@ abstract class Bundle implements BundleInterface
 
             if (null !== $extension) {
                 if (!$extension instanceof ExtensionInterface) {
-                    throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', \get_class($extension)));
+                    throw new \LogicException(sprintf('Extension "%s" must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', \get_class($extension)));
                 }
 
                 // check naming convention
@@ -116,10 +116,8 @@ abstract class Bundle implements BundleInterface
 
     /**
      * Returns the bundle name (the class short name).
-     *
-     * @return string The Bundle name
      */
-    final public function getName()
+    final public function getName(): string
     {
         if (null === $this->name) {
             $this->parseClassName();
diff --git a/vendor/symfony/http-kernel/CHANGELOG.md b/vendor/symfony/http-kernel/CHANGELOG.md
index b1a5f5101b41d3ab12f44343b01f3a0201401e8c..08a8cfddd733232ff97086d07ff1e90620c86187 100644
--- a/vendor/symfony/http-kernel/CHANGELOG.md
+++ b/vendor/symfony/http-kernel/CHANGELOG.md
@@ -1,6 +1,29 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * The `DebugHandlersListener` class has been marked as `final`
+ * Added new Bundle directory convention consistent with standard skeletons
+ * Deprecated the second and third argument of `KernelInterface::locateResource`
+ * Deprecated the second and third argument of `FileLocator::__construct`
+ * Deprecated loading resources from `%kernel.root_dir%/Resources` and `%kernel.root_dir%` as
+   fallback directories. Resources like service definitions are usually loaded relative to the
+   current directory or with a glob pattern. The fallback directories have never been advocated
+   so you likely do not use those in any app based on the SF Standard or Flex edition.
+ * Marked all dispatched event classes as `@final`
+ * Added `ErrorController` to enable the preview and error rendering mechanism
+ * Getting the container from a non-booted kernel is deprecated.
+ * Marked the `AjaxDataCollector`, `ConfigDataCollector`, `EventDataCollector`,
+   `ExceptionDataCollector`, `LoggerDataCollector`, `MemoryDataCollector`,
+   `RequestDataCollector` and `TimeDataCollector` classes as `@final`.
+ * Marked the `RouterDataCollector::collect()` method as `@final`.
+ * The `DataCollectorInterface::collect()` and `Profiler::collect()` methods third parameter signature
+   will be `\Throwable $exception = null` instead of `\Exception $exception = null` in Symfony 5.0.
+ * Deprecated methods `ExceptionEvent::get/setException()`, use `get/setThrowable()` instead
+ * Deprecated class `ExceptionListener`, use `ErrorListener` instead
+
 4.3.0
 -----
 
@@ -31,8 +54,8 @@ CHANGELOG
 
  * deprecated `KernelInterface::getRootDir()` and the `kernel.root_dir` parameter
  * deprecated `KernelInterface::getName()` and the `kernel.name` parameter
- * deprecated the first and second constructor argument of `ConfigDataCollector` 
- * deprecated `ConfigDataCollector::getApplicationName()` 
+ * deprecated the first and second constructor argument of `ConfigDataCollector`
+ * deprecated `ConfigDataCollector::getApplicationName()`
  * deprecated `ConfigDataCollector::getApplicationVersion()`
 
 4.1.0
diff --git a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php b/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
index 47a6ece5c1e0e82790bd57f734e94dc47b1f39fe..f5670f1b97a40581a027d45c5fda6e06fd56791f 100644
--- a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
+++ b/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
@@ -31,7 +31,7 @@ class Psr6CacheClearer implements CacheClearerInterface
     public function getPool($name)
     {
         if (!$this->hasPool($name)) {
-            throw new \InvalidArgumentException(sprintf('Cache pool not found: %s.', $name));
+            throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name));
         }
 
         return $this->pools[$name];
@@ -40,7 +40,7 @@ class Psr6CacheClearer implements CacheClearerInterface
     public function clearPool($name)
     {
         if (!isset($this->pools[$name])) {
-            throw new \InvalidArgumentException(sprintf('Cache pool not found: %s.', $name));
+            throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name));
         }
 
         return $this->pools[$name]->clear();
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
index 57292e07f9bae48f8377640f03686fc32f4e6aee..baecfc5d30a73e5354b39af592617d2a0361512a 100644
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
+++ b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
@@ -53,7 +53,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface
         if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) {
             $collectedLogs = [];
             $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
-                if (E_USER_DEPRECATED !== $type && E_DEPRECATED !== $type) {
+                if (\E_USER_DEPRECATED !== $type && \E_DEPRECATED !== $type) {
                     return $previousHandler ? $previousHandler($type, $message, $file, $line) : false;
                 }
 
@@ -63,7 +63,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface
                     return null;
                 }
 
-                $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
+                $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3);
                 // Clean the trace by removing first frames added by the error handler itself.
                 for ($i = 0; isset($backtrace[$i]); ++$i) {
                     if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
@@ -115,7 +115,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface
      *
      * @return bool always false
      */
-    public function isOptional()
+    public function isOptional(): bool
     {
         return false;
     }
diff --git a/vendor/symfony/http-kernel/Client.php b/vendor/symfony/http-kernel/Client.php
index fba2562a6cb3cfad6872c0f0a900e20fb3a1ca94..f0dd66ece8de9208a71e9e846b19749fa94cf193 100644
--- a/vendor/symfony/http-kernel/Client.php
+++ b/vendor/symfony/http-kernel/Client.php
@@ -34,10 +34,7 @@ class Client extends AbstractBrowser
     private $catchExceptions = true;
 
     /**
-     * @param HttpKernelInterface $kernel    An HttpKernel instance
-     * @param array               $server    The server parameters (equivalent of $_SERVER)
-     * @param History             $history   A History instance to store the browser history
-     * @param CookieJar           $cookieJar A CookieJar instance to store the cookies
+     * @param array $server The server parameters (equivalent of $_SERVER)
      */
     public function __construct(HttpKernelInterface $kernel, array $server = [], History $history = null, CookieJar $cookieJar = null)
     {
@@ -169,7 +166,7 @@ EOF;
                         '',
                         $value->getClientOriginalName(),
                         $value->getClientMimeType(),
-                        UPLOAD_ERR_INI_SIZE,
+                        \UPLOAD_ERR_INI_SIZE,
                         true
                     );
                 } else {
diff --git a/vendor/symfony/http-kernel/Config/FileLocator.php b/vendor/symfony/http-kernel/Config/FileLocator.php
index f88d1684fe5592cd51f191b3ea9bf97ed2b6cfa1..5dc82b33dc4d12b7724cbecd1f1d0db8080960a1 100644
--- a/vendor/symfony/http-kernel/Config/FileLocator.php
+++ b/vendor/symfony/http-kernel/Config/FileLocator.php
@@ -22,19 +22,28 @@ use Symfony\Component\HttpKernel\KernelInterface;
 class FileLocator extends BaseFileLocator
 {
     private $kernel;
-    private $path;
 
     /**
-     * @param KernelInterface $kernel A KernelInterface instance
-     * @param string|null     $path   The path the global resource directory
-     * @param array           $paths  An array of paths where to look for resources
+     * @deprecated since Symfony 4.4
      */
-    public function __construct(KernelInterface $kernel, string $path = null, array $paths = [])
+    private $path;
+
+    public function __construct(KernelInterface $kernel/*, string $path = null, array $paths = [], bool $triggerDeprecation = true*/)
     {
         $this->kernel = $kernel;
-        if (null !== $path) {
-            $this->path = $path;
-            $paths[] = $path;
+
+        if (2 <= \func_num_args()) {
+            $this->path = func_get_arg(1);
+            $paths = 3 <= \func_num_args() ? func_get_arg(2) : [];
+            if (null !== $this->path) {
+                $paths[] = $this->path;
+            }
+
+            if (4 !== \func_num_args() || func_get_arg(3)) {
+                @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED);
+            }
+        } else {
+            $paths = [];
         }
 
         parent::__construct($paths);
@@ -46,9 +55,36 @@ class FileLocator extends BaseFileLocator
     public function locate($file, $currentPath = null, $first = true)
     {
         if (isset($file[0]) && '@' === $file[0]) {
-            return $this->kernel->locateResource($file, $this->path, $first);
+            return $this->kernel->locateResource($file, $this->path, $first, false);
+        }
+
+        $locations = parent::locate($file, $currentPath, $first);
+
+        if (isset($file[0]) && !(
+            '/' === $file[0] || '\\' === $file[0]
+            || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === $file[1] && ('\\' === $file[2] || '/' === $file[2]))
+            || null !== parse_url($file, \PHP_URL_SCHEME)
+        )) {
+            $deprecation = false;
+
+            // no need to trigger deprecations when the loaded file is given as absolute path
+            foreach ($this->paths as $deprecatedPath) {
+                foreach ((array) $locations as $location) {
+                    if (null !== $currentPath && 0 === strpos($location, $currentPath)) {
+                        return $locations;
+                    }
+
+                    if (0 === strpos($location, $deprecatedPath) && (null === $currentPath || false === strpos($location, $currentPath))) {
+                        $deprecation = sprintf('Loading the file "%s" from the global resource directory "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $file, $deprecatedPath);
+                    }
+                }
+            }
+
+            if ($deprecation) {
+                @trigger_error($deprecation, \E_USER_DEPRECATED);
+            }
         }
 
-        return parent::locate($file, $currentPath, $first);
+        return $locations;
     }
 }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
index 86ceab2f264c12450478149c75e1dda21d4392df..3504ae614f58e4efe68fc3c751c0262dc45d438e 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
@@ -43,7 +43,7 @@ final class ArgumentResolver implements ArgumentResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function getArguments(Request $request, $controller)
+    public function getArguments(Request $request, $controller): array
     {
         $arguments = [];
 
@@ -55,14 +55,16 @@ final class ArgumentResolver implements ArgumentResolverInterface
 
                 $resolved = $resolver->resolve($request, $metadata);
 
-                if (!$resolved instanceof \Generator) {
-                    throw new \InvalidArgumentException(sprintf('%s::resolve() must yield at least one value.', \get_class($resolver)));
-                }
-
+                $atLeastOne = false;
                 foreach ($resolved as $append) {
+                    $atLeastOne = true;
                     $arguments[] = $append;
                 }
 
+                if (!$atLeastOne) {
+                    throw new \InvalidArgumentException(sprintf('"%s::resolve()" must yield at least one value.', \get_class($resolver)));
+                }
+
                 // continue to the next controller argument
                 continue 2;
             }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
index e58fd3ab2bed7a2f9281e0fc5383e9cd2ca67dfa..32a0e071d68849928f48cac54bb880197761ee9c 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
@@ -25,7 +25,7 @@ final class DefaultValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return $argument->hasDefaultValue() || (null !== $argument->getType() && $argument->isNullable() && !$argument->isVariadic());
     }
@@ -33,7 +33,7 @@ final class DefaultValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $argument->hasDefaultValue() ? $argument->getDefaultValue() : null;
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
index 19e324dc2495723c8e4c670e41ac6ba7e9895678..d4971cc1a507481c54c5f94c8f8c562c93544e69 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
@@ -34,7 +34,7 @@ final class NotTaggedControllerValueResolver implements ArgumentValueResolverInt
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         $controller = $request->attributes->get('_controller');
 
@@ -58,7 +58,7 @@ final class NotTaggedControllerValueResolver implements ArgumentValueResolverInt
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         if (\is_array($controller = $request->attributes->get('_controller'))) {
             $controller = $controller[0].'::'.$controller[1];
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
index 05be372d845987afbe37b4573ba4d895098925de..c62d327b65a2c807d1eabc54d75a870b97968817 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
@@ -25,7 +25,7 @@ final class RequestAttributeValueResolver implements ArgumentValueResolverInterf
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return !$argument->isVariadic() && $request->attributes->has($argument->getName());
     }
@@ -33,7 +33,7 @@ final class RequestAttributeValueResolver implements ArgumentValueResolverInterf
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $request->attributes->get($argument->getName());
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
index 2a5060a612681bd547543e239699678774d474bd..75cbd97edbbfae9c1fae3d4a35d7917ddbd8929a 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
@@ -25,7 +25,7 @@ final class RequestValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return Request::class === $argument->getType() || is_subclass_of($argument->getType(), Request::class);
     }
@@ -33,7 +33,7 @@ final class RequestValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $request;
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
index e7df546b6680bbbf75c6b7a59ee09cfc7911f400..4ffb8c99eb4b5bc987d0a0591ab7819dba91151b 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
@@ -34,7 +34,7 @@ final class ServiceValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         $controller = $request->attributes->get('_controller');
 
@@ -58,7 +58,7 @@ final class ServiceValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         if (\is_array($controller = $request->attributes->get('_controller'))) {
             $controller = $controller[0].'::'.$controller[1];
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
index 276d65461caa67584520eed7fbc8b3f64ec1b458..a1e6b431595c3507ed1e192c218d1b12a277d7da 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
@@ -26,7 +26,7 @@ final class SessionValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         if (!$request->hasSession()) {
             return false;
@@ -43,7 +43,7 @@ final class SessionValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $request->getSession();
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
index 7ee2d7af5cee25231e9a6c234aa1766c429e5ea7..ed61420e67791aa6aa07ac968060124dfeeaf35e 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
@@ -25,7 +25,7 @@ final class VariadicValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return $argument->isVariadic() && $request->attributes->has($argument->getName());
     }
@@ -33,7 +33,7 @@ final class VariadicValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         $values = $request->attributes->get($argument->getName());
 
@@ -41,8 +41,6 @@ final class VariadicValueResolver implements ArgumentValueResolverInterface
             throw new \InvalidArgumentException(sprintf('The action argument "...$%1$s" is required to be an array, the request attribute "%1$s" contains a type of "%2$s" instead.', $argument->getName(), \gettype($values)));
         }
 
-        foreach ($values as $value) {
-            yield $value;
-        }
+        yield from $values;
     }
 }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php b/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
index 6b14ed5be32dea7d18a569c59ff966bc7a223fc6..1317707b1d5e7c6d587671948843e70d1c64277e 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
@@ -31,7 +31,7 @@ interface ArgumentValueResolverInterface
     /**
      * Returns the possible value(s).
      *
-     * @return \Generator
+     * @return iterable
      */
     public function resolve(Request $request, ArgumentMetadata $argument);
 }
diff --git a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php b/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
index e1da17388d70134345f10f74d6668eade1d35c99..7eb028de1f198b0e579b39e48bbb097bfe56d424 100644
--- a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
@@ -61,10 +61,10 @@ class ContainerControllerResolver extends ControllerResolver
         $this->throwExceptionIfControllerWasRemoved($class, $e);
 
         if ($e instanceof \ArgumentCountError) {
-            throw new \InvalidArgumentException(sprintf('Controller "%s" has required constructor arguments and does not exist in the container. Did you forget to define such a service?', $class), 0, $e);
+            throw new \InvalidArgumentException(sprintf('Controller "%s" has required constructor arguments and does not exist in the container. Did you forget to define the controller as a service?', $class), 0, $e);
         }
 
-        throw new \InvalidArgumentException(sprintf('Controller "%s" does neither exist as service nor as class', $class), 0, $e);
+        throw new \InvalidArgumentException(sprintf('Controller "%s" does neither exist as service nor as class.', $class), 0, $e);
     }
 
     private function throwExceptionIfControllerWasRemoved(string $controller, \Throwable $previous)
diff --git a/vendor/symfony/http-kernel/Controller/ControllerResolver.php b/vendor/symfony/http-kernel/Controller/ControllerResolver.php
index 7291c25da72800a11b78497fc44490373fd74164..44f34d8ee8359f2241504d1ef387f970862a4cc4 100644
--- a/vendor/symfony/http-kernel/Controller/ControllerResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ControllerResolver.php
@@ -64,7 +64,7 @@ class ControllerResolver implements ControllerResolverInterface
             }
 
             if (!\is_callable($controller)) {
-                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($controller)));
+                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($controller));
             }
 
             return $controller;
@@ -72,7 +72,7 @@ class ControllerResolver implements ControllerResolverInterface
 
         if (\is_object($controller)) {
             if (!\is_callable($controller)) {
-                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($controller)));
+                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($controller), $request->getPathInfo()));
             }
 
             return $controller;
@@ -85,11 +85,11 @@ class ControllerResolver implements ControllerResolverInterface
         try {
             $callable = $this->createController($controller);
         } catch (\InvalidArgumentException $e) {
-            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $e->getMessage()));
+            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$e->getMessage(), 0, $e);
         }
 
         if (!\is_callable($callable)) {
-            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($callable)));
+            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($callable), $request->getPathInfo()));
         }
 
         return $callable;
@@ -151,7 +151,7 @@ class ControllerResolver implements ControllerResolverInterface
         return new $class();
     }
 
-    private function getControllerError($callable)
+    private function getControllerError($callable): string
     {
         if (\is_string($callable)) {
             if (false !== strpos($callable, '::')) {
@@ -213,7 +213,7 @@ class ControllerResolver implements ControllerResolverInterface
         return $message;
     }
 
-    private function getClassMethodsWithoutMagicMethods($classOrObject)
+    private function getClassMethodsWithoutMagicMethods($classOrObject): array
     {
         $methods = get_class_methods($classOrObject);
 
diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
index e73b848e60025ad48f8b8164dbad5148cb6735fc..6fc7e703447f0c6118904ff654519ffa4ab63fae 100644
--- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
+++ b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
@@ -99,7 +99,7 @@ class ArgumentMetadata
     public function getDefaultValue()
     {
         if (!$this->hasDefaultValue) {
-            throw new \LogicException(sprintf('Argument $%s does not have a default value. Use %s::hasDefaultValue() to avoid this exception.', $this->name, __CLASS__));
+            throw new \LogicException(sprintf('Argument $%s does not have a default value. Use "%s::hasDefaultValue()" to avoid this exception.', $this->name, __CLASS__));
         }
 
         return $this->defaultValue;
diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
index 44fe4779458b114931ae01111da0566770421a95..05a68229a331a3226ec14ef1fa5b50c2438382c4 100644
--- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
+++ b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
@@ -21,7 +21,7 @@ final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface
     /**
      * {@inheritdoc}
      */
-    public function createArgumentMetadata($controller)
+    public function createArgumentMetadata($controller): array
     {
         $arguments = [];
 
@@ -48,22 +48,18 @@ final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface
         if (!$type = $parameter->getType()) {
             return null;
         }
-        $name = $type->getName();
-        $lcName = strtolower($name);
+        $name = $type instanceof \ReflectionNamedType ? $type->getName() : (string) $type;
 
-        if ('self' !== $lcName && 'parent' !== $lcName) {
-            return $name;
-        }
-        if (!$function instanceof \ReflectionMethod) {
-            return null;
-        }
-        if ('self' === $lcName) {
-            return $function->getDeclaringClass()->name;
-        }
-        if ($parent = $function->getDeclaringClass()->getParentClass()) {
-            return $parent->name;
+        if ($function instanceof \ReflectionMethod) {
+            $lcName = strtolower($name);
+            switch ($lcName) {
+                case 'self':
+                    return $function->getDeclaringClass()->name;
+                case 'parent':
+                    return ($parent = $function->getDeclaringClass()->getParentClass()) ? $parent->name : null;
+            }
         }
 
-        return null;
+        return $name;
     }
 }
diff --git a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
index 370a874fe5d5c6d1aaecf78743b0f34d01fde72a..356ce227e899308a3ce1b0ae7722e529c73c04d7 100644
--- a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
@@ -18,10 +18,17 @@ use Symfony\Component\HttpFoundation\Response;
  * AjaxDataCollector.
  *
  * @author Bart van den Burg <bart@burgov.nl>
+ *
+ * @final since Symfony 4.4
  */
 class AjaxDataCollector extends DataCollector
 {
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    /**
+     * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
+     */
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         // all collecting is done client side
     }
diff --git a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
index 7000e70d5c8794dbf67a8e53598d230222f718e7..f005f1d9705c404be62f916854b0af56f1b9d12a 100644
--- a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
@@ -15,10 +15,12 @@ use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Kernel;
 use Symfony\Component\HttpKernel\KernelInterface;
-use Symfony\Component\VarDumper\Caster\LinkStub;
+use Symfony\Component\VarDumper\Caster\ClassStub;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class ConfigDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -28,20 +30,18 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
     private $kernel;
     private $name;
     private $version;
-    private $hasVarDumper;
 
     public function __construct(string $name = null, string $version = null)
     {
         if (1 <= \func_num_args()) {
-            @trigger_error(sprintf('The "$name" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "$name" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
         }
         if (2 <= \func_num_args()) {
-            @trigger_error(sprintf('The "$version" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "$version" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         $this->name = $name;
         $this->version = $version;
-        $this->hasVarDumper = class_exists(LinkStub::class);
     }
 
     /**
@@ -54,8 +54,10 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->data = [
             'app_name' => $this->name,
@@ -65,26 +67,27 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
             'symfony_state' => 'unknown',
             'env' => isset($this->kernel) ? $this->kernel->getEnvironment() : 'n/a',
             'debug' => isset($this->kernel) ? $this->kernel->isDebug() : 'n/a',
-            'php_version' => PHP_VERSION,
-            'php_architecture' => PHP_INT_SIZE * 8,
+            'php_version' => \PHP_VERSION,
+            'php_architecture' => \PHP_INT_SIZE * 8,
             'php_intl_locale' => class_exists('Locale', false) && \Locale::getDefault() ? \Locale::getDefault() : 'n/a',
             'php_timezone' => date_default_timezone_get(),
             'xdebug_enabled' => \extension_loaded('xdebug'),
-            'apcu_enabled' => \extension_loaded('apcu') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN),
-            'zend_opcache_enabled' => \extension_loaded('Zend OPcache') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN),
+            'apcu_enabled' => \extension_loaded('apcu') && filter_var(ini_get('apc.enabled'), \FILTER_VALIDATE_BOOLEAN),
+            'zend_opcache_enabled' => \extension_loaded('Zend OPcache') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN),
             'bundles' => [],
             'sapi_name' => \PHP_SAPI,
         ];
 
         if (isset($this->kernel)) {
             foreach ($this->kernel->getBundles() as $name => $bundle) {
-                $this->data['bundles'][$name] = $this->hasVarDumper ? new LinkStub($bundle->getPath()) : $bundle->getPath();
+                $this->data['bundles'][$name] = new ClassStub(\get_class($bundle));
             }
 
             $this->data['symfony_state'] = $this->determineSymfonyState();
             $this->data['symfony_minor_version'] = sprintf('%s.%s', Kernel::MAJOR_VERSION, Kernel::MINOR_VERSION);
-            $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE);
-            $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE);
+            $this->data['symfony_lts'] = 4 === Kernel::MINOR_VERSION;
+            $eom = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_MAINTENANCE);
+            $eol = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_LIFE);
             $this->data['symfony_eom'] = $eom->format('F Y');
             $this->data['symfony_eol'] = $eol->format('F Y');
         }
@@ -113,7 +116,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      */
     public function getApplicationName()
     {
-        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->data['app_name'];
     }
@@ -123,7 +126,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      */
     public function getApplicationVersion()
     {
-        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->data['app_version'];
     }
@@ -169,6 +172,14 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
         return $this->data['symfony_minor_version'];
     }
 
+    /**
+     * Returns if the current Symfony version is a Long-Term Support one.
+     */
+    public function isSymfonyLts(): bool
+    {
+        return $this->data['symfony_lts'];
+    }
+
     /**
      * Returns the human redable date when this Symfony version ends its
      * maintenance period.
@@ -244,7 +255,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      */
     public function getAppName()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
 
         return 'n/a';
     }
@@ -327,11 +338,11 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      *
      * @return string One of: dev, stable, eom, eol
      */
-    private function determineSymfonyState()
+    private function determineSymfonyState(): string
     {
         $now = new \DateTime();
-        $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE)->modify('last day of this month');
-        $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE)->modify('last day of this month');
+        $eom = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_MAINTENANCE)->modify('last day of this month');
+        $eol = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_LIFE)->modify('last day of this month');
 
         if ($now > $eol) {
             $versionState = 'eol';
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollector.php b/vendor/symfony/http-kernel/DataCollector/DataCollector.php
index 52ab90c669277fdf203c360261e8e300474c0f36..832a5d9ebfd759351f3c148e6879980a6d7fe9e4 100644
--- a/vendor/symfony/http-kernel/DataCollector/DataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/DataCollector.php
@@ -43,9 +43,9 @@ abstract class DataCollector implements DataCollectorInterface
      */
     public function serialize()
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED);
 
-        $trace = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
+        $trace = debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
         $isCalledFromOverridingMethod = isset($trace[1]['function'], $trace[1]['object']) && 'serialize' === $trace[1]['function'] && $this === $trace[1]['object'];
 
         return $isCalledFromOverridingMethod ? $this->data : serialize($this->data);
@@ -56,7 +56,7 @@ abstract class DataCollector implements DataCollectorInterface
      */
     public function unserialize($data)
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->data = \is_array($data) ? $data : unserialize($data);
     }
@@ -77,9 +77,6 @@ abstract class DataCollector implements DataCollectorInterface
             return $var;
         }
         if (null === $this->cloner) {
-            if (!class_exists(CutStub::class)) {
-                throw new \LogicException(sprintf('The VarDumper component is needed for the %s() method. Install symfony/var-dumper version 3.4 or above.', __METHOD__));
-            }
             $this->cloner = new VarCloner();
             $this->cloner->setMaxItems(-1);
             $this->cloner->addCasters($this->getCasters());
@@ -105,19 +102,18 @@ abstract class DataCollector implements DataCollectorInterface
 
                 return $a;
             },
-        ];
-
-        if (method_exists(ReflectionCaster::class, 'unsetClosureFileInfo')) {
-            $casters += ReflectionCaster::UNSET_CLOSURE_FILE_INFO;
-        }
+        ] + ReflectionCaster::UNSET_CLOSURE_FILE_INFO;
 
         return $casters;
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED);
             $this->data = $this->serialize();
         }
 
@@ -127,7 +123,7 @@ abstract class DataCollector implements DataCollectorInterface
     public function __wakeup()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'unserialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::unserialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::unserialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED);
             $this->unserialize($this->data);
         }
     }
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
index b9584110ecb7148f6a90096751446ed167e566fa..a302ad30095725551ef0d7b02ff3644afcac995c 100644
--- a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
+++ b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
@@ -24,8 +24,10 @@ interface DataCollectorInterface extends ResetInterface
 {
     /**
      * Collects data for the given Request and Response.
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null);
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/);
 
     /**
      * Returns the name of the collector.
diff --git a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
index 577eb2ca2e4555c750e00387cd5d146c7e49eb86..4e430f8f37e9925394cdb10eac902b8d39e7a90a 100644
--- a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
@@ -98,7 +98,12 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
         }
     }
 
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    /**
+     * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
+     */
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         if (!$this->dataCount) {
             $this->data = [];
@@ -148,7 +153,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
     /**
      * @internal
      */
-    public function __sleep()
+    public function __sleep(): array
     {
         if (!$this->dataCount) {
             $this->data = [];
@@ -193,7 +198,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
             $dumper = new HtmlDumper($data, $this->charset);
             $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
         } else {
-            throw new \InvalidArgumentException(sprintf('Invalid dump format: %s', $format));
+            throw new \InvalidArgumentException(sprintf('Invalid dump format: "%s".', $format));
         }
         $dumps = [];
 
@@ -230,13 +235,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
                 --$i;
             }
 
-            if (isset($_SERVER['VAR_DUMPER_FORMAT'])) {
-                $html = 'html' === $_SERVER['VAR_DUMPER_FORMAT'];
-            } else {
-                $html = !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && stripos($h[$i], 'html');
-            }
-
-            if ($html) {
+            if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && stripos($h[$i], 'html')) {
                 $dumper = new HtmlDumper('php://output', $this->charset);
                 $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
             } else {
@@ -256,7 +255,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
         }
     }
 
-    private function doDump(DataDumperInterface $dumper, $data, $name, $file, $line)
+    private function doDump(DataDumperInterface $dumper, $data, string $name, string $file, int $line)
     {
         if ($dumper instanceof CliDumper) {
             $contextDumper = function ($name, $file, $line, $fmt) {
diff --git a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
index 639757024c6f956024a2c7053b754d14cacca48f..89fd18338688fa0f3c2bd6db4d297f1c7f4ee298 100644
--- a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
@@ -23,6 +23,8 @@ use Symfony\Contracts\Service\ResetInterface;
  * EventDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class EventDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -38,8 +40,10 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
         $this->data = [
diff --git a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
index f9be5bddfff1f576968527d4669fbcb57e81acbb..222cae5d2d24c1c7b84e39acaa343e8ebc3c6627 100644
--- a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\DataCollector;
 
-use Symfony\Component\Debug\Exception\FlattenException;
+use Symfony\Component\ErrorHandler\Exception\FlattenException;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 
@@ -19,17 +19,23 @@ use Symfony\Component\HttpFoundation\Response;
  * ExceptionDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class ExceptionDataCollector extends DataCollector
 {
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
+        $exception = 2 < \func_num_args() ? func_get_arg(2) : null;
+
         if (null !== $exception) {
             $this->data = [
-                'exception' => FlattenException::create($exception),
+                'exception' => FlattenException::createFromThrowable($exception),
             ];
         }
     }
diff --git a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
index d6cca047b97942749cf2e7911d70e35d62fcb86b..07dd254d33957e0ca2ec24234c31eb795d28e13b 100644
--- a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\DataCollector;
 
-use Symfony\Component\Debug\Exception\SilencedErrorContext;
+use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpFoundation\Response;
@@ -21,6 +21,8 @@ use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
  * LogDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class LoggerDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -41,8 +43,10 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
     }
@@ -118,7 +122,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         return 'logger';
     }
 
-    private function getContainerDeprecationLogs()
+    private function getContainerDeprecationLogs(): array
     {
         if (null === $this->containerPathPrefix || !file_exists($file = $this->containerPathPrefix.'Deprecations.log')) {
             return [];
@@ -151,7 +155,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         }
 
         $logs = [];
-        foreach (file($compilerLogsFilepath, FILE_IGNORE_NEW_LINES) as $log) {
+        foreach (file($compilerLogsFilepath, \FILE_IGNORE_NEW_LINES) as $log) {
             $log = explode(': ', $log, 2);
             if (!isset($log[1]) || !preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)++$/', $log[0])) {
                 $log = ['Unknown Compiler Pass', implode(': ', $log)];
@@ -163,7 +167,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         return $logs;
     }
 
-    private function sanitizeLogs($logs)
+    private function sanitizeLogs(array $logs)
     {
         $sanitizedLogs = [];
         $silencedLogs = [];
@@ -175,7 +179,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
                 continue;
             }
 
-            $message = $log['message'];
+            $message = '_'.$log['message'];
             $exception = $log['context']['exception'];
 
             if ($exception instanceof SilencedErrorContext) {
@@ -212,7 +216,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         return array_values($sanitizedLogs);
     }
 
-    private function isSilencedOrDeprecationErrorLog(array $log)
+    private function isSilencedOrDeprecationErrorLog(array $log): bool
     {
         if (!isset($log['context']['exception'])) {
             return false;
@@ -224,14 +228,14 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
             return true;
         }
 
-        if ($exception instanceof \ErrorException && \in_array($exception->getSeverity(), [E_DEPRECATED, E_USER_DEPRECATED], true)) {
+        if ($exception instanceof \ErrorException && \in_array($exception->getSeverity(), [\E_DEPRECATED, \E_USER_DEPRECATED], true)) {
             return true;
         }
 
         return false;
     }
 
-    private function computeErrorsCount(array $containerDeprecationLogs)
+    private function computeErrorsCount(array $containerDeprecationLogs): array
     {
         $silencedLogs = [];
         $count = [
diff --git a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
index 7a6e1c06464469a81da283b733908b4ce3be7fff..7ffcdab41dca42de95abc39115c81f2b8a8aeeb1 100644
--- a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
@@ -18,6 +18,8 @@ use Symfony\Component\HttpFoundation\Response;
  * MemoryDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class MemoryDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -28,8 +30,10 @@ class MemoryDataCollector extends DataCollector implements LateDataCollectorInte
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->updateMemoryUsage();
     }
@@ -89,7 +93,10 @@ class MemoryDataCollector extends DataCollector implements LateDataCollectorInte
         return 'memory';
     }
 
-    private function convertToBytes($memoryLimit)
+    /**
+     * @return int|float
+     */
+    private function convertToBytes(string $memoryLimit)
     {
         if ('-1' === $memoryLimit) {
             return -1;
diff --git a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
index 32624c963fa0783deca4c6ad478d2938e0872583..ba68c6b99af25c0727e30d4c26e106c6d6fc6dd9 100644
--- a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
@@ -22,6 +22,8 @@ use Symfony\Component\HttpKernel\KernelEvents;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class RequestDataCollector extends DataCollector implements EventSubscriberInterface, LateDataCollectorInterface
 {
@@ -34,8 +36,10 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         // attributes are serialized and as they can be anything, they need to be converted to strings.
         $attributes = [];
@@ -49,7 +53,6 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
             }
         }
 
-        $content = null;
         try {
             $content = $request->getContent();
         } catch (\LogicException $e) {
@@ -59,13 +62,12 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
 
         $sessionMetadata = [];
         $sessionAttributes = [];
-        $session = null;
         $flashes = [];
         if ($request->hasSession()) {
             $session = $request->getSession();
             if ($session->isStarted()) {
-                $sessionMetadata['Created'] = date(DATE_RFC822, $session->getMetadataBag()->getCreated());
-                $sessionMetadata['Last used'] = date(DATE_RFC822, $session->getMetadataBag()->getLastUsed());
+                $sessionMetadata['Created'] = date(\DATE_RFC822, $session->getMetadataBag()->getCreated());
+                $sessionMetadata['Last used'] = date(\DATE_RFC822, $session->getMetadataBag()->getLastUsed());
                 $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime();
                 $sessionAttributes = $session->all();
                 $flashes = $session->getFlashBag()->peekAll();
@@ -80,9 +82,9 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
         }
 
         $dotenvVars = [];
-        foreach (explode(',', getenv('SYMFONY_DOTENV_VARS')) as $name) {
-            if ('' !== $name && false !== $value = getenv($name)) {
-                $dotenvVars[$name] = $value;
+        foreach (explode(',', $_SERVER['SYMFONY_DOTENV_VARS'] ?? $_ENV['SYMFONY_DOTENV_VARS'] ?? '') as $name) {
+            if ('' !== $name && isset($_ENV[$name])) {
+                $dotenvVars[$name] = $_ENV[$name];
             }
         }
 
@@ -261,7 +263,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
     {
         $decoded = json_decode($this->getContent());
 
-        return JSON_ERROR_NONE === json_last_error() ? json_encode($decoded, JSON_PRETTY_PRINT) : null;
+        return \JSON_ERROR_NONE === json_last_error() ? json_encode($decoded, \JSON_PRETTY_PRINT) : null;
     }
 
     public function getContentType()
diff --git a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
index 65fc90dc1921e0206a131c3bb47ea86915fb9070..5f12392330883ff2116e7f19c79056b015a0460f 100644
--- a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
@@ -33,8 +33,12 @@ class RouterDataCollector extends DataCollector
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
+     *
+     * @final since Symfony 4.4
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         if ($response instanceof RedirectResponse) {
             $this->data['redirect'] = true;
diff --git a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
index cb490c2bb37d0ee9bce3dcf3f7bb66e3cb3fa7ed..7c0cdaa90d7d1600a051959dfc71ceed176231ab 100644
--- a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
@@ -19,6 +19,8 @@ use Symfony\Component\Stopwatch\StopwatchEvent;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class TimeDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -33,8 +35,10 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         if (null !== $this->kernel) {
             $startTime = $this->kernel->getStartTime();
diff --git a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php b/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
index 6878258958587fa889dffb7a55ef092cf3041dbe..6d7c1e942e616226522b720de4158e35926cb5b6 100644
--- a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
+++ b/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
@@ -13,7 +13,6 @@ namespace Symfony\Component\HttpKernel\Debug;
 
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Routing\Exception\ExceptionInterface;
 use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
 
 /**
@@ -38,7 +37,7 @@ class FileLinkFormatter
         $fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
         if ($fileLinkFormat && !\is_array($fileLinkFormat)) {
             $i = strpos($f = $fileLinkFormat, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f);
-            $fileLinkFormat = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, PREG_SPLIT_DELIM_CAPTURE);
+            $fileLinkFormat = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE);
         }
 
         $this->fileLinkFormat = $fileLinkFormat;
@@ -80,7 +79,7 @@ class FileLinkFormatter
     {
         try {
             return $router->generate($routeName).$queryString;
-        } catch (ExceptionInterface $e) {
+        } catch (\Throwable $e) {
             return null;
         }
     }
diff --git a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php b/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
index 2659d34de649dce12d93aa6d84eb8944799290f9..5eb833b51d0742c1d566d1433af1a71f57d59767 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
@@ -12,9 +12,10 @@
 namespace Symfony\Component\HttpKernel\DependencyInjection;
 
 use Composer\Autoload\ClassLoader;
-use Symfony\Component\Debug\DebugClassLoader;
+use Symfony\Component\Debug\DebugClassLoader as LegacyDebugClassLoader;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\ErrorHandler\DebugClassLoader;
 use Symfony\Component\HttpKernel\Kernel;
 
 /**
@@ -54,10 +55,8 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
      *
      * @param array $patterns The class patterns to expand
      * @param array $classes  The existing classes to match against the patterns
-     *
-     * @return array A list of classes derived from the patterns
      */
-    private function expandClasses(array $patterns, array $classes)
+    private function expandClasses(array $patterns, array $classes): array
     {
         $expanded = [];
 
@@ -83,7 +82,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
         return array_unique($expanded);
     }
 
-    private function getClassesInComposerClassMaps()
+    private function getClassesInComposerClassMaps(): array
     {
         $classes = [];
 
@@ -92,7 +91,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
                 continue;
             }
 
-            if ($function[0] instanceof DebugClassLoader) {
+            if ($function[0] instanceof DebugClassLoader || $function[0] instanceof LegacyDebugClassLoader) {
                 $function = $function[0]->getClassLoader();
             }
 
@@ -104,7 +103,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
         return array_keys($classes);
     }
 
-    private function patternsToRegexps($patterns)
+    private function patternsToRegexps(array $patterns): array
     {
         $regexps = [];
 
@@ -126,12 +125,12 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
         return $regexps;
     }
 
-    private function matchAnyRegexps($class, $regexps)
+    private function matchAnyRegexps(string $class, array $regexps): bool
     {
-        $blacklisted = false !== strpos($class, 'Test');
+        $isTest = false !== strpos($class, 'Test');
 
         foreach ($regexps as $regex) {
-            if ($blacklisted && false === strpos($regex, 'Test')) {
+            if ($isTest && false === strpos($regex, 'Test')) {
                 continue;
             }
 
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
index a3f5012e3268ff73d1886275ea575b49af29fa4f..f214fd125a3ef0e3e555268ba9b3ffa666a0e7ca 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
@@ -93,7 +93,7 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
                 }
                 foreach (['action', 'argument', 'id'] as $k) {
                     if (!isset($attributes[$k][0])) {
-                        throw new InvalidArgumentException(sprintf('Missing "%s" attribute on tag "%s" %s for service "%s".', $k, $this->controllerTag, json_encode($attributes, JSON_UNESCAPED_UNICODE), $id));
+                        throw new InvalidArgumentException(sprintf('Missing "%s" attribute on tag "%s" %s for service "%s".', $k, $this->controllerTag, json_encode($attributes, \JSON_UNESCAPED_UNICODE), $id));
                     }
                 }
                 if (!isset($methods[$action = strtolower($attributes['action'])])) {
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php b/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
index c1199f639edf8f2fda5ea60ec37dd0edb4699cc1..b5e46106a7422eb41ff14b4999dd46aaee9ea657 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
@@ -43,16 +43,21 @@ class ResettableServicePass implements CompilerPassInterface
 
         foreach ($container->findTaggedServiceIds($this->tagName, true) as $id => $tags) {
             $services[$id] = new Reference($id, ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE);
-            $attributes = $tags[0];
 
-            if (!isset($attributes['method'])) {
-                throw new RuntimeException(sprintf('Tag %s requires the "method" attribute to be set.', $this->tagName));
-            }
+            foreach ($tags as $attributes) {
+                if (!isset($attributes['method'])) {
+                    throw new RuntimeException(sprintf('Tag "%s" requires the "method" attribute to be set.', $this->tagName));
+                }
+
+                if (!isset($methods[$id])) {
+                    $methods[$id] = [];
+                }
 
-            $methods[$id] = $attributes['method'];
+                $methods[$id][] = $attributes['method'];
+            }
         }
 
-        if (empty($services)) {
+        if (!$services) {
             $container->removeAlias('services_resetter');
             $container->removeDefinition('services_resetter');
 
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php b/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
index 734fadbd74176180d7672571dbad7df64a1e1c3f..d9e0028ce12278bd9ecbb635cd6ebaa23a31a89e 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
@@ -35,7 +35,9 @@ class ServicesResetter implements ResetInterface
     public function reset()
     {
         foreach ($this->resettableServices as $id => $service) {
-            $service->{$this->resetMethods[$id]}();
+            foreach ((array) $this->resetMethods[$id] as $resetMethod) {
+                $service->$resetMethod();
+            }
         }
     }
 }
diff --git a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php b/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
index 3dc6ea50ede17347f7432fca5344c85ed38e41b8..5efb80cf8f44f259375667db05851134d161239d 100644
--- a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
+++ b/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
@@ -22,6 +22,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * controller.
  *
  * @author Christophe Coevoet <stof@notk.org>
+ *
+ * @final since Symfony 4.4
  */
 class ControllerArgumentsEvent extends FilterControllerArgumentsEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/ControllerEvent.php b/vendor/symfony/http-kernel/Event/ControllerEvent.php
index 9afb818a1d4f6f7249fe4bc5d7035e528e336391..7b642eaa335328f47364268819c2bbba22ddd16d 100644
--- a/vendor/symfony/http-kernel/Event/ControllerEvent.php
+++ b/vendor/symfony/http-kernel/Event/ControllerEvent.php
@@ -21,6 +21,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * Controllers should be callables.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ControllerEvent extends FilterControllerEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/ExceptionEvent.php b/vendor/symfony/http-kernel/Event/ExceptionEvent.php
index d3b2d8f6061f33594de04ff29603e70575cf33c4..3dae0d4ce69a2818525ee5250cc08eb8af26cb02 100644
--- a/vendor/symfony/http-kernel/Event/ExceptionEvent.php
+++ b/vendor/symfony/http-kernel/Event/ExceptionEvent.php
@@ -23,6 +23,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * event.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ExceptionEvent extends GetResponseForExceptionEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
index ee724843cd843b6adbdcc16d87482f97a7304944..9374d2db954eda88407e5222db2014cfd88f7558 100644
--- a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
+++ b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
@@ -15,6 +15,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * Triggered whenever a request is fully processed.
  *
  * @author Benjamin Eberlei <kontakt@beberlei.de>
+ *
+ * @final since Symfony 4.4
  */
 class FinishRequestEvent extends KernelEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
index 3476c7e62a0ccd596b55e67a9fc95b89fada412f..bfec654ed5570c8de99e0cdf073d06ab7d6dd9ee 100644
--- a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
+++ b/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\Event;
 
+use Symfony\Component\Debug\Exception\FatalThrowableError;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 
@@ -19,45 +20,55 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
  */
 class GetResponseForExceptionEvent extends RequestEvent
 {
-    /**
-     * The exception object.
-     *
-     * @var \Exception
-     */
+    private $throwable;
     private $exception;
-
-    /**
-     * @var bool
-     */
     private $allowCustomResponseCode = false;
 
-    public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Exception $e)
+    public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Throwable $e)
     {
         parent::__construct($kernel, $request, $requestType);
 
-        $this->setException($e);
+        $this->setThrowable($e);
+    }
+
+    public function getThrowable(): \Throwable
+    {
+        return $this->throwable;
+    }
+
+    /**
+     * Replaces the thrown exception.
+     *
+     * This exception will be thrown if no response is set in the event.
+     */
+    public function setThrowable(\Throwable $exception): void
+    {
+        $this->exception = null;
+        $this->throwable = $exception;
     }
 
     /**
-     * Returns the thrown exception.
+     * @deprecated since Symfony 4.4, use getThrowable instead
      *
      * @return \Exception The thrown exception
      */
     public function getException()
     {
-        return $this->exception;
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "getThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
+
+        return $this->exception ?? $this->exception = $this->throwable instanceof \Exception ? $this->throwable : new FatalThrowableError($this->throwable);
     }
 
     /**
-     * Replaces the thrown exception.
-     *
-     * This exception will be thrown if no response is set in the event.
+     * @deprecated since Symfony 4.4, use setThrowable instead
      *
      * @param \Exception $exception The thrown exception
      */
     public function setException(\Exception $exception)
     {
-        $this->exception = $exception;
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "setThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
+
+        $this->throwable = $this->exception = $exception;
     }
 
     /**
diff --git a/vendor/symfony/http-kernel/Event/KernelEvent.php b/vendor/symfony/http-kernel/Event/KernelEvent.php
index f3db8a60d9ec23d884ba71179e5d639805257820..f6dff06ac855ed19c9c1f442b9496972ced81447 100644
--- a/vendor/symfony/http-kernel/Event/KernelEvent.php
+++ b/vendor/symfony/http-kernel/Event/KernelEvent.php
@@ -27,10 +27,8 @@ class KernelEvent extends Event
     private $requestType;
 
     /**
-     * @param HttpKernelInterface $kernel      The kernel in which this event was thrown
-     * @param Request             $request     The request the kernel is currently processing
-     * @param int                 $requestType The request type the kernel is currently processing; one of
-     *                                         HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST
+     * @param int $requestType The request type the kernel is currently processing; one of
+     *                         HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST
      */
     public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType)
     {
diff --git a/vendor/symfony/http-kernel/Event/ResponseEvent.php b/vendor/symfony/http-kernel/Event/ResponseEvent.php
index 88c1996eaa95ba503fcda646d1962af9220614e1..eae8c39cc3358eb19331a380aff09974e0a8a59b 100644
--- a/vendor/symfony/http-kernel/Event/ResponseEvent.php
+++ b/vendor/symfony/http-kernel/Event/ResponseEvent.php
@@ -19,6 +19,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * browser.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ResponseEvent extends FilterResponseEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/TerminateEvent.php b/vendor/symfony/http-kernel/Event/TerminateEvent.php
index 6ce23e43f310d6c3f83bb69c696b850e0104504a..6a74445d6781d79d96216171831a680dd0598d00 100644
--- a/vendor/symfony/http-kernel/Event/TerminateEvent.php
+++ b/vendor/symfony/http-kernel/Event/TerminateEvent.php
@@ -18,6 +18,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * will always return the value of `HttpKernelInterface::MASTER_REQUEST`.
  *
  * @author Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * @final since Symfony 4.4
  */
 class TerminateEvent extends PostResponseEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/ViewEvent.php b/vendor/symfony/http-kernel/Event/ViewEvent.php
index 1cb7e23980ba995d87f93fc81525abcedb2efd04..da50da82a9fcdb88c010e60a008fb4e20fa52b28 100644
--- a/vendor/symfony/http-kernel/Event/ViewEvent.php
+++ b/vendor/symfony/http-kernel/Event/ViewEvent.php
@@ -19,6 +19,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * response is set.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ViewEvent extends GetResponseForControllerResultEvent
 {
diff --git a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php b/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
index 054695e6f2ab4cf0c5603a462ddb09e8eaf940f3..86f179add761be59e56478909dbee37e246b50bc 100644
--- a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
@@ -46,8 +46,7 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface
         }
 
         // bootstrap the session
-        $session = $this->getSession();
-        if (!$session) {
+        if (!$session = $this->getSession()) {
             return;
         }
 
diff --git a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
index b28ad7b83e5e4a725f252f6f3c8403456b165c02..f4781ccd8ec2f65ba302ca2f336af31599205f1e 100644
--- a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
+++ b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
@@ -15,14 +15,12 @@ use Psr\Log\LoggerInterface;
 use Symfony\Component\Console\ConsoleEvents;
 use Symfony\Component\Console\Event\ConsoleEvent;
 use Symfony\Component\Console\Output\ConsoleOutputInterface;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\ExceptionHandler;
+use Symfony\Component\Debug\ErrorHandler as LegacyErrorHandler;
+use Symfony\Component\Debug\Exception\FatalThrowableError;
+use Symfony\Component\ErrorHandler\ErrorHandler;
 use Symfony\Component\EventDispatcher\Event;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 use Symfony\Component\HttpKernel\Event\KernelEvent;
 use Symfony\Component\HttpKernel\KernelEvents;
 
@@ -30,6 +28,8 @@ use Symfony\Component\HttpKernel\KernelEvents;
  * Configures errors and exceptions handlers.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @final since Symfony 4.4
  */
 class DebugHandlersListener implements EventSubscriberInterface
 {
@@ -40,29 +40,26 @@ class DebugHandlersListener implements EventSubscriberInterface
     private $scream;
     private $fileLinkFormat;
     private $scope;
-    private $charset;
     private $firstCall = true;
     private $hasTerminatedWithException;
 
     /**
-     * @param callable|null                 $exceptionHandler A handler that will be called on Exception
-     * @param LoggerInterface|null          $logger           A PSR-3 logger
+     * @param callable|null                 $exceptionHandler A handler that must support \Throwable instances that will be called on Exception
      * @param array|int                     $levels           An array map of E_* to LogLevel::* or an integer bit field of E_* constants
      * @param int|null                      $throwAt          Thrown errors in a bit field of E_* constants, or null to keep the current value
      * @param bool                          $scream           Enables/disables screaming mode, where even silenced errors are logged
      * @param string|FileLinkFormatter|null $fileLinkFormat   The format for links to source files
      * @param bool                          $scope            Enables/disables scoping mode
      */
-    public function __construct(callable $exceptionHandler = null, LoggerInterface $logger = null, $levels = E_ALL, ?int $throwAt = E_ALL, bool $scream = true, $fileLinkFormat = null, bool $scope = true, string $charset = null)
+    public function __construct(callable $exceptionHandler = null, LoggerInterface $logger = null, $levels = \E_ALL, ?int $throwAt = \E_ALL, bool $scream = true, $fileLinkFormat = null, bool $scope = true)
     {
         $this->exceptionHandler = $exceptionHandler;
         $this->logger = $logger;
-        $this->levels = null === $levels ? E_ALL : $levels;
-        $this->throwAt = \is_int($throwAt) ? $throwAt : (null === $throwAt ? null : ($throwAt ? E_ALL : null));
+        $this->levels = null === $levels ? \E_ALL : $levels;
+        $this->throwAt = \is_int($throwAt) ? $throwAt : (null === $throwAt ? null : ($throwAt ? \E_ALL : null));
         $this->scream = $scream;
         $this->fileLinkFormat = $fileLinkFormat;
         $this->scope = $scope;
-        $this->charset = $charset;
     }
 
     /**
@@ -70,6 +67,9 @@ class DebugHandlersListener implements EventSubscriberInterface
      */
     public function configure(Event $event = null)
     {
+        if ($event instanceof ConsoleEvent && !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
+            return;
+        }
         if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMasterRequest()) {
             return;
         }
@@ -80,7 +80,7 @@ class DebugHandlersListener implements EventSubscriberInterface
         restore_exception_handler();
 
         if ($this->logger || null !== $this->throwAt) {
-            if ($handler instanceof ErrorHandler) {
+            if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) {
                 if ($this->logger) {
                     $handler->setDefaultLogger($this->logger, $this->levels);
                     if (\is_array($this->levels)) {
@@ -95,7 +95,7 @@ class DebugHandlersListener implements EventSubscriberInterface
                         $handler->screamAt($levels);
                     }
                     if ($this->scope) {
-                        $handler->scopeAt($levels & ~E_USER_DEPRECATED & ~E_DEPRECATED);
+                        $handler->scopeAt($levels & ~\E_USER_DEPRECATED & ~\E_DEPRECATED);
                     } else {
                         $handler->scopeAt(0, true);
                     }
@@ -111,10 +111,11 @@ class DebugHandlersListener implements EventSubscriberInterface
                 if (method_exists($kernel = $event->getKernel(), 'terminateWithException')) {
                     $request = $event->getRequest();
                     $hasRun = &$this->hasTerminatedWithException;
-                    $this->exceptionHandler = static function (\Exception $e) use ($kernel, $request, &$hasRun) {
+                    $this->exceptionHandler = static function (\Throwable $e) use ($kernel, $request, &$hasRun) {
                         if ($hasRun) {
                             throw $e;
                         }
+
                         $hasRun = true;
                         $kernel->terminateWithException($e, $request);
                     };
@@ -124,61 +125,35 @@ class DebugHandlersListener implements EventSubscriberInterface
                 if ($output instanceof ConsoleOutputInterface) {
                     $output = $output->getErrorOutput();
                 }
-                $this->exceptionHandler = function ($e) use ($app, $output) {
-                    $app->renderException($e, $output);
+                $this->exceptionHandler = static function (\Throwable $e) use ($app, $output) {
+                    if (method_exists($app, 'renderThrowable')) {
+                        $app->renderThrowable($e, $output);
+                    } else {
+                        if (!$e instanceof \Exception) {
+                            $e = new FatalThrowableError($e);
+                        }
+
+                        $app->renderException($e, $output);
+                    }
                 };
             }
         }
         if ($this->exceptionHandler) {
-            if ($handler instanceof ErrorHandler) {
-                $h = $handler->setExceptionHandler('var_dump');
-                if (\is_array($h) && $h[0] instanceof ExceptionHandler) {
-                    $handler->setExceptionHandler($h);
-                    $handler = $h[0];
-                } else {
-                    $handler->setExceptionHandler($this->exceptionHandler);
-                }
-            }
-            if ($handler instanceof ExceptionHandler) {
-                $handler->setHandler($this->exceptionHandler);
-                if (null !== $this->fileLinkFormat) {
-                    $handler->setFileLinkFormat($this->fileLinkFormat);
-                }
+            if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) {
+                $handler->setExceptionHandler($this->exceptionHandler);
             }
             $this->exceptionHandler = null;
         }
     }
 
-    /**
-     * @internal
-     */
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        if (!$this->hasTerminatedWithException || !$event->isMasterRequest()) {
-            return;
-        }
-
-        $debug = $this->scream && $this->scope;
-        $controller = function (Request $request) use ($debug) {
-            $e = $request->attributes->get('exception');
-            $handler = new ExceptionHandler($debug, $this->charset, $this->fileLinkFormat);
-
-            return new Response($handler->getHtml($e), $e->getStatusCode(), $e->getHeaders());
-        };
-
-        (new ExceptionListener($controller, $this->logger, $debug))->onKernelException($event);
-    }
-
     public static function getSubscribedEvents()
     {
         $events = [KernelEvents::REQUEST => ['configure', 2048]];
 
-        if ('cli' === \PHP_SAPI && \defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) {
+        if (\defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) {
             $events[ConsoleEvents::COMMAND] = ['configure', 2048];
         }
 
-        $events[KernelEvents::EXCEPTION] = ['onKernelException', -2048];
-
         return $events;
     }
 }
diff --git a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php b/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
index ab5f65cb6319589cf3b9cbc16e63862b48936bbb..ef5a71a3523b36127aa2b65543d1a9865c763f26 100644
--- a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
@@ -12,21 +12,20 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\Exception\FlattenException;
+use Symfony\Component\ErrorHandler\Exception\FlattenException;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\KernelEvents;
 use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "ErrorListener" instead.', ExceptionListener::class), \E_USER_DEPRECATED);
+
 /**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
+ * @deprecated since Symfony 4.4, use ErrorListener instead
  */
 class ExceptionListener implements EventSubscriberInterface
 {
@@ -43,7 +42,7 @@ class ExceptionListener implements EventSubscriberInterface
 
     public function logKernelException(GetResponseForExceptionEvent $event)
     {
-        $e = FlattenException::create($event->getException());
+        $e = FlattenException::createFromThrowable($event->getException());
 
         $this->logException($event->getException(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine()));
     }
@@ -61,7 +60,7 @@ class ExceptionListener implements EventSubscriberInterface
         try {
             $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false);
         } catch (\Exception $e) {
-            $f = FlattenException::create($e);
+            $f = FlattenException::createFromThrowable($e);
 
             $this->logException($e, sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), $e->getFile(), $e->getLine()));
 
@@ -120,16 +119,13 @@ class ExceptionListener implements EventSubscriberInterface
     /**
      * Clones the request for the exception.
      *
-     * @param \Exception $exception The thrown exception
-     * @param Request    $request   The original request
-     *
      * @return Request The cloned request
      */
     protected function duplicateRequest(\Exception $exception, Request $request)
     {
         $attributes = [
             '_controller' => $this->controller,
-            'exception' => FlattenException::create($exception),
+            'exception' => FlattenException::createFromThrowable($exception),
             'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null,
         ];
         $request = $request->duplicate(null, null, $attributes);
diff --git a/vendor/symfony/http-kernel/EventListener/FragmentListener.php b/vendor/symfony/http-kernel/EventListener/FragmentListener.php
index fc4ba56d9b0d89180af4316e344681a30931b5d3..5ae61daaaee012415112d5039553d336fd0545be 100644
--- a/vendor/symfony/http-kernel/EventListener/FragmentListener.php
+++ b/vendor/symfony/http-kernel/EventListener/FragmentListener.php
@@ -37,8 +37,7 @@ class FragmentListener implements EventSubscriberInterface
     private $fragmentPath;
 
     /**
-     * @param UriSigner $signer       A UriSigner instance
-     * @param string    $fragmentPath The path that triggers this listener
+     * @param string $fragmentPath The path that triggers this listener
      */
     public function __construct(UriSigner $signer, string $fragmentPath = '/_fragment')
     {
@@ -79,7 +78,7 @@ class FragmentListener implements EventSubscriberInterface
     protected function validateRequest(Request $request)
     {
         // is the Request safe?
-        if (!$request->isMethodSafe(false)) {
+        if (!$request->isMethodSafe()) {
             throw new AccessDeniedHttpException();
         }
 
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
index fb8e67e7ed492f3522781ccead3a66e0dee37605..62d03026a1c25112eefa1bef8520b32ae82769d3 100644
--- a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
+++ b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
@@ -12,7 +12,6 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
 use Symfony\Component\HttpKernel\Event\RequestEvent;
@@ -46,7 +45,9 @@ class LocaleAwareListener implements EventSubscriberInterface
     public function onKernelFinishRequest(FinishRequestEvent $event): void
     {
         if (null === $parentRequest = $this->requestStack->getParentRequest()) {
-            $this->setLocale($event->getRequest()->getDefaultLocale());
+            foreach ($this->localeAwareServices as $service) {
+                $service->setLocale($event->getRequest()->getDefaultLocale());
+            }
 
             return;
         }
@@ -63,7 +64,7 @@ class LocaleAwareListener implements EventSubscriberInterface
         ];
     }
 
-    private function setLocale(string $locale, string $defaultLocale = null): void
+    private function setLocale(string $locale, string $defaultLocale): void
     {
         foreach ($this->localeAwareServices as $service) {
             try {
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleListener.php b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
index cb8a194d49a9d5efc1b76d3f20063da6049dbb2c..b09a6c76a22418fa6387973122871d32d5df53c2 100644
--- a/vendor/symfony/http-kernel/EventListener/LocaleListener.php
+++ b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
@@ -33,11 +33,6 @@ class LocaleListener implements EventSubscriberInterface
     private $defaultLocale;
     private $requestStack;
 
-    /**
-     * @param RequestStack                      $requestStack  A RequestStack instance
-     * @param string                            $defaultLocale The default locale
-     * @param RequestContextAwareInterface|null $router        The router
-     */
     public function __construct(RequestStack $requestStack, string $defaultLocale = 'en', RequestContextAwareInterface $router = null)
     {
         $this->defaultLocale = $defaultLocale;
diff --git a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
index 85a0aacb6184c3a8bc52f8fd10d7a59adab69aae..b8464f16273535e8482ff839b98086fbc19f1040 100644
--- a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
+++ b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
@@ -39,11 +39,8 @@ class ProfilerListener implements EventSubscriberInterface
     protected $parents;
 
     /**
-     * @param Profiler                     $profiler           A Profiler instance
-     * @param RequestStack                 $requestStack       A RequestStack instance
-     * @param RequestMatcherInterface|null $matcher            A RequestMatcher instance
-     * @param bool                         $onlyException      True if the profiler only collects data when an exception occurs, false otherwise
-     * @param bool                         $onlyMasterRequests True if the profiler only collects data when the request is a master request, false otherwise
+     * @param bool $onlyException      True if the profiler only collects data when an exception occurs, false otherwise
+     * @param bool $onlyMasterRequests True if the profiler only collects data when the request is a master request, false otherwise
      */
     public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMasterRequests = false)
     {
@@ -65,7 +62,7 @@ class ProfilerListener implements EventSubscriberInterface
             return;
         }
 
-        $this->exception = $event->getException();
+        $this->exception = $event->getThrowable();
     }
 
     /**
diff --git a/vendor/symfony/http-kernel/EventListener/RouterListener.php b/vendor/symfony/http-kernel/EventListener/RouterListener.php
index 2f1735d26fe7b0d1782aa4a942c4fad7e50f8aef..ee88debae45e8783491e3a7b32267965c1bc33be 100644
--- a/vendor/symfony/http-kernel/EventListener/RouterListener.php
+++ b/vendor/symfony/http-kernel/EventListener/RouterListener.php
@@ -50,10 +50,8 @@ class RouterListener implements EventSubscriberInterface
     private $debug;
 
     /**
-     * @param UrlMatcherInterface|RequestMatcherInterface $matcher      The Url or Request matcher
-     * @param RequestStack                                $requestStack A RequestStack instance
-     * @param RequestContext|null                         $context      The RequestContext (can be null when $matcher implements RequestContextAwareInterface)
-     * @param LoggerInterface|null                        $logger       The logger
+     * @param UrlMatcherInterface|RequestMatcherInterface $matcher    The Url or Request matcher
+     * @param RequestContext|null                         $context    The RequestContext (can be null when $matcher implements RequestContextAwareInterface)
      * @param string                                      $projectDir
      *
      * @throws \InvalidArgumentException
@@ -145,7 +143,7 @@ class RouterListener implements EventSubscriberInterface
 
     public function onKernelException(GetResponseForExceptionEvent $event)
     {
-        if (!$this->debug || !($e = $event->getException()) instanceof NotFoundHttpException) {
+        if (!$this->debug || !($e = $event->getThrowable()) instanceof NotFoundHttpException) {
             return;
         }
 
@@ -163,14 +161,14 @@ class RouterListener implements EventSubscriberInterface
         ];
     }
 
-    private function createWelcomeResponse()
+    private function createWelcomeResponse(): Response
     {
         $version = Kernel::VERSION;
-        $baseDir = realpath($this->projectDir).\DIRECTORY_SEPARATOR;
+        $projectDir = realpath($this->projectDir).\DIRECTORY_SEPARATOR;
         $docVersion = substr(Kernel::VERSION, 0, 3);
 
         ob_start();
-        include __DIR__.'/../Resources/welcome.html.php';
+        include \dirname(__DIR__).'/Resources/welcome.html.php';
 
         return new Response(ob_get_clean(), Response::HTTP_NOT_FOUND);
     }
diff --git a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php b/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
index b14153ad3cf8b053bb984a28ffa4654e68cc7195..c3adaf84cef3f02f9fdc801d7477873894075d9f 100644
--- a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\EventListener;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.1, use AbstractSessionListener instead.', SaveSessionListener::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.1, use AbstractSessionListener instead.', SaveSessionListener::class), \E_USER_DEPRECATED);
 
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
@@ -30,8 +30,8 @@ class SaveSessionListener implements EventSubscriberInterface
             return;
         }
 
-        $session = $event->getRequest()->getSession();
-        if ($session && $session->isStarted()) {
+        $request = $event->getRequest();
+        if ($request->hasSession() && ($session = $request->getSession())->isStarted()) {
             $session->save();
         }
     }
diff --git a/vendor/symfony/http-kernel/EventListener/SessionListener.php b/vendor/symfony/http-kernel/EventListener/SessionListener.php
index 019ccee49f21ff3cf132a3d4c721b256a58680c8..a53ade797cdace094d14a4e2a3ee4928f7092f2a 100644
--- a/vendor/symfony/http-kernel/EventListener/SessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/SessionListener.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Psr\Container\ContainerInterface;
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
 use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
 
 /**
@@ -32,7 +33,7 @@ class SessionListener extends AbstractSessionListener
         $this->container = $container;
     }
 
-    protected function getSession()
+    protected function getSession(): ?SessionInterface
     {
         if (!$this->container->has('session')) {
             return null;
diff --git a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
index a0a52c2a75265808c9a4afe25df54d1fbf044182..ff8b4aaa614d66482de1a1006f714b696bb148b7 100644
--- a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Psr\Container\ContainerInterface;
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
 
 /**
  * Sets the session in the request.
@@ -30,7 +31,7 @@ class TestSessionListener extends AbstractTestSessionListener
         parent::__construct($sessionOptions);
     }
 
-    protected function getSession()
+    protected function getSession(): ?SessionInterface
     {
         if (!$this->container->has('session')) {
             return null;
diff --git a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php b/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
index d28eee2b1ad21845fa7b5f149c73365809ee0871..6851c3b926ea53b43b21b7852d10ab400e566f8a 100644
--- a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
+++ b/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\EventListener;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3 and will be removed in 5.0, use LocaleAwareListener instead.', TranslatorListener::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3 and will be removed in 5.0, use LocaleAwareListener instead.', TranslatorListener::class), \E_USER_DEPRECATED);
 
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpFoundation\Request;
@@ -40,7 +40,7 @@ class TranslatorListener implements EventSubscriberInterface
     public function __construct($translator, RequestStack $requestStack)
     {
         if (!$translator instanceof TranslatorInterface && !$translator instanceof LocaleAwareInterface) {
-            throw new \TypeError(sprintf('Argument 1 passed to %s() must be an instance of %s, %s given.', __METHOD__, LocaleAwareInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator)));
+            throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.', __METHOD__, LocaleAwareInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator)));
         }
         $this->translator = $translator;
         $this->requestStack = $requestStack;
diff --git a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
index 8aa50a9f4160597b976298ff0774370058997e78..735e9c805e2321049e135f79d6e99ce361f6b354 100644
--- a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
+++ b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
@@ -16,7 +16,7 @@ namespace Symfony\Component\HttpKernel\Exception;
  *
  * @author Kris Wallsmith <kris@symfony.com>
  */
-interface HttpExceptionInterface
+interface HttpExceptionInterface extends \Throwable
 {
     /**
      * Returns the status code.
diff --git a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
index 5b76f7a8d866a7682fe0c9d60e7e24630e3f1e3e..f81199d8838244b3a6995d71dfa275167344bb60 100644
--- a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
+++ b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
@@ -32,9 +32,7 @@ abstract class AbstractSurrogateFragmentRenderer extends RoutableFragmentRendere
      * The "fallback" strategy when surrogate is not available should always be an
      * instance of InlineFragmentRenderer.
      *
-     * @param SurrogateInterface        $surrogate      An Surrogate instance
      * @param FragmentRendererInterface $inlineStrategy The inline strategy to use when the surrogate is not supported
-     * @param UriSigner                 $signer
      */
     public function __construct(SurrogateInterface $surrogate = null, FragmentRendererInterface $inlineStrategy, UriSigner $signer = null)
     {
@@ -83,7 +81,7 @@ abstract class AbstractSurrogateFragmentRenderer extends RoutableFragmentRendere
         return new Response($tag);
     }
 
-    private function generateSignedFragmentUri($uri, Request $request): string
+    private function generateSignedFragmentUri(ControllerReference $uri, Request $request): string
     {
         if (null === $this->signer) {
             throw new \LogicException('You must use a URI when using the ESI rendering strategy or set a URL signer.');
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
index 1ae550fe45cb8322b3cc3f3636e768195f0d3367..e981291b874c49a49b48359aa66529856cc330de 100644
--- a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
+++ b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
@@ -33,9 +33,8 @@ class FragmentHandler
     private $requestStack;
 
     /**
-     * @param RequestStack                $requestStack The Request stack that controls the lifecycle of requests
-     * @param FragmentRendererInterface[] $renderers    An array of FragmentRendererInterface instances
-     * @param bool                        $debug        Whether the debug mode is enabled or not
+     * @param FragmentRendererInterface[] $renderers An array of FragmentRendererInterface instances
+     * @param bool                        $debug     Whether the debug mode is enabled or not
      */
     public function __construct(RequestStack $requestStack, array $renderers = [], bool $debug = false)
     {
@@ -63,7 +62,6 @@ class FragmentHandler
      *
      * @param string|ControllerReference $uri      A URI as a string or a ControllerReference instance
      * @param string                     $renderer The renderer name
-     * @param array                      $options  An array of options
      *
      * @return string|null The Response content or null when the Response is streamed
      *
@@ -100,7 +98,7 @@ class FragmentHandler
     protected function deliver(Response $response)
     {
         if (!$response->isSuccessful()) {
-            throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $this->requestStack->getCurrentRequest()->getUri(), $response->getStatusCode()));
+            throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $this->requestStack->getCurrentRequest()->getUri(), $response->getStatusCode()));
         }
 
         if (!$response instanceof StreamedResponse) {
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
index 8e454a01a6ecbef50762c1af9bce46618ceb3d11..4f8ac50b16e9293a4a5339112f9830f6c49f4933 100644
--- a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
+++ b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
@@ -25,9 +25,7 @@ interface FragmentRendererInterface
     /**
      * Renders a URI and returns the Response content.
      *
-     * @param string|ControllerReference $uri     A URI as a string or a ControllerReference instance
-     * @param Request                    $request A Request instance
-     * @param array                      $options An array of options
+     * @param string|ControllerReference $uri A URI as a string or a ControllerReference instance
      *
      * @return Response A Response instance
      */
diff --git a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
index 5d70c190246eb8fe0e81f0bc53dcf458c6b9d5da..cca653342c42ee600c9f753bb02fbdbbb2395fd5 100644
--- a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
+++ b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
@@ -35,7 +35,6 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer
 
     /**
      * @param EngineInterface|Environment $templating            An EngineInterface or a Twig instance
-     * @param UriSigner                   $signer                A UriSigner instance
      * @param string                      $globalDefaultTemplate The global default content (it can be a template name or the content)
      */
     public function __construct($templating = null, UriSigner $signer = null, string $globalDefaultTemplate = null, string $charset = 'utf-8')
@@ -52,15 +51,17 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer
      * @param EngineInterface|Environment|null $templating An EngineInterface or an Environment instance
      *
      * @throws \InvalidArgumentException
+     *
+     * @internal
      */
     public function setTemplating($templating)
     {
         if (null !== $templating && !$templating instanceof EngineInterface && !$templating instanceof Environment) {
-            throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of Twig\Environment or Symfony\Component\Templating\EngineInterface');
+            throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of Twig\Environment or Symfony\Component\Templating\EngineInterface.');
         }
 
         if ($templating instanceof EngineInterface) {
-            @trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.3; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.3; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), \E_USER_DEPRECATED);
         }
 
         $this->templating = $templating;
@@ -112,7 +113,7 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer
         }
         $renderedAttributes = '';
         if (\count($attributes) > 0) {
-            $flags = ENT_QUOTES | ENT_SUBSTITUTE;
+            $flags = \ENT_QUOTES | \ENT_SUBSTITUTE;
             foreach ($attributes as $attribute => $value) {
                 $renderedAttributes .= sprintf(
                     ' %s="%s"',
diff --git a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
index 0c1b95d4e939338b72664a96e2d79c0dae36778d..bd8f85b19a807479d3f41b538c90dc2021d74db5 100644
--- a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
+++ b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
@@ -39,10 +39,8 @@ abstract class RoutableFragmentRenderer implements FragmentRendererInterface
     /**
      * Generates a fragment URI for a given controller.
      *
-     * @param ControllerReference $reference A ControllerReference instance
-     * @param Request             $request   A Request instance
-     * @param bool                $absolute  Whether to generate an absolute URL or not
-     * @param bool                $strict    Whether to allow non-scalar attributes or not
+     * @param bool $absolute Whether to generate an absolute URL or not
+     * @param bool $strict   Whether to allow non-scalar attributes or not
      *
      * @return string A fragment URI
      */
@@ -77,7 +75,7 @@ abstract class RoutableFragmentRenderer implements FragmentRendererInterface
         return $request->getBaseUrl().$path;
     }
 
-    private function checkNonScalar($values)
+    private function checkNonScalar(array $values)
     {
         foreach ($values as $key => $value) {
             if (\is_array($value)) {
diff --git a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php b/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
index 9b4541793f05fb671843170f569f2a7bf329e22a..472d87e483372f6e48265c8a2a4005c48e7bedd2 100644
--- a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
+++ b/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
@@ -96,7 +96,7 @@ abstract class AbstractSurrogate implements SurrogateInterface
             $response = $cache->handle($subRequest, HttpKernelInterface::SUB_REQUEST, true);
 
             if (!$response->isSuccessful()) {
-                throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $subRequest->getUri(), $response->getStatusCode()));
+                throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $subRequest->getUri(), $response->getStatusCode()));
             }
 
             return $response->getContent();
diff --git a/vendor/symfony/http-kernel/HttpCache/Esi.php b/vendor/symfony/http-kernel/HttpCache/Esi.php
index 96e6ca4bfe617942470dd07a76f8619c5ad99887..3d461a7fe3ec5133d79ef3964e36f181da0ff513 100644
--- a/vendor/symfony/http-kernel/HttpCache/Esi.php
+++ b/vendor/symfony/http-kernel/HttpCache/Esi.php
@@ -80,13 +80,13 @@ class Esi extends AbstractSurrogate
         $content = preg_replace('#<esi\:remove>.*?</esi\:remove>#s', '', $content);
         $content = preg_replace('#<esi\:comment[^>]+>#s', '', $content);
 
-        $chunks = preg_split('#<esi\:include\s+(.*?)\s*(?:/|</esi\:include)>#', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
+        $chunks = preg_split('#<esi\:include\s+(.*?)\s*(?:/|</esi\:include)>#', $content, -1, \PREG_SPLIT_DELIM_CAPTURE);
         $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
 
         $i = 1;
         while (isset($chunks[$i])) {
             $options = [];
-            preg_match_all('/(src|onerror|alt)="([^"]*?)"/', $chunks[$i], $matches, PREG_SET_ORDER);
+            preg_match_all('/(src|onerror|alt)="([^"]*?)"/', $chunks[$i], $matches, \PREG_SET_ORDER);
             foreach ($matches as $set) {
                 $options[$set[1]] = $set[2];
             }
diff --git a/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/vendor/symfony/http-kernel/HttpCache/HttpCache.php
index ab178ed42c43f086fa61d3fa58bbd6f96546a7ca..6c4715802efdaf9bded3531657649ba142be5039 100644
--- a/vendor/symfony/http-kernel/HttpCache/HttpCache.php
+++ b/vendor/symfony/http-kernel/HttpCache/HttpCache.php
@@ -207,7 +207,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
 
         $this->traces[$this->getTraceKey($request)] = [];
 
-        if (!$request->isMethodSafe(false)) {
+        if (!$request->isMethodSafe()) {
             $response = $this->invalidate($request, $catch);
         } elseif ($request->headers->has('expect') || !$request->isMethodCacheable()) {
             $response = $this->pass($request, $catch);
@@ -256,8 +256,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
     /**
      * Forwards the Request to the backend without storing the Response in the cache.
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      */
@@ -271,8 +270,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
     /**
      * Invalidates non-safe methods (like POST, PUT, and DELETE).
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      *
@@ -320,8 +318,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
      * the backend using conditional GET. When no matching cache entry is found,
      * it triggers "miss" processing.
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      *
@@ -353,6 +350,10 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
             return $this->validate($request, $entry, $catch);
         }
 
+        if ($entry->headers->hasCacheControlDirective('no-cache')) {
+            return $this->validate($request, $entry, $catch);
+        }
+
         $this->record($request, 'fresh');
 
         $entry->headers->set('Age', $entry->getAge());
@@ -366,9 +367,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
      * The original request is used as a template for a conditional
      * GET request with the backend.
      *
-     * @param Request  $request A Request instance
-     * @param Response $entry   A Response instance to validate
-     * @param bool     $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      */
@@ -382,7 +381,9 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
         }
 
         // add our cached last-modified validator
-        $subRequest->headers->set('if_modified_since', $entry->headers->get('Last-Modified'));
+        if ($entry->headers->has('Last-Modified')) {
+            $subRequest->headers->set('if_modified_since', $entry->headers->get('Last-Modified'));
+        }
 
         // Add our cached etag validator to the environment.
         // We keep the etags from the client to handle the case when the client
@@ -429,8 +430,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
      * Unconditionally fetches a fresh response from the backend and
      * stores it in the cache if is cacheable.
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      */
@@ -476,13 +476,37 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
         // always a "master" request (as the real master request can be in cache)
         $response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $catch);
 
-        // we don't implement the stale-if-error on Requests, which is nonetheless part of the RFC
-        if (null !== $entry && \in_array($response->getStatusCode(), [500, 502, 503, 504])) {
+        /*
+         * Support stale-if-error given on Responses or as a config option.
+         * RFC 7234 summarizes in Section 4.2.4 (but also mentions with the individual
+         * Cache-Control directives) that
+         *
+         *      A cache MUST NOT generate a stale response if it is prohibited by an
+         *      explicit in-protocol directive (e.g., by a "no-store" or "no-cache"
+         *      cache directive, a "must-revalidate" cache-response-directive, or an
+         *      applicable "s-maxage" or "proxy-revalidate" cache-response-directive;
+         *      see Section 5.2.2).
+         *
+         * https://tools.ietf.org/html/rfc7234#section-4.2.4
+         *
+         * We deviate from this in one detail, namely that we *do* serve entries in the
+         * stale-if-error case even if they have a `s-maxage` Cache-Control directive.
+         */
+        if (null !== $entry
+            && \in_array($response->getStatusCode(), [500, 502, 503, 504])
+            && !$entry->headers->hasCacheControlDirective('no-cache')
+            && !$entry->mustRevalidate()
+        ) {
             if (null === $age = $entry->headers->getCacheControlDirective('stale-if-error')) {
                 $age = $this->options['stale_if_error'];
             }
 
-            if (abs($entry->getTtl()) < $age) {
+            /*
+             * stale-if-error gives the (extra) time that the Response may be used *after* it has become stale.
+             * So we compare the time the $entry has been sitting in the cache already with the
+             * time it was fresh plus the allowed grace period.
+             */
+            if ($entry->getAge() <= $entry->getMaxAge() + $age) {
                 $this->record($request, 'stale-if-error');
 
                 return $entry;
@@ -641,10 +665,8 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
     /**
      * Checks if the Request includes authorization or other sensitive information
      * that should cause the Response to be considered private by default.
-     *
-     * @return bool true if the Request is private, false otherwise
      */
-    private function isPrivateRequest(Request $request)
+    private function isPrivateRequest(Request $request): bool
     {
         foreach ($this->options['private_headers'] as $key) {
             $key = strtolower(str_replace('HTTP_', '', $key));
diff --git a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
index 25c071c335a02d4d24203652a701d4f37e6fca57..c30fface603ebc267bc644450cc09457394edd86 100644
--- a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
+++ b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
@@ -110,8 +110,6 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
         $response->headers->set('Age', $this->age);
 
         if ($this->isNotCacheableResponseEmbedded) {
-            $response->setExpires($response->getDate());
-
             if ($this->flagDirectives['no-store']) {
                 $response->headers->set('Cache-Control', 'no-cache, no-store, must-revalidate');
             } else {
@@ -130,7 +128,6 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
         $response->headers->set('Cache-Control', implode(', ', array_keys($flags)));
 
         $maxAge = null;
-        $sMaxage = null;
 
         if (is_numeric($this->ageDirectives['max-age'])) {
             $maxAge = $this->ageDirectives['max-age'] + $this->age;
@@ -156,10 +153,8 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
      * RFC2616, Section 13.4.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4
-     *
-     * @return bool
      */
-    private function willMakeFinalResponseUncacheable(Response $response)
+    private function willMakeFinalResponseUncacheable(Response $response): bool
     {
         // RFC2616: A response received with a status code of 200, 203, 300, 301 or 410
         // MAY be stored by a cache […] unless a cache-control directive prohibits caching.
@@ -203,12 +198,8 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
      *
      * If the value is lower than the currently stored value, we update the value, to keep a rolling
      * minimal value of each instruction. If the value is NULL, the directive will not be set on the final response.
-     *
-     * @param string   $directive
-     * @param int|null $value
-     * @param int      $age
      */
-    private function storeRelativeAgeDirective($directive, $value, $age)
+    private function storeRelativeAgeDirective(string $directive, ?int $value, int $age)
     {
         if (null === $value) {
             $this->ageDirectives[$directive] = false;
diff --git a/vendor/symfony/http-kernel/HttpCache/Ssi.php b/vendor/symfony/http-kernel/HttpCache/Ssi.php
index 40aac64f2a1324e05df009b4776de8191dc2100b..6dba4e11dfeb95c34281ab83f26c96b88177b8c6 100644
--- a/vendor/symfony/http-kernel/HttpCache/Ssi.php
+++ b/vendor/symfony/http-kernel/HttpCache/Ssi.php
@@ -65,13 +65,13 @@ class Ssi extends AbstractSurrogate
         // we don't use a proper XML parser here as we can have SSI tags in a plain text response
         $content = $response->getContent();
 
-        $chunks = preg_split('#<!--\#include\s+(.*?)\s*-->#', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
+        $chunks = preg_split('#<!--\#include\s+(.*?)\s*-->#', $content, -1, \PREG_SPLIT_DELIM_CAPTURE);
         $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
 
         $i = 1;
         while (isset($chunks[$i])) {
             $options = [];
-            preg_match_all('/(virtual)="([^"]*?)"/', $chunks[$i], $matches, PREG_SET_ORDER);
+            preg_match_all('/(virtual)="([^"]*?)"/', $chunks[$i], $matches, \PREG_SET_ORDER);
             foreach ($matches as $set) {
                 $options[$set[1]] = $set[2];
             }
diff --git a/vendor/symfony/http-kernel/HttpCache/Store.php b/vendor/symfony/http-kernel/HttpCache/Store.php
index 7026ac3c7d878c00f99a1f1cea60a783465d4822..9536d78879bdd751f2b42145cabec355744a83aa 100644
--- a/vendor/symfony/http-kernel/HttpCache/Store.php
+++ b/vendor/symfony/http-kernel/HttpCache/Store.php
@@ -48,7 +48,7 @@ class Store implements StoreInterface
     {
         // unlock everything
         foreach ($this->locks as $lock) {
-            flock($lock, LOCK_UN);
+            flock($lock, \LOCK_UN);
             fclose($lock);
         }
 
@@ -70,7 +70,7 @@ class Store implements StoreInterface
                 return $path;
             }
             $h = fopen($path, 'cb');
-            if (!flock($h, LOCK_EX | LOCK_NB)) {
+            if (!flock($h, \LOCK_EX | \LOCK_NB)) {
                 fclose($h);
 
                 return $path;
@@ -92,7 +92,7 @@ class Store implements StoreInterface
         $key = $this->getCacheKey($request);
 
         if (isset($this->locks[$key])) {
-            flock($this->locks[$key], LOCK_UN);
+            flock($this->locks[$key], \LOCK_UN);
             fclose($this->locks[$key]);
             unset($this->locks[$key]);
 
@@ -115,8 +115,8 @@ class Store implements StoreInterface
         }
 
         $h = fopen($path, 'rb');
-        flock($h, LOCK_EX | LOCK_NB, $wouldBlock);
-        flock($h, LOCK_UN); // release the lock we just acquired
+        flock($h, \LOCK_EX | \LOCK_NB, $wouldBlock);
+        flock($h, \LOCK_UN); // release the lock we just acquired
         fclose($h);
 
         return (bool) $wouldBlock;
@@ -150,8 +150,8 @@ class Store implements StoreInterface
         }
 
         $headers = $match[1];
-        if (file_exists($body = $this->getPath($headers['x-content-digest'][0]))) {
-            return $this->restoreResponse($headers, $body);
+        if (file_exists($path = $this->getPath($headers['x-content-digest'][0]))) {
+            return $this->restoreResponse($headers, $path);
         }
 
         // TODO the metaStore referenced an entity that doesn't exist in
@@ -175,16 +175,25 @@ class Store implements StoreInterface
         $key = $this->getCacheKey($request);
         $storedEnv = $this->persistRequest($request);
 
-        // write the response body to the entity store if this is the original response
-        if (!$response->headers->has('X-Content-Digest')) {
+        if ($response->headers->has('X-Body-File')) {
+            // Assume the response came from disk, but at least perform some safeguard checks
+            if (!$response->headers->has('X-Content-Digest')) {
+                throw new \RuntimeException('A restored response must have the X-Content-Digest header.');
+            }
+
+            $digest = $response->headers->get('X-Content-Digest');
+            if ($this->getPath($digest) !== $response->headers->get('X-Body-File')) {
+                throw new \RuntimeException('X-Body-File and X-Content-Digest do not match.');
+            }
+            // Everything seems ok, omit writing content to disk
+        } else {
             $digest = $this->generateContentDigest($response);
+            $response->headers->set('X-Content-Digest', $digest);
 
-            if (!$this->save($digest, $response->getContent())) {
+            if (!$this->save($digest, $response->getContent(), false)) {
                 throw new \RuntimeException('Unable to store the entity.');
             }
 
-            $response->headers->set('X-Content-Digest', $digest);
-
             if (!$response->headers->has('Transfer-Encoding')) {
                 $response->headers->set('Content-Length', \strlen($response->getContent()));
             }
@@ -259,10 +268,8 @@ class Store implements StoreInterface
      * @param string $vary A Response vary header
      * @param array  $env1 A Request HTTP header array
      * @param array  $env2 A Request HTTP header array
-     *
-     * @return bool true if the two environments match, false otherwise
      */
-    private function requestsMatch($vary, $env1, $env2)
+    private function requestsMatch(?string $vary, array $env1, array $env2): bool
     {
         if (empty($vary)) {
             return true;
@@ -284,12 +291,8 @@ class Store implements StoreInterface
      * Gets all data associated with the given key.
      *
      * Use this method only if you know what you are doing.
-     *
-     * @param string $key The store key
-     *
-     * @return array An array of data associated with the key
      */
-    private function getMetadata($key)
+    private function getMetadata(string $key): array
     {
         if (!$entries = $this->load($key)) {
             return [];
@@ -320,16 +323,12 @@ class Store implements StoreInterface
 
     /**
      * Purges data for the given URL.
-     *
-     * @param string $url A URL
-     *
-     * @return bool true if the URL exists and has been purged, false otherwise
      */
-    private function doPurge($url)
+    private function doPurge(string $url): bool
     {
         $key = $this->getCacheKey(Request::create($url));
         if (isset($this->locks[$key])) {
-            flock($this->locks[$key], LOCK_UN);
+            flock($this->locks[$key], \LOCK_UN);
             fclose($this->locks[$key]);
             unset($this->locks[$key]);
         }
@@ -345,12 +344,8 @@ class Store implements StoreInterface
 
     /**
      * Loads data for the given key.
-     *
-     * @param string $key The store key
-     *
-     * @return string|null The data associated with the key
      */
-    private function load($key)
+    private function load(string $key): ?string
     {
         $path = $this->getPath($key);
 
@@ -359,16 +354,15 @@ class Store implements StoreInterface
 
     /**
      * Save data for the given key.
-     *
-     * @param string $key  The store key
-     * @param string $data The data to store
-     *
-     * @return bool
      */
-    private function save($key, $data)
+    private function save(string $key, string $data, bool $overwrite = true): bool
     {
         $path = $this->getPath($key);
 
+        if (!$overwrite && file_exists($path)) {
+            return true;
+        }
+
         if (isset($this->locks[$key])) {
             $fp = $this->locks[$key];
             @ftruncate($fp, 0);
@@ -435,10 +429,8 @@ class Store implements StoreInterface
 
     /**
      * Returns a cache key for the given Request.
-     *
-     * @return string A key for the given Request
      */
-    private function getCacheKey(Request $request)
+    private function getCacheKey(Request $request): string
     {
         if (isset($this->keyCache[$request])) {
             return $this->keyCache[$request];
@@ -449,20 +441,16 @@ class Store implements StoreInterface
 
     /**
      * Persists the Request HTTP headers.
-     *
-     * @return array An array of HTTP headers
      */
-    private function persistRequest(Request $request)
+    private function persistRequest(Request $request): array
     {
         return $request->headers->all();
     }
 
     /**
      * Persists the Response HTTP headers.
-     *
-     * @return array An array of HTTP headers
      */
-    private function persistResponse(Response $response)
+    private function persistResponse(Response $response): array
     {
         $headers = $response->headers->all();
         $headers['X-Status'] = [$response->getStatusCode()];
@@ -472,21 +460,16 @@ class Store implements StoreInterface
 
     /**
      * Restores a Response from the HTTP headers and body.
-     *
-     * @param array  $headers An array of HTTP headers for the Response
-     * @param string $body    The Response body
-     *
-     * @return Response
      */
-    private function restoreResponse($headers, $body = null)
+    private function restoreResponse(array $headers, string $path = null): Response
     {
         $status = $headers['X-Status'][0];
         unset($headers['X-Status']);
 
-        if (null !== $body) {
-            $headers['X-Body-File'] = [$body];
+        if (null !== $path) {
+            $headers['X-Body-File'] = [$path];
         }
 
-        return new Response($body, $status, $headers);
+        return new Response($path, $status, $headers);
     }
 }
diff --git a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
index 85391f8f36b1781b838901ab4792632ec650b64d..a26698c9110ffc11f06ee0c83bb373bfcb16190d 100644
--- a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
+++ b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
@@ -78,10 +78,9 @@ interface SurrogateInterface
     /**
      * Handles a Surrogate from the cache.
      *
-     * @param HttpCache $cache        An HttpCache instance
-     * @param string    $uri          The main URI
-     * @param string    $alt          An alternative URI
-     * @param bool      $ignoreErrors Whether to ignore errors or not
+     * @param string $uri          The main URI
+     * @param string $alt          An alternative URI
+     * @param bool   $ignoreErrors Whether to ignore errors or not
      *
      * @return string
      *
diff --git a/vendor/symfony/http-kernel/HttpClientKernel.php b/vendor/symfony/http-kernel/HttpClientKernel.php
index f60a84eabe2575eb439113ce8be70d09bb10c1bf..7acb04c893eaef362eb4cab4831f91c39a95f291 100644
--- a/vendor/symfony/http-kernel/HttpClientKernel.php
+++ b/vendor/symfony/http-kernel/HttpClientKernel.php
@@ -21,6 +21,9 @@ use Symfony\Component\Mime\Part\Multipart\FormDataPart;
 use Symfony\Component\Mime\Part\TextPart;
 use Symfony\Contracts\HttpClient\HttpClientInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(ResponseHeaderBag::class);
+
 /**
  * An implementation of a Symfony HTTP kernel using a "real" HTTP client.
  *
@@ -32,14 +35,14 @@ final class HttpClientKernel implements HttpKernelInterface
 
     public function __construct(HttpClientInterface $client = null)
     {
-        if (!class_exists(HttpClient::class)) {
+        if (null === $client && !class_exists(HttpClient::class)) {
             throw new \LogicException(sprintf('You cannot use "%s" as the HttpClient component is not installed. Try running "composer require symfony/http-client".', __CLASS__));
         }
 
         $this->client = $client ?? HttpClient::create();
     }
 
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true): Response
     {
         $headers = $this->getHeaders($request);
         $body = '';
@@ -50,13 +53,16 @@ final class HttpClientKernel implements HttpKernelInterface
         $response = $this->client->request($request->getMethod(), $request->getUri(), [
             'headers' => $headers,
             'body' => $body,
-            'max_redirects' => 0,
         ] + $request->attributes->get('http_client_options', []));
 
         $response = new Response($response->getContent(!$catch), $response->getStatusCode(), $response->getHeaders(!$catch));
 
+        $response->headers->remove('X-Body-File');
+        $response->headers->remove('X-Body-Eval');
+        $response->headers->remove('X-Content-Digest');
+
         $response->headers = new class($response->headers->all()) extends ResponseHeaderBag {
-            protected function computeCacheControlValue()
+            protected function computeCacheControlValue(): string
             {
                 return $this->getCacheControlHeader(); // preserve the original value
             }
diff --git a/vendor/symfony/http-kernel/HttpKernel.php b/vendor/symfony/http-kernel/HttpKernel.php
index 64e931f2bd40d02dd7d521485edc50c94347dbf4..681e96321d03879df5212387ccb82586196f28bb 100644
--- a/vendor/symfony/http-kernel/HttpKernel.php
+++ b/vendor/symfony/http-kernel/HttpKernel.php
@@ -33,6 +33,18 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(LegacyEventDispatcherProxy::class);
+class_exists(ControllerArgumentsEvent::class);
+class_exists(ControllerEvent::class);
+class_exists(ExceptionEvent::class);
+class_exists(FinishRequestEvent::class);
+class_exists(RequestEvent::class);
+class_exists(ResponseEvent::class);
+class_exists(TerminateEvent::class);
+class_exists(ViewEvent::class);
+class_exists(KernelEvents::class);
+
 /**
  * HttpKernel notifies events to convert a Request object to a Response one.
  *
@@ -62,7 +74,7 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
      */
     public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
     {
-        $request->headers->set('X-Php-Ob-Level', ob_get_level());
+        $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
 
         try {
             return $this->handleRaw($request, $type);
@@ -76,7 +88,7 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
                 throw $e;
             }
 
-            return $this->handleException($e, $request, $type);
+            return $this->handleThrowable($e, $request, $type);
         }
     }
 
@@ -91,13 +103,13 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
     /**
      * @internal
      */
-    public function terminateWithException(\Exception $exception, Request $request = null)
+    public function terminateWithException(\Throwable $exception, Request $request = null)
     {
         if (!$request = $request ?: $this->requestStack->getMasterRequest()) {
             throw $exception;
         }
 
-        $response = $this->handleException($exception, $request, self::MASTER_REQUEST);
+        $response = $this->handleThrowable($exception, $request, self::MASTER_REQUEST);
 
         $response->sendHeaders();
         $response->sendContent();
@@ -110,15 +122,10 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
      *
      * Exceptions are not caught.
      *
-     * @param Request $request A Request instance
-     * @param int     $type    The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     *
-     * @return Response A Response instance
-     *
      * @throws \LogicException       If one of the listener does not behave as expected
      * @throws NotFoundHttpException When controller cannot be found
      */
-    private function handleRaw(Request $request, int $type = self::MASTER_REQUEST)
+    private function handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response
     {
         $this->requestStack->push($request);
 
@@ -175,15 +182,9 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
     /**
      * Filters a response object.
      *
-     * @param Response $response A Response instance
-     * @param Request  $request  An error message in case the response is not a Response object
-     * @param int      $type     The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     *
-     * @return Response The filtered Response instance
-     *
      * @throws \RuntimeException if the passed object is not a Response instance
      */
-    private function filterResponse(Response $response, Request $request, int $type)
+    private function filterResponse(Response $response, Request $request, int $type): Response
     {
         $event = new ResponseEvent($this, $request, $type, $response);
 
@@ -208,21 +209,17 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
     }
 
     /**
-     * Handles an exception by trying to convert it to a Response.
-     *
-     * @param \Exception $e       An \Exception instance
-     * @param Request    $request A Request instance
-     * @param int        $type    The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
+     * Handles a throwable by trying to convert it to a Response.
      *
      * @throws \Exception
      */
-    private function handleException(\Exception $e, Request $request, int $type): Response
+    private function handleThrowable(\Throwable $e, Request $request, int $type): Response
     {
         $event = new ExceptionEvent($this, $request, $type, $e);
         $this->dispatcher->dispatch($event, KernelEvents::EXCEPTION);
 
         // a listener might have replaced the exception
-        $e = $event->getException();
+        $e = $event->getThrowable();
 
         if (!$event->hasResponse()) {
             $this->finishRequest($request, $type);
diff --git a/vendor/symfony/http-kernel/HttpKernelInterface.php b/vendor/symfony/http-kernel/HttpKernelInterface.php
index 5050bfcfba7c3b1ac14ba2eab7da5a0ba213eb1e..7595d29d04234cd30c6d6603bdff3e6504774d99 100644
--- a/vendor/symfony/http-kernel/HttpKernelInterface.php
+++ b/vendor/symfony/http-kernel/HttpKernelInterface.php
@@ -30,10 +30,9 @@ interface HttpKernelInterface
      * When $catch is true, the implementation must catch all exceptions
      * and do its best to convert them to a Response instance.
      *
-     * @param Request $request A Request instance
-     * @param int     $type    The type of the request
-     *                         (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     * @param bool    $catch   Whether to catch exceptions or not
+     * @param int  $type  The type of the request
+     *                    (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
+     * @param bool $catch Whether to catch exceptions or not
      *
      * @return Response A Response instance
      *
diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php
index 7d18d221d5c185e24170febe06f9bb4a139f6e04..c21108b0407adb0ea1dbbb58f54a8df58310dbab 100644
--- a/vendor/symfony/http-kernel/Kernel.php
+++ b/vendor/symfony/http-kernel/Kernel.php
@@ -16,7 +16,7 @@ use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper;
 use Symfony\Component\Config\ConfigCache;
 use Symfony\Component\Config\Loader\DelegatingLoader;
 use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\Debug\DebugClassLoader;
+use Symfony\Component\Debug\DebugClassLoader as LegacyDebugClassLoader;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\Compiler\PassConfig;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -29,6 +29,7 @@ use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
 use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
 use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
 use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\ErrorHandler\DebugClassLoader;
 use Symfony\Component\Filesystem\Filesystem;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
@@ -73,15 +74,17 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     private $requestStackSize = 0;
     private $resetServices = false;
 
-    const VERSION = '4.3.5';
-    const VERSION_ID = 40305;
+    private static $freshCache = [];
+
+    const VERSION = '4.4.16';
+    const VERSION_ID = 40416;
     const MAJOR_VERSION = 4;
-    const MINOR_VERSION = 3;
-    const RELEASE_VERSION = 5;
+    const MINOR_VERSION = 4;
+    const RELEASE_VERSION = 16;
     const EXTRA_VERSION = '';
 
-    const END_OF_MAINTENANCE = '01/2020';
-    const END_OF_LIFE = '07/2020';
+    const END_OF_MAINTENANCE = '11/2022';
+    const END_OF_LIFE = '11/2023';
 
     public function __construct(string $environment, bool $debug)
     {
@@ -225,10 +228,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function getBundle($name)
     {
         if (!isset($this->bundles[$name])) {
-            $class = \get_class($this);
-            $class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class;
-
-            throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your %s.php file?', $name, $class));
+            throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the "registerBundles()" method of your "%s.php" file?', $name, get_debug_type($this)));
         }
 
         return $this->bundles[$name];
@@ -236,11 +236,21 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
 
     /**
      * {@inheritdoc}
-     *
-     * @throws \RuntimeException if a custom resource is hidden by a resource in a derived bundle
      */
-    public function locateResource($name, $dir = null, $first = true)
+    public function locateResource($name/*, $dir = null, $first = true, $triggerDeprecation = true*/)
     {
+        if (2 <= \func_num_args()) {
+            $dir = func_get_arg(1);
+            $first = 3 <= \func_num_args() ? func_get_arg(2) : true;
+
+            if (4 !== \func_num_args() || func_get_arg(3)) {
+                @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED);
+            }
+        } else {
+            $dir = null;
+            $first = true;
+        }
+
         if ('@' !== $name[0]) {
             throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name));
         }
@@ -262,6 +272,9 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
 
         if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) {
             $files[] = $file;
+
+            // see https://symfony.com/doc/current/bundles/override.html on how to overwrite parts of a bundle
+            @trigger_error(sprintf('Overwriting the resource "%s" with "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $name, $file), \E_USER_DEPRECATED);
         }
 
         if (file_exists($file = $bundle->getPath().'/'.$path)) {
@@ -286,7 +299,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function getName(/* $triggerDeprecation = true */)
     {
         if (0 === \func_num_args() || func_get_arg(0)) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         if (null === $this->name) {
@@ -323,7 +336,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function getRootDir(/* $triggerDeprecation = true */)
     {
         if (0 === \func_num_args() || func_get_arg(0)) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use getProjectDir() instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use getProjectDir() instead.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         if (null === $this->rootDir) {
@@ -366,6 +379,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function getContainer()
     {
+        if (!$this->container) {
+            @trigger_error('Getting the container from a non-booted kernel is deprecated since Symfony 4.4.', \E_USER_DEPRECATED);
+        }
+
         return $this->container;
     }
 
@@ -382,7 +399,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function getStartTime()
     {
-        return $this->debug && null !== $this->startTime ? $this->startTime : -INF;
+        return $this->debug && null !== $this->startTime ? $this->startTime : -\INF;
     }
 
     /**
@@ -429,7 +446,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
         foreach ($this->registerBundles() as $bundle) {
             $name = $bundle->getName();
             if (isset($this->bundles[$name])) {
-                throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s"', $name));
+                throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s".', $name));
             }
             $this->bundles[$name] = $bundle;
         }
@@ -453,8 +470,8 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     protected function getContainerClass()
     {
-        $class = \get_class($this);
-        $class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class;
+        $class = static::class;
+        $class = false !== strpos($class, "@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class;
         $class = $this->name.str_replace('\\', '_', $class).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container';
 
         if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $class)) {
@@ -487,31 +504,54 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
         $class = $this->getContainerClass();
         $cacheDir = $this->warmupDir ?: $this->getCacheDir();
         $cache = new ConfigCache($cacheDir.'/'.$class.'.php', $this->debug);
-        $oldContainer = null;
-        if ($fresh = $cache->isFresh()) {
-            // Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors
-            $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
-            $fresh = $oldContainer = false;
-            try {
-                if (file_exists($cache->getPath()) && \is_object($this->container = include $cache->getPath())) {
-                    $this->container->set('kernel', $this);
-                    $oldContainer = $this->container;
-                    $fresh = true;
-                }
-            } catch (\Throwable $e) {
-            } finally {
+        $cachePath = $cache->getPath();
+
+        // Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors
+        $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
+
+        try {
+            if (file_exists($cachePath) && \is_object($this->container = include $cachePath)
+                && (!$this->debug || (self::$freshCache[$cachePath] ?? $cache->isFresh()))
+            ) {
+                self::$freshCache[$cachePath] = true;
+                $this->container->set('kernel', $this);
                 error_reporting($errorLevel);
+
+                return;
             }
+        } catch (\Throwable $e) {
         }
 
-        if ($fresh) {
-            return;
+        $oldContainer = \is_object($this->container) ? new \ReflectionClass($this->container) : $this->container = null;
+
+        try {
+            is_dir($cacheDir) ?: mkdir($cacheDir, 0777, true);
+
+            if ($lock = fopen($cachePath.'.lock', 'w')) {
+                flock($lock, \LOCK_EX | \LOCK_NB, $wouldBlock);
+
+                if (!flock($lock, $wouldBlock ? \LOCK_SH : \LOCK_EX)) {
+                    fclose($lock);
+                    $lock = null;
+                } elseif (!\is_object($this->container = include $cachePath)) {
+                    $this->container = null;
+                } elseif (!$oldContainer || \get_class($this->container) !== $oldContainer->name) {
+                    flock($lock, \LOCK_UN);
+                    fclose($lock);
+                    $this->container->set('kernel', $this);
+
+                    return;
+                }
+            }
+        } catch (\Throwable $e) {
+        } finally {
+            error_reporting($errorLevel);
         }
 
         if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) {
             $collectedLogs = [];
             $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
-                if (E_USER_DEPRECATED !== $type && E_DEPRECATED !== $type) {
+                if (\E_USER_DEPRECATED !== $type && \E_DEPRECATED !== $type) {
                     return $previousHandler ? $previousHandler($type, $message, $file, $line) : false;
                 }
 
@@ -521,7 +561,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
                     return null;
                 }
 
-                $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5);
+                $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5);
                 // Clean the trace by removing first frames added by the error handler itself.
                 for ($i = 0; isset($backtrace[$i]); ++$i) {
                     if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
@@ -531,7 +571,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
                 }
                 // Remove frames added by DebugClassLoader.
                 for ($i = \count($backtrace) - 2; 0 < $i; --$i) {
-                    if (DebugClassLoader::class === ($backtrace[$i]['class'] ?? null)) {
+                    if (\in_array($backtrace[$i]['class'] ?? null, [DebugClassLoader::class, LegacyDebugClassLoader::class], true)) {
                         $backtrace = [$backtrace[$i + 1]];
                         break;
                     }
@@ -563,19 +603,14 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             }
         }
 
-        if (null === $oldContainer && file_exists($cache->getPath())) {
-            $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
-            try {
-                $oldContainer = include $cache->getPath();
-            } catch (\Throwable $e) {
-            } finally {
-                error_reporting($errorLevel);
-            }
+        $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
+
+        if ($lock) {
+            flock($lock, \LOCK_UN);
+            fclose($lock);
         }
-        $oldContainer = \is_object($oldContainer) ? new \ReflectionClass($oldContainer) : false;
 
-        $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
-        $this->container = require $cache->getPath();
+        $this->container = require $cachePath;
         $this->container->set('kernel', $this);
 
         if ($oldContainer && \get_class($this->container) !== $oldContainer->name) {
@@ -585,7 +620,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             static $legacyContainers = [];
             $oldContainerDir = \dirname($oldContainer->getFileName());
             $legacyContainers[$oldContainerDir.'.legacy'] = true;
-            foreach (glob(\dirname($oldContainerDir).\DIRECTORY_SEPARATOR.'*.legacy', GLOB_NOSORT) as $legacyContainer) {
+            foreach (glob(\dirname($oldContainerDir).\DIRECTORY_SEPARATOR.'*.legacy', \GLOB_NOSORT) as $legacyContainer) {
                 if (!isset($legacyContainers[$legacyContainer]) && @unlink($legacyContainer)) {
                     (new Filesystem())->remove(substr($legacyContainer, 0, -7));
                 }
@@ -650,10 +685,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
         foreach (['cache' => $this->warmupDir ?: $this->getCacheDir(), 'logs' => $this->getLogDir()] as $name => $dir) {
             if (!is_dir($dir)) {
                 if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
-                    throw new \RuntimeException(sprintf("Unable to create the %s directory (%s)\n", $name, $dir));
+                    throw new \RuntimeException(sprintf('Unable to create the "%s" directory (%s).', $name, $dir));
                 }
             } elseif (!is_writable($dir)) {
-                throw new \RuntimeException(sprintf("Unable to write in the %s directory (%s)\n", $name, $dir));
+                throw new \RuntimeException(sprintf('Unable to write in the "%s" directory (%s).', $name, $dir));
             }
         }
 
@@ -723,10 +758,8 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     /**
      * Dumps the service container to PHP code in the cache.
      *
-     * @param ConfigCache      $cache     The config cache
-     * @param ContainerBuilder $container The service container
-     * @param string           $class     The name of the class to generate
-     * @param string           $baseClass The name of the container's base class
+     * @param string $class     The name of the class to generate
+     * @param string $baseClass The name of the container's base class
      */
     protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass)
     {
@@ -744,6 +777,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             'as_files' => true,
             'debug' => $this->debug,
             'build_time' => $container->hasParameter('kernel.container_build_time') ? $container->getParameter('kernel.container_build_time') : time(),
+            'preload_classes' => array_map('get_class', $this->bundles),
         ]);
 
         $rootCode = array_pop($content);
@@ -754,7 +788,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             $fs->dumpFile($dir.$file, $code);
             @chmod($dir.$file, 0666 & ~umask());
         }
-        $legacyFile = \dirname($dir.$file).'.legacy';
+        $legacyFile = \dirname($dir.key($content)).'.legacy';
         if (file_exists($legacyFile)) {
             @unlink($legacyFile);
         }
@@ -807,14 +841,14 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             $token = $tokens[$i];
             if (!isset($token[1]) || 'b"' === $token) {
                 $rawChunk .= $token;
-            } elseif (T_START_HEREDOC === $token[0]) {
+            } elseif (\T_START_HEREDOC === $token[0]) {
                 $output .= $rawChunk.$token[1];
                 do {
                     $token = $tokens[++$i];
                     $output .= isset($token[1]) && 'b"' !== $token ? $token[1] : $token;
-                } while (T_END_HEREDOC !== $token[0]);
+                } while (\T_END_HEREDOC !== $token[0]);
                 $rawChunk = '';
-            } elseif (T_WHITESPACE === $token[0]) {
+            } elseif (\T_WHITESPACE === $token[0]) {
                 if ($ignoreSpace) {
                     $ignoreSpace = false;
 
@@ -823,13 +857,13 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
 
                 // replace multiple new lines with a single newline
                 $rawChunk .= preg_replace(['/\n{2,}/S'], "\n", $token[1]);
-            } elseif (\in_array($token[0], [T_COMMENT, T_DOC_COMMENT])) {
+            } elseif (\in_array($token[0], [\T_COMMENT, \T_DOC_COMMENT])) {
                 $ignoreSpace = true;
             } else {
                 $rawChunk .= $token[1];
 
                 // The PHP-open tag already has a new-line
-                if (T_OPEN_TAG === $token[0]) {
+                if (\T_OPEN_TAG === $token[0]) {
                     $ignoreSpace = true;
                 }
             }
@@ -848,7 +882,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function serialize()
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED);
 
         return serialize([$this->environment, $this->debug]);
     }
@@ -858,16 +892,19 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function unserialize($data)
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED);
         list($environment, $debug) = unserialize($data, ['allowed_classes' => false]);
 
         $this->__construct($environment, $debug);
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED);
             $this->serialized = $this->serialize();
 
             return ['serialized'];
@@ -879,7 +916,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function __wakeup()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED);
             $this->unserialize($this->serialized);
             unset($this->serialized);
 
diff --git a/vendor/symfony/http-kernel/KernelInterface.php b/vendor/symfony/http-kernel/KernelInterface.php
index f9089dc61e8251bb324596fb60cdb06007080571..00a1aec817e3539a520feb6bb5f7216293575375 100644
--- a/vendor/symfony/http-kernel/KernelInterface.php
+++ b/vendor/symfony/http-kernel/KernelInterface.php
@@ -80,23 +80,14 @@ interface KernelInterface extends HttpKernelInterface
      * where BundleName is the name of the bundle
      * and the remaining part is the relative path in the bundle.
      *
-     * If $dir is passed, and the first segment of the path is "Resources",
-     * this method will look for a file named:
+     * @param string $name A resource name to locate
      *
-     *     $dir/<BundleName>/path/without/Resources
-     *
-     * before looking in the bundle resource folder.
-     *
-     * @param string $name  A resource name to locate
-     * @param string $dir   A directory where to look for the resource first
-     * @param bool   $first Whether to return the first path or paths for all matching bundles
-     *
-     * @return string|array The absolute path of the resource or an array if $first is false
+     * @return string|array The absolute path of the resource or an array if $first is false (array return value is deprecated)
      *
      * @throws \InvalidArgumentException if the file cannot be found or the name is not valid
      * @throws \RuntimeException         if the name contains invalid/unsafe characters
      */
-    public function locateResource($name, $dir = null, $first = true);
+    public function locateResource($name/*, $dir = null, $first = true*/);
 
     /**
      * Gets the name of the kernel.
@@ -133,7 +124,7 @@ interface KernelInterface extends HttpKernelInterface
     /**
      * Gets the current container.
      *
-     * @return ContainerInterface|null A ContainerInterface instance or null when the Kernel is shutdown
+     * @return ContainerInterface
      */
     public function getContainer();
 
diff --git a/vendor/symfony/http-kernel/LICENSE b/vendor/symfony/http-kernel/LICENSE
index a677f43763ca467472898351b328aee41e2edd7c..9e936ec0448b8549e5edf08e5ac5f01491a8bfc8 100644
--- a/vendor/symfony/http-kernel/LICENSE
+++ b/vendor/symfony/http-kernel/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/http-kernel/Log/Logger.php b/vendor/symfony/http-kernel/Log/Logger.php
index 3969487b77494a2ec1ce1839c0f9466fa553199f..c97673dd899d2e0e7e97388e4e8582b1c916fc79 100644
--- a/vendor/symfony/http-kernel/Log/Logger.php
+++ b/vendor/symfony/http-kernel/Log/Logger.php
@@ -37,10 +37,10 @@ class Logger extends AbstractLogger
     private $formatter;
     private $handle;
 
-    public function __construct(string $minLevel = null, $output = 'php://stderr', callable $formatter = null)
+    public function __construct(string $minLevel = null, $output = null, callable $formatter = null)
     {
         if (null === $minLevel) {
-            $minLevel = 'php://stdout' === $output || 'php://stderr' === $output ? LogLevel::CRITICAL : LogLevel::WARNING;
+            $minLevel = null === $output || 'php://stdout' === $output || 'php://stderr' === $output ? LogLevel::ERROR : LogLevel::WARNING;
 
             if (isset($_ENV['SHELL_VERBOSITY']) || isset($_SERVER['SHELL_VERBOSITY'])) {
                 switch ((int) (isset($_ENV['SHELL_VERBOSITY']) ? $_ENV['SHELL_VERBOSITY'] : $_SERVER['SHELL_VERBOSITY'])) {
@@ -58,13 +58,15 @@ class Logger extends AbstractLogger
 
         $this->minLevelIndex = self::$levels[$minLevel];
         $this->formatter = $formatter ?: [$this, 'format'];
-        if (false === $this->handle = \is_resource($output) ? $output : @fopen($output, 'a')) {
+        if ($output && false === $this->handle = \is_resource($output) ? $output : @fopen($output, 'a')) {
             throw new InvalidArgumentException(sprintf('Unable to open "%s".', $output));
         }
     }
 
     /**
      * {@inheritdoc}
+     *
+     * @return void
      */
     public function log($level, $message, array $context = [])
     {
@@ -77,10 +79,14 @@ class Logger extends AbstractLogger
         }
 
         $formatter = $this->formatter;
-        fwrite($this->handle, $formatter($level, $message, $context));
+        if ($this->handle) {
+            @fwrite($this->handle, $formatter($level, $message, $context));
+        } else {
+            error_log($formatter($level, $message, $context, false));
+        }
     }
 
-    private function format(string $level, string $message, array $context): string
+    private function format(string $level, string $message, array $context, bool $prefixDate = true): string
     {
         if (false !== strpos($message, '{')) {
             $replacements = [];
@@ -99,6 +105,11 @@ class Logger extends AbstractLogger
             $message = strtr($message, $replacements);
         }
 
-        return sprintf('%s [%s] %s', date(\DateTime::RFC3339), $level, $message).\PHP_EOL;
+        $log = sprintf('[%s] %s', $level, $message).\PHP_EOL;
+        if ($prefixDate) {
+            $log = date(\DateTime::RFC3339).' '.$log;
+        }
+
+        return $log;
     }
 }
diff --git a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
index 541187cfecd5c5254a4e71559eacf021b68eefd0..5f23e5e05dab60561bc0efe5d722e019bd04d629 100644
--- a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
@@ -47,7 +47,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
     /**
      * {@inheritdoc}
      */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null, $statusCode = null)
+    public function find($ip, $url, $limit, $method, $start = null, $end = null, $statusCode = null): array
     {
         $file = $this->getIndexFilename();
 
@@ -56,7 +56,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
         }
 
         $file = fopen($file, 'r');
-        fseek($file, 0, SEEK_END);
+        fseek($file, 0, \SEEK_END);
 
         $result = [];
         while (\count($result) < $limit && $line = $this->readLineFromFile($file)) {
@@ -113,12 +113,16 @@ class FileProfilerStorage implements ProfilerStorageInterface
     /**
      * {@inheritdoc}
      */
-    public function read($token)
+    public function read($token): ?Profile
     {
         if (!$token || !file_exists($file = $this->getFilename($token))) {
             return null;
         }
 
+        if (\function_exists('gzcompress')) {
+            $file = 'compress.zlib://'.$file;
+        }
+
         return $this->createProfileFromData($token, unserialize(file_get_contents($file)));
     }
 
@@ -127,7 +131,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
      *
      * @throws \RuntimeException
      */
-    public function write(Profile $profile)
+    public function write(Profile $profile): bool
     {
         $file = $this->getFilename($profile->getToken());
 
@@ -161,7 +165,14 @@ class FileProfilerStorage implements ProfilerStorageInterface
             'status_code' => $profile->getStatusCode(),
         ];
 
-        if (false === file_put_contents($file, serialize($data))) {
+        $context = stream_context_create();
+
+        if (\function_exists('gzcompress')) {
+            $file = 'compress.zlib://'.$file;
+            stream_context_set_option($context, 'zlib', 'level', 3);
+        }
+
+        if (false === file_put_contents($file, serialize($data), 0, $context)) {
             return false;
         }
 
@@ -249,7 +260,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
 
             $position += $upTo;
             $line = substr($buffer, $upTo + 1).$line;
-            fseek($file, max(0, $position), SEEK_SET);
+            fseek($file, max(0, $position), \SEEK_SET);
 
             if ('' !== $line) {
                 break;
@@ -282,6 +293,10 @@ class FileProfilerStorage implements ProfilerStorageInterface
                 continue;
             }
 
+            if (\function_exists('gzcompress')) {
+                $file = 'compress.zlib://'.$file;
+            }
+
             $profile->addChild($this->createProfileFromData($token, unserialize(file_get_contents($file)), $profile));
         }
 
diff --git a/vendor/symfony/http-kernel/Profiler/Profile.php b/vendor/symfony/http-kernel/Profiler/Profile.php
index 01cdc89442aef993efd602fc250481ffafb716c3..ac5b5044c1e7917873e5419570c0b4a47d2c4927 100644
--- a/vendor/symfony/http-kernel/Profiler/Profile.php
+++ b/vendor/symfony/http-kernel/Profiler/Profile.php
@@ -291,6 +291,9 @@ class Profile
         return isset($this->collectors[$name]);
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         return ['token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time', 'statusCode'];
diff --git a/vendor/symfony/http-kernel/Profiler/Profiler.php b/vendor/symfony/http-kernel/Profiler/Profiler.php
index 87a4996392c9aab61f9463776c8538b674735f26..60a623684cd02db1e4ef46a9cfbe340a4db20439 100644
--- a/vendor/symfony/http-kernel/Profiler/Profiler.php
+++ b/vendor/symfony/http-kernel/Profiler/Profiler.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpKernel\Profiler;
 
 use Psr\Log\LoggerInterface;
+use Symfony\Component\Debug\Exception\FatalThrowableError;
 use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
@@ -138,10 +139,14 @@ class Profiler implements ResetInterface
     /**
      * Collects data for the given Response.
      *
+     * @param \Throwable|null $exception
+     *
      * @return Profile|null A Profile instance or null if the profiler is disabled
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
+        $exception = 2 < \func_num_args() ? func_get_arg(2) : null;
+
         if (false === $this->enabled) {
             return null;
         }
@@ -163,9 +168,14 @@ class Profiler implements ResetInterface
 
         $response->headers->set('X-Debug-Token', $profile->getToken());
 
+        $wrappedException = null;
         foreach ($this->collectors as $collector) {
-            $collector->collect($request, $response, $exception);
+            if (($e = $exception) instanceof \Error) {
+                $r = new \ReflectionMethod($collector, 'collect');
+                $e = 2 >= $r->getNumberOfParameters() || !($p = $r->getParameters()[2])->hasType() || \Exception::class !== $p->getType()->getName() ? $e : ($wrappedException ?? $wrappedException = new FatalThrowableError($e));
+            }
 
+            $collector->collect($request, $response, $e);
             // we need to clone for sub-requests
             $profile->addCollector(clone $collector);
         }
diff --git a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
index c97e640b60325ec8e42a401ad4fae50cd1cc8b33..d13ee23220432e0f0f099bec9bfdd3b050da977c 100644
--- a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
+++ b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
@@ -38,7 +38,7 @@ interface ProfilerStorageInterface
      *
      * @return array An array of tokens
      */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null);
+    public function find($ip, $url, $limit, $method, $start = null, $end = null): array;
 
     /**
      * Reads data associated with the given token.
@@ -49,14 +49,14 @@ interface ProfilerStorageInterface
      *
      * @return Profile|null The profile associated with token
      */
-    public function read($token);
+    public function read($token): ?Profile;
 
     /**
      * Saves a Profile.
      *
      * @return bool Write operation successful
      */
-    public function write(Profile $profile);
+    public function write(Profile $profile): bool;
 
     /**
      * Purges all data from the database.
diff --git a/vendor/symfony/http-kernel/README.md b/vendor/symfony/http-kernel/README.md
index cc5e74b6bca3bc4277de7ee05b0bb74aa3835940..abdaf513f9cde11b0993d61a304928eb1dbe7725 100644
--- a/vendor/symfony/http-kernel/README.md
+++ b/vendor/symfony/http-kernel/README.md
@@ -9,7 +9,7 @@ an advanced CMS system (Drupal).
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/http_kernel/index.html)
+  * [Documentation](https://symfony.com/doc/current/components/http_kernel.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/http-kernel/Resources/welcome.html.php b/vendor/symfony/http-kernel/Resources/welcome.html.php
index 8fdc00506c860f6eb8d64d8bf407e3cdc34cc472..b8337dc737e4eb6499c1e7d03f63c353f9830d76 100644
--- a/vendor/symfony/http-kernel/Resources/welcome.html.php
+++ b/vendor/symfony/http-kernel/Resources/welcome.html.php
@@ -1,70 +1,119 @@
 <!DOCTYPE html>
-<html>
+<html dir="ltr" lang="en">
 <head>
     <meta charset="UTF-8" />
-    <title>Welcome!</title>
+    <meta name="robots" content="noindex,nofollow,noarchive,nosnippet,noodp,notranslate,noimageindex" />
+    <title>Welcome to Symfony!</title>
     <style>
-        body { background: #F5F5F5; font: 18px/1.5 sans-serif; }
+        <?php $hue = random_int(0, 360); ?>
+        <?php $darkColor = static function (float $alpha = 1) use ($hue) { return "hsla($hue, 20%, 45%, $alpha)"; }; ?>
+        <?php $lightColor = static function (float $alpha = 1) use ($hue) { return "hsla($hue, 20%, 95%, $alpha)"; }; ?>
+        body { background: <?= $lightColor(); ?>; color: <?= $darkColor(); ?>; display: flex; font: 16px/1.5 sans-serif; justify-content: center; margin: 0; }
         h1, h2 { line-height: 1.2; margin: 0 0 .5em; }
         h1 { font-size: 36px; }
         h2 { font-size: 21px; margin-bottom: 1em; }
-        p { margin: 0 0 1em 0; }
-        a { color: #0000F0; }
+        a { color: <?= $darkColor(0.75); ?> }
         a:hover { text-decoration: none; }
-        code { background: #F5F5F5; max-width: 100px; padding: 2px 6px; word-wrap: break-word; }
-        #wrapper { background: #FFF; margin: 1em auto; max-width: 800px; width: 95%; }
-        #container { padding: 2em; }
-        #welcome, #status { margin-bottom: 2em; }
-        #welcome h1 span { display: block; font-size: 75%; }
-        #comment { font-size: 14px; text-align: center; color: #777777; background: #FEFFEA; padding: 10px; }
-        #comment p { margin-bottom: 0; }
-        #icon-status, #icon-book { float: left; height: 64px; margin-right: 1em; margin-top: -4px; width: 64px; }
-        #icon-book { display: none; }
+        code { border-radius: 25px; background: <?= $lightColor(); ?>; box-shadow: 0 0 45px -15px hsl(<?= $hue; ?>, 20%, 2%); color: <?= $darkColor(); ?>; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; align-items: center; padding-right: 20px; position: relative; word-wrap: break-word; z-index: 1; }
+        svg { overflow: hidden; vertical-align: text-bottom; }
+        .wrapper { text-align: center; width: 100%; }
+        .container { position: relative; background: radial-gradient(ellipse at bottom, <?= $darkColor(); ?> 0%, hsl(<?= $hue; ?>, 20%, 13%) 100%); background-attachment: fixed; color: <?= $lightColor(); ?>; }
+        .container:after { content: ""; position: absolute; height: 2px; width: 2px; top: -2px; left: 0; background: white; box-shadow: 778px 1019px 0 0 rgba(255, 255, 255, 0.826) , 1075px 1688px 0 0 rgba(255,255,255, 0.275) , 388px 1021px 0 0 rgba(255,255,255, 0.259) , 1238px 626px 0 0 rgba(255,255,255, 0.469) , 997px 904px 0 0 rgba(255,255,255, 0.925) , 921px 1345px 0 0 rgba(255,255,255, 0.698) , 337px 1236px 0 0 rgba(255,255,255, 0.838) , 460px 569px 0 0 rgba(255,255,255, 0.01) , 690px 1488px 0 0 rgba(255,255,255, 0.154) , 859px 926px 0 0 rgba(255,255,255, 0.515) , 1272px 791px 0 0 rgba(255,255,255, 1) , 238px 1256px 0 0 rgba(255,255,255, 0.633) , 1486px 897px 0 0 rgba(255,255,255, 0.88) , 667px 6px 0 0 rgba(255,255,255, 0.508) , 853px 504px 0 0 rgba(255,255,255, 0.248) , 1329px 1778px 0 0 rgba(255,255,255, 0.217) , 768px 1340px 0 0 rgba(255,255,255, 0.792) , 631px 1383px 0 0 rgba(255,255,255, 0.698) , 991px 1603px 0 0 rgba(255,255,255, 0.939) , 1778px 1767px 0 0 rgba(255,255,255, 0.784) , 285px 546px 0 0 rgba(255,255,255, 0.8) , 1224px 1333px 0 0 rgba(255,255,255, 0.676) , 1154px 397px 0 0 rgba(255,255,255, 0.974) , 1210px 1004px 0 0 rgba(255,255,255, 0.894) , 1632px 953px 0 0 rgba(255,255,255, 0.281) , 449px 1144px 0 0 rgba(255,255,255, 0.706) , 1426px 771px 0 0 rgba(255,255,255, 0.737) , 1438px 1634px 0 0 rgba(255,255,255, 0.984) , 806px 168px 0 0 rgba(255,255,255, 0.807) , 731px 1067px 0 0 rgba(255,255,255, 0.734) , 1731px 1785px 0 0 rgba(255,255,255, 0.528) , 23px 975px 0 0 rgba(255,255,255, 0.068) , 575px 1088px 0 0 rgba(255,255,255, 0.876) , 1205px 1668px 0 0 rgba(255,255,255, 0.601) , 18px 1457px 0 0 rgba(255,255,255, 0.176) , 252px 1163px 0 0 rgba(255,255,255, 0.416) , 1752px 1px 0 0 rgba(255,255,255, 0.374) , 382px 767px 0 0 rgba(255,255,255, 0.073) , 133px 1462px 0 0 rgba(255,255,255, 0.706) , 851px 1166px 0 0 rgba(255,255,255, 0.535) , 374px 921px 0 0 rgba(255,255,255, 0.548) , 554px 1598px 0 0 rgba(255,255,255, 0.062) , 314px 685px 0 0 rgba(255,255,255, 0.187) , 1443px 209px 0 0 rgba(255,255,255, 0.097) , 1774px 1625px 0 0 rgba(255,255,255, 0.32) , 58px 278px 0 0 rgba(255,255,255, 0.684) , 986px 338px 0 0 rgba(255,255,255, 0.272) , 718px 1357px 0 0 rgba(255,255,255, 0.317) , 722px 983px 0 0 rgba(255,255,255, 0.568) , 1124px 992px 0 0 rgba(255,255,255, 0.199) , 581px 619px 0 0 rgba(255,255,255, 0.44) , 1120px 285px 0 0 rgba(255,255,255, 0.425) , 702px 138px 0 0 rgba(255,255,255, 0.816) , 262px 767px 0 0 rgba(255,255,255, 0.92) , 1204px 38px 0 0 rgba(255,255,255, 0.197) , 1196px 410px 0 0 rgba(255,255,255, 0.453) , 707px 699px 0 0 rgba(255,255,255, 0.481) , 1590px 1488px 0 0 rgba(255,255,255, 0.559) , 879px 1763px 0 0 rgba(255,255,255, 0.241) , 106px 686px 0 0 rgba(255,255,255, 0.175) , 158px 569px 0 0 rgba(255,255,255, 0.549) , 711px 1219px 0 0 rgba(255,255,255, 0.476) , 1339px 53px 0 0 rgba(255,255,255, 0.275) , 1410px 172px 0 0 rgba(255,255,255, 0.449) , 1601px 1484px 0 0 rgba(255,255,255, 0.988) , 1328px 1752px 0 0 rgba(255,255,255, 0.827) , 1733px 1475px 0 0 rgba(255,255,255, 0.567) , 559px 742px 0 0 rgba(255,255,255, 0.423) , 772px 844px 0 0 rgba(255,255,255, 0.039) , 602px 520px 0 0 rgba(255,255,255, 0.284) , 1158px 1067px 0 0 rgba(255,255,255, 0.066) , 1562px 730px 0 0 rgba(255,255,255, 0.086) , 1792px 615px 0 0 rgba(255,255,255, 0.438) , 1085px 1191px 0 0 rgba(255,255,255, 0.157) , 1402px 1087px 0 0 rgba(255,255,255, 0.797) , 569px 1685px 0 0 rgba(255,255,255, 0.992) , 1608px 52px 0 0 rgba(255,255,255, 0.302) , 1697px 1246px 0 0 rgba(255,255,255, 0.295) , 899px 1490px 0 0 rgba(255,255,255, 0.73) , 993px 901px 0 0 rgba(255,255,255, 0.961) , 1193px 1023px 0 0 rgba(255,255,255, 0.671) , 1224px 176px 0 0 rgba(255,255,255, 0.786) , 721px 1308px 0 0 rgba(255,255,255, 0.691) , 1702px 730px 0 0 rgba(255,255,255, 0.841) , 1480px 1498px 0 0 rgba(255,255,255, 0.655) , 181px 1612px 0 0 rgba(255,255,255, 0.588) , 1776px 679px 0 0 rgba(255,255,255, 0.821) , 892px 706px 0 0 rgba(255,255,255, 0.056) , 859px 267px 0 0 rgba(255,255,255, 0.565) , 784px 1285px 0 0 rgba(255,255,255, 0.029) , 1561px 1198px 0 0 rgba(255,255,255, 0.315) , 205px 421px 0 0 rgba(255,255,255, 0.584) , 236px 406px 0 0 rgba(255,255,255, 0.166) , 1259px 689px 0 0 rgba(255,255,255, 0.321) , 448px 317px 0 0 rgba(255,255,255, 0.495) , 1318px 466px 0 0 rgba(255,255,255, 0.275) , 1053px 297px 0 0 rgba(255,255,255, 0.035) , 716px 538px 0 0 rgba(255,255,255, 0.764) , 381px 207px 0 0 rgba(255,255,255, 0.692) , 871px 1140px 0 0 rgba(255,255,255, 0.342) , 361px 53px 0 0 rgba(255,255,255, 0.984) , 1565px 1593px 0 0 rgba(255,255,255, 0.102) , 145px 277px 0 0 rgba(255,255,255, 0.866) , 220px 1503px 0 0 rgba(255,255,255, 0.936) , 1068px 1475px 0 0 rgba(255,255,255, 0.156) , 1548px 483px 0 0 rgba(255,255,255, 0.768) , 710px 103px 0 0 rgba(255,255,255, 0.809) , 1660px 921px 0 0 rgba(255,255,255, 0.952) , 462px 1252px 0 0 rgba(255,255,255, 0.825) , 1123px 1628px 0 0 rgba(255,255,255, 0.409) , 1274px 729px 0 0 rgba(255,255,255, 0.26) , 1739px 679px 0 0 rgba(255,255,255, 0.83) , 1550px 1518px 0 0 rgba(255,255,255, 0.25) , 1624px 346px 0 0 rgba(255,255,255, 0.557) , 1023px 579px 0 0 rgba(255,255,255, 0.854) , 217px 661px 0 0 rgba(255,255,255, 0.731) , 1504px 549px 0 0 rgba(255,255,255, 0.705) , 939px 5px 0 0 rgba(255,255,255, 0.389) , 284px 735px 0 0 rgba(255,255,255, 0.355) , 13px 1679px 0 0 rgba(255,255,255, 0.712) , 137px 1592px 0 0 rgba(255,255,255, 0.619) , 1113px 505px 0 0 rgba(255,255,255, 0.651) , 1584px 510px 0 0 rgba(255,255,255, 0.41) , 346px 913px 0 0 rgba(255,255,255, 0.09) , 198px 1490px 0 0 rgba(255,255,255, 0.103) , 447px 1128px 0 0 rgba(255,255,255, 0.314) , 1356px 324px 0 0 rgba(255,255,255, 0.324) , 648px 667px 0 0 rgba(255,255,255, 0.155) , 442px 260px 0 0 rgba(255,255,255, 0.22) , 210px 401px 0 0 rgba(255,255,255, 0.682) , 422px 1772px 0 0 rgba(255,255,255, 0.671) , 276px 349px 0 0 rgba(255,255,255, 0.683) , 131px 539px 0 0 rgba(255,255,255, 0.977) , 892px 94px 0 0 rgba(255,255,255, 0.081) , 1295px 222px 0 0 rgba(255,255,255, 0.961) , 5px 1727px 0 0 rgba(255,255,255, 0.311) , 714px 1148px 0 0 rgba(255,255,255, 0.846) , 1455px 1182px 0 0 rgba(255,255,255, 0.313) , 1370px 708px 0 0 rgba(255,255,255, 0.824) , 812px 433px 0 0 rgba(255,255,255, 0.75) , 1110px 558px 0 0 rgba(255,255,255, 0.709) , 1132px 1543px 0 0 rgba(255,255,255, 0.868) , 644px 610px 0 0 rgba(255,255,255, 0.166) , 269px 1481px 0 0 rgba(255,255,255, 0.889) , 1712px 590px 0 0 rgba(255,255,255, 0.139) , 1159px 599px 0 0 rgba(255,255,255, 0.992) , 1551px 209px 0 0 rgba(255,255,255, 0.033) , 1020px 1721px 0 0 rgba(255,255,255, 0.028) , 216px 373px 0 0 rgba(255,255,255, 0.665) , 877px 532px 0 0 rgba(255,255,255, 0.686) , 1326px 885px 0 0 rgba(255,255,255, 0.517) , 972px 1704px 0 0 rgba(255,255,255, 0.499) , 749px 181px 0 0 rgba(255,255,255, 0.712) , 1511px 1650px 0 0 rgba(255,255,255, 0.101) , 1432px 183px 0 0 rgba(255,255,255, 0.545) , 1541px 1338px 0 0 rgba(255,255,255, 0.71) , 513px 1406px 0 0 rgba(255,255,255, 0.17) , 1314px 1197px 0 0 rgba(255,255,255, 0.789) , 824px 1659px 0 0 rgba(255,255,255, 0.597) , 308px 298px 0 0 rgba(255,255,255, 0.917) , 1225px 659px 0 0 rgba(255,255,255, 0.229) , 1253px 257px 0 0 rgba(255,255,255, 0.631) , 1653px 185px 0 0 rgba(255,255,255, 0.113) , 336px 614px 0 0 rgba(255,255,255, 0.045) , 1093px 898px 0 0 rgba(255,255,255, 0.617) , 730px 5px 0 0 rgba(255,255,255, 0.11) , 785px 645px 0 0 rgba(255,255,255, 0.516) , 989px 678px 0 0 rgba(255,255,255, 0.917) , 1511px 1614px 0 0 rgba(255,255,255, 0.938) , 584px 1117px 0 0 rgba(255,255,255, 0.631) , 534px 1012px 0 0 rgba(255,255,255, 0.668) , 1325px 1778px 0 0 rgba(255,255,255, 0.293) , 1632px 754px 0 0 rgba(255,255,255, 0.26) , 78px 1258px 0 0 rgba(255,255,255, 0.52) , 779px 1691px 0 0 rgba(255,255,255, 0.878) , 253px 1706px 0 0 rgba(255,255,255, 0.75) , 1358px 245px 0 0 rgba(255,255,255, 0.027) , 361px 1629px 0 0 rgba(255,255,255, 0.238) , 1134px 232px 0 0 rgba(255,255,255, 0.387) , 1685px 777px 0 0 rgba(255,255,255, 0.156) , 515px 724px 0 0 rgba(255,255,255, 0.863) , 588px 1728px 0 0 rgba(255,255,255, 0.159) , 1132px 47px 0 0 rgba(255,255,255, 0.691) , 315px 1446px 0 0 rgba(255,255,255, 0.782) , 79px 233px 0 0 rgba(255,255,255, 0.317) , 1498px 1050px 0 0 rgba(255,255,255, 0.358) , 30px 1073px 0 0 rgba(255,255,255, 0.939) , 1637px 620px 0 0 rgba(255,255,255, 0.141) , 1736px 1683px 0 0 rgba(255,255,255, 0.682) , 1298px 1505px 0 0 rgba(255,255,255, 0.863) , 972px 85px 0 0 rgba(255,255,255, 0.941) , 349px 1356px 0 0 rgba(255,255,255, 0.672) , 1545px 1429px 0 0 rgba(255,255,255, 0.859) , 1076px 467px 0 0 rgba(255,255,255, 0.024) , 189px 1647px 0 0 rgba(255,255,255, 0.838) , 423px 1722px 0 0 rgba(255,255,255, 0.771) , 1691px 1719px 0 0 rgba(255,255,255, 0.676) , 1747px 658px 0 0 rgba(255,255,255, 0.255) , 149px 1492px 0 0 rgba(255,255,255, 0.911) , 1203px 1138px 0 0 rgba(255,255,255, 0.964) , 781px 1584px 0 0 rgba(255,255,255, 0.465) , 1609px 1595px 0 0 rgba(255,255,255, 0.688) , 447px 1655px 0 0 rgba(255,255,255, 0.166) , 914px 1153px 0 0 rgba(255,255,255, 0.085) , 600px 1058px 0 0 rgba(255,255,255, 0.821) , 804px 505px 0 0 rgba(255,255,255, 0.608) , 1506px 584px 0 0 rgba(255,255,255, 0.618) , 587px 1290px 0 0 rgba(255,255,255, 0.071) , 258px 600px 0 0 rgba(255,255,255, 0.243) , 328px 395px 0 0 rgba(255,255,255, 0.065) , 846px 783px 0 0 rgba(255,255,255, 0.995) , 1138px 1294px 0 0 rgba(255,255,255, 0.703) , 1668px 633px 0 0 rgba(255,255,255, 0.27) , 337px 103px 0 0 rgba(255,255,255, 0.202) , 132px 986px 0 0 rgba(255,255,255, 0.726) , 414px 757px 0 0 rgba(255,255,255, 0.752) , 8px 1311px 0 0 rgba(255,255,255, 0.307) , 1791px 910px 0 0 rgba(255,255,255, 0.346) , 844px 216px 0 0 rgba(255,255,255, 0.156) , 1547px 1723px 0 0 rgba(255,255,255, 0.73) , 1187px 398px 0 0 rgba(255,255,255, 0.698) , 1550px 1520px 0 0 rgba(255,255,255, 0.462) , 1346px 655px 0 0 rgba(255,255,255, 0.58) , 668px 770px 0 0 rgba(255,255,255, 0.422) , 1774px 1435px 0 0 rgba(255,255,255, 0.089) , 693px 1061px 0 0 rgba(255,255,255, 0.893) , 132px 1689px 0 0 rgba(255,255,255, 0.937) , 894px 1561px 0 0 rgba(255,255,255, 0.88) , 906px 1706px 0 0 rgba(255,255,255, 0.567) , 1140px 297px 0 0 rgba(255,255,255, 0.358) , 13px 1288px 0 0 rgba(255,255,255, 0.464) , 1744px 423px 0 0 rgba(255,255,255, 0.845) , 119px 1548px 0 0 rgba(255,255,255, 0.769) , 1249px 1321px 0 0 rgba(255,255,255, 0.29) , 123px 795px 0 0 rgba(255,255,255, 0.597) , 390px 1542px 0 0 rgba(255,255,255, 0.47) , 825px 667px 0 0 rgba(255,255,255, 0.049) , 1071px 875px 0 0 rgba(255,255,255, 0.06) , 1428px 1786px 0 0 rgba(255,255,255, 0.222) , 993px 696px 0 0 rgba(255,255,255, 0.399) , 1585px 247px 0 0 rgba(255,255,255, 0.094) , 1340px 1312px 0 0 rgba(255,255,255, 0.603) , 1640px 725px 0 0 rgba(255,255,255, 0.026) , 1161px 1397px 0 0 rgba(255,255,255, 0.222) , 966px 1132px 0 0 rgba(255,255,255, 0.69) , 1782px 1275px 0 0 rgba(255,255,255, 0.606) , 1117px 1533px 0 0 rgba(255,255,255, 0.248) , 1027px 959px 0 0 rgba(255,255,255, 0.46) , 459px 839px 0 0 rgba(255,255,255, 0.98) , 1192px 265px 0 0 rgba(255,255,255, 0.523) , 175px 501px 0 0 rgba(255,255,255, 0.371) , 626px 19px 0 0 rgba(255,255,255, 0.246) , 46px 1173px 0 0 rgba(255,255,255, 0.124) , 573px 925px 0 0 rgba(255,255,255, 0.621) , 1px 283px 0 0 rgba(255,255,255, 0.943) , 778px 1213px 0 0 rgba(255,255,255, 0.128) , 435px 593px 0 0 rgba(255,255,255, 0.378) , 32px 394px 0 0 rgba(255,255,255, 0.451) , 1019px 1055px 0 0 rgba(255,255,255, 0.685) , 1423px 1233px 0 0 rgba(255,255,255, 0.354) , 494px 841px 0 0 rgba(255,255,255, 0.322) , 667px 194px 0 0 rgba(255,255,255, 0.655) , 1671px 195px 0 0 rgba(255,255,255, 0.502) , 403px 1710px 0 0 rgba(255,255,255, 0.623) , 665px 1597px 0 0 rgba(255,255,255, 0.839) , 61px 1742px 0 0 rgba(255,255,255, 0.566) , 1490px 1654px 0 0 rgba(255,255,255, 0.646) , 1361px 1604px 0 0 rgba(255,255,255, 0.101) , 1191px 1023px 0 0 rgba(255,255,255, 0.881) , 550px 378px 0 0 rgba(255,255,255, 0.573) , 1332px 1234px 0 0 rgba(255,255,255, 0.922) , 760px 1205px 0 0 rgba(255,255,255, 0.992) , 1506px 1328px 0 0 rgba(255,255,255, 0.723) , 1126px 813px 0 0 rgba(255,255,255, 0.549) , 67px 240px 0 0 rgba(255,255,255, 0.901) , 125px 1301px 0 0 rgba(255,255,255, 0.464) , 643px 391px 0 0 rgba(255,255,255, 0.589) , 1114px 1756px 0 0 rgba(255,255,255, 0.321) , 1602px 699px 0 0 rgba(255,255,255, 0.274) , 510px 393px 0 0 rgba(255,255,255, 0.185) , 171px 1217px 0 0 rgba(255,255,255, 0.932) , 1202px 1362px 0 0 rgba(255,255,255, 0.726) , 1160px 1324px 0 0 rgba(255,255,255, 0.867) , 121px 319px 0 0 rgba(255,255,255, 0.992) , 1474px 835px 0 0 rgba(255,255,255, 0.89) , 357px 1213px 0 0 rgba(255,255,255, 0.91) , 783px 976px 0 0 rgba(255,255,255, 0.941) , 750px 1599px 0 0 rgba(255,255,255, 0.515) , 323px 450px 0 0 rgba(255,255,255, 0.966) , 1078px 282px 0 0 rgba(255,255,255, 0.947) , 1164px 46px 0 0 rgba(255,255,255, 0.296) , 1792px 705px 0 0 rgba(255,255,255, 0.485) , 880px 1287px 0 0 rgba(255,255,255, 0.894) , 60px 1402px 0 0 rgba(255,255,255, 0.816) , 752px 894px 0 0 rgba(255,255,255, 0.803) , 285px 1535px 0 0 rgba(255,255,255, 0.93) , 1528px 401px 0 0 rgba(255,255,255, 0.727) , 651px 1767px 0 0 rgba(255,255,255, 0.146) , 1498px 1190px 0 0 rgba(255,255,255, 0.042) , 394px 1786px 0 0 rgba(255,255,255, 0.159) , 1318px 9px 0 0 rgba(255,255,255, 0.575) , 1699px 1675px 0 0 rgba(255,255,255, 0.511) , 82px 986px 0 0 rgba(255,255,255, 0.906) , 940px 970px 0 0 rgba(255,255,255, 0.562) , 1624px 259px 0 0 rgba(255,255,255, 0.537) , 1782px 222px 0 0 rgba(255,255,255, 0.259) , 1572px 1725px 0 0 rgba(255,255,255, 0.716) , 1080px 1557px 0 0 rgba(255,255,255, 0.245) , 1727px 648px 0 0 rgba(255,255,255, 0.471) , 899px 231px 0 0 rgba(255,255,255, 0.445) , 1061px 1074px 0 0 rgba(255,255,255, 0.079) , 556px 478px 0 0 rgba(255,255,255, 0.524) , 343px 359px 0 0 rgba(255,255,255, 0.162) , 711px 1254px 0 0 rgba(255,255,255, 0.323) , 1335px 242px 0 0 rgba(255,255,255, 0.936) , 933px 39px 0 0 rgba(255,255,255, 0.784) , 1629px 908px 0 0 rgba(255,255,255, 0.289) , 1800px 229px 0 0 rgba(255,255,255, 0.399) , 1589px 926px 0 0 rgba(255,255,255, 0.709) , 976px 694px 0 0 rgba(255,255,255, 0.855) , 1163px 1240px 0 0 rgba(255,255,255, 0.754) , 1662px 1784px 0 0 rgba(255,255,255, 0.088) , 656px 1388px 0 0 rgba(255,255,255, 0.688) , 1190px 1100px 0 0 rgba(255,255,255, 0.769) , 33px 392px 0 0 rgba(255,255,255, 0.301) , 56px 1405px 0 0 rgba(255,255,255, 0.969) , 1491px 118px 0 0 rgba(255,255,255, 0.991) , 1216px 997px 0 0 rgba(255,255,255, 0.727) , 1617px 712px 0 0 rgba(255,255,255, 0.45) , 163px 553px 0 0 rgba(255,255,255, 0.977) , 103px 140px 0 0 rgba(255,255,255, 0.916) , 1099px 1404px 0 0 rgba(255,255,255, 0.167) , 1423px 587px 0 0 rgba(255,255,255, 0.792) , 1797px 309px 0 0 rgba(255,255,255, 0.526) , 381px 141px 0 0 rgba(255,255,255, 0.005) , 1214px 802px 0 0 rgba(255,255,255, 0.887) , 211px 829px 0 0 rgba(255,255,255, 0.72) , 1103px 1507px 0 0 rgba(255,255,255, 0.642) , 244px 1231px 0 0 rgba(255,255,255, 0.184) , 118px 1747px 0 0 rgba(255,255,255, 0.475) , 183px 1293px 0 0 rgba(255,255,255, 0.148) , 911px 1362px 0 0 rgba(255,255,255, 0.073) , 817px 457px 0 0 rgba(255,255,255, 0.459) , 756px 18px 0 0 rgba(255,255,255, 0.544) , 481px 1118px 0 0 rgba(255,255,255, 0.878) , 380px 138px 0 0 rgba(255,255,255, 0.132) , 320px 646px 0 0 rgba(255,255,255, 0.04) , 1724px 1716px 0 0 rgba(255,255,255, 0.381) , 978px 1269px 0 0 rgba(255,255,255, 0.431) , 1530px 255px 0 0 rgba(255,255,255, 0.31) , 664px 204px 0 0 rgba(255,255,255, 0.913) , 474px 703px 0 0 rgba(255,255,255, 0.832) , 1722px 1204px 0 0 rgba(255,255,255, 0.356) , 1453px 821px 0 0 rgba(255,255,255, 0.195) , 730px 1468px 0 0 rgba(255,255,255, 0.696) , 928px 1610px 0 0 rgba(255,255,255, 0.894) , 1036px 304px 0 0 rgba(255,255,255, 0.696) , 1590px 172px 0 0 rgba(255,255,255, 0.729) , 249px 1590px 0 0 rgba(255,255,255, 0.277) , 357px 81px 0 0 rgba(255,255,255, 0.526) , 726px 1261px 0 0 rgba(255,255,255, 0.149) , 643px 946px 0 0 rgba(255,255,255, 0.005) , 1263px 995px 0 0 rgba(255,255,255, 0.124) , 1564px 1107px 0 0 rgba(255,255,255, 0.789) , 388px 83px 0 0 rgba(255,255,255, 0.498) , 715px 681px 0 0 rgba(255,255,255, 0.655) , 1618px 1624px 0 0 rgba(255,255,255, 0.63) , 1423px 1576px 0 0 rgba(255,255,255, 0.52) , 564px 1786px 0 0 rgba(255,255,255, 0.482) , 1066px 735px 0 0 rgba(255,255,255, 0.276) , 714px 1179px 0 0 rgba(255,255,255, 0.395) , 967px 1006px 0 0 rgba(255,255,255, 0.923) , 1136px 1790px 0 0 rgba(255,255,255, 0.801) , 215px 1690px 0 0 rgba(255,255,255, 0.957) , 1500px 1338px 0 0 rgba(255,255,255, 0.541) , 1679px 1065px 0 0 rgba(255,255,255, 0.925) , 426px 1489px 0 0 rgba(255,255,255, 0.193) , 1273px 853px 0 0 rgba(255,255,255, 0.317) , 665px 1189px 0 0 rgba(255,255,255, 0.512) , 520px 552px 0 0 rgba(255,255,255, 0.925) , 253px 438px 0 0 rgba(255,255,255, 0.588) , 369px 1354px 0 0 rgba(255,255,255, 0.889) , 749px 205px 0 0 rgba(255,255,255, 0.243) , 820px 145px 0 0 rgba(255,255,255, 0.207) , 1739px 228px 0 0 rgba(255,255,255, 0.267) , 392px 495px 0 0 rgba(255,255,255, 0.504) , 721px 1044px 0 0 rgba(255,255,255, 0.823) , 833px 912px 0 0 rgba(255,255,255, 0.222) , 865px 1499px 0 0 rgba(255,255,255, 0.003) , 313px 756px 0 0 rgba(255,255,255, 0.727) , 439px 1187px 0 0 rgba(255,255,255, 0.572) , 6px 1238px 0 0 rgba(255,255,255, 0.676) , 1567px 11px 0 0 rgba(255,255,255, 0.701) , 1216px 757px 0 0 rgba(255,255,255, 0.87) , 916px 588px 0 0 rgba(255,255,255, 0.565) , 831px 215px 0 0 rgba(255,255,255, 0.597) , 1289px 697px 0 0 rgba(255,255,255, 0.964) , 307px 34px 0 0 rgba(255,255,255, 0.462) , 3px 1685px 0 0 rgba(255,255,255, 0.464) , 1115px 1421px 0 0 rgba(255,255,255, 0.303) , 1451px 473px 0 0 rgba(255,255,255, 0.142) , 1374px 1205px 0 0 rgba(255,255,255, 0.086) , 1564px 317px 0 0 rgba(255,255,255, 0.773) , 304px 1127px 0 0 rgba(255,255,255, 0.653) , 446px 214px 0 0 rgba(255,255,255, 0.135) , 1541px 459px 0 0 rgba(255,255,255, 0.725) , 1387px 880px 0 0 rgba(255,255,255, 0.157) , 1172px 224px 0 0 rgba(255,255,255, 0.088) , 1420px 637px 0 0 rgba(255,255,255, 0.916) , 1385px 932px 0 0 rgba(255,255,255, 0.225) , 174px 1472px 0 0 rgba(255,255,255, 0.649) , 252px 750px 0 0 rgba(255,255,255, 0.277) , 825px 1042px 0 0 rgba(255,255,255, 0.707) , 840px 703px 0 0 rgba(255,255,255, 0.948) , 1478px 1800px 0 0 rgba(255,255,255, 0.151) , 95px 1303px 0 0 rgba(255,255,255, 0.332) , 1198px 740px 0 0 rgba(255,255,255, 0.443) , 141px 312px 0 0 rgba(255,255,255, 0.04) , 291px 729px 0 0 rgba(255,255,255, 0.284) , 1209px 1506px 0 0 rgba(255,255,255, 0.741) , 1188px 307px 0 0 rgba(255,255,255, 0.141) , 958px 41px 0 0 rgba(255,255,255, 0.858) , 1311px 1484px 0 0 rgba(255,255,255, 0.097) , 846px 1153px 0 0 rgba(255,255,255, 0.862) , 1238px 1376px 0 0 rgba(255,255,255, 0.071) , 1499px 342px 0 0 rgba(255,255,255, 0.719) , 640px 833px 0 0 rgba(255,255,255, 0.966) , 712px 545px 0 0 rgba(255,255,255, 0.194) , 1655px 1542px 0 0 rgba(255,255,255, 0.82) , 616px 353px 0 0 rgba(255,255,255, 0.871) , 1591px 1631px 0 0 rgba(255,255,255, 0.61) , 1664px 591px 0 0 rgba(255,255,255, 0.35) , 934px 454px 0 0 rgba(255,255,255, 0.58) , 1175px 477px 0 0 rgba(255,255,255, 0.966) , 299px 914px 0 0 rgba(255,255,255, 0.839) , 534px 243px 0 0 rgba(255,255,255, 0.194) , 773px 1135px 0 0 rgba(255,255,255, 0.42) , 1696px 1472px 0 0 rgba(255,255,255, 0.552) , 125px 523px 0 0 rgba(255,255,255, 0.591) , 1195px 382px 0 0 rgba(255,255,255, 0.904) , 1609px 1374px 0 0 rgba(255,255,255, 0.579) , 843px 82px 0 0 rgba(255,255,255, 0.072) , 1604px 451px 0 0 rgba(255,255,255, 0.545) , 1322px 190px 0 0 rgba(255,255,255, 0.034) , 528px 228px 0 0 rgba(255,255,255, 0.146) , 1470px 1169px 0 0 rgba(255,255,255, 0.912) , 502px 1350px 0 0 rgba(255,255,255, 0.594) , 1031px 298px 0 0 rgba(255,255,255, 0.368) , 1100px 1427px 0 0 rgba(255,255,255, 0.79) , 979px 1105px 0 0 rgba(255,255,255, 0.973) , 643px 1184px 0 0 rgba(255,255,255, 0.813) , 1636px 1701px 0 0 rgba(255,255,255, 0.013) , 1004px 245px 0 0 rgba(255,255,255, 0.412) , 680px 740px 0 0 rgba(255,255,255, 0.967) , 1599px 562px 0 0 rgba(255,255,255, 0.66) , 256px 1617px 0 0 rgba(255,255,255, 0.463) , 314px 1092px 0 0 rgba(255,255,255, 0.734) , 870px 900px 0 0 rgba(255,255,255, 0.512) , 530px 60px 0 0 rgba(255,255,255, 0.198) , 1786px 896px 0 0 rgba(255,255,255, 0.392) , 636px 212px 0 0 rgba(255,255,255, 0.997) , 672px 540px 0 0 rgba(255,255,255, 0.632) , 1118px 1649px 0 0 rgba(255,255,255, 0.377) , 433px 647px 0 0 rgba(255,255,255, 0.902) , 1200px 1737px 0 0 rgba(255,255,255, 0.262) , 1258px 143px 0 0 rgba(255,255,255, 0.729) , 1603px 1364px 0 0 rgba(255,255,255, 0.192) , 66px 1756px 0 0 rgba(255,255,255, 0.681) , 946px 263px 0 0 rgba(255,255,255, 0.105) , 1216px 1082px 0 0 rgba(255,255,255, 0.287) , 6px 1143px 0 0 rgba(255,255,255, 0.017) , 1631px 126px 0 0 rgba(255,255,255, 0.449) , 357px 1565px 0 0 rgba(255,255,255, 0.163) , 1752px 261px 0 0 rgba(255,255,255, 0.423) , 1247px 1631px 0 0 rgba(255,255,255, 0.312) , 320px 671px 0 0 rgba(255,255,255, 0.695) , 1375px 596px 0 0 rgba(255,255,255, 0.856) , 1456px 1340px 0 0 rgba(255,255,255, 0.564) , 447px 1044px 0 0 rgba(255,255,255, 0.623) , 1732px 447px 0 0 rgba(255,255,255, 0.216) , 174px 1509px 0 0 rgba(255,255,255, 0.398) , 16px 861px 0 0 rgba(255,255,255, 0.904) , 878px 1296px 0 0 rgba(255,255,255, 0.205) , 1725px 1483px 0 0 rgba(255,255,255, 0.704) , 255px 48px 0 0 rgba(255,255,255, 0.7) , 610px 1669px 0 0 rgba(255,255,255, 0.865) , 1044px 1251px 0 0 rgba(255,255,255, 0.98) , 884px 862px 0 0 rgba(255,255,255, 0.198) , 986px 545px 0 0 rgba(255,255,255, 0.379) , 1620px 217px 0 0 rgba(255,255,255, 0.159) , 383px 1763px 0 0 rgba(255,255,255, 0.518) , 595px 974px 0 0 rgba(255,255,255, 0.347) , 359px 14px 0 0 rgba(255,255,255, 0.863) , 95px 1385px 0 0 rgba(255,255,255, 0.011) , 411px 1030px 0 0 rgba(255,255,255, 0.038) , 345px 789px 0 0 rgba(255,255,255, 0.771) , 421px 460px 0 0 rgba(255,255,255, 0.133) , 972px 1160px 0 0 rgba(255,255,255, 0.342) , 597px 1061px 0 0 rgba(255,255,255, 0.781) , 1017px 1092px 0 0 rgba(255,255,255, 0.437); }
+        .warning { background: <?= $lightColor(); ?>; display: flex; align-content: center; padding: 10px; text-align: left; justify-content: center; }
+        .warning svg { height: 48px; width: 48px; margin-right: 10px; }
+        .container svg.wave { position: absolute; bottom: -2px; left: 0; z-index: 1; }
+        .container .logo { margin-bottom: 1em; }
+        .container .logo svg { fill: hsl(<?= $hue; ?>, 20%, 26%); }
+        .welcome { padding-top: 4em; margin-bottom: 3em; }
+        .welcome small { display: block; font-size: 85%; }
+        .status { padding-bottom: 2em; }
+        .status code, .status .status-ready { display: none; }
+        .version { font-size: 34px; }
+        .check { background: <?= $darkColor(); ?>; border-radius: 20px; width: 50px; display: flex; align-items: center; justify-content: center; height: 37px; margin: 6px 8px 6px 6px; }
+        .check svg { fill: <?= $lightColor(); ?>; }
+        .status-ready { margin: 28px 0 0; }
+        .resources { margin: 0 auto; max-width: 1366px; padding: 2.5em 0 3.5em; }
+        .resources .row { margin-left: 30px; margin-right: 30px; display: flex; justify-content: space-evenly; }
+        .resource { padding: 0 10px; position: relative; }
+        .resource svg { height: 48px; width: 48px; fill: <?= $darkColor(); ?>; margin-bottom: 5px; }
+        .resource h2 { font-size: 18px; font-weight: normal; margin-bottom: 5px; }
+        .resource p { margin-top: 5px; }
+        .resource a { display: block; font-size: 14px; }
 
         @media (min-width: 768px) {
-            #wrapper { width: 80%; margin: 2em auto; }
-            #icon-book { display: inline-block; }
-            #status a, #next a { display: block; }
-
             @-webkit-keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
             @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
-            .sf-toolbar { opacity: 0; -webkit-animation: fade-in 1s .2s forwards; animation: fade-in 1s .2s forwards;}
+            .sf-toolbar { opacity: 0; -webkit-animation: fade-in 1s .2s forwards; animation: fade-in 1s .2s forwards; z-index: 99999; }
+
+            body { font-size: 20px; }
+            .warning { text-align: center; }
+            .warning svg { height: 32px; width: 32px; }
+            .resources .row { margin-left: 50px; margin-right: 50px; }
+            .resource { padding: 0 30px; }
+
+            .status { padding-bottom: 4em; }
+            .status code { display: inline-flex; }
+            .status .status-ready { display: block; }
+
+            .resource svg { height: 64px; width: 64px; }
+            .resource h2 { font-size: 22px; }
+            .resource a { font-size: 16px; margin-top: 0; }
         }
     </style>
 </head>
 <body>
-<div id="wrapper">
-    <div id="container">
-        <div id="welcome">
-            <h1><span>Welcome to</span> Symfony <?php echo $version; ?></h1>
-        </div>
+<div class="wrapper">
+    <div class="warning">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" width="32"><path fill="currentColor" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z" class=""></path></svg>
+        You're seeing this page because you haven't configured any homepage URL and <a href="https://symfony.com/doc/<?= $docVersion; ?>/debug-mode" style="padding: 0 7px">debug mode</a> is enabled.
+    </div>
 
-        <div id="status">
-            <p>
-                <svg id="icon-status" width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z" fill="#759E1A"/></svg>
+    <div class="container">
+        <div class="welcome">
+            <div class="logo">
+                <svg xmlns="http://www.w3.org/2000/svg" width="112.165" height="112.166"><path d="M112.165 56.079c0 30.976-25.109 56.087-56.084 56.087C25.108 112.166 0 87.055 0 56.079 0 25.108 25.107 0 56.081 0c30.975 0 56.084 25.108 56.084 56.079z" style="fill: <?= $lightColor(); ?>;"/><path d="M80.603 20.75c-5.697.195-10.67 3.34-14.373 7.68-4.1 4.765-6.824 10.411-8.791 16.18-3.514-2.882-6.223-6.611-11.864-8.233-4.359-1.253-8.936-.737-13.146 2.399-1.992 1.489-3.367 3.738-4.02 5.859-1.692 5.498 1.778 10.396 3.354 12.151l3.447 3.691c.709.725 2.422 2.613 1.584 5.319-.9 2.947-4.451 4.85-8.092 3.731-1.627-.499-3.963-1.71-3.439-3.413.215-.699.715-1.225.984-1.821.244-.521.363-.907.438-1.14.665-2.169-.245-4.994-2.57-5.713-2.171-.666-4.391-.138-5.252 2.655-.977 3.174.543 8.935 8.681 11.441 9.535 2.935 17.597-2.259 18.742-9.026.721-4.239-1.195-7.392-4.701-11.441l-2.859-3.163c-1.73-1.729-2.324-4.677-.533-6.942 1.512-1.912 3.664-2.726 7.191-1.768 5.15 1.396 7.443 4.969 11.271 7.851-1.578 5.187-2.613 10.392-3.547 15.059l-.574 3.481c-2.736 14.352-4.826 22.235-10.256 26.76-1.094.779-2.658 1.943-5.014 2.027-1.238.037-1.637-.814-1.654-1.186-.027-.865.703-1.264 1.188-1.652.727-.396 1.824-1.053 1.748-3.156-.078-2.484-2.137-4.639-5.111-4.541-2.229.075-5.625 2.171-5.497 6.011.131 3.967 3.827 6.938 9.401 6.75 2.979-.102 9.633-1.312 16.188-9.105 7.631-8.935 9.766-19.175 11.372-26.671l1.793-9.897c.992.119 2.059.2 3.217.228 9.504.201 14.256-4.72 14.328-8.302.049-2.167-1.42-4.302-3.479-4.251-1.471.041-3.32 1.022-3.762 3.057-.436 1.995 3.023 3.798.32 5.553-1.92 1.242-5.361 2.116-10.209 1.407l.881-4.872c1.799-9.238 4.018-20.6 12.436-20.878.615-.029 2.857.026 2.91 1.512.014.493-.109.623-.689 1.757-.592.884-.814 1.64-.785 2.504.08 2.356 1.873 3.908 4.471 3.818 3.473-.116 4.469-3.496 4.412-5.233-.146-4.085-4.449-6.665-10.14-6.477z"/></svg>
+            </div>
+            <h1><small>Welcome to</small> Symfony <span class="version"><?= $version; ?></span></h1>
+        </div>
 
-                Your application is now ready. You can start working on it at:<br>
-                <code><?php echo $baseDir; ?></code>
-            </p>
+        <div class="status">
+            <code>
+                <span class="check">
+                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>
+                </span>
+                <span><?= $projectDir; ?></span>
+            </code>
+            <p class="status-ready">Your application is now ready and you can start working on it.</p>
         </div>
 
-        <div id="next">
-            <h2>What's next?</h2>
-            <p>
-                <svg id="icon-book" xmlns="http://www.w3.org/2000/svg" viewBox="-12.5 9 64 64"><path fill="#AAA" d="M6.8 40.8c2.4.8 4.5-.7 4.9-2.5.2-1.2-.3-2.1-1.3-3.2l-.8-.8c-.4-.5-.6-1.3-.2-1.9.4-.5.9-.8 1.8-.5 1.3.4 1.9 1.3 2.9 2.2-.4 1.4-.7 2.9-.9 4.2l-.2 1c-.7 4-1.3 6.2-2.7 7.5-.3.3-.7.5-1.3.6-.3 0-.4-.3-.4-.3 0-.3.2-.3.3-.4.2-.1.5-.3.4-.8 0-.7-.6-1.3-1.3-1.3-.6 0-1.4.6-1.4 1.7s1 1.9 2.4 1.8c.8 0 2.5-.3 4.2-2.5 2-2.5 2.5-5.4 2.9-7.4l.5-2.8c.3 0 .5.1.8.1 2.4.1 3.7-1.3 3.7-2.3 0-.6-.3-1.2-.9-1.2-.4 0-.8.3-1 .8-.1.6.8 1.1.1 1.5-.5.3-1.4.6-2.7.4l.3-1.3c.5-2.6 1-5.7 3.2-5.8.2 0 .8 0 .8.4 0 .2 0 .2-.2.5s-.3.4-.2.7c0 .7.5 1.1 1.2 1.1.9 0 1.2-1 1.2-1.4 0-1.2-1.2-1.8-2.6-1.8-1.5.1-2.8.9-3.7 2.1-1.1 1.3-1.8 2.9-2.3 4.5-.9-.8-1.6-1.8-3.1-2.3-1.1-.7-2.3-.5-3.4.3-.5.4-.8 1-1 1.6-.4 1.5.4 2.9.8 3.4l.9 1c.2.2.6.8.4 1.5-.3.8-1.2 1.3-2.1 1-.4-.2-1-.5-.9-.9.1-.2.2-.3.3-.5s.1-.3.1-.3c.2-.6-.1-1.4-.7-1.6-.6-.2-1.2 0-1.3.8 0 .7.4 2.3 2.5 3.1zm39.3-19.9c0-4.2-3.2-7.5-7.1-7.5h-3.8c-.4-2.6-2.5-4.4-5-4.4l-32.5.1c-2.8.1-4.9 2.4-4.9 5.4l.2 44.1c0 4.8 8.1 13.9 11.6 14.1l34.7-.1c3.9 0 7-3.4 7-7.6l-.2-44.1zM-.3 36.4c0-8.6 6.5-15.6 14.5-15.6s14.5 7 14.5 15.6S22.1 52 14.2 52C6.1 52-.3 45-.3 36.4zm42.4 28.7c0 1.8-1.5 3.1-3.1 3.1H4.6c-.7 0-3-1.8-4.5-4.4h30.4c2.8 0 5-2.4 5-5.4V17.9h3.7c1.6 0 2.9 1.4 2.9 3.1v44.1z"/></svg>
+        <svg style="pointer-events: none" class="wave" width="100%" height="50px" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 75"><defs><style>.a{fill:none}.b{clip-path:url(#a)}.c,.d {fill: <?= $lightColor(); ?>}.d{opacity:0.5;isolation:isolate;}</style><clipPath id="a"><rect class="a" width="1920" height="75"></rect></clipPath></defs><g class="b"><path class="c" d="M1963,327H-105V65A2647.49,2647.49,0,0,1,431,19c217.7,3.5,239.6,30.8,470,36,297.3,6.7,367.5-36.2,642-28a2511.41,2511.41,0,0,1,420,48"></path></g><g class="b"><path class="d" d="M-127,404H1963V44c-140.1-28-343.3-46.7-566,22-75.5,23.3-118.5,45.9-162,64-48.6,20.2-404.7,128-784,0C355.2,97.7,341.6,78.3,235,50,86.6,10.6-41.8,6.9-127,10"></path></g><g class="b"><path class="d" d="M1979,462-155,446V106C251.8,20.2,576.6,15.9,805,30c167.4,10.3,322.3,32.9,680,56,207,13.4,378,20.3,494,24"></path></g><g class="b"><path class="d" d="M1998,484H-243V100c445.8,26.8,794.2-4.1,1035-39,141-20.4,231.1-40.1,378-45,349.6-11.6,636.7,73.8,828,150"></path></g></svg>
+    </div>
 
-                Read the documentation to learn
-                <a href="https://symfony.com/doc/<?php echo $docVersion; ?>/page_creation.html">
-                    How to create your first page in Symfony
+    <div class="resources">
+        <div class="row">
+            <div class="resource">
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 11.55C9.64 9.35 6.48 8 3 8v11c3.48 0 6.64 1.35 9 3.55 2.36-2.19 5.52-3.55 9-3.55V8c-3.48 0-6.64 1.35-9 3.55zM12 8c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3z"/></svg>
+                <h2>Documentation</h2>
+                <a href="https://symfony.com/doc/<?= $docVersion; ?>/index.html">
+                    Guides, components, references
+                </a>
+            </div>
+            <div class="resource">
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"/></svg>
+                <h2>Tutorials</h2>
+                <a href="https://symfony.com/doc/<?= $docVersion; ?>/page_creation.html">
+                    Create your first page
                 </a>
-            </p>
+            </div>
+            <div class="resource">
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>
+                <h2>Community</h2>
+                <a href="https://symfony.com/community">
+                    Connect, get help, or contribute
+                </a>
+            </div>
         </div>
     </div>
-    <div id="comment">
-        <p>
-            You're seeing this page because debug mode is enabled and you haven't configured any homepage URL.
-        </p>
-    </div>
 </div>
 </body>
 </html>
diff --git a/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php b/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php
deleted file mode 100644
index 46dcee216267de89e52e560c2242f100500a70fb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Bundle;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Bundle\Bundle;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionNotValidBundle\ExtensionNotValidBundle;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\ExtensionPresentBundle;
-
-class BundleTest extends TestCase
-{
-    public function testGetContainerExtension()
-    {
-        $bundle = new ExtensionPresentBundle();
-
-        $this->assertInstanceOf(
-            'Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\DependencyInjection\ExtensionPresentExtension',
-            $bundle->getContainerExtension()
-        );
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetContainerExtensionWithInvalidClass()
-    {
-        $this->expectException('LogicException');
-        $this->expectExceptionMessage('must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface');
-        $bundle = new ExtensionNotValidBundle();
-        $bundle->getContainerExtension();
-    }
-
-    public function testBundleNameIsGuessedFromClass()
-    {
-        $bundle = new GuessedNameBundle();
-
-        $this->assertSame('Symfony\Component\HttpKernel\Tests\Bundle', $bundle->getNamespace());
-        $this->assertSame('GuessedNameBundle', $bundle->getName());
-    }
-
-    public function testBundleNameCanBeExplicitlyProvided()
-    {
-        $bundle = new NamedBundle();
-
-        $this->assertSame('ExplicitlyNamedBundle', $bundle->getName());
-        $this->assertSame('Symfony\Component\HttpKernel\Tests\Bundle', $bundle->getNamespace());
-        $this->assertSame('ExplicitlyNamedBundle', $bundle->getName());
-    }
-}
-
-class NamedBundle extends Bundle
-{
-    public function __construct()
-    {
-        $this->name = 'ExplicitlyNamedBundle';
-    }
-}
-
-class GuessedNameBundle extends Bundle
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php b/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php
deleted file mode 100644
index b97559e321623aa2e7ba3d006a8c3ab9b17ed497..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheClearer;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer;
-
-class ChainCacheClearerTest extends TestCase
-{
-    protected static $cacheDir;
-
-    public static function setUpBeforeClass(): void
-    {
-        self::$cacheDir = tempnam(sys_get_temp_dir(), 'sf_cache_clearer_dir');
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        @unlink(self::$cacheDir);
-    }
-
-    public function testInjectClearersInConstructor()
-    {
-        $clearer = $this->getMockClearer();
-        $clearer
-            ->expects($this->once())
-            ->method('clear');
-
-        $chainClearer = new ChainCacheClearer([$clearer]);
-        $chainClearer->clear(self::$cacheDir);
-    }
-
-    protected function getMockClearer()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpKernel\CacheClearer\CacheClearerInterface')->getMock();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheClearer/Psr6CacheClearerTest.php b/vendor/symfony/http-kernel/Tests/CacheClearer/Psr6CacheClearerTest.php
deleted file mode 100644
index cdf4a97d34c323d5d9e5e086dbb33368c24b4357..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/CacheClearer/Psr6CacheClearerTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheClearer;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Cache\CacheItemPoolInterface;
-use Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer;
-
-class Psr6CacheClearerTest extends TestCase
-{
-    public function testClearPoolsInjectedInConstructor()
-    {
-        $pool = $this->getMockBuilder(CacheItemPoolInterface::class)->getMock();
-        $pool
-            ->expects($this->once())
-            ->method('clear');
-
-        (new Psr6CacheClearer(['pool' => $pool]))->clear('');
-    }
-
-    public function testClearPool()
-    {
-        $pool = $this->getMockBuilder(CacheItemPoolInterface::class)->getMock();
-        $pool
-            ->expects($this->once())
-            ->method('clear');
-
-        (new Psr6CacheClearer(['pool' => $pool]))->clearPool('pool');
-    }
-
-    public function testClearPoolThrowsExceptionOnUnreferencedPool()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Cache pool not found: unknown');
-        (new Psr6CacheClearer())->clearPool('unknown');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerAggregateTest.php b/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerAggregateTest.php
deleted file mode 100644
index 4266c0a1824f9cb12e07aca183bb0ffa52ea1f77..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerAggregateTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheWarmer;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate;
-
-class CacheWarmerAggregateTest extends TestCase
-{
-    protected static $cacheDir;
-
-    public static function setUpBeforeClass(): void
-    {
-        self::$cacheDir = tempnam(sys_get_temp_dir(), 'sf_cache_warmer_dir');
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        @unlink(self::$cacheDir);
-    }
-
-    public function testInjectWarmersUsingConstructor()
-    {
-        $warmer = $this->getCacheWarmerMock();
-        $warmer
-            ->expects($this->once())
-            ->method('warmUp');
-        $aggregate = new CacheWarmerAggregate([$warmer]);
-        $aggregate->warmUp(self::$cacheDir);
-    }
-
-    public function testWarmupDoesCallWarmupOnOptionalWarmersWhenEnableOptionalWarmersIsEnabled()
-    {
-        $warmer = $this->getCacheWarmerMock();
-        $warmer
-            ->expects($this->never())
-            ->method('isOptional');
-        $warmer
-            ->expects($this->once())
-            ->method('warmUp');
-
-        $aggregate = new CacheWarmerAggregate([$warmer]);
-        $aggregate->enableOptionalWarmers();
-        $aggregate->warmUp(self::$cacheDir);
-    }
-
-    public function testWarmupDoesNotCallWarmupOnOptionalWarmersWhenEnableOptionalWarmersIsNotEnabled()
-    {
-        $warmer = $this->getCacheWarmerMock();
-        $warmer
-            ->expects($this->once())
-            ->method('isOptional')
-            ->willReturn(true);
-        $warmer
-            ->expects($this->never())
-            ->method('warmUp');
-
-        $aggregate = new CacheWarmerAggregate([$warmer]);
-        $aggregate->warmUp(self::$cacheDir);
-    }
-
-    protected function getCacheWarmerMock()
-    {
-        $warmer = $this->getMockBuilder('Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        return $warmer;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php b/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php
deleted file mode 100644
index b5acb1261849329e79bb885bede96872b0dd3976..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheWarmer;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmer;
-
-class CacheWarmerTest extends TestCase
-{
-    protected static $cacheFile;
-
-    public static function setUpBeforeClass(): void
-    {
-        self::$cacheFile = tempnam(sys_get_temp_dir(), 'sf_cache_warmer_dir');
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        @unlink(self::$cacheFile);
-    }
-
-    public function testWriteCacheFileCreatesTheFile()
-    {
-        $warmer = new TestCacheWarmer(self::$cacheFile);
-        $warmer->warmUp(\dirname(self::$cacheFile));
-
-        $this->assertFileExists(self::$cacheFile);
-    }
-
-    public function testWriteNonWritableCacheFileThrowsARuntimeException()
-    {
-        $this->expectException('RuntimeException');
-        $nonWritableFile = '/this/file/is/very/probably/not/writable';
-        $warmer = new TestCacheWarmer($nonWritableFile);
-        $warmer->warmUp(\dirname($nonWritableFile));
-    }
-}
-
-class TestCacheWarmer extends CacheWarmer
-{
-    protected $file;
-
-    public function __construct($file)
-    {
-        $this->file = $file;
-    }
-
-    public function warmUp($cacheDir)
-    {
-        $this->writeCacheFile($this->file, 'content');
-    }
-
-    public function isOptional()
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php b/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php
deleted file mode 100644
index 72b38c672ada995f08ca046c0da25fcd97921359..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Config;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Config\FileLocator;
-
-class FileLocatorTest extends TestCase
-{
-    public function testLocate()
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock();
-        $kernel
-            ->expects($this->atLeastOnce())
-            ->method('locateResource')
-            ->with('@BundleName/some/path', null, true)
-            ->willReturn('/bundle-name/some/path');
-        $locator = new FileLocator($kernel);
-        $this->assertEquals('/bundle-name/some/path', $locator->locate('@BundleName/some/path'));
-
-        $kernel
-            ->expects($this->never())
-            ->method('locateResource');
-        $this->expectException('LogicException');
-        $locator->locate('/some/path');
-    }
-
-    public function testLocateWithGlobalResourcePath()
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock();
-        $kernel
-            ->expects($this->atLeastOnce())
-            ->method('locateResource')
-            ->with('@BundleName/some/path', '/global/resource/path', false);
-
-        $locator = new FileLocator($kernel, '/global/resource/path');
-        $locator->locate('@BundleName/some/path', null, false);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php
deleted file mode 100644
index 4f85b0f351819a4b8af6923cf06fe9ddf11f16c1..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\NotTaggedControllerValueResolver;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-class NotTaggedControllerValueResolverTest extends TestCase
-{
-    public function testDoSupportWhenControllerDoNotExists()
-    {
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'my_controller']);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-    }
-
-    public function testDoNotSupportWhenControllerExists()
-    {
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new \stdClass();
-                    },
-                ]);
-            },
-        ]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::method']);
-
-        $this->assertFalse($resolver->supports($request, $argument));
-    }
-
-    public function testDoNotSupportEmptyController()
-    {
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => '']);
-        $this->assertFalse($resolver->supports($request, $argument));
-    }
-
-    public function testController()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::method']);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    public function testControllerWithATrailingBackSlash()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => '\\App\\Controller\\Mine::method']);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    public function testControllerWithMethodNameStartUppercase()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::Method']);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    public function testControllerNameIsAnArray()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => ['App\\Controller\\Mine', 'method']]);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    private function requestWithAttributes(array $attributes)
-    {
-        $request = Request::create('/');
-        foreach ($attributes as $name => $value) {
-            $request->attributes->set($name, $value);
-        }
-
-        return $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php
deleted file mode 100644
index 4036727bce15414a1029b745a309428433177d68..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\ServiceValueResolver;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterControllerArgumentLocatorsPass;
-
-class ServiceValueResolverTest extends TestCase
-{
-    public function testDoNotSupportWhenControllerDoNotExists()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'my_controller']);
-
-        $this->assertFalse($resolver->supports($request, $argument));
-    }
-
-    public function testExistingController()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::method']);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testExistingControllerWithATrailingBackSlash()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-
-        $request = $this->requestWithAttributes(['_controller' => '\\App\\Controller\\Mine::method']);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testExistingControllerWithMethodNameStartUppercase()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::Method']);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testControllerNameIsAnArray()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-
-        $request = $this->requestWithAttributes(['_controller' => ['App\\Controller\\Mine', 'method']]);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testErrorIsTruncated()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Cannot autowire argument $dummy of "Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver\DummyController::index()": it references class "Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver\DummyService" but no such service exists.');
-        $container = new ContainerBuilder();
-        $container->addCompilerPass(new RegisterControllerArgumentLocatorsPass());
-
-        $container->register('argument_resolver.service', ServiceValueResolver::class)->addArgument(null)->setPublic(true);
-        $container->register(DummyController::class)->addTag('controller.service_arguments')->setPublic(true);
-
-        $container->compile();
-
-        $request = $this->requestWithAttributes(['_controller' => [DummyController::class, 'index']]);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-        $container->get('argument_resolver.service')->resolve($request, $argument)->current();
-    }
-
-    private function requestWithAttributes(array $attributes)
-    {
-        $request = Request::create('/');
-
-        foreach ($attributes as $name => $value) {
-            $request->attributes->set($name, $value);
-        }
-
-        return $request;
-    }
-
-    private function assertYieldEquals(array $expected, \Generator $generator)
-    {
-        $args = [];
-        foreach ($generator as $arg) {
-            $args[] = $arg;
-        }
-
-        $this->assertEquals($expected, $args);
-    }
-}
-
-class DummyService
-{
-}
-
-class DummyController
-{
-    public function index(DummyService $dummy)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/TraceableValueResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/TraceableValueResolverTest.php
deleted file mode 100644
index 3c2cc3f70040f9dd1736f57bda12aa59f2a24101..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/TraceableValueResolverTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\TraceableValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class TraceableValueResolverTest extends TestCase
-{
-    public function testTimingsInSupports()
-    {
-        $stopwatch = new Stopwatch();
-        $resolver = new TraceableValueResolver(new ResolverStub(), $stopwatch);
-        $argument = new ArgumentMetadata('dummy', 'string', false, false, null);
-        $request = new Request();
-
-        $this->assertTrue($resolver->supports($request, $argument));
-
-        $event = $stopwatch->getEvent(ResolverStub::class.'::supports');
-        $this->assertCount(1, $event->getPeriods());
-    }
-
-    public function testTimingsInResolve()
-    {
-        $stopwatch = new Stopwatch();
-        $resolver = new TraceableValueResolver(new ResolverStub(), $stopwatch);
-        $argument = new ArgumentMetadata('dummy', 'string', false, false, null);
-        $request = new Request();
-
-        $iterable = $resolver->resolve($request, $argument);
-
-        foreach ($iterable as $index => $resolved) {
-            $event = $stopwatch->getEvent(ResolverStub::class.'::resolve');
-            $this->assertTrue($event->isStarted());
-            $this->assertEmpty($event->getPeriods());
-            switch ($index) {
-                case 0:
-                    $this->assertEquals('first', $resolved);
-                    break;
-                case 1:
-                    $this->assertEquals('second', $resolved);
-                    break;
-            }
-        }
-
-        $event = $stopwatch->getEvent(ResolverStub::class.'::resolve');
-        $this->assertCount(1, $event->getPeriods());
-    }
-}
-
-class ResolverStub implements ArgumentValueResolverInterface
-{
-    public function supports(Request $request, ArgumentMetadata $argument)
-    {
-        return true;
-    }
-
-    public function resolve(Request $request, ArgumentMetadata $argument)
-    {
-        yield 'first';
-        yield 'second';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php
deleted file mode 100644
index 8ee9108b1bb3a871ae4c89a40a3c4d89f00f6cd2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php
+++ /dev/null
@@ -1,326 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\ExtendingRequest;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\ExtendingSession;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\NullableController;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\VariadicController;
-
-class ArgumentResolverTest extends TestCase
-{
-    /** @var ArgumentResolver */
-    private static $resolver;
-
-    public static function setUpBeforeClass(): void
-    {
-        $factory = new ArgumentMetadataFactory();
-
-        self::$resolver = new ArgumentResolver($factory);
-    }
-
-    public function testDefaultState()
-    {
-        $this->assertEquals(self::$resolver, new ArgumentResolver());
-        $this->assertNotEquals(self::$resolver, new ArgumentResolver(null, [new RequestAttributeValueResolver()]));
-    }
-
-    public function testGetArguments()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = [new self(), 'controllerWithFoo'];
-
-        $this->assertEquals(['foo'], self::$resolver->getArguments($request, $controller), '->getArguments() returns an array of arguments for the controller method');
-    }
-
-    public function testGetArgumentsReturnsEmptyArrayWhenNoArguments()
-    {
-        $request = Request::create('/');
-        $controller = [new self(), 'controllerWithoutArguments'];
-
-        $this->assertEquals([], self::$resolver->getArguments($request, $controller), '->getArguments() returns an empty array if the method takes no arguments');
-    }
-
-    public function testGetArgumentsUsesDefaultValue()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = [new self(), 'controllerWithFooAndDefaultBar'];
-
-        $this->assertEquals(['foo', null], self::$resolver->getArguments($request, $controller), '->getArguments() uses default values if present');
-    }
-
-    public function testGetArgumentsOverrideDefaultValueByRequestAttribute()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', 'bar');
-        $controller = [new self(), 'controllerWithFooAndDefaultBar'];
-
-        $this->assertEquals(['foo', 'bar'], self::$resolver->getArguments($request, $controller), '->getArguments() overrides default values if provided in the request attributes');
-    }
-
-    public function testGetArgumentsFromClosure()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = function ($foo) {};
-
-        $this->assertEquals(['foo'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsUsesDefaultValueFromClosure()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = function ($foo, $bar = 'bar') {};
-
-        $this->assertEquals(['foo', 'bar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsFromInvokableObject()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = new self();
-
-        $this->assertEquals(['foo', null], self::$resolver->getArguments($request, $controller));
-
-        // Test default bar overridden by request attribute
-        $request->attributes->set('bar', 'bar');
-
-        $this->assertEquals(['foo', 'bar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsFromFunctionName()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('foobar', 'foobar');
-        $controller = __NAMESPACE__.'\controller_function';
-
-        $this->assertEquals(['foo', 'foobar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsFailsOnUnresolvedValue()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('foobar', 'foobar');
-        $controller = [new self(), 'controllerWithFooBarFoobar'];
-
-        try {
-            self::$resolver->getArguments($request, $controller);
-            $this->fail('->getArguments() throws a \RuntimeException exception if it cannot determine the argument value');
-        } catch (\Exception $e) {
-            $this->assertInstanceOf('\RuntimeException', $e, '->getArguments() throws a \RuntimeException exception if it cannot determine the argument value');
-        }
-    }
-
-    public function testGetArgumentsInjectsRequest()
-    {
-        $request = Request::create('/');
-        $controller = [new self(), 'controllerWithRequest'];
-
-        $this->assertEquals([$request], self::$resolver->getArguments($request, $controller), '->getArguments() injects the request');
-    }
-
-    public function testGetArgumentsInjectsExtendingRequest()
-    {
-        $request = ExtendingRequest::create('/');
-        $controller = [new self(), 'controllerWithExtendingRequest'];
-
-        $this->assertEquals([$request], self::$resolver->getArguments($request, $controller), '->getArguments() injects the request when extended');
-    }
-
-    public function testGetVariadicArguments()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', ['foo', 'bar']);
-        $controller = [new VariadicController(), 'action'];
-
-        $this->assertEquals(['foo', 'foo', 'bar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetVariadicArgumentsWithoutArrayInRequest()
-    {
-        $this->expectException('InvalidArgumentException');
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', 'foo');
-        $controller = [new VariadicController(), 'action'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetArgumentWithoutArray()
-    {
-        $this->expectException('InvalidArgumentException');
-        $factory = new ArgumentMetadataFactory();
-        $valueResolver = $this->getMockBuilder(ArgumentValueResolverInterface::class)->getMock();
-        $resolver = new ArgumentResolver($factory, [$valueResolver]);
-
-        $valueResolver->expects($this->any())->method('supports')->willReturn(true);
-        $valueResolver->expects($this->any())->method('resolve')->willReturn('foo');
-
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', 'foo');
-        $controller = [$this, 'controllerWithFooAndDefaultBar'];
-        $resolver->getArguments($request, $controller);
-    }
-
-    public function testIfExceptionIsThrownWhenMissingAnArgument()
-    {
-        $this->expectException('RuntimeException');
-        $request = Request::create('/');
-        $controller = [$this, 'controllerWithFoo'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetNullableArguments()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', new \stdClass());
-        $request->attributes->set('mandatory', 'mandatory');
-        $controller = [new NullableController(), 'action'];
-
-        $this->assertEquals(['foo', new \stdClass(), 'value', 'mandatory'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetNullableArgumentsWithDefaults()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('mandatory', 'mandatory');
-        $controller = [new NullableController(), 'action'];
-
-        $this->assertEquals([null, null, 'value', 'mandatory'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionArguments()
-    {
-        $session = new Session(new MockArraySessionStorage());
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithSession'];
-
-        $this->assertEquals([$session], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionArgumentsWithExtendedSession()
-    {
-        $session = new ExtendingSession(new MockArraySessionStorage());
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        $this->assertEquals([$session], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionArgumentsWithInterface()
-    {
-        $session = $this->getMockBuilder(SessionInterface::class)->getMock();
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithSessionInterface'];
-
-        $this->assertEquals([$session], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionMissMatchWithInterface()
-    {
-        $this->expectException('RuntimeException');
-        $session = $this->getMockBuilder(SessionInterface::class)->getMock();
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetSessionMissMatchWithImplementation()
-    {
-        $this->expectException('RuntimeException');
-        $session = new Session(new MockArraySessionStorage());
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetSessionMissMatchOnNull()
-    {
-        $this->expectException('RuntimeException');
-        $request = Request::create('/');
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function __invoke($foo, $bar = null)
-    {
-    }
-
-    public function controllerWithFoo($foo)
-    {
-    }
-
-    public function controllerWithoutArguments()
-    {
-    }
-
-    protected function controllerWithFooAndDefaultBar($foo, $bar = null)
-    {
-    }
-
-    protected function controllerWithFooBarFoobar($foo, $bar, $foobar)
-    {
-    }
-
-    protected function controllerWithRequest(Request $request)
-    {
-    }
-
-    protected function controllerWithExtendingRequest(ExtendingRequest $request)
-    {
-    }
-
-    protected function controllerWithSession(Session $session)
-    {
-    }
-
-    protected function controllerWithSessionInterface(SessionInterface $session)
-    {
-    }
-
-    protected function controllerWithExtendingSession(ExtendingSession $session)
-    {
-    }
-}
-
-function controller_function($foo, $foobar)
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php
deleted file mode 100644
index 956adb9613b6a1bf54f247d21e211117c24fbdda..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php
+++ /dev/null
@@ -1,259 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller;
-
-use Psr\Container\ContainerInterface;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ContainerControllerResolver;
-
-class ContainerControllerResolverTest extends ControllerResolverTest
-{
-    public function testGetControllerServiceWithSingleColon()
-    {
-        $service = new ControllerTestService('foo');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('foo')
-            ->willReturn(true);
-        $container->expects($this->once())
-            ->method('get')
-            ->with('foo')
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'foo:action');
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller[0]);
-        $this->assertSame('action', $controller[1]);
-    }
-
-    public function testGetControllerService()
-    {
-        $service = new ControllerTestService('foo');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('foo')
-            ->willReturn(true);
-        $container->expects($this->once())
-            ->method('get')
-            ->with('foo')
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'foo::action');
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller[0]);
-        $this->assertSame('action', $controller[1]);
-    }
-
-    public function testGetControllerInvokableService()
-    {
-        $service = new InvokableControllerService('bar');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('foo')
-            ->willReturn(true)
-        ;
-        $container->expects($this->once())
-            ->method('get')
-            ->with('foo')
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'foo');
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller);
-    }
-
-    public function testGetControllerInvokableServiceWithClassNameAsName()
-    {
-        $service = new InvokableControllerService('bar');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with(InvokableControllerService::class)
-            ->willReturn(true)
-        ;
-        $container->expects($this->once())
-            ->method('get')
-            ->with(InvokableControllerService::class)
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', InvokableControllerService::class);
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller);
-    }
-
-    /**
-     * @dataProvider getControllers
-     */
-    public function testInstantiateControllerWhenControllerStartsWithABackslash($controller)
-    {
-        $service = new ControllerTestService('foo');
-        $class = ControllerTestService::class;
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())->method('has')->with($class)->willReturn(true);
-        $container->expects($this->once())->method('get')->with($class)->willReturn($service);
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $controller);
-
-        $controller = $resolver->getController($request);
-
-        $this->assertInstanceOf(ControllerTestService::class, $controller[0]);
-        $this->assertSame('action', $controller[1]);
-    }
-
-    public function getControllers()
-    {
-        return [
-            ['\\'.ControllerTestService::class.'::action'],
-            ['\\'.ControllerTestService::class.':action'],
-        ];
-    }
-
-    public function testExceptionWhenUsingRemovedControllerServiceWithClassNameAsName()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Controller "Symfony\Component\HttpKernel\Tests\Controller\ControllerTestService" cannot be fetched from the container because it is private. Did you forget to tag the service with "controller.service_arguments"?');
-        $container = $this->getMockBuilder(Container::class)->getMock();
-        $container->expects($this->once())
-            ->method('has')
-            ->with(ControllerTestService::class)
-            ->willReturn(false)
-        ;
-
-        $container->expects($this->atLeastOnce())
-            ->method('getRemovedIds')
-            ->with()
-            ->willReturn([ControllerTestService::class => true])
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', [ControllerTestService::class, 'action']);
-
-        $resolver->getController($request);
-    }
-
-    public function testExceptionWhenUsingRemovedControllerService()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Controller "app.my_controller" cannot be fetched from the container because it is private. Did you forget to tag the service with "controller.service_arguments"?');
-        $container = $this->getMockBuilder(Container::class)->getMock();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('app.my_controller')
-            ->willReturn(false)
-        ;
-
-        $container->expects($this->atLeastOnce())
-            ->method('getRemovedIds')
-            ->with()
-            ->willReturn(['app.my_controller' => true])
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'app.my_controller');
-        $resolver->getController($request);
-    }
-
-    public function getUndefinedControllers()
-    {
-        $tests = parent::getUndefinedControllers();
-        $tests[0] = ['foo', \InvalidArgumentException::class, 'Controller "foo" does neither exist as service nor as class'];
-        $tests[1] = ['oof::bar', \InvalidArgumentException::class, 'Controller "oof" does neither exist as service nor as class'];
-        $tests[2] = [['oof', 'bar'], \InvalidArgumentException::class, 'Controller "oof" does neither exist as service nor as class'];
-        $tests[] = [
-            [ControllerTestService::class, 'action'],
-            \InvalidArgumentException::class,
-            'Controller "Symfony\Component\HttpKernel\Tests\Controller\ControllerTestService" has required constructor arguments and does not exist in the container. Did you forget to define such a service?',
-        ];
-        $tests[] = [
-            ControllerTestService::class.'::action',
-            \InvalidArgumentException::class, 'Controller "Symfony\Component\HttpKernel\Tests\Controller\ControllerTestService" has required constructor arguments and does not exist in the container. Did you forget to define such a service?',
-        ];
-        $tests[] = [
-            InvokableControllerService::class,
-            \InvalidArgumentException::class,
-            'Controller "Symfony\Component\HttpKernel\Tests\Controller\InvokableControllerService" has required constructor arguments and does not exist in the container. Did you forget to define such a service?',
-        ];
-
-        return $tests;
-    }
-
-    protected function createControllerResolver(LoggerInterface $logger = null, ContainerInterface $container = null)
-    {
-        if (!$container) {
-            $container = $this->createMockContainer();
-        }
-
-        return new ContainerControllerResolver($container, $logger);
-    }
-
-    protected function createMockContainer()
-    {
-        return $this->getMockBuilder(ContainerInterface::class)->getMock();
-    }
-}
-
-class InvokableControllerService
-{
-    public function __construct($bar) // mandatory argument to prevent automatic instantiation
-    {
-    }
-
-    public function __invoke()
-    {
-    }
-}
-
-class ControllerTestService
-{
-    public function __construct($foo)
-    {
-    }
-
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php
deleted file mode 100644
index 77ce524fc60a24e5ad96104964a6da732dd2d7fb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerResolver;
-
-class ControllerResolverTest extends TestCase
-{
-    public function testGetControllerWithoutControllerParameter()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger->expects($this->once())->method('warning')->with('Unable to look for the controller as the "_controller" parameter is missing.');
-        $resolver = $this->createControllerResolver($logger);
-
-        $request = Request::create('/');
-        $this->assertFalse($resolver->getController($request), '->getController() returns false when the request has no _controller attribute');
-    }
-
-    public function testGetControllerWithLambda()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $lambda = function () {});
-        $controller = $resolver->getController($request);
-        $this->assertSame($lambda, $controller);
-    }
-
-    public function testGetControllerWithObjectAndInvokeMethod()
-    {
-        $resolver = $this->createControllerResolver();
-        $object = new InvokableController();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $object);
-        $controller = $resolver->getController($request);
-        $this->assertSame($object, $controller);
-    }
-
-    public function testGetControllerWithObjectAndMethod()
-    {
-        $resolver = $this->createControllerResolver();
-        $object = new ControllerTest();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', [$object, 'publicAction']);
-        $controller = $resolver->getController($request);
-        $this->assertSame([$object, 'publicAction'], $controller);
-    }
-
-    public function testGetControllerWithClassAndMethodAsArray()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', [ControllerTest::class, 'publicAction']);
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(ControllerTest::class, $controller[0]);
-        $this->assertSame('publicAction', $controller[1]);
-    }
-
-    public function testGetControllerWithClassAndMethodAsString()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', ControllerTest::class.'::publicAction');
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(ControllerTest::class, $controller[0]);
-        $this->assertSame('publicAction', $controller[1]);
-    }
-
-    public function testGetControllerWithInvokableClass()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', InvokableController::class);
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(InvokableController::class, $controller);
-    }
-
-    public function testGetControllerOnObjectWithoutInvokeMethod()
-    {
-        $this->expectException('InvalidArgumentException');
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', new \stdClass());
-        $resolver->getController($request);
-    }
-
-    public function testGetControllerWithFunction()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'Symfony\Component\HttpKernel\Tests\Controller\some_controller_function');
-        $controller = $resolver->getController($request);
-        $this->assertSame('Symfony\Component\HttpKernel\Tests\Controller\some_controller_function', $controller);
-    }
-
-    public function testGetControllerWithClosure()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $closure = function () {
-            return 'test';
-        };
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $closure);
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(\Closure::class, $controller);
-        $this->assertSame('test', $controller());
-    }
-
-    /**
-     * @dataProvider getStaticControllers
-     */
-    public function testGetControllerWithStaticController($staticController, $returnValue)
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $staticController);
-        $controller = $resolver->getController($request);
-        $this->assertSame($staticController, $controller);
-        $this->assertSame($returnValue, $controller());
-    }
-
-    public function getStaticControllers()
-    {
-        return [
-            [TestAbstractController::class.'::staticAction', 'foo'],
-            [[TestAbstractController::class, 'staticAction'], 'foo'],
-            [PrivateConstructorController::class.'::staticAction', 'bar'],
-            [[PrivateConstructorController::class, 'staticAction'], 'bar'],
-        ];
-    }
-
-    /**
-     * @dataProvider getUndefinedControllers
-     */
-    public function testGetControllerWithUndefinedController($controller, $exceptionName = null, $exceptionMessage = null)
-    {
-        $resolver = $this->createControllerResolver();
-        $this->expectException($exceptionName);
-        $this->expectExceptionMessage($exceptionMessage);
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $controller);
-        $resolver->getController($request);
-    }
-
-    public function getUndefinedControllers()
-    {
-        $controller = new ControllerTest();
-
-        return [
-            ['foo', \Error::class, 'Class \'foo\' not found'],
-            ['oof::bar', \Error::class, 'Class \'oof\' not found'],
-            [['oof', 'bar'], \Error::class, 'Class \'oof\' not found'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::staticsAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "staticsAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest", did you mean "staticAction"?'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::privateAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "privateAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::protectedAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "protectedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::undefinedAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "undefinedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest". Available methods: "publicAction", "staticAction"'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Controller class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" cannot be called without a method name. You need to implement "__invoke" or use one of the available methods: "publicAction", "staticAction".'],
-            [[$controller, 'staticsAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "staticsAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest", did you mean "staticAction"?'],
-            [[$controller, 'privateAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "privateAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            [[$controller, 'protectedAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "protectedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            [[$controller, 'undefinedAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "undefinedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest". Available methods: "publicAction", "staticAction"'],
-            [$controller, \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Controller class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" cannot be called without a method name. You need to implement "__invoke" or use one of the available methods: "publicAction", "staticAction".'],
-            [['a' => 'foo', 'b' => 'bar'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Invalid array callable, expected [controller, method].'],
-        ];
-    }
-
-    protected function createControllerResolver(LoggerInterface $logger = null)
-    {
-        return new ControllerResolver($logger);
-    }
-}
-
-function some_controller_function($foo, $foobar)
-{
-}
-
-class ControllerTest
-{
-    public function __construct()
-    {
-    }
-
-    public function __toString()
-    {
-        return '';
-    }
-
-    public function publicAction()
-    {
-    }
-
-    private function privateAction()
-    {
-    }
-
-    protected function protectedAction()
-    {
-    }
-
-    public static function staticAction()
-    {
-    }
-}
-
-class InvokableController
-{
-    public function __invoke($foo, $bar = null)
-    {
-    }
-}
-
-abstract class TestAbstractController
-{
-    public static function staticAction()
-    {
-        return 'foo';
-    }
-}
-
-class PrivateConstructorController
-{
-    private function __construct()
-    {
-    }
-
-    public static function staticAction()
-    {
-        return 'bar';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php b/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php
deleted file mode 100644
index f77b6759afa6a5cb64957f372e8fcc6584ed49eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\ControllerMetadata;
-
-use Fake\ImportedAndFake;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\BasicTypesController;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\NullableController;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\VariadicController;
-
-class ArgumentMetadataFactoryTest extends TestCase
-{
-    /**
-     * @var ArgumentMetadataFactory
-     */
-    private $factory;
-
-    protected function setUp(): void
-    {
-        $this->factory = new ArgumentMetadataFactory();
-    }
-
-    public function testSignature1()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature1']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', self::class, false, false, null),
-            new ArgumentMetadata('bar', 'array', false, false, null),
-            new ArgumentMetadata('baz', 'callable', false, false, null),
-        ], $arguments);
-    }
-
-    public function testSignature2()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature2']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', self::class, false, true, null, true),
-            new ArgumentMetadata('bar', __NAMESPACE__.'\FakeClassThatDoesNotExist', false, true, null, true),
-            new ArgumentMetadata('baz', 'Fake\ImportedAndFake', false, true, null, true),
-        ], $arguments);
-    }
-
-    public function testSignature3()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature3']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('bar', __NAMESPACE__.'\FakeClassThatDoesNotExist', false, false, null),
-            new ArgumentMetadata('baz', 'Fake\ImportedAndFake', false, false, null),
-        ], $arguments);
-    }
-
-    public function testSignature4()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature4']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', null, false, true, 'default'),
-            new ArgumentMetadata('bar', null, false, true, 500),
-            new ArgumentMetadata('baz', null, false, true, []),
-        ], $arguments);
-    }
-
-    public function testSignature5()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature5']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', 'array', false, true, null, true),
-            new ArgumentMetadata('bar', null, false, false, null),
-        ], $arguments);
-    }
-
-    public function testVariadicSignature()
-    {
-        $arguments = $this->factory->createArgumentMetadata([new VariadicController(), 'action']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', null, false, false, null),
-            new ArgumentMetadata('bar', null, true, false, null),
-        ], $arguments);
-    }
-
-    public function testBasicTypesSignature()
-    {
-        $arguments = $this->factory->createArgumentMetadata([new BasicTypesController(), 'action']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', 'string', false, false, null),
-            new ArgumentMetadata('bar', 'int', false, false, null),
-            new ArgumentMetadata('baz', 'float', false, false, null),
-        ], $arguments);
-    }
-
-    public function testNullableTypesSignature()
-    {
-        $arguments = $this->factory->createArgumentMetadata([new NullableController(), 'action']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', 'string', false, false, null, true),
-            new ArgumentMetadata('bar', \stdClass::class, false, false, null, true),
-            new ArgumentMetadata('baz', 'string', false, true, 'value', true),
-            new ArgumentMetadata('mandatory', null, false, false, null, true),
-        ], $arguments);
-    }
-
-    private function signature1(self $foo, array $bar, callable $baz)
-    {
-    }
-
-    private function signature2(self $foo = null, FakeClassThatDoesNotExist $bar = null, ImportedAndFake $baz = null)
-    {
-    }
-
-    private function signature3(FakeClassThatDoesNotExist $bar, ImportedAndFake $baz)
-    {
-    }
-
-    private function signature4($foo = 'default', $bar = 500, $baz = [])
-    {
-    }
-
-    private function signature5(array $foo = null, $bar)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php b/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php
deleted file mode 100644
index 5ce4b1f76be06a3d277dc0a7bbf01dad4417cff9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\ControllerMetadata;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-class ArgumentMetadataTest extends TestCase
-{
-    public function testWithBcLayerWithDefault()
-    {
-        $argument = new ArgumentMetadata('foo', 'string', false, true, 'default value');
-
-        $this->assertFalse($argument->isNullable());
-    }
-
-    public function testDefaultValueAvailable()
-    {
-        $argument = new ArgumentMetadata('foo', 'string', false, true, 'default value', true);
-
-        $this->assertTrue($argument->isNullable());
-        $this->assertTrue($argument->hasDefaultValue());
-        $this->assertSame('default value', $argument->getDefaultValue());
-    }
-
-    public function testDefaultValueUnavailable()
-    {
-        $this->expectException('LogicException');
-        $argument = new ArgumentMetadata('foo', 'string', false, false, null, false);
-
-        $this->assertFalse($argument->isNullable());
-        $this->assertFalse($argument->hasDefaultValue());
-        $argument->getDefaultValue();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log b/vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log
deleted file mode 100644
index 88b6840eae8e9f969982d412142bea46ac58ce36..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log
+++ /dev/null
@@ -1,4 +0,0 @@
-Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "Psr\Container\ContainerInterface"; reason: private alias.
-Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "Symfony\Component\DependencyInjection\ContainerInterface"; reason: private alias.
-Some custom logging message
-With ending :
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php
deleted file mode 100644
index add100d47b7dfad321f9cc7a406af2574c34e7dd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector;
-use Symfony\Component\HttpKernel\Kernel;
-
-class ConfigDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $kernel = new KernelForTest('test', true);
-        $c = new ConfigDataCollector();
-        $c->setKernel($kernel);
-        $c->collect(new Request(), new Response());
-
-        $this->assertSame('test', $c->getEnv());
-        $this->assertTrue($c->isDebug());
-        $this->assertSame('config', $c->getName());
-        $this->assertRegExp('~^'.preg_quote($c->getPhpVersion(), '~').'~', PHP_VERSION);
-        $this->assertRegExp('~'.preg_quote((string) $c->getPhpVersionExtra(), '~').'$~', PHP_VERSION);
-        $this->assertSame(PHP_INT_SIZE * 8, $c->getPhpArchitecture());
-        $this->assertSame(class_exists('Locale', false) && \Locale::getDefault() ? \Locale::getDefault() : 'n/a', $c->getPhpIntlLocale());
-        $this->assertSame(date_default_timezone_get(), $c->getPhpTimezone());
-        $this->assertSame(Kernel::VERSION, $c->getSymfonyVersion());
-        $this->assertNull($c->getToken());
-        $this->assertSame(\extension_loaded('xdebug'), $c->hasXDebug());
-        $this->assertSame(\extension_loaded('Zend OPcache') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN), $c->hasZendOpcache());
-        $this->assertSame(\extension_loaded('apcu') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN), $c->hasApcu());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation The "$name" argument in method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::__construct()" is deprecated since Symfony 4.2.
-     * @expectedDeprecation The "$version" argument in method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::__construct()" is deprecated since Symfony 4.2.
-     * @expectedDeprecation The method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::getApplicationName()" is deprecated since Symfony 4.2.
-     * @expectedDeprecation The method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::getApplicationVersion()" is deprecated since Symfony 4.2.
-     */
-    public function testLegacy()
-    {
-        $c = new ConfigDataCollector('name', null);
-        $c->collect(new Request(), new Response());
-
-        $this->assertSame('name', $c->getApplicationName());
-        $this->assertNull($c->getApplicationVersion());
-    }
-}
-
-class KernelForTest extends Kernel
-{
-    public function registerBundles()
-    {
-    }
-
-    public function getBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php
deleted file mode 100644
index ae79a3c93c5043b8c86d4956b34fe70431068430..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Tests\Fixtures\DataCollector\CloneVarDataCollector;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-
-class DataCollectorTest extends TestCase
-{
-    public function testCloneVarStringWithScheme()
-    {
-        $c = new CloneVarDataCollector('scheme://foo');
-        $c->collect(new Request(), new Response());
-        $cloner = new VarCloner();
-
-        $this->assertEquals($cloner->cloneVar('scheme://foo'), $c->getData());
-    }
-
-    public function testCloneVarExistingFilePath()
-    {
-        $c = new CloneVarDataCollector([$filePath = tempnam(sys_get_temp_dir(), 'clone_var_data_collector_')]);
-        $c->collect(new Request(), new Response());
-
-        $this->assertSame($filePath, $c->getData()[0]);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php
deleted file mode 100644
index a40a482278155052f74a184f202e43b65618ad5a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DumpDataCollector;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-use Symfony\Component\VarDumper\Server\Connection;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpDataCollectorTest extends TestCase
-{
-    public function testDump()
-    {
-        $data = new Data([[123]]);
-
-        $collector = new DumpDataCollector();
-
-        $this->assertSame('dump', $collector->getName());
-
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-        $this->assertSame(1, $collector->getDumpsCount());
-
-        $dump = $collector->getDumps('html');
-        $this->assertArrayHasKey('data', $dump[0]);
-        $dump[0]['data'] = preg_replace('/^.*?<pre/', '<pre', $dump[0]['data']);
-        $dump[0]['data'] = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump[0]['data']);
-
-        $xDump = [
-            [
-                'data' => "<pre class=sf-dump id=sf-dump data-indent-pad=\"  \"><span class=sf-dump-num>123</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n",
-                'name' => 'DumpDataCollectorTest.php',
-                'file' => __FILE__,
-                'line' => $line,
-                'fileExcerpt' => false,
-            ],
-        ];
-        $this->assertEquals($xDump, $dump);
-
-        $this->assertStringMatchesFormat('%a;a:%d:{i:0;a:5:{s:4:"data";%c:39:"Symfony\Component\VarDumper\Cloner\Data":%a', serialize($collector));
-        $this->assertSame(0, $collector->getDumpsCount());
-        $this->assertSame("O:60:\"Symfony\Component\HttpKernel\DataCollector\DumpDataCollector\":1:{s:7:\"\0*\0data\";a:2:{i:0;b:0;i:1;s:5:\"UTF-8\";}}", serialize($collector));
-    }
-
-    public function testDumpWithServerConnection()
-    {
-        $data = new Data([[123]]);
-
-        // Server is up, server dumper is used
-        $serverDumper = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock();
-        $serverDumper->expects($this->once())->method('write')->willReturn(true);
-
-        $collector = new DumpDataCollector(null, null, null, null, $serverDumper);
-        $collector->dump($data);
-
-        // Collect doesn't re-trigger dump
-        ob_start();
-        $collector->collect(new Request(), new Response());
-        $this->assertEmpty(ob_get_clean());
-        $this->assertStringMatchesFormat('%a;a:%d:{i:0;a:5:{s:4:"data";%c:39:"Symfony\Component\VarDumper\Cloner\Data":%a', serialize($collector));
-    }
-
-    public function testCollectDefault()
-    {
-        $data = new Data([[123]]);
-
-        $collector = new DumpDataCollector();
-
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-
-        ob_start();
-        $collector->collect(new Request(), new Response());
-        $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
-
-        $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n123\n", $output);
-        $this->assertSame(1, $collector->getDumpsCount());
-        serialize($collector);
-    }
-
-    public function testCollectHtml()
-    {
-        $data = new Data([[123]]);
-
-        $collector = new DumpDataCollector(null, 'test://%f:%l');
-
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-        $file = __FILE__;
-        $xOutput = <<<EOTXT
-<pre class=sf-dump id=sf-dump data-indent-pad="  "><a href="test://{$file}:{$line}" title="{$file}"><span class=sf-dump-meta>DumpDataCollectorTest.php</span></a> on line <span class=sf-dump-meta>{$line}</span>:
-<span class=sf-dump-num>123</span>
-</pre>
-EOTXT;
-
-        ob_start();
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/html');
-        $collector->collect(new Request(), $response);
-        $output = ob_get_clean();
-        $output = preg_replace('#<(script|style).*?</\1>#s', '', $output);
-        $output = preg_replace('/sf-dump-\d+/', 'sf-dump', $output);
-
-        $this->assertSame($xOutput, trim($output));
-        $this->assertSame(1, $collector->getDumpsCount());
-        serialize($collector);
-    }
-
-    public function testFlush()
-    {
-        $data = new Data([[456]]);
-        $collector = new DumpDataCollector();
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-
-        ob_start();
-        $collector->__destruct();
-        $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
-        $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", $output);
-    }
-
-    public function testFlushNothingWhenDataDumperIsProvided()
-    {
-        $data = new Data([[456]]);
-        $dumper = new CliDumper('php://output');
-        $collector = new DumpDataCollector(null, null, null, null, $dumper);
-
-        ob_start();
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-        $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
-
-        $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", $output);
-
-        ob_start();
-        $collector->__destruct();
-        $this->assertEmpty(ob_get_clean());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/ExceptionDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/ExceptionDataCollectorTest.php
deleted file mode 100644
index 1e8d186cc31fc7e2e6bb8cd185ccddf9f4c3dc92..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/ExceptionDataCollectorTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector;
-
-class ExceptionDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $e = new \Exception('foo', 500);
-        $c = new ExceptionDataCollector();
-        $flattened = FlattenException::create($e);
-        $trace = $flattened->getTrace();
-
-        $this->assertFalse($c->hasException());
-
-        $c->collect(new Request(), new Response(), $e);
-
-        $this->assertTrue($c->hasException());
-        $this->assertEquals($flattened, $c->getException());
-        $this->assertSame('foo', $c->getMessage());
-        $this->assertSame(500, $c->getCode());
-        $this->assertSame('exception', $c->getName());
-        $this->assertSame($trace, $c->getTrace());
-    }
-
-    public function testCollectWithoutException()
-    {
-        $c = new ExceptionDataCollector();
-        $c->collect(new Request(), new Response());
-
-        $this->assertFalse($c->hasException());
-    }
-
-    public function testReset()
-    {
-        $c = new ExceptionDataCollector();
-
-        $c->collect(new Request(), new Response(), new \Exception());
-        $c->reset();
-        $c->collect(new Request(), new Response());
-
-        $this->assertFalse($c->hasException());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/LoggerDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/LoggerDataCollectorTest.php
deleted file mode 100644
index faa2c7ef3714777df6427ed4330634d12cf94968..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/LoggerDataCollectorTest.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\SilencedErrorContext;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-
-class LoggerDataCollectorTest extends TestCase
-{
-    public function testCollectWithUnexpectedFormat()
-    {
-        $logger = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Log\DebugLoggerInterface')
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->willReturn(123);
-        $logger->expects($this->exactly(2))->method('getLogs')->willReturn([]);
-
-        $c = new LoggerDataCollector($logger, __DIR__.'/');
-        $c->lateCollect();
-        $compilerLogs = $c->getCompilerLogs()->getValue('message');
-
-        $this->assertSame([
-            ['message' => 'Removed service "Psr\Container\ContainerInterface"; reason: private alias.'],
-            ['message' => 'Removed service "Symfony\Component\DependencyInjection\ContainerInterface"; reason: private alias.'],
-        ], $compilerLogs['Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass']);
-
-        $this->assertSame([
-            ['message' => 'Some custom logging message'],
-            ['message' => 'With ending :'],
-        ], $compilerLogs['Unknown Compiler Pass']);
-    }
-
-    public function testWithMasterRequest()
-    {
-        $masterRequest = new Request();
-        $stack = new RequestStack();
-        $stack->push($masterRequest);
-
-        $logger = $this
-            ->getMockBuilder(DebugLoggerInterface::class)
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->with(null);
-        $logger->expects($this->exactly(2))->method('getLogs')->with(null)->willReturn([]);
-
-        $c = new LoggerDataCollector($logger, __DIR__.'/', $stack);
-
-        $c->collect($masterRequest, new Response());
-        $c->lateCollect();
-    }
-
-    public function testWithSubRequest()
-    {
-        $masterRequest = new Request();
-        $subRequest = new Request();
-        $stack = new RequestStack();
-        $stack->push($masterRequest);
-        $stack->push($subRequest);
-
-        $logger = $this
-            ->getMockBuilder(DebugLoggerInterface::class)
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->with($subRequest);
-        $logger->expects($this->exactly(2))->method('getLogs')->with($subRequest)->willReturn([]);
-
-        $c = new LoggerDataCollector($logger, __DIR__.'/', $stack);
-
-        $c->collect($subRequest, new Response());
-        $c->lateCollect();
-    }
-
-    /**
-     * @dataProvider getCollectTestData
-     */
-    public function testCollect($nb, $logs, $expectedLogs, $expectedDeprecationCount, $expectedScreamCount, $expectedPriorities = null)
-    {
-        $logger = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Log\DebugLoggerInterface')
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->willReturn($nb);
-        $logger->expects($this->exactly(2))->method('getLogs')->willReturn($logs);
-
-        $c = new LoggerDataCollector($logger);
-        $c->lateCollect();
-
-        $this->assertEquals('logger', $c->getName());
-        $this->assertEquals($nb, $c->countErrors());
-
-        $logs = array_map(function ($v) {
-            if (isset($v['context']['exception'])) {
-                $e = &$v['context']['exception'];
-                $e = isset($e["\0*\0message"]) ? [$e["\0*\0message"], $e["\0*\0severity"]] : [$e["\0Symfony\Component\Debug\Exception\SilencedErrorContext\0severity"]];
-            }
-
-            return $v;
-        }, $c->getLogs()->getValue(true));
-        $this->assertEquals($expectedLogs, $logs);
-        $this->assertEquals($expectedDeprecationCount, $c->countDeprecations());
-        $this->assertEquals($expectedScreamCount, $c->countScreams());
-
-        if (isset($expectedPriorities)) {
-            $this->assertSame($expectedPriorities, $c->getPriorities()->getValue(true));
-        }
-    }
-
-    public function testReset()
-    {
-        $logger = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Log\DebugLoggerInterface')
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('clear');
-
-        $c = new LoggerDataCollector($logger);
-        $c->reset();
-    }
-
-    public function getCollectTestData()
-    {
-        yield 'simple log' => [
-            1,
-            [['message' => 'foo', 'context' => [], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            [['message' => 'foo', 'context' => [], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            0,
-            0,
-        ];
-
-        yield 'log with a context' => [
-            1,
-            [['message' => 'foo', 'context' => ['foo' => 'bar'], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            [['message' => 'foo', 'context' => ['foo' => 'bar'], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            0,
-            0,
-        ];
-
-        if (!class_exists(SilencedErrorContext::class)) {
-            return;
-        }
-
-        yield 'logs with some deprecations' => [
-            1,
-            [
-                ['message' => 'foo3', 'context' => ['exception' => new \ErrorException('warning', 0, E_USER_WARNING)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo', 'context' => ['exception' => new \ErrorException('deprecated', 0, E_DEPRECATED)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo2', 'context' => ['exception' => new \ErrorException('deprecated', 0, E_USER_DEPRECATED)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-            ],
-            [
-                ['message' => 'foo3', 'context' => ['exception' => ['warning', E_USER_WARNING]], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo', 'context' => ['exception' => ['deprecated', E_DEPRECATED]], 'priority' => 100, 'priorityName' => 'DEBUG', 'errorCount' => 1, 'scream' => false],
-                ['message' => 'foo2', 'context' => ['exception' => ['deprecated', E_USER_DEPRECATED]], 'priority' => 100, 'priorityName' => 'DEBUG', 'errorCount' => 1, 'scream' => false],
-            ],
-            2,
-            0,
-            [100 => ['count' => 3, 'name' => 'DEBUG']],
-        ];
-
-        yield 'logs with some silent errors' => [
-            1,
-            [
-                ['message' => 'foo3', 'context' => ['exception' => new \ErrorException('warning', 0, E_USER_WARNING)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo3', 'context' => ['exception' => new SilencedErrorContext(E_USER_WARNING, __FILE__, __LINE__)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-            ],
-            [
-                ['message' => 'foo3', 'context' => ['exception' => ['warning', E_USER_WARNING]], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo3', 'context' => ['exception' => [E_USER_WARNING]], 'priority' => 100, 'priorityName' => 'DEBUG', 'errorCount' => 1, 'scream' => true],
-            ],
-            0,
-            1,
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/MemoryDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/MemoryDataCollectorTest.php
deleted file mode 100644
index 63dd62ce7039224ea82e670a3bbe3edb8de87639..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/MemoryDataCollectorTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector;
-
-class MemoryDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $collector = new MemoryDataCollector();
-        $collector->collect(new Request(), new Response());
-
-        $this->assertIsInt($collector->getMemory());
-        $this->assertIsInt($collector->getMemoryLimit());
-        $this->assertSame('memory', $collector->getName());
-    }
-
-    /** @dataProvider getBytesConversionTestData */
-    public function testBytesConversion($limit, $bytes)
-    {
-        $collector = new MemoryDataCollector();
-        $method = new \ReflectionMethod($collector, 'convertToBytes');
-        $method->setAccessible(true);
-        $this->assertEquals($bytes, $method->invoke($collector, $limit));
-    }
-
-    public function getBytesConversionTestData()
-    {
-        return [
-            ['2k', 2048],
-            ['2 k', 2048],
-            ['8m', 8 * 1024 * 1024],
-            ['+2 k', 2048],
-            ['+2???k', 2048],
-            ['0x10', 16],
-            ['0xf', 15],
-            ['010', 8],
-            ['+0x10 k', 16 * 1024],
-            ['1g', 1024 * 1024 * 1024],
-            ['1G', 1024 * 1024 * 1024],
-            ['-1', -1],
-            ['0', 0],
-            ['2mk', 2048], // the unit must be the last char, so in this case 'k', not 'm'
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/RequestDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/RequestDataCollectorTest.php
deleted file mode 100644
index 42215ea0f76196a1406c7a11eb890eb4402dd91c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/RequestDataCollectorTest.php
+++ /dev/null
@@ -1,390 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\ParameterBag;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector;
-use Symfony\Component\HttpKernel\Event\ControllerEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class RequestDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $c = new RequestDataCollector();
-
-        $c->collect($request = $this->createRequest(), $this->createResponse());
-        $c->lateCollect();
-
-        $attributes = $c->getRequestAttributes();
-
-        $this->assertSame('request', $c->getName());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestHeaders());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestServer());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestCookies());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $attributes);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestRequest());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestQuery());
-        $this->assertInstanceOf(ParameterBag::class, $c->getResponseCookies());
-        $this->assertSame('html', $c->getFormat());
-        $this->assertEquals('foobar', $c->getRoute());
-        $this->assertEquals(['name' => 'foo'], $c->getRouteParams());
-        $this->assertSame([], $c->getSessionAttributes());
-        $this->assertSame('en', $c->getLocale());
-        $this->assertContains(__FILE__, $attributes->get('resource'));
-        $this->assertSame('stdClass', $attributes->get('object')->getType());
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getResponseHeaders());
-        $this->assertSame('OK', $c->getStatusText());
-        $this->assertSame(200, $c->getStatusCode());
-        $this->assertSame('application/json', $c->getContentType());
-    }
-
-    public function testCollectWithoutRouteParams()
-    {
-        $request = $this->createRequest([]);
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $this->createResponse());
-        $c->lateCollect();
-
-        $this->assertEquals([], $c->getRouteParams());
-    }
-
-    /**
-     * @dataProvider provideControllerCallables
-     */
-    public function testControllerInspection($name, $callable, $expected)
-    {
-        $c = new RequestDataCollector();
-        $request = $this->createRequest();
-        $response = $this->createResponse();
-        $this->injectController($c, $callable, $request);
-        $c->collect($request, $response);
-        $c->lateCollect();
-
-        $this->assertSame($expected, $c->getController()->getValue(true), sprintf('Testing: %s', $name));
-    }
-
-    public function provideControllerCallables()
-    {
-        // make sure we always match the line number
-        $r1 = new \ReflectionMethod($this, 'testControllerInspection');
-        $r2 = new \ReflectionMethod($this, 'staticControllerMethod');
-        $r3 = new \ReflectionClass($this);
-
-        // test name, callable, expected
-        return [
-            [
-                '"Regular" callable',
-                [$this, 'testControllerInspection'],
-                [
-                    'class' => __NAMESPACE__.'\RequestDataCollectorTest',
-                    'method' => 'testControllerInspection',
-                    'file' => __FILE__,
-                    'line' => $r1->getStartLine(),
-                ],
-            ],
-
-            [
-                'Closure',
-                function () { return 'foo'; },
-                [
-                    'class' => __NAMESPACE__.'\{closure}',
-                    'method' => null,
-                    'file' => __FILE__,
-                    'line' => __LINE__ - 5,
-                ],
-            ],
-
-            [
-                'Static callback as string',
-                __NAMESPACE__.'\RequestDataCollectorTest::staticControllerMethod',
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'staticControllerMethod',
-                    'file' => __FILE__,
-                    'line' => $r2->getStartLine(),
-                ],
-            ],
-
-            [
-                'Static callable with instance',
-                [$this, 'staticControllerMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'staticControllerMethod',
-                    'file' => __FILE__,
-                    'line' => $r2->getStartLine(),
-                ],
-            ],
-
-            [
-                'Static callable with class name',
-                ['Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest', 'staticControllerMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'staticControllerMethod',
-                    'file' => __FILE__,
-                    'line' => $r2->getStartLine(),
-                ],
-            ],
-
-            [
-                'Callable with instance depending on __call()',
-                [$this, 'magicMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'magicMethod',
-                    'file' => 'n/a',
-                    'line' => 'n/a',
-                ],
-            ],
-
-            [
-                'Callable with class name depending on __callStatic()',
-                ['Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest', 'magicMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'magicMethod',
-                    'file' => 'n/a',
-                    'line' => 'n/a',
-                ],
-            ],
-
-            [
-                'Invokable controller',
-                $this,
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => null,
-                    'file' => __FILE__,
-                    'line' => $r3->getStartLine(),
-                ],
-            ],
-        ];
-    }
-
-    public function testItIgnoresInvalidCallables()
-    {
-        $request = $this->createRequestWithSession();
-        $response = new RedirectResponse('/');
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $response);
-
-        $this->assertSame('n/a', $c->getController());
-    }
-
-    public function testItAddsRedirectedAttributesWhenRequestContainsSpecificCookie()
-    {
-        $request = $this->createRequest();
-        $request->cookies->add([
-            'sf_redirect' => '{}',
-        ]);
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-
-        $c = new RequestDataCollector();
-        $c->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $this->createResponse()));
-
-        $this->assertTrue($request->attributes->get('_redirected'));
-    }
-
-    public function testItSetsARedirectCookieIfTheResponseIsARedirection()
-    {
-        $c = new RequestDataCollector();
-
-        $response = $this->createResponse();
-        $response->setStatusCode(302);
-        $response->headers->set('Location', '/somewhere-else');
-
-        $c->collect($request = $this->createRequest(), $response);
-        $c->lateCollect();
-
-        $cookie = $this->getCookieByName($response, 'sf_redirect');
-
-        $this->assertNotEmpty($cookie->getValue());
-        $this->assertSame('lax', $cookie->getSameSite());
-        $this->assertFalse($cookie->isSecure());
-    }
-
-    public function testItCollectsTheRedirectionAndClearTheCookie()
-    {
-        $c = new RequestDataCollector();
-
-        $request = $this->createRequest();
-        $request->attributes->set('_redirected', true);
-        $request->cookies->add([
-            'sf_redirect' => '{"method": "POST"}',
-        ]);
-
-        $c->collect($request, $response = $this->createResponse());
-        $c->lateCollect();
-
-        $this->assertEquals('POST', $c->getRedirect()['method']);
-
-        $cookie = $this->getCookieByName($response, 'sf_redirect');
-        $this->assertNull($cookie->getValue());
-    }
-
-    protected function createRequest($routeParams = ['name' => 'foo'])
-    {
-        $request = Request::create('http://test.com/foo?bar=baz');
-        $request->attributes->set('foo', 'bar');
-        $request->attributes->set('_route', 'foobar');
-        $request->attributes->set('_route_params', $routeParams);
-        $request->attributes->set('resource', fopen(__FILE__, 'r'));
-        $request->attributes->set('object', new \stdClass());
-
-        return $request;
-    }
-
-    private function createRequestWithSession()
-    {
-        $request = $this->createRequest();
-        $request->attributes->set('_controller', 'Foo::bar');
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $request->getSession()->start();
-
-        return $request;
-    }
-
-    protected function createResponse()
-    {
-        $response = new Response();
-        $response->setStatusCode(200);
-        $response->headers->set('Content-Type', 'application/json');
-        $response->headers->set('X-Foo-Bar', null);
-        $response->headers->setCookie(new Cookie('foo', 'bar', 1, '/foo', 'localhost', true, true, false, null));
-        $response->headers->setCookie(new Cookie('bar', 'foo', new \DateTime('@946684800'), '/', null, false, true, false, null));
-        $response->headers->setCookie(new Cookie('bazz', 'foo', '2000-12-12', '/', null, false, true, false, null));
-
-        return $response;
-    }
-
-    /**
-     * Inject the given controller callable into the data collector.
-     */
-    protected function injectController($collector, $controller, $request)
-    {
-        $resolver = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface')->getMock();
-        $httpKernel = new HttpKernel(new EventDispatcher(), $resolver, null, $this->getMockBuilder(ArgumentResolverInterface::class)->getMock());
-        $event = new ControllerEvent($httpKernel, $controller, $request, HttpKernelInterface::MASTER_REQUEST);
-        $collector->onKernelController($event);
-    }
-
-    /**
-     * Dummy method used as controller callable.
-     */
-    public static function staticControllerMethod()
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    /**
-     * Magic method to allow non existing methods to be called and delegated.
-     */
-    public function __call($method, $args)
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    /**
-     * Magic method to allow non existing methods to be called and delegated.
-     */
-    public static function __callStatic($method, $args)
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    public function __invoke()
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    private function getCookieByName(Response $response, $name)
-    {
-        foreach ($response->headers->getCookies() as $cookie) {
-            if ($cookie->getName() == $name) {
-                return $cookie;
-            }
-        }
-
-        throw new \InvalidArgumentException(sprintf('Cookie named "%s" is not in response', $name));
-    }
-
-    /**
-     * @dataProvider provideJsonContentTypes
-     */
-    public function testIsJson($contentType, $expected)
-    {
-        $response = $this->createResponse();
-        $request = $this->createRequest();
-        $request->headers->set('Content-Type', $contentType);
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $response);
-
-        $this->assertSame($expected, $c->isJsonRequest());
-    }
-
-    public function provideJsonContentTypes()
-    {
-        return [
-            ['text/csv', false],
-            ['application/json', true],
-            ['application/JSON', true],
-            ['application/hal+json', true],
-            ['application/xml+json', true],
-            ['application/xml', false],
-            ['', false],
-        ];
-    }
-
-    /**
-     * @dataProvider providePrettyJson
-     */
-    public function testGetPrettyJsonValidity($content, $expected)
-    {
-        $response = $this->createResponse();
-        $request = Request::create('/', 'POST', [], [], [], [], $content);
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $response);
-
-        $this->assertSame($expected, $c->getPrettyJson());
-    }
-
-    public function providePrettyJson()
-    {
-        return [
-            ['null', 'null'],
-            ['{ "foo": "bar" }', '{
-    "foo": "bar"
-}'],
-            ['{ "abc" }', null],
-            ['', null],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/TimeDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/TimeDataCollectorTest.php
deleted file mode 100644
index 9de9eb599ad619ee451c80afd8a2ec0b835ff014..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/TimeDataCollectorTest.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\TimeDataCollector;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-/**
- * @group time-sensitive
- */
-class TimeDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $c = new TimeDataCollector();
-
-        $request = new Request();
-        $request->server->set('REQUEST_TIME', 1);
-
-        $c->collect($request, new Response());
-
-        $this->assertEquals(0, $c->getStartTime());
-
-        $request->server->set('REQUEST_TIME_FLOAT', 2);
-
-        $c->collect($request, new Response());
-
-        $this->assertEquals(2000, $c->getStartTime());
-
-        $request = new Request();
-        $c->collect($request, new Response());
-        $this->assertEquals(0, $c->getStartTime());
-
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock();
-        $kernel->expects($this->once())->method('getStartTime')->willReturn(123456.0);
-
-        $c = new TimeDataCollector($kernel);
-        $request = new Request();
-        $request->server->set('REQUEST_TIME', 1);
-
-        $c->collect($request, new Response());
-        $this->assertEquals(123456000, $c->getStartTime());
-        $this->assertSame(class_exists(Stopwatch::class, false), $c->isStopwatchInstalled());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Debug/FileLinkFormatterTest.php b/vendor/symfony/http-kernel/Tests/Debug/FileLinkFormatterTest.php
deleted file mode 100644
index 1f4d298bf37680a0b48ac3c26eabc5a08502ba43..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Debug/FileLinkFormatterTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-
-class FileLinkFormatterTest extends TestCase
-{
-    public function testWhenNoFileLinkFormatAndNoRequest()
-    {
-        $sut = new FileLinkFormatter();
-
-        $this->assertFalse($sut->format('/kernel/root/src/my/very/best/file.php', 3));
-    }
-
-    public function testWhenFileLinkFormatAndNoRequest()
-    {
-        $file = __DIR__.\DIRECTORY_SEPARATOR.'file.php';
-
-        $sut = new FileLinkFormatter('debug://open?url=file://%f&line=%l', new RequestStack());
-
-        $this->assertSame("debug://open?url=file://$file&line=3", $sut->format($file, 3));
-    }
-
-    public function testWhenNoFileLinkFormatAndRequest()
-    {
-        $file = __DIR__.\DIRECTORY_SEPARATOR.'file.php';
-        $requestStack = new RequestStack();
-        $request = new Request();
-        $requestStack->push($request);
-
-        $request->server->set('SERVER_NAME', 'www.example.org');
-        $request->server->set('SERVER_PORT', 80);
-        $request->server->set('SCRIPT_NAME', '/index.php');
-        $request->server->set('SCRIPT_FILENAME', '/public/index.php');
-        $request->server->set('REQUEST_URI', '/index.php/example');
-
-        $sut = new FileLinkFormatter(null, $requestStack, __DIR__, '/_profiler/open?file=%f&line=%l#line%l');
-
-        $this->assertSame('http://www.example.org/_profiler/open?file=file.php&line=3#line3', $sut->format($file, 3));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php b/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php
deleted file mode 100644
index cf8a3b8a1e0018df2dfa69f7156c55f0337562a3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class TraceableEventDispatcherTest extends TestCase
-{
-    public function testStopwatchSections()
-    {
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), $stopwatch = new Stopwatch());
-        $kernel = $this->getHttpKernel($dispatcher, function () { return new Response('', 200, ['X-Debug-Token' => '292e1e']); });
-        $request = Request::create('/');
-        $response = $kernel->handle($request);
-        $kernel->terminate($request, $response);
-
-        $events = $stopwatch->getSectionEvents($response->headers->get('X-Debug-Token'));
-        $this->assertEquals([
-            '__section__',
-            'kernel.request',
-            'kernel.controller',
-            'kernel.controller_arguments',
-            'controller',
-            'kernel.response',
-            'kernel.terminate',
-        ], array_keys($events));
-    }
-
-    public function testStopwatchCheckControllerOnRequestEvent()
-    {
-        $stopwatch = $this->getMockBuilder('Symfony\Component\Stopwatch\Stopwatch')
-            ->setMethods(['isStarted'])
-            ->getMock();
-        $stopwatch->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(false);
-
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), $stopwatch);
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { return new Response(); });
-        $request = Request::create('/');
-        $kernel->handle($request);
-    }
-
-    public function testStopwatchStopControllerOnRequestEvent()
-    {
-        $stopwatch = $this->getMockBuilder('Symfony\Component\Stopwatch\Stopwatch')
-            ->setMethods(['isStarted', 'stop'])
-            ->getMock();
-        $stopwatch->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(true);
-        $stopwatch->expects($this->once())
-            ->method('stop');
-
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), $stopwatch);
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { return new Response(); });
-        $request = Request::create('/');
-        $kernel->handle($request);
-    }
-
-    public function testAddListenerNested()
-    {
-        $called1 = false;
-        $called2 = false;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('my-event', function () use ($dispatcher, &$called1, &$called2) {
-            $called1 = true;
-            $dispatcher->addListener('my-event', function () use (&$called2) {
-                $called2 = true;
-            });
-        });
-        $dispatcher->dispatch(new Event(), 'my-event');
-        $this->assertTrue($called1);
-        $this->assertFalse($called2);
-        $dispatcher->dispatch(new Event(), 'my-event');
-        $this->assertTrue($called2);
-    }
-
-    public function testListenerCanRemoveItselfWhenExecuted()
-    {
-        $eventDispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $listener1 = function () use ($eventDispatcher, &$listener1) {
-            $eventDispatcher->removeListener('foo', $listener1);
-        };
-        $eventDispatcher->addListener('foo', $listener1);
-        $eventDispatcher->addListener('foo', function () {});
-        $eventDispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertCount(1, $eventDispatcher->getListeners('foo'), 'expected listener1 to be removed');
-    }
-
-    protected function getHttpKernel($dispatcher, $controller)
-    {
-        $controllerResolver = $this->getMockBuilder('Symfony\Component\HttpKernel\Controller\ControllerResolverInterface')->getMock();
-        $controllerResolver->expects($this->once())->method('getController')->willReturn($controller);
-        $argumentResolver = $this->getMockBuilder('Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface')->getMock();
-        $argumentResolver->expects($this->once())->method('getArguments')->willReturn([]);
-
-        return new HttpKernel($dispatcher, $controllerResolver, new RequestStack(), $argumentResolver);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClassesToCachePassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClassesToCachePassTest.php
deleted file mode 100644
index 914b1dd8d68e0e35b0f0a6a2c262c9a1b69fa142..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClassesToCachePassTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\DependencyInjection\AddAnnotatedClassesToCachePass;
-
-class AddAnnotatedClassesToCachePassTest extends TestCase
-{
-    public function testExpandClasses()
-    {
-        $r = new \ReflectionClass(AddAnnotatedClassesToCachePass::class);
-        $pass = $r->newInstanceWithoutConstructor();
-        $r = new \ReflectionMethod(AddAnnotatedClassesToCachePass::class, 'expandClasses');
-        $r->setAccessible(true);
-        $expand = $r->getClosure($pass);
-
-        $this->assertSame('Foo', $expand(['Foo'], [])[0]);
-        $this->assertSame('Foo', $expand(['\\Foo'], [])[0]);
-        $this->assertSame('Foo', $expand(['Foo'], ['\\Foo'])[0]);
-        $this->assertSame('Foo', $expand(['Foo'], ['Foo'])[0]);
-        $this->assertSame('Foo', $expand(['\\Foo'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo', $expand(['Foo'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo', $expand(['\\Foo'], ['\\Foo\\Bar\\Acme'])[0]);
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo\\Bar\\Acme', $expand(['Foo\\'], ['\\Foo\\Bar\\Acme'])[0]);
-        $this->assertEmpty($expand(['Foo\\'], ['\\Foo']));
-
-        $this->assertSame('Acme\\Foo\\Bar', $expand(['**\\Foo\\'], ['\\Acme\\Foo\\Bar'])[0]);
-        $this->assertEmpty($expand(['**\\Foo\\'], ['\\Foo\\Bar']));
-        $this->assertEmpty($expand(['**\\Foo\\'], ['\\Acme\\Foo']));
-        $this->assertEmpty($expand(['**\\Foo\\'], ['\\Foo']));
-
-        $this->assertSame('Acme\\Foo', $expand(['**\\Foo'], ['\\Acme\\Foo'])[0]);
-        $this->assertEmpty($expand(['**\\Foo'], ['\\Acme\\Foo\\AcmeBundle']));
-        $this->assertEmpty($expand(['**\\Foo'], ['\\Acme\\FooBar\\AcmeBundle']));
-
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\*\\Bar'], ['\\Foo\\Acme\\Bar'])[0]);
-        $this->assertEmpty($expand(['Foo\\*\\Bar'], ['\\Foo\\Acme\\Bundle\\Bar']));
-
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\**\\Bar'], ['\\Foo\\Acme\\Bar'])[0]);
-        $this->assertSame('Foo\\Acme\\Bundle\\Bar', $expand(['Foo\\**\\Bar'], ['\\Foo\\Acme\\Bundle\\Bar'])[0]);
-
-        $this->assertSame('Acme\\Bar', $expand(['*\\Bar'], ['\\Acme\\Bar'])[0]);
-        $this->assertEmpty($expand(['*\\Bar'], ['\\Bar']));
-        $this->assertEmpty($expand(['*\\Bar'], ['\\Foo\\Acme\\Bar']));
-
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['**\\Bar'], ['\\Foo\\Acme\\Bar'])[0]);
-        $this->assertSame('Foo\\Acme\\Bundle\\Bar', $expand(['**\\Bar'], ['\\Foo\\Acme\\Bundle\\Bar'])[0]);
-        $this->assertEmpty($expand(['**\\Bar'], ['\\Bar']));
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\*'], ['\\Foo\\Bar'])[0]);
-        $this->assertEmpty($expand(['Foo\\*'], ['\\Foo\\Acme\\Bar']));
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\**'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\**'], ['\\Foo\\Acme\\Bar'])[0]);
-
-        $this->assertSame(['Foo\\Bar'], $expand(['Foo\\*'], ['Foo\\Bar', 'Foo\\BarTest']));
-        $this->assertSame(['Foo\\Bar', 'Foo\\BarTest'], $expand(['Foo\\*', 'Foo\\*Test'], ['Foo\\Bar', 'Foo\\BarTest']));
-
-        $this->assertSame(
-            'Acme\\FooBundle\\Controller\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Acme\\FooBundle\\Controller\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'FooBundle\\Controller\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\FooBundle\\Controller\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'Acme\\FooBundle\\Controller\\Bar\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Acme\\FooBundle\\Controller\\Bar\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'Bundle\\Controller\\Bar\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Bundle\\Controller\\Bar\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'Acme\\Bundle\\Controller\\Bar\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Acme\\Bundle\\Controller\\Bar\\DefaultController'])[0]
-        );
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\Bar'], [])[0]);
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\**'], ['\\Foo\\Acme\\Bar'])[0]);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php
deleted file mode 100644
index 2694d002cf5b6112d4ea91cd3dec37abbffbd7dd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\DependencyInjection\ControllerArgumentValueResolverPass;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class ControllerArgumentValueResolverPassTest extends TestCase
-{
-    public function testServicesAreOrderedAccordingToPriority()
-    {
-        $services = [
-            'n3' => [[]],
-            'n1' => [['priority' => 200]],
-            'n2' => [['priority' => 100]],
-        ];
-
-        $expected = [
-            new Reference('n1'),
-            new Reference('n2'),
-            new Reference('n3'),
-        ];
-
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->setDefinition('argument_resolver', $definition);
-
-        foreach ($services as $id => list($tag)) {
-            $container->register($id)->addTag('controller.argument_value_resolver', $tag);
-        }
-
-        $container->setParameter('kernel.debug', false);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals($expected, $definition->getArgument(1)->getValues());
-
-        $this->assertFalse($container->hasDefinition('n1.traceable'));
-        $this->assertFalse($container->hasDefinition('n2.traceable'));
-        $this->assertFalse($container->hasDefinition('n3.traceable'));
-    }
-
-    public function testInDebugWithStopWatchDefinition()
-    {
-        $services = [
-            'n3' => [[]],
-            'n1' => [['priority' => 200]],
-            'n2' => [['priority' => 100]],
-        ];
-
-        $expected = [
-            new Reference('n1'),
-            new Reference('n2'),
-            new Reference('n3'),
-        ];
-
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->register('debug.stopwatch', Stopwatch::class);
-        $container->setDefinition('argument_resolver', $definition);
-
-        foreach ($services as $id => list($tag)) {
-            $container->register($id)->addTag('controller.argument_value_resolver', $tag);
-        }
-
-        $container->setParameter('kernel.debug', true);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals($expected, $definition->getArgument(1)->getValues());
-
-        $this->assertTrue($container->hasDefinition('debug.n1'));
-        $this->assertTrue($container->hasDefinition('debug.n2'));
-        $this->assertTrue($container->hasDefinition('debug.n3'));
-
-        $this->assertTrue($container->hasDefinition('n1'));
-        $this->assertTrue($container->hasDefinition('n2'));
-        $this->assertTrue($container->hasDefinition('n3'));
-    }
-
-    public function testInDebugWithouStopWatchDefinition()
-    {
-        $expected = [new Reference('n1')];
-
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->register('n1')->addTag('controller.argument_value_resolver');
-        $container->setDefinition('argument_resolver', $definition);
-
-        $container->setParameter('kernel.debug', true);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals($expected, $definition->getArgument(1)->getValues());
-
-        $this->assertFalse($container->hasDefinition('debug.n1'));
-        $this->assertTrue($container->hasDefinition('n1'));
-    }
-
-    public function testReturningEmptyArrayWhenNoService()
-    {
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->setDefinition('argument_resolver', $definition);
-
-        $container->setParameter('kernel.debug', false);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals([], $definition->getArgument(1)->getValues());
-    }
-
-    public function testNoArgumentResolver()
-    {
-        $container = new ContainerBuilder();
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-
-        $this->assertFalse($container->hasDefinition('argument_resolver'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php
deleted file mode 100644
index 1d521368e1dfa36017420c94db20d0a17efade2e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\DependencyInjection\FragmentRendererPass;
-use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
-
-class FragmentRendererPassTest extends TestCase
-{
-    /**
-     * Tests that content rendering not implementing FragmentRendererInterface
-     * triggers an exception.
-     */
-    public function testContentRendererWithoutInterface()
-    {
-        $this->expectException('InvalidArgumentException');
-        $builder = new ContainerBuilder();
-        $fragmentHandlerDefinition = $builder->register('fragment.handler');
-        $builder->register('my_content_renderer', 'Symfony\Component\DependencyInjection\Definition')
-            ->addTag('kernel.fragment_renderer', ['alias' => 'foo']);
-
-        $pass = new FragmentRendererPass();
-        $pass->process($builder);
-
-        $this->assertEquals([['addRendererService', ['foo', 'my_content_renderer']]], $fragmentHandlerDefinition->getMethodCalls());
-    }
-
-    public function testValidContentRenderer()
-    {
-        $builder = new ContainerBuilder();
-        $fragmentHandlerDefinition = $builder->register('fragment.handler')
-            ->addArgument(null);
-        $builder->register('my_content_renderer', 'Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService')
-            ->addTag('kernel.fragment_renderer', ['alias' => 'foo']);
-
-        $pass = new FragmentRendererPass();
-        $pass->process($builder);
-
-        $serviceLocatorDefinition = $builder->getDefinition((string) $fragmentHandlerDefinition->getArgument(0));
-        $this->assertSame(ServiceLocator::class, $serviceLocatorDefinition->getClass());
-        $this->assertEquals(['foo' => new ServiceClosureArgument(new Reference('my_content_renderer'))], $serviceLocatorDefinition->getArgument(0));
-    }
-}
-
-class RendererService implements FragmentRendererInterface
-{
-    public function render($uri, Request $request = null, array $options = [])
-    {
-    }
-
-    public function getName()
-    {
-        return 'test';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php
deleted file mode 100644
index 39a1cb73b1127b5e9de5856d135ed8ba017a62d3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler;
-
-class LazyLoadingFragmentHandlerTest extends TestCase
-{
-    public function testRender()
-    {
-        $renderer = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface')->getMock();
-        $renderer->expects($this->once())->method('getName')->willReturn('foo');
-        $renderer->expects($this->any())->method('render')->willReturn(new Response());
-
-        $requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock();
-        $requestStack->expects($this->any())->method('getCurrentRequest')->willReturn(Request::create('/'));
-
-        $container = $this->getMockBuilder('Psr\Container\ContainerInterface')->getMock();
-        $container->expects($this->once())->method('has')->with('foo')->willReturn(true);
-        $container->expects($this->once())->method('get')->willReturn($renderer);
-
-        $handler = new LazyLoadingFragmentHandler($container, $requestStack, false);
-
-        $handler->render('/foo', 'foo');
-
-        // second call should not lazy-load anymore (see once() above on the get() method)
-        $handler->render('/foo', 'foo');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php
deleted file mode 100644
index cb504877cdc447fa0eb6bc28a73305fee950e56e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\DependencyInjection\LoggerPass;
-use Symfony\Component\HttpKernel\Log\Logger;
-
-/**
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class LoggerPassTest extends TestCase
-{
-    public function testAlwaysSetAutowiringAlias()
-    {
-        $container = new ContainerBuilder();
-        $container->register('logger', 'Foo');
-
-        (new LoggerPass())->process($container);
-
-        $this->assertFalse($container->getAlias(LoggerInterface::class)->isPublic());
-    }
-
-    public function testDoNotOverrideExistingLogger()
-    {
-        $container = new ContainerBuilder();
-        $container->register('logger', 'Foo');
-
-        (new LoggerPass())->process($container);
-
-        $this->assertSame('Foo', $container->getDefinition('logger')->getClass());
-    }
-
-    public function testRegisterLogger()
-    {
-        $container = new ContainerBuilder();
-        $container->setParameter('kernel.debug', false);
-
-        (new LoggerPass())->process($container);
-
-        $definition = $container->getDefinition('logger');
-        $this->assertSame(Logger::class, $definition->getClass());
-        $this->assertFalse($definition->isPublic());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
deleted file mode 100644
index 7af756e0b8c100c423ea1f2ed24eabf0d25bb7f2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\DependencyInjection\Extension;
-use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
-
-class MergeExtensionConfigurationPassTest extends TestCase
-{
-    public function testAutoloadMainExtension()
-    {
-        $container = new ContainerBuilder();
-        $container->registerExtension(new LoadedExtension());
-        $container->registerExtension(new NotLoadedExtension());
-        $container->loadFromExtension('loaded', []);
-
-        $configPass = new MergeExtensionConfigurationPass(['loaded', 'not_loaded']);
-        $configPass->process($container);
-
-        $this->assertTrue($container->hasDefinition('loaded.foo'));
-        $this->assertTrue($container->hasDefinition('not_loaded.bar'));
-    }
-}
-
-class LoadedExtension extends Extension
-{
-    public function load(array $configs, ContainerBuilder $container)
-    {
-        $container->register('loaded.foo');
-    }
-}
-
-class NotLoadedExtension extends Extension
-{
-    public function load(array $configs, ContainerBuilder $container)
-    {
-        $container->register('not_loaded.bar');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
deleted file mode 100644
index 3c5b19783774f6cef54ff457ef3bd043d80eb389..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
+++ /dev/null
@@ -1,436 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
-use Symfony\Component\DependencyInjection\ChildDefinition;
-use Symfony\Component\DependencyInjection\ContainerAwareInterface;
-use Symfony\Component\DependencyInjection\ContainerAwareTrait;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\DependencyInjection\TypedReference;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterControllerArgumentLocatorsPass;
-
-class RegisterControllerArgumentLocatorsPassTest extends TestCase
-{
-    public function testInvalidClass()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Class "Symfony\Component\HttpKernel\Tests\DependencyInjection\NotFound" used for service "foo" cannot be found.');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NotFound::class)
-            ->addTag('controller.service_arguments')
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoAction()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Missing "action" attribute on tag "controller.service_arguments" {"argument":"bar"} for service "foo".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['argument' => 'bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoArgument()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Missing "argument" attribute on tag "controller.service_arguments" {"action":"fooAction"} for service "foo".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoService()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Missing "id" attribute on tag "controller.service_arguments" {"action":"fooAction","argument":"bar"} for service "foo".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testInvalidMethod()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Invalid "action" attribute on tag "controller.service_arguments" for service "foo": no public "barAction()" method found on class "Symfony\Component\HttpKernel\Tests\DependencyInjection\RegisterTestController".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'barAction', 'argument' => 'bar', 'id' => 'bar_service'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testInvalidArgument()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Invalid "controller.service_arguments" tag for service "foo": method "fooAction()" has no "baz" argument on class "Symfony\Component\HttpKernel\Tests\DependencyInjection\RegisterTestController".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'baz', 'id' => 'bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testAllActions()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments')
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $this->assertEquals(['foo::fooAction'], array_keys($locator));
-        $this->assertInstanceof(ServiceClosureArgument::class, $locator['foo::fooAction']);
-
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $this->assertSame(ServiceLocator::class, $locator->getClass());
-        $this->assertFalse($locator->isPublic());
-
-        $expected = ['bar' => new ServiceClosureArgument(new TypedReference(ControllerDummy::class, ControllerDummy::class, ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE, 'bar'))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function testExplicitArgument()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar', 'id' => 'bar'])
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar', 'id' => 'baz']) // should be ignored, the first wins
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $expected = ['bar' => new ServiceClosureArgument(new TypedReference('bar', ControllerDummy::class, ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function testOptionalArgument()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar', 'id' => '?bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $expected = ['bar' => new ServiceClosureArgument(new TypedReference('bar', ControllerDummy::class, ContainerInterface::IGNORE_ON_INVALID_REFERENCE))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function testSkipSetContainer()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ContainerAwareRegisterTestController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertSame(['foo::fooAction'], array_keys($locator));
-    }
-
-    public function testExceptionOnNonExistentTypeHint()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Cannot determine controller argument for "Symfony\Component\HttpKernel\Tests\DependencyInjection\NonExistentClassController::fooAction()": the $nonExistent argument is type-hinted with the non-existent class or interface: "Symfony\Component\HttpKernel\Tests\DependencyInjection\NonExistentClass". Did you forget to add a use statement?');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NonExistentClassController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testExceptionOnNonExistentTypeHintDifferentNamespace()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Cannot determine controller argument for "Symfony\Component\HttpKernel\Tests\DependencyInjection\NonExistentClassDifferentNamespaceController::fooAction()": the $nonExistent argument is type-hinted with the non-existent class or interface: "Acme\NonExistentClass".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NonExistentClassDifferentNamespaceController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoExceptionOnNonExistentTypeHintOptionalArg()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NonExistentClassOptionalController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertSame(['foo::barAction', 'foo::fooAction'], array_keys($locator));
-    }
-
-    public function testArgumentWithNoTypeHintIsOk()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ArgumentWithoutTypeController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertEmpty(array_keys($locator));
-    }
-
-    public function testControllersAreMadePublic()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ArgumentWithoutTypeController::class)
-            ->setPublic(false)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $this->assertTrue($container->getDefinition('foo')->isPublic());
-    }
-
-    /**
-     * @dataProvider provideBindings
-     */
-    public function testBindings($bindingName)
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->setBindings([$bindingName => new Reference('foo')])
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $expected = ['bar' => new ServiceClosureArgument(new Reference('foo'))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function provideBindings()
-    {
-        return [
-            [ControllerDummy::class.'$bar'],
-            [ControllerDummy::class],
-            ['$bar'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideBindScalarValueToControllerArgument
-     */
-    public function testBindScalarValueToControllerArgument($bindingKey)
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ArgumentWithoutTypeController::class)
-            ->setBindings([$bindingKey => '%foo%'])
-            ->addTag('controller.service_arguments');
-
-        $container->setParameter('foo', 'foo_val');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        // assert the locator has a someArg key
-        $arguments = $locator->getArgument(0);
-        $this->assertArrayHasKey('someArg', $arguments);
-        $this->assertInstanceOf(ServiceClosureArgument::class, $arguments['someArg']);
-        // get the Reference that someArg points to
-        $reference = $arguments['someArg']->getValues()[0];
-        // make sure this service *does* exist and returns the correct value
-        $this->assertTrue($container->has((string) $reference));
-        $this->assertSame('foo_val', $container->get((string) $reference));
-    }
-
-    public function provideBindScalarValueToControllerArgument()
-    {
-        yield ['$someArg'];
-        yield ['string $someArg'];
-    }
-
-    public function testBindingsOnChildDefinitions()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('parent', ArgumentWithoutTypeController::class);
-
-        $container->setDefinition('child', (new ChildDefinition('parent'))
-            ->setBindings(['$someArg' => new Reference('parent')])
-            ->addTag('controller.service_arguments')
-        );
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertInstanceOf(ServiceClosureArgument::class, $locator['child::fooAction']);
-
-        $locator = $container->getDefinition((string) $locator['child::fooAction']->getValues()[0])->getArgument(0);
-        $this->assertInstanceOf(ServiceClosureArgument::class, $locator['someArg']);
-        $this->assertEquals(new Reference('parent'), $locator['someArg']->getValues()[0]);
-    }
-
-    public function testNotTaggedControllerServiceReceivesLocatorArgument()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.not_tagged_controller')->addArgument([]);
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locatorArgument = $container->getDefinition('argument_resolver.not_tagged_controller')->getArgument(0);
-
-        $this->assertInstanceOf(Reference::class, $locatorArgument);
-    }
-}
-
-class RegisterTestController
-{
-    public function __construct(ControllerDummy $bar)
-    {
-    }
-
-    public function fooAction(ControllerDummy $bar)
-    {
-    }
-
-    protected function barAction(ControllerDummy $bar)
-    {
-    }
-}
-
-class ContainerAwareRegisterTestController implements ContainerAwareInterface
-{
-    use ContainerAwareTrait;
-
-    public function fooAction(ControllerDummy $bar)
-    {
-    }
-}
-
-class ControllerDummy
-{
-}
-
-class NonExistentClassController
-{
-    public function fooAction(NonExistentClass $nonExistent)
-    {
-    }
-}
-
-class NonExistentClassDifferentNamespaceController
-{
-    public function fooAction(\Acme\NonExistentClass $nonExistent)
-    {
-    }
-}
-
-class NonExistentClassOptionalController
-{
-    public function fooAction(NonExistentClass $nonExistent = null)
-    {
-    }
-
-    public function barAction(NonExistentClass $nonExistent = null, $bar)
-    {
-    }
-}
-
-class ArgumentWithoutTypeController
-{
-    public function fooAction(string $someArg)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterLocaleAwareServicesPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterLocaleAwareServicesPassTest.php
deleted file mode 100644
index aa3c6aa0c46c55a1c04357a359ae4aa3f8b148dc..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterLocaleAwareServicesPassTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterLocaleAwareServicesPass;
-use Symfony\Component\HttpKernel\EventListener\LocaleAwareListener;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-class RegisterLocaleAwareServicesPassTest extends TestCase
-{
-    public function testCompilerPass()
-    {
-        $container = new ContainerBuilder();
-
-        $container->register('locale_aware_listener', LocaleAwareListener::class)
-                  ->setPublic(true)
-                  ->setArguments([null, null]);
-
-        $container->register('some_locale_aware_service', LocaleAwareInterface::class)
-                  ->setPublic(true)
-                  ->addTag('kernel.locale_aware');
-
-        $container->register('another_locale_aware_service', LocaleAwareInterface::class)
-                  ->setPublic(true)
-                  ->addTag('kernel.locale_aware');
-
-        $container->addCompilerPass(new RegisterLocaleAwareServicesPass());
-        $container->compile();
-
-        $this->assertEquals(
-            [
-                new IteratorArgument([
-                    0 => new Reference('some_locale_aware_service'),
-                    1 => new Reference('another_locale_aware_service'),
-                ]),
-                null,
-            ],
-            $container->getDefinition('locale_aware_listener')->getArguments()
-        );
-    }
-
-    public function testListenerUnregisteredWhenNoLocaleAwareServices()
-    {
-        $container = new ContainerBuilder();
-
-        $container->register('locale_aware_listener', LocaleAwareListener::class)
-                  ->setPublic(true)
-                  ->setArguments([null, null]);
-
-        $container->addCompilerPass(new RegisterLocaleAwareServicesPass());
-        $container->compile();
-
-        $this->assertFalse($container->hasDefinition('locale_aware_listener'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php
deleted file mode 100644
index b5e55bdea9e9793f826b858c384111fa2e617d98..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Compiler\ResolveInvalidReferencesPass;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterControllerArgumentLocatorsPass;
-use Symfony\Component\HttpKernel\DependencyInjection\RemoveEmptyControllerArgumentLocatorsPass;
-
-class RemoveEmptyControllerArgumentLocatorsPassTest extends TestCase
-{
-    public function testProcess()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('stdClass', 'stdClass');
-        $container->register(TestCase::class, 'stdClass');
-        $container->register('c1', RemoveTestController1::class)->addTag('controller.service_arguments');
-        $container->register('c2', RemoveTestController2::class)->addTag('controller.service_arguments')
-            ->addMethodCall('setTestCase', [new Reference('c1')]);
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $controllers = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $this->assertCount(2, $container->getDefinition((string) $controllers['c1::fooAction']->getValues()[0])->getArgument(0));
-        $this->assertCount(1, $container->getDefinition((string) $controllers['c2::setTestCase']->getValues()[0])->getArgument(0));
-        $this->assertCount(1, $container->getDefinition((string) $controllers['c2::fooAction']->getValues()[0])->getArgument(0));
-
-        (new ResolveInvalidReferencesPass())->process($container);
-
-        $this->assertCount(1, $container->getDefinition((string) $controllers['c2::setTestCase']->getValues()[0])->getArgument(0));
-        $this->assertSame([], $container->getDefinition((string) $controllers['c2::fooAction']->getValues()[0])->getArgument(0));
-
-        (new RemoveEmptyControllerArgumentLocatorsPass())->process($container);
-
-        $controllers = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $this->assertSame(['c1::fooAction', 'c1:fooAction'], array_keys($controllers));
-        $this->assertSame(['bar'], array_keys($container->getDefinition((string) $controllers['c1::fooAction']->getValues()[0])->getArgument(0)));
-
-        $expectedLog = [
-            'Symfony\Component\HttpKernel\DependencyInjection\RemoveEmptyControllerArgumentLocatorsPass: Removing service-argument resolver for controller "c2::fooAction": no corresponding services exist for the referenced types.',
-            'Symfony\Component\HttpKernel\DependencyInjection\RemoveEmptyControllerArgumentLocatorsPass: Removing method "setTestCase" of service "c2" from controller candidates: the method is called at instantiation, thus cannot be an action.',
-        ];
-
-        $this->assertSame($expectedLog, $container->getCompiler()->getLog());
-    }
-
-    public function testInvoke()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('invokable', InvokableRegisterTestController::class)
-            ->addTag('controller.service_arguments')
-        ;
-
-        (new RegisterControllerArgumentLocatorsPass())->process($container);
-        (new RemoveEmptyControllerArgumentLocatorsPass())->process($container);
-
-        $this->assertEquals(
-            ['invokable::__invoke', 'invokable:__invoke', 'invokable'],
-            array_keys($container->getDefinition((string) $resolver->getArgument(0))->getArgument(0))
-        );
-    }
-}
-
-class RemoveTestController1
-{
-    public function fooAction(\stdClass $bar, ClassNotInContainer $baz = null)
-    {
-    }
-}
-
-class RemoveTestController2
-{
-    public function setTestCase(TestCase $test)
-    {
-    }
-
-    public function fooAction(ClassNotInContainer $bar = null)
-    {
-    }
-}
-
-class InvokableRegisterTestController
-{
-    public function __invoke(\stdClass $bar)
-    {
-    }
-}
-
-class ClassNotInContainer
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php
deleted file mode 100644
index d3c6869320910595da0608d43a78eae38788d39c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\DependencyInjection\ResettableServicePass;
-use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ClearableService;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ResettableService;
-
-class ResettableServicePassTest extends TestCase
-{
-    public function testCompilerPass()
-    {
-        $container = new ContainerBuilder();
-        $container->register('one', ResettableService::class)
-            ->setPublic(true)
-            ->addTag('kernel.reset', ['method' => 'reset']);
-        $container->register('two', ClearableService::class)
-            ->setPublic(true)
-            ->addTag('kernel.reset', ['method' => 'clear']);
-
-        $container->register('services_resetter', ServicesResetter::class)
-            ->setPublic(true)
-            ->setArguments([null, []]);
-        $container->addCompilerPass(new ResettableServicePass());
-
-        $container->compile();
-
-        $definition = $container->getDefinition('services_resetter');
-
-        $this->assertEquals(
-            [
-                new IteratorArgument([
-                    'one' => new Reference('one', ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE),
-                    'two' => new Reference('two', ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE),
-                ]),
-                [
-                    'one' => 'reset',
-                    'two' => 'clear',
-                ],
-            ],
-            $definition->getArguments()
-        );
-    }
-
-    public function testMissingMethod()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Tag kernel.reset requires the "method" attribute to be set.');
-        $container = new ContainerBuilder();
-        $container->register(ResettableService::class)
-            ->addTag('kernel.reset');
-        $container->register('services_resetter', ServicesResetter::class)
-            ->setArguments([null, []]);
-        $container->addCompilerPass(new ResettableServicePass());
-
-        $container->compile();
-    }
-
-    public function testCompilerPassWithoutResetters()
-    {
-        $container = new ContainerBuilder();
-        $container->register('services_resetter', ServicesResetter::class)
-            ->setArguments([null, []]);
-        $container->addCompilerPass(new ResettableServicePass());
-
-        $container->compile();
-
-        $this->assertFalse($container->has('services_resetter'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php
deleted file mode 100644
index 5be6026c90a678db20ffe929ca1a666f34215fd8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ClearableService;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ResettableService;
-
-class ServicesResetterTest extends TestCase
-{
-    protected function setUp(): void
-    {
-        ResettableService::$counter = 0;
-        ClearableService::$counter = 0;
-    }
-
-    public function testResetServices()
-    {
-        $resetter = new ServicesResetter(new \ArrayIterator([
-            'id1' => new ResettableService(),
-            'id2' => new ClearableService(),
-        ]), [
-            'id1' => 'reset',
-            'id2' => 'clear',
-        ]);
-
-        $resetter->reset();
-
-        $this->assertEquals(1, ResettableService::$counter);
-        $this->assertEquals(1, ClearableService::$counter);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Event/ControllerArgumentsEventTest.php b/vendor/symfony/http-kernel/Tests/Event/ControllerArgumentsEventTest.php
deleted file mode 100644
index 7758a66667f6dee2b8ccfbbf815670681d38275a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Event/ControllerArgumentsEventTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Event;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
-use Symfony\Component\HttpKernel\Tests\TestHttpKernel;
-
-class ControllerArgumentsEventTest extends TestCase
-{
-    public function testControllerArgumentsEvent()
-    {
-        $filterController = new ControllerArgumentsEvent(new TestHttpKernel(), function () {}, ['test'], new Request(), 1);
-        $this->assertEquals($filterController->getArguments(), ['test']);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Event/ExceptionEventTest.php b/vendor/symfony/http-kernel/Tests/Event/ExceptionEventTest.php
deleted file mode 100644
index 6b061d3a33887b66add8d0dcae0017192518669b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Event/ExceptionEventTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Event;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Tests\TestHttpKernel;
-
-class ExceptionEventTest extends TestCase
-{
-    public function testAllowSuccessfulResponseIsFalseByDefault()
-    {
-        $event = new ExceptionEvent(new TestHttpKernel(), new Request(), 1, new \Exception());
-
-        $this->assertFalse($event->isAllowingCustomResponseCode());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php
deleted file mode 100644
index da8dc6fb0b75f5b2a3321385783bed0ab90287db..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\AddRequestFormatsListener;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Test AddRequestFormatsListener class.
- *
- * @author Gildas Quemener <gildas.quemener@gmail.com>
- */
-class AddRequestFormatsListenerTest extends TestCase
-{
-    /**
-     * @var AddRequestFormatsListener
-     */
-    private $listener;
-
-    protected function setUp(): void
-    {
-        $this->listener = new AddRequestFormatsListener(['csv' => ['text/csv', 'text/plain']]);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->listener = null;
-    }
-
-    public function testIsAnEventSubscriber()
-    {
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\EventSubscriberInterface', $this->listener);
-    }
-
-    public function testRegisteredEvent()
-    {
-        $this->assertEquals(
-            [KernelEvents::REQUEST => ['onKernelRequest', 100]],
-            AddRequestFormatsListener::getSubscribedEvents()
-        );
-    }
-
-    public function testSetAdditionalFormats()
-    {
-        $request = $this->getRequestMock();
-        $event = $this->getRequestEventMock($request);
-
-        $request->expects($this->once())
-            ->method('setFormat')
-            ->with('csv', ['text/csv', 'text/plain']);
-
-        $this->listener->onKernelRequest($event);
-    }
-
-    protected function getRequestMock()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')->getMock();
-    }
-
-    protected function getRequestEventMock(Request $request)
-    {
-        $event = $this
-            ->getMockBuilder(RequestEvent::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $event->expects($this->any())
-            ->method('getRequest')
-            ->willReturn($request);
-
-        return $event;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php
deleted file mode 100644
index 1e52bce7a359bf6bca47c1c8e85d28a63960f17b..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LogLevel;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\Console\Event\ConsoleEvent;
-use Symfony\Component\Console\Helper\HelperSet;
-use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Console\Output\ConsoleOutput;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\ExceptionHandler;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\KernelEvent;
-use Symfony\Component\HttpKernel\EventListener\DebugHandlersListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DebugHandlersListenerTest extends TestCase
-{
-    public function testConfigure()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $userHandler = function () {};
-        $listener = new DebugHandlersListener($userHandler, $logger);
-        $xHandler = new ExceptionHandler();
-        $eHandler = new ErrorHandler();
-        $eHandler->setExceptionHandler([$xHandler, 'handle']);
-
-        $exception = null;
-        set_error_handler([$eHandler, 'handleError']);
-        set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $listener->configure();
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-        restore_error_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $this->assertSame($userHandler, $xHandler->setHandler('var_dump'));
-
-        $loggers = $eHandler->setLoggers([]);
-
-        $this->assertArrayHasKey(E_DEPRECATED, $loggers);
-        $this->assertSame([$logger, LogLevel::INFO], $loggers[E_DEPRECATED]);
-    }
-
-    public function testConfigureForHttpKernelWithNoTerminateWithException()
-    {
-        $listener = new DebugHandlersListener(null);
-        $eHandler = new ErrorHandler();
-        $event = new KernelEvent(
-            $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(),
-            Request::create('/'),
-            HttpKernelInterface::MASTER_REQUEST
-        );
-
-        $exception = null;
-        $h = set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $listener->configure($event);
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $this->assertNull($h);
-    }
-
-    public function testConsoleEvent()
-    {
-        $dispatcher = new EventDispatcher();
-        $listener = new DebugHandlersListener(null);
-        $app = $this->getMockBuilder('Symfony\Component\Console\Application')->getMock();
-        $app->expects($this->once())->method('getHelperSet')->willReturn(new HelperSet());
-        $command = new Command(__FUNCTION__);
-        $command->setApplication($app);
-        $event = new ConsoleEvent($command, new ArgvInput(), new ConsoleOutput());
-
-        $dispatcher->addSubscriber($listener);
-
-        $xListeners = [
-            KernelEvents::REQUEST => [[$listener, 'configure']],
-            ConsoleEvents::COMMAND => [[$listener, 'configure']],
-            KernelEvents::EXCEPTION => [[$listener, 'onKernelException']],
-        ];
-        $this->assertSame($xListeners, $dispatcher->getListeners());
-
-        $exception = null;
-        $eHandler = new ErrorHandler();
-        set_error_handler([$eHandler, 'handleError']);
-        set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $dispatcher->dispatch($event, ConsoleEvents::COMMAND);
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-        restore_error_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $xHandler = $eHandler->setExceptionHandler('var_dump');
-        $this->assertInstanceOf('Closure', $xHandler);
-
-        $app->expects($this->once())
-            ->method('renderException');
-
-        $xHandler(new \Exception());
-    }
-
-    public function testReplaceExistingExceptionHandler()
-    {
-        $userHandler = function () {};
-        $listener = new DebugHandlersListener($userHandler);
-        $eHandler = new ErrorHandler();
-        $eHandler->setExceptionHandler('var_dump');
-
-        $exception = null;
-        set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $listener->configure();
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $this->assertSame($userHandler, $eHandler->setExceptionHandler('var_dump'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php
deleted file mode 100644
index 53b317b7611ce5c4e45da773cba742b34212c705..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelInterface;
-
-class DisallowRobotsIndexingListenerTest extends TestCase
-{
-    /**
-     * @dataProvider provideResponses
-     */
-    public function testInvoke(?string $expected, Response $response): void
-    {
-        $listener = new DisallowRobotsIndexingListener();
-
-        $event = new ResponseEvent($this->createMock(HttpKernelInterface::class), $this->createMock(Request::class), KernelInterface::MASTER_REQUEST, $response);
-
-        $listener->onResponse($event);
-
-        $this->assertSame($expected, $response->headers->get('X-Robots-Tag'), 'Header doesn\'t match expectations');
-    }
-
-    public function provideResponses(): iterable
-    {
-        yield 'No header' => ['noindex', new Response()];
-
-        yield 'Header already set' => [
-            'something else',
-            new Response('', 204, ['X-Robots-Tag' => 'something else']),
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/DumpListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/DumpListenerTest.php
deleted file mode 100644
index b86a7552f85e4eab8ce1629136eb691b58afaf37..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/DumpListenerTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\HttpKernel\EventListener\DumpListener;
-use Symfony\Component\VarDumper\Cloner\ClonerInterface;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
-use Symfony\Component\VarDumper\VarDumper;
-
-/**
- * DumpListenerTest.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpListenerTest extends TestCase
-{
-    public function testSubscribedEvents()
-    {
-        $this->assertSame(
-            [ConsoleEvents::COMMAND => ['configure', 1024]],
-            DumpListener::getSubscribedEvents()
-        );
-    }
-
-    public function testConfigure()
-    {
-        $prevDumper = VarDumper::setHandler('var_dump');
-        VarDumper::setHandler($prevDumper);
-
-        $cloner = new MockCloner();
-        $dumper = new MockDumper();
-
-        ob_start();
-        $exception = null;
-        $listener = new DumpListener($cloner, $dumper);
-
-        try {
-            $listener->configure();
-
-            VarDumper::dump('foo');
-            VarDumper::dump('bar');
-
-            $this->assertSame('+foo-+bar-', ob_get_clean());
-        } catch (\Exception $exception) {
-        }
-
-        VarDumper::setHandler($prevDumper);
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-    }
-}
-
-class MockCloner implements ClonerInterface
-{
-    public function cloneVar($var)
-    {
-        return new Data([[$var.'-']]);
-    }
-}
-
-class MockDumper implements DataDumperInterface
-{
-    public function dump(Data $data)
-    {
-        echo '+'.$data->getValue();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ExceptionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ExceptionListenerTest.php
deleted file mode 100644
index 4a24066b2ceb718316da09c9087c52bac948a2fd..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ExceptionListenerTest.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\ExceptionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-use Symfony\Component\HttpKernel\Tests\Logger;
-
-/**
- * ExceptionListenerTest.
- *
- * @author Robert Schönthal <seroscho@googlemail.com>
- *
- * @group time-sensitive
- */
-class ExceptionListenerTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $logger = new TestLogger();
-        $l = new ExceptionListener('foo', $logger);
-
-        $_logger = new \ReflectionProperty(\get_class($l), 'logger');
-        $_logger->setAccessible(true);
-        $_controller = new \ReflectionProperty(\get_class($l), 'controller');
-        $_controller->setAccessible(true);
-
-        $this->assertSame($logger, $_logger->getValue($l));
-        $this->assertSame('foo', $_controller->getValue($l));
-    }
-
-    /**
-     * @dataProvider provider
-     */
-    public function testHandleWithoutLogger($event, $event2)
-    {
-        $this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul');
-
-        $l = new ExceptionListener('foo');
-        $l->logKernelException($event);
-        $l->onKernelException($event);
-
-        $this->assertEquals(new Response('foo'), $event->getResponse());
-
-        try {
-            $l->logKernelException($event2);
-            $l->onKernelException($event2);
-            $this->fail('RuntimeException expected');
-        } catch (\RuntimeException $e) {
-            $this->assertSame('bar', $e->getMessage());
-            $this->assertSame('foo', $e->getPrevious()->getMessage());
-        }
-    }
-
-    /**
-     * @dataProvider provider
-     */
-    public function testHandleWithLogger($event, $event2)
-    {
-        $logger = new TestLogger();
-
-        $l = new ExceptionListener('foo', $logger);
-        $l->logKernelException($event);
-        $l->onKernelException($event);
-
-        $this->assertEquals(new Response('foo'), $event->getResponse());
-
-        try {
-            $l->logKernelException($event2);
-            $l->onKernelException($event2);
-            $this->fail('RuntimeException expected');
-        } catch (\RuntimeException $e) {
-            $this->assertSame('bar', $e->getMessage());
-            $this->assertSame('foo', $e->getPrevious()->getMessage());
-        }
-
-        $this->assertEquals(3, $logger->countErrors());
-        $this->assertCount(3, $logger->getLogs('critical'));
-    }
-
-    public function provider()
-    {
-        if (!class_exists('Symfony\Component\HttpFoundation\Request')) {
-            return [[null, null]];
-        }
-
-        $request = new Request();
-        $exception = new \Exception('foo');
-        $event = new ExceptionEvent(new TestKernel(), $request, HttpKernelInterface::MASTER_REQUEST, $exception);
-        $event2 = new ExceptionEvent(new TestKernelThatThrowsException(), $request, HttpKernelInterface::MASTER_REQUEST, $exception);
-
-        return [
-            [$event, $event2],
-        ];
-    }
-
-    public function testSubRequestFormat()
-    {
-        $listener = new ExceptionListener('foo', $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock());
-
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel->expects($this->once())->method('handle')->willReturnCallback(function (Request $request) {
-            return new Response($request->getRequestFormat());
-        });
-
-        $request = Request::create('/');
-        $request->setRequestFormat('xml');
-
-        $event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new \Exception('foo'));
-        $listener->onKernelException($event);
-
-        $response = $event->getResponse();
-        $this->assertEquals('xml', $response->getContent());
-    }
-
-    public function testCSPHeaderIsRemoved()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel->expects($this->once())->method('handle')->willReturnCallback(function (Request $request) {
-            return new Response($request->getRequestFormat());
-        });
-
-        $listener = new ExceptionListener('foo', $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(), true);
-
-        $dispatcher->addSubscriber($listener);
-
-        $request = Request::create('/');
-        $event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new \Exception('foo'));
-        $dispatcher->dispatch($event, KernelEvents::EXCEPTION);
-
-        $response = new Response('', 200, ['content-security-policy' => "style-src 'self'"]);
-        $this->assertTrue($response->headers->has('content-security-policy'));
-
-        $event = new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertFalse($response->headers->has('content-security-policy'), 'CSP header has been removed');
-        $this->assertFalse($dispatcher->hasListeners(KernelEvents::RESPONSE), 'CSP removal listener has been removed');
-    }
-}
-
-class TestLogger extends Logger implements DebugLoggerInterface
-{
-    public function countErrors(Request $request = null): int
-    {
-        return \count($this->logs['critical']);
-    }
-}
-
-class TestKernel implements HttpKernelInterface
-{
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-        return new Response('foo');
-    }
-}
-
-class TestKernelThatThrowsException implements HttpKernelInterface
-{
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-        throw new \RuntimeException('bar');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/FragmentListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/FragmentListenerTest.php
deleted file mode 100644
index 5b045a8fc4b5276a4fa18602509d56f68d9565b3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/FragmentListenerTest.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\FragmentListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class FragmentListenerTest extends TestCase
-{
-    public function testOnlyTriggeredOnFragmentRoute()
-    {
-        $request = Request::create('http://example.com/foo?_path=foo%3Dbar%26_controller%3Dfoo');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request);
-
-        $expected = $request->attributes->all();
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals($expected, $request->attributes->all());
-        $this->assertTrue($request->query->has('_path'));
-    }
-
-    public function testOnlyTriggeredIfControllerWasNotDefinedYet()
-    {
-        $request = Request::create('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo');
-        $request->attributes->set('_controller', 'bar');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request, HttpKernelInterface::SUB_REQUEST);
-
-        $expected = $request->attributes->all();
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals($expected, $request->attributes->all());
-    }
-
-    public function testAccessDeniedWithNonSafeMethods()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException');
-        $request = Request::create('http://example.com/_fragment', 'POST');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-    }
-
-    public function testAccessDeniedWithWrongSignature()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException');
-        $request = Request::create('http://example.com/_fragment', 'GET', [], [], [], ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-    }
-
-    public function testWithSignature()
-    {
-        $signer = new UriSigner('foo');
-        $request = Request::create($signer->sign('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo'), 'GET', [], [], [], ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $listener = new FragmentListener($signer);
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals(['foo' => 'bar', '_controller' => 'foo'], $request->attributes->get('_route_params'));
-        $this->assertFalse($request->query->has('_path'));
-    }
-
-    public function testRemovesPathWithControllerDefined()
-    {
-        $request = Request::create('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request, HttpKernelInterface::SUB_REQUEST);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertFalse($request->query->has('_path'));
-    }
-
-    public function testRemovesPathWithControllerNotDefined()
-    {
-        $signer = new UriSigner('foo');
-        $request = Request::create($signer->sign('http://example.com/_fragment?_path=foo%3Dbar'), 'GET', [], [], [], ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $listener = new FragmentListener($signer);
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertFalse($request->query->has('_path'));
-    }
-
-    private function createRequestEvent(Request $request, $requestType = HttpKernelInterface::MASTER_REQUEST)
-    {
-        return new RequestEvent($this->getMockBuilder(HttpKernelInterface::class)->getMock(), $request, $requestType);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/LocaleAwareListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/LocaleAwareListenerTest.php
deleted file mode 100644
index ef3b7d1b429970049a2dd67292bad0e83bcc371e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/LocaleAwareListenerTest.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\LocaleAwareListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-class LocaleAwareListenerTest extends TestCase
-{
-    private $listener;
-    private $localeAwareService;
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->localeAwareService = $this->getMockBuilder(LocaleAwareInterface::class)->getMock();
-        $this->requestStack = new RequestStack();
-        $this->listener = new LocaleAwareListener(new \ArrayIterator([$this->localeAwareService]), $this->requestStack);
-    }
-
-    public function testLocaleIsSetInOnKernelRequest()
-    {
-        $this->localeAwareService
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelRequest()
-    {
-        $this->localeAwareService
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->will($this->throwException(new \InvalidArgumentException()));
-        $this->localeAwareService
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testLocaleIsSetInOnKernelFinishRequestWhenParentRequestExists()
-    {
-        $this->localeAwareService
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $this->requestStack->push($this->createRequest('fr'));
-        $this->requestStack->push($subRequest = $this->createRequest('de'));
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $subRequest, HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testLocaleIsSetToDefaultOnKernelFinishRequestWhenParentRequestDoesNotExist()
-    {
-        $this->localeAwareService
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $this->requestStack->push($subRequest = $this->createRequest('de'));
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $subRequest, HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelFinishRequest()
-    {
-        $this->localeAwareService
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->will($this->throwException(new \InvalidArgumentException()));
-        $this->localeAwareService
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $this->requestStack->push($this->createRequest('fr'));
-        $this->requestStack->push($subRequest = $this->createRequest('de'));
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $subRequest, HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    private function createHttpKernel()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-    }
-
-    private function createRequest($locale)
-    {
-        $request = new Request();
-        $request->setLocale($locale);
-
-        return $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php
deleted file mode 100644
index a83b81741b6f2973a3be81c31fb0fc36fad1bbae..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\LocaleListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class LocaleListenerTest extends TestCase
-{
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->disableOriginalConstructor()->getMock();
-    }
-
-    public function testIsAnEventSubscriber()
-    {
-        $this->assertInstanceOf(EventSubscriberInterface::class, new LocaleListener($this->requestStack));
-    }
-
-    public function testRegisteredEvent()
-    {
-        $this->assertEquals(
-            [
-                KernelEvents::REQUEST => [['setDefaultLocale', 100], ['onKernelRequest', 16]],
-                KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', 0]],
-            ],
-            LocaleListener::getSubscribedEvents()
-        );
-    }
-
-    public function testDefaultLocale()
-    {
-        $listener = new LocaleListener($this->requestStack, 'fr');
-        $event = $this->getEvent($request = Request::create('/'));
-
-        $listener->setDefaultLocale($event);
-        $this->assertEquals('fr', $request->getLocale());
-    }
-
-    public function testLocaleFromRequestAttribute()
-    {
-        $request = Request::create('/');
-        $request->cookies->set(session_name(), 'value');
-
-        $request->attributes->set('_locale', 'es');
-        $listener = new LocaleListener($this->requestStack, 'fr');
-        $event = $this->getEvent($request);
-
-        $listener->onKernelRequest($event);
-        $this->assertEquals('es', $request->getLocale());
-    }
-
-    public function testLocaleSetForRoutingContext()
-    {
-        // the request context is updated
-        $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock();
-        $context->expects($this->once())->method('setParameter')->with('_locale', 'es');
-
-        $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(['getContext'])->disableOriginalConstructor()->getMock();
-        $router->expects($this->once())->method('getContext')->willReturn($context);
-
-        $request = Request::create('/');
-
-        $request->attributes->set('_locale', 'es');
-        $listener = new LocaleListener($this->requestStack, 'fr', $router);
-        $listener->onKernelRequest($this->getEvent($request));
-    }
-
-    public function testRouterResetWithParentRequestOnKernelFinishRequest()
-    {
-        // the request context is updated
-        $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock();
-        $context->expects($this->once())->method('setParameter')->with('_locale', 'es');
-
-        $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(['getContext'])->disableOriginalConstructor()->getMock();
-        $router->expects($this->once())->method('getContext')->willReturn($context);
-
-        $parentRequest = Request::create('/');
-        $parentRequest->setLocale('es');
-
-        $this->requestStack->expects($this->once())->method('getParentRequest')->willReturn($parentRequest);
-
-        $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\FinishRequestEvent')->disableOriginalConstructor()->getMock();
-
-        $listener = new LocaleListener($this->requestStack, 'fr', $router);
-        $listener->onKernelFinishRequest($event);
-    }
-
-    public function testRequestLocaleIsNotOverridden()
-    {
-        $request = Request::create('/');
-        $request->setLocale('de');
-        $listener = new LocaleListener($this->requestStack, 'fr');
-        $event = $this->getEvent($request);
-
-        $listener->onKernelRequest($event);
-        $this->assertEquals('de', $request->getLocale());
-    }
-
-    private function getEvent(Request $request): RequestEvent
-    {
-        return new RequestEvent($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), $request, HttpKernelInterface::MASTER_REQUEST);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ProfilerListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ProfilerListenerTest.php
deleted file mode 100644
index 3aaff12316d12269323d13128c5010329c8cb41c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ProfilerListenerTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\Event\TerminateEvent;
-use Symfony\Component\HttpKernel\EventListener\ProfilerListener;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpKernel\Profiler\Profile;
-
-class ProfilerListenerTest extends TestCase
-{
-    /**
-     * Test a master and sub request with an exception and `onlyException` profiler option enabled.
-     */
-    public function testKernelTerminate()
-    {
-        $profile = new Profile('token');
-
-        $profiler = $this->getMockBuilder('Symfony\Component\HttpKernel\Profiler\Profiler')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $profiler->expects($this->once())
-            ->method('collect')
-            ->willReturn($profile);
-
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-
-        $masterRequest = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $subRequest = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $response = $this->getMockBuilder('Symfony\Component\HttpFoundation\Response')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $requestStack = new RequestStack();
-        $requestStack->push($masterRequest);
-
-        $onlyException = true;
-        $listener = new ProfilerListener($profiler, $requestStack, null, $onlyException);
-
-        // master request
-        $listener->onKernelResponse(new ResponseEvent($kernel, $masterRequest, Kernel::MASTER_REQUEST, $response));
-
-        // sub request
-        $listener->onKernelException(new ExceptionEvent($kernel, $subRequest, Kernel::SUB_REQUEST, new HttpException(404)));
-        $listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, Kernel::SUB_REQUEST, $response));
-
-        $listener->onKernelTerminate(new TerminateEvent($kernel, $masterRequest, $response));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ResponseListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ResponseListenerTest.php
deleted file mode 100644
index 1aaa64bc89ced517431f65f331cc09a6c0118394..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ResponseListenerTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\ResponseListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class ResponseListenerTest extends TestCase
-{
-    private $dispatcher;
-
-    private $kernel;
-
-    protected function setUp(): void
-    {
-        $this->dispatcher = new EventDispatcher();
-        $listener = new ResponseListener('UTF-8');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-
-        $this->kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-    }
-
-    protected function tearDown(): void
-    {
-        $this->dispatcher = null;
-        $this->kernel = null;
-    }
-
-    public function testFilterDoesNothingForSubRequests()
-    {
-        $response = new Response('foo');
-
-        $event = new ResponseEvent($this->kernel, new Request(), HttpKernelInterface::SUB_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('', $event->getResponse()->headers->get('content-type'));
-    }
-
-    public function testFilterSetsNonDefaultCharsetIfNotOverridden()
-    {
-        $listener = new ResponseListener('ISO-8859-15');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
-
-        $response = new Response('foo');
-
-        $event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('ISO-8859-15', $response->getCharset());
-    }
-
-    public function testFilterDoesNothingIfCharsetIsOverridden()
-    {
-        $listener = new ResponseListener('ISO-8859-15');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
-
-        $response = new Response('foo');
-        $response->setCharset('ISO-8859-1');
-
-        $event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('ISO-8859-1', $response->getCharset());
-    }
-
-    public function testFiltersSetsNonDefaultCharsetIfNotOverriddenOnNonTextContentType()
-    {
-        $listener = new ResponseListener('ISO-8859-15');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
-
-        $response = new Response('foo');
-        $request = Request::create('/');
-        $request->setRequestFormat('application/json');
-
-        $event = new ResponseEvent($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('ISO-8859-15', $response->getCharset());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php
deleted file mode 100644
index ea88d4b34fa31c908fd328d1cfd028c100316523..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\Controller\ControllerResolver;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\ExceptionListener;
-use Symfony\Component\HttpKernel\EventListener\RouterListener;
-use Symfony\Component\HttpKernel\EventListener\ValidateRequestListener;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\Routing\Exception\NoConfigurationException;
-use Symfony\Component\Routing\RequestContext;
-
-class RouterListenerTest extends TestCase
-{
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->disableOriginalConstructor()->getMock();
-    }
-
-    /**
-     * @dataProvider getPortData
-     */
-    public function testPort($defaultHttpPort, $defaultHttpsPort, $uri, $expectedHttpPort, $expectedHttpsPort)
-    {
-        $urlMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\UrlMatcherInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $context = new RequestContext();
-        $context->setHttpPort($defaultHttpPort);
-        $context->setHttpsPort($defaultHttpsPort);
-        $urlMatcher->expects($this->any())
-            ->method('getContext')
-            ->willReturn($context);
-
-        $listener = new RouterListener($urlMatcher, $this->requestStack);
-        $event = $this->createRequestEventForUri($uri);
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals($expectedHttpPort, $context->getHttpPort());
-        $this->assertEquals($expectedHttpsPort, $context->getHttpsPort());
-        $this->assertEquals(0 === strpos($uri, 'https') ? 'https' : 'http', $context->getScheme());
-    }
-
-    public function getPortData()
-    {
-        return [
-            [80, 443, 'http://localhost/', 80, 443],
-            [80, 443, 'http://localhost:90/', 90, 443],
-            [80, 443, 'https://localhost/', 80, 443],
-            [80, 443, 'https://localhost:90/', 80, 90],
-        ];
-    }
-
-    private function createRequestEventForUri(string $uri): RequestEvent
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create($uri);
-        $request->attributes->set('_controller', null); // Prevents going in to routing process
-
-        return new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-    }
-
-    public function testInvalidMatcher()
-    {
-        $this->expectException('InvalidArgumentException');
-        new RouterListener(new \stdClass(), $this->requestStack);
-    }
-
-    public function testRequestMatcher()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->once())
-                       ->method('matchRequest')
-                       ->with($this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
-                       ->willReturn([]);
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext());
-        $listener->onKernelRequest($event);
-    }
-
-    public function testSubRequestWithDifferentMethod()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/', 'post');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->any())
-                       ->method('matchRequest')
-                       ->with($this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
-                       ->willReturn([]);
-
-        $context = new RequestContext();
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext());
-        $listener->onKernelRequest($event);
-
-        // sub-request with another HTTP method
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/', 'get');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::SUB_REQUEST);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals('GET', $context->getMethod());
-    }
-
-    /**
-     * @dataProvider getLoggingParameterData
-     */
-    public function testLoggingParameter($parameter, $log, $parameters)
-    {
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->once())
-            ->method('matchRequest')
-            ->willReturn($parameter);
-
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger->expects($this->once())
-            ->method('info')
-            ->with($this->equalTo($log), $this->equalTo($parameters));
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/');
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext(), $logger);
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-    }
-
-    public function getLoggingParameterData()
-    {
-        return [
-            [['_route' => 'foo'], 'Matched route "{route}".', ['route' => 'foo', 'route_parameters' => ['_route' => 'foo'], 'request_uri' => 'http://localhost/', 'method' => 'GET']],
-            [[], 'Matched route "{route}".', ['route' => 'n/a', 'route_parameters' => [], 'request_uri' => 'http://localhost/', 'method' => 'GET']],
-        ];
-    }
-
-    public function testWithBadRequest()
-    {
-        $requestStack = new RequestStack();
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->never())->method('matchRequest');
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addSubscriber(new ValidateRequestListener());
-        $dispatcher->addSubscriber(new RouterListener($requestMatcher, $requestStack, new RequestContext()));
-        $dispatcher->addSubscriber(new ExceptionListener(function () {
-            return new Response('Exception handled', 400);
-        }));
-
-        $kernel = new HttpKernel($dispatcher, new ControllerResolver(), $requestStack, new ArgumentResolver());
-
-        $request = Request::create('http://localhost/');
-        $request->headers->set('host', '###');
-        $response = $kernel->handle($request);
-        $this->assertSame(400, $response->getStatusCode());
-    }
-
-    public function testNoRoutingConfigurationResponse()
-    {
-        $requestStack = new RequestStack();
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher
-            ->expects($this->once())
-            ->method('matchRequest')
-            ->willThrowException(new NoConfigurationException())
-        ;
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addSubscriber(new RouterListener($requestMatcher, $requestStack, new RequestContext()));
-
-        $kernel = new HttpKernel($dispatcher, new ControllerResolver(), $requestStack, new ArgumentResolver());
-
-        $request = Request::create('http://localhost/');
-        $response = $kernel->handle($request);
-        $this->assertSame(404, $response->getStatusCode());
-        $this->assertStringContainsString('Welcome', $response->getContent());
-    }
-
-    public function testRequestWithBadHost()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\BadRequestHttpException');
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://bad host %22/');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext());
-        $listener->onKernelRequest($event);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/SaveSessionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/SaveSessionListenerTest.php
deleted file mode 100644
index 6cdd7476c9b7f1a44556d55f912628ab6a38ae59..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/SaveSessionListenerTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\SaveSessionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @group legacy
- */
-class SaveSessionListenerTest extends TestCase
-{
-    public function testOnlyTriggeredOnMasterRequest()
-    {
-        $listener = new SaveSessionListener();
-        $event = $this->getMockBuilder(ResponseEvent::class)->disableOriginalConstructor()->getMock();
-        $event->expects($this->once())->method('isMasterRequest')->willReturn(false);
-        $event->expects($this->never())->method('getRequest');
-
-        // sub request
-        $listener->onKernelResponse($event);
-    }
-
-    public function testSessionSaved()
-    {
-        $listener = new SaveSessionListener();
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $session = $this->getMockBuilder(SessionInterface::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->once())->method('isStarted')->willReturn(true);
-        $session->expects($this->once())->method('save');
-
-        $request = new Request();
-        $request->setSession($session);
-        $response = new Response();
-        $listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/SessionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/SessionListenerTest.php
deleted file mode 100644
index 8fc9f6bc9c3772b1f161356e0e9a0c7b63837a79..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/SessionListenerTest.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener;
-use Symfony\Component\HttpKernel\EventListener\SessionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class SessionListenerTest extends TestCase
-{
-    public function testOnlyTriggeredOnMasterRequest()
-    {
-        $listener = $this->getMockForAbstractClass(AbstractSessionListener::class);
-        $event = $this->getMockBuilder(RequestEvent::class)->disableOriginalConstructor()->getMock();
-        $event->expects($this->once())->method('isMasterRequest')->willReturn(false);
-        $event->expects($this->never())->method('getRequest');
-
-        // sub request
-        $listener->onKernelRequest($event);
-    }
-
-    public function testSessionIsSet()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-
-        $requestStack = $this->getMockBuilder(RequestStack::class)->getMock();
-        $requestStack->expects($this->once())->method('getMasterRequest')->willReturn(null);
-
-        $sessionStorage = $this->getMockBuilder(NativeSessionStorage::class)->getMock();
-        $sessionStorage->expects($this->never())->method('setOptions')->with(['cookie_secure' => true]);
-
-        $container = new Container();
-        $container->set('session', $session);
-        $container->set('request_stack', $requestStack);
-        $container->set('session_storage', $sessionStorage);
-
-        $request = new Request();
-        $listener = new SessionListener($container);
-
-        $event = $this->getMockBuilder(RequestEvent::class)->disableOriginalConstructor()->getMock();
-        $event->expects($this->once())->method('isMasterRequest')->willReturn(true);
-        $event->expects($this->once())->method('getRequest')->willReturn($request);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertTrue($request->hasSession());
-        $this->assertSame($session, $request->getSession());
-    }
-
-    public function testResponseIsPrivateIfSessionStarted()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1));
-
-        $container = new Container();
-        $container->set('initialized_session', $session);
-
-        $listener = new SessionListener($container);
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $request = new Request();
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-
-        $response = new Response();
-        $listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
-
-        $this->assertTrue($response->headers->has('Expires'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('0', $response->headers->getCacheControlDirective('max-age'));
-        $this->assertLessThanOrEqual((new \DateTime('now', new \DateTimeZone('UTC'))), (new \DateTime($response->headers->get('Expires'))));
-        $this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
-    }
-
-    public function testResponseIsStillPublicIfSessionStartedAndHeaderPresent()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1));
-
-        $container = new Container();
-        $container->set('initialized_session', $session);
-
-        $listener = new SessionListener($container);
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $request = new Request();
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-
-        $response = new Response();
-        $response->setSharedMaxAge(60);
-        $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');
-        $listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->has('Expires'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('60', $response->headers->getCacheControlDirective('s-maxage'));
-        $this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
-    }
-
-    public function testUninitializedSession()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-        $response = new Response();
-        $response->setSharedMaxAge(60);
-        $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');
-
-        $container = new ServiceLocator([
-            'initialized_session' => function () {},
-        ]);
-
-        $listener = new SessionListener($container);
-        $listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
-        $this->assertFalse($response->headers->has('Expires'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('60', $response->headers->getCacheControlDirective('s-maxage'));
-        $this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
-    }
-
-    public function testSurrogateMasterRequestIsPublic()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->exactly(4))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1, 1, 1));
-
-        $container = new Container();
-        $container->set('initialized_session', $session);
-        $container->set('session', $session);
-
-        $listener = new SessionListener($container);
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $request = new Request();
-        $response = new Response();
-        $response->setCache(['public' => true, 'max_age' => '30']);
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-        $this->assertTrue($request->hasSession());
-
-        $subRequest = clone $request;
-        $this->assertSame($request->getSession(), $subRequest->getSession());
-        $listener->onKernelRequest(new RequestEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST));
-        $listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST, $response));
-        $listener->onFinishRequest(new FinishRequestEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST));
-
-        $this->assertFalse($response->headers->has('Expires'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('30', $response->headers->getCacheControlDirective('max-age'));
-
-        $listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response));
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('0', $response->headers->getCacheControlDirective('max-age'));
-
-        $this->assertTrue($response->headers->has('Expires'));
-        $this->assertLessThanOrEqual((new \DateTime('now', new \DateTimeZone('UTC'))), (new \DateTime($response->headers->get('Expires'))));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/SurrogateListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/SurrogateListenerTest.php
deleted file mode 100644
index fc51de252e81dc18bba4cad1211beda8c48fc7b3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/SurrogateListenerTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\SurrogateListener;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class SurrogateListenerTest extends TestCase
-{
-    public function testFilterDoesNothingForSubRequests()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $response = new Response('foo <esi:include src="" />');
-        $listener = new SurrogateListener(new Esi());
-
-        $dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::SUB_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));
-    }
-
-    public function testFilterWhenThereIsSomeEsiIncludes()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $response = new Response('foo <esi:include src="" />');
-        $listener = new SurrogateListener(new Esi());
-
-        $dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('content="ESI/1.0"', $event->getResponse()->headers->get('Surrogate-Control'));
-    }
-
-    public function testFilterWhenThereIsNoEsiIncludes()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $response = new Response('foo');
-        $listener = new SurrogateListener(new Esi());
-
-        $dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/TestSessionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/TestSessionListenerTest.php
deleted file mode 100644
index 1ae3bb38b5482a08f71bd510388d3417c05f4d36..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/TestSessionListenerTest.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\SessionListener;
-use Symfony\Component\HttpKernel\EventListener\TestSessionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * SessionListenerTest.
- *
- * Tests SessionListener.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class TestSessionListenerTest extends TestCase
-{
-    /**
-     * @var TestSessionListener
-     */
-    private $listener;
-
-    /**
-     * @var SessionInterface
-     */
-    private $session;
-
-    protected function setUp(): void
-    {
-        $this->listener = $this->getMockForAbstractClass('Symfony\Component\HttpKernel\EventListener\AbstractTestSessionListener');
-        $this->session = $this->getSession();
-        $this->listener->expects($this->any())
-             ->method('getSession')
-             ->willReturn($this->session);
-    }
-
-    public function testShouldSaveMasterRequestSession()
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionMustBeSaved();
-
-        $this->filterResponse(new Request());
-    }
-
-    public function testShouldNotSaveSubRequestSession()
-    {
-        $this->sessionMustNotBeSaved();
-
-        $this->filterResponse(new Request(), HttpKernelInterface::SUB_REQUEST);
-    }
-
-    public function testDoesNotDeleteCookieIfUsingSessionLifetime()
-    {
-        $this->sessionHasBeenStarted();
-
-        @ini_set('session.cookie_lifetime', 0);
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
-        $cookies = $response->headers->getCookies();
-
-        $this->assertEquals(0, reset($cookies)->getExpiresTime());
-    }
-
-    /**
-     * @requires function \Symfony\Component\HttpFoundation\Session\Session::isEmpty
-     */
-    public function testEmptySessionDoesNotSendCookie()
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionIsEmpty();
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
-
-        $this->assertSame([], $response->headers->getCookies());
-    }
-
-    public function testEmptySessionWithNewSessionIdDoesSendCookie()
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionIsEmpty();
-        $this->fixSessionId('456');
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
-
-        $this->assertNotEmpty($response->headers->getCookies());
-    }
-
-    /**
-     * @dataProvider anotherCookieProvider
-     */
-    public function testSessionWithNewSessionIdAndNewCookieDoesNotSendAnotherCookie($existing, array $expected)
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionIsEmpty();
-        $this->fixSessionId('456');
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-
-        $response = new Response('', 200, ['Set-Cookie' => $existing]);
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
-
-        $this->assertSame($expected, $response->headers->get('Set-Cookie', null, false));
-    }
-
-    public function anotherCookieProvider()
-    {
-        return [
-            'same' => ['MOCKSESSID=789; path=/', ['MOCKSESSID=789; path=/']],
-            'different domain' => ['MOCKSESSID=789; path=/; domain=example.com', ['MOCKSESSID=789; path=/; domain=example.com', 'MOCKSESSID=456; path=/']],
-            'different path' => ['MOCKSESSID=789; path=/foo', ['MOCKSESSID=789; path=/foo', 'MOCKSESSID=456; path=/']],
-        ];
-    }
-
-    public function testUnstartedSessionIsNotSave()
-    {
-        $this->sessionHasNotBeenStarted();
-        $this->sessionMustNotBeSaved();
-
-        $this->filterResponse(new Request());
-    }
-
-    public function testDoesNotThrowIfRequestDoesNotHaveASession()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, new Response());
-
-        $this->listener->onKernelResponse($event);
-
-        $this->assertTrue(true);
-    }
-
-    private function filterResponse(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, Response $response = null)
-    {
-        $request->setSession($this->session);
-        $response = $response ?: new Response();
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $event = new ResponseEvent($kernel, $request, $type, $response);
-
-        $this->listener->onKernelResponse($event);
-
-        $this->assertSame($response, $event->getResponse());
-
-        return $response;
-    }
-
-    private function sessionMustNotBeSaved()
-    {
-        $this->session->expects($this->never())
-            ->method('save');
-    }
-
-    private function sessionMustBeSaved()
-    {
-        $this->session->expects($this->once())
-            ->method('save');
-    }
-
-    private function sessionHasBeenStarted()
-    {
-        $this->session->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(true);
-    }
-
-    private function sessionHasNotBeenStarted()
-    {
-        $this->session->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(false);
-    }
-
-    private function sessionIsEmpty()
-    {
-        $this->session->expects($this->once())
-            ->method('isEmpty')
-            ->willReturn(true);
-    }
-
-    private function fixSessionId($sessionId)
-    {
-        $this->session->expects($this->any())
-            ->method('getId')
-            ->willReturn($sessionId);
-    }
-
-    private function getSession()
-    {
-        $mock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\Session')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        // set return value for getName()
-        $mock->expects($this->any())->method('getName')->willReturn('MOCKSESSID');
-
-        return $mock;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php
deleted file mode 100644
index 17bf4261f95b928f5226b2441c52c44d534bf116..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\TranslatorListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-/**
- * @group legacy
- */
-class TranslatorListenerTest extends TestCase
-{
-    private $listener;
-    private $translator;
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->translator = $this->getMockBuilder(LocaleAwareInterface::class)->getMock();
-        $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock();
-        $this->listener = new TranslatorListener($this->translator, $this->requestStack);
-    }
-
-    public function testLocaleIsSetInOnKernelRequest()
-    {
-        $this->translator
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelRequest()
-    {
-        $this->translator
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->willThrowException(new \InvalidArgumentException());
-        $this->translator
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testLocaleIsSetInOnKernelFinishRequestWhenParentRequestExists()
-    {
-        $this->translator
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $this->setMasterRequest($this->createRequest('fr'));
-        $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testLocaleIsNotSetInOnKernelFinishRequestWhenParentRequestDoesNotExist()
-    {
-        $this->translator
-            ->expects($this->never())
-            ->method('setLocale');
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelFinishRequest()
-    {
-        $this->translator
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->willThrowException(new \InvalidArgumentException());
-        $this->translator
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $this->setMasterRequest($this->createRequest('fr'));
-        $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    private function createHttpKernel()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-    }
-
-    private function createRequest($locale)
-    {
-        $request = new Request();
-        $request->setLocale($locale);
-
-        return $request;
-    }
-
-    private function setMasterRequest($request)
-    {
-        $this->requestStack
-            ->expects($this->any())
-            ->method('getParentRequest')
-            ->willReturn($request);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ValidateRequestListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ValidateRequestListenerTest.php
deleted file mode 100644
index 7cec68143bb5423fd799a2d414efad7f137adb55..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ValidateRequestListenerTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\ValidateRequestListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class ValidateRequestListenerTest extends TestCase
-{
-    protected function tearDown(): void
-    {
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testListenerThrowsWhenMasterRequestHasInconsistentClientIps()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException');
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-
-        $request = new Request();
-        $request->setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_FOR | Request::HEADER_FORWARDED);
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('FORWARDED', 'for=2.2.2.2');
-        $request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
-
-        $dispatcher->addListener(KernelEvents::REQUEST, [new ValidateRequestListener(), 'onKernelRequest']);
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $dispatcher->dispatch($event, KernelEvents::REQUEST);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/AccessDeniedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/AccessDeniedHttpExceptionTest.php
deleted file mode 100644
index 3a34cc47bce72c0ae1fde02ee1a89df25af17d2e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/AccessDeniedHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-
-class AccessDeniedHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new AccessDeniedHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/BadRequestHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/BadRequestHttpExceptionTest.php
deleted file mode 100644
index 462fd9cb1dbc3ba51f6cfe4125ce9dadcb37fc94..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/BadRequestHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
-
-class BadRequestHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new BadRequestHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/ConflictHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/ConflictHttpExceptionTest.php
deleted file mode 100644
index 760600a10fc3284c21eb35982bf7c7cfa24750ec..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/ConflictHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\ConflictHttpException;
-
-class ConflictHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new ConflictHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/GoneHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/GoneHttpExceptionTest.php
deleted file mode 100644
index 30dafe49227518ec6ce9b799deb557505010e3b2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/GoneHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\GoneHttpException;
-
-class GoneHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new GoneHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/HttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/HttpExceptionTest.php
deleted file mode 100644
index a9431f4b5a7223df3e13366356f75543848e7aa7..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/HttpExceptionTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-
-class HttpExceptionTest extends TestCase
-{
-    public function headerDataProvider()
-    {
-        return [
-            [['X-Test' => 'Test']],
-            [['X-Test' => 1]],
-            [
-                [
-                    ['X-Test' => 'Test'],
-                    ['X-Test-2' => 'Test-2'],
-                ],
-            ],
-        ];
-    }
-
-    public function testHeadersDefault()
-    {
-        $exception = $this->createException();
-        $this->assertSame([], $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersConstructor($headers)
-    {
-        $exception = new HttpException(200, null, null, $headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = $this->createException();
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    public function testThrowableIsAllowedForPrevious()
-    {
-        $previous = new class('Error of PHP 7+') extends \Error {
-        };
-        $exception = $this->createException(null, $previous);
-        $this->assertSame($previous, $exception->getPrevious());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new HttpException(200, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/LengthRequiredHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/LengthRequiredHttpExceptionTest.php
deleted file mode 100644
index 8676d67238c149d85de67bff6d092a2b31b1611e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/LengthRequiredHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\LengthRequiredHttpException;
-
-class LengthRequiredHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new LengthRequiredHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/MethodNotAllowedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/MethodNotAllowedHttpExceptionTest.php
deleted file mode 100644
index efb0b50cafd00a56abea6e9228d64420d4dc34b2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/MethodNotAllowedHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-
-class MethodNotAllowedHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefault()
-    {
-        $exception = new MethodNotAllowedHttpException(['GET', 'PUT']);
-        $this->assertSame(['Allow' => 'GET, PUT'], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=1200',
-        ];
-
-        $exception = new MethodNotAllowedHttpException(['get'], null, null, null, $headers);
-
-        $headers['Allow'] = 'GET';
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new MethodNotAllowedHttpException(['GET']);
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new MethodNotAllowedHttpException(['get'], $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/NotAcceptableHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/NotAcceptableHttpExceptionTest.php
deleted file mode 100644
index 021c69e28954b2c031752045bd9093f4ad9d375c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/NotAcceptableHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
-
-class NotAcceptableHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new NotAcceptableHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/NotFoundHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/NotFoundHttpExceptionTest.php
deleted file mode 100644
index 0bf369b1a0ce4f7e7a92371030db0cad1f3f698d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/NotFoundHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-class NotFoundHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new NotFoundHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/PreconditionFailedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/PreconditionFailedHttpExceptionTest.php
deleted file mode 100644
index 04d79c499d037472550299f9f72b5060bcf969d0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/PreconditionFailedHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\PreconditionFailedHttpException;
-
-class PreconditionFailedHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new PreconditionFailedHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/PreconditionRequiredHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/PreconditionRequiredHttpExceptionTest.php
deleted file mode 100644
index 82076617a8779db772371c1f8ceb28248a420328..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/PreconditionRequiredHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\PreconditionRequiredHttpException;
-
-class PreconditionRequiredHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new PreconditionRequiredHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/ServiceUnavailableHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/ServiceUnavailableHttpExceptionTest.php
deleted file mode 100644
index fac197c852e3e9dab0c551e63e3f19991f11e44f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/ServiceUnavailableHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
-
-class ServiceUnavailableHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefaultRetryAfter()
-    {
-        $exception = new ServiceUnavailableHttpException(10);
-        $this->assertSame(['Retry-After' => 10], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=1337',
-        ];
-
-        $exception = new ServiceUnavailableHttpException(1337, null, null, null, $headers);
-
-        $headers['Retry-After'] = 1337;
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new ServiceUnavailableHttpException(10);
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new ServiceUnavailableHttpException(null, $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/TooManyRequestsHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/TooManyRequestsHttpExceptionTest.php
deleted file mode 100644
index 8b59e9894adb56c72b3bf3d40134a1d62b6304a5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/TooManyRequestsHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException;
-
-class TooManyRequestsHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefaultRertyAfter()
-    {
-        $exception = new TooManyRequestsHttpException(10);
-        $this->assertSame(['Retry-After' => 10], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=69',
-        ];
-
-        $exception = new TooManyRequestsHttpException(69, null, null, null, $headers);
-
-        $headers['Retry-After'] = 69;
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new TooManyRequestsHttpException(10);
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new TooManyRequestsHttpException(null, $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/UnauthorizedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/UnauthorizedHttpExceptionTest.php
deleted file mode 100644
index 92d427b6e4a9e517052cb98ee80daf628154a018..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/UnauthorizedHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
-
-class UnauthorizedHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefault()
-    {
-        $exception = new UnauthorizedHttpException('Challenge');
-        $this->assertSame(['WWW-Authenticate' => 'Challenge'], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=1200',
-        ];
-
-        $exception = new UnauthorizedHttpException('Challenge', null, null, null, $headers);
-
-        $headers['WWW-Authenticate'] = 'Challenge';
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new UnauthorizedHttpException('Challenge');
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new UnauthorizedHttpException('Challenge', $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/UnprocessableEntityHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/UnprocessableEntityHttpExceptionTest.php
deleted file mode 100644
index ffa4e177ee52601b6562e55b9c9fecd6c150cc90..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/UnprocessableEntityHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
-
-class UnprocessableEntityHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new UnprocessableEntityHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/UnsupportedMediaTypeHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/UnsupportedMediaTypeHttpExceptionTest.php
deleted file mode 100644
index fa28bbd19b41033a647fa421906a5e915f972519..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Exception/UnsupportedMediaTypeHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException;
-
-class UnsupportedMediaTypeHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new UnsupportedMediaTypeHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/Resources/.gitkeep b/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/Resources/.gitkeep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/foo.txt b/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/foo.txt
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php b/vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php
deleted file mode 100644
index 35acb419ce3e55d1f760484553b834af112f2517..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-class ClearableService
-{
-    public static $counter = 0;
-
-    public function clear()
-    {
-        ++self::$counter;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php
deleted file mode 100644
index e8e0b603467aa19a8f16609dd344b175268d7447..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-class BasicTypesController
-{
-    public function action(string $foo, int $bar, float $baz)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php
deleted file mode 100644
index 9b4754b46f39db7634a146f27016d658bb03e44c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-
-class ExtendingRequest extends Request
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php
deleted file mode 100644
index 9fa54ee8bb2dd0516566a6606056b61c2479ce2e..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-use Symfony\Component\HttpFoundation\Session\Session;
-
-class ExtendingSession extends Session
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php
deleted file mode 100644
index 9db4df7b4c17334b28b93eb5847ecdf95bbe8441..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-class NullableController
-{
-    public function action(?string $foo, ?\stdClass $bar, ?string $baz = 'value', $mandatory)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/VariadicController.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/VariadicController.php
deleted file mode 100644
index c39812453bb016a745b92c0807a6271f6a74f057..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/VariadicController.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-class VariadicController
-{
-    public function action($foo, ...$bar)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/DataCollector/CloneVarDataCollector.php b/vendor/symfony/http-kernel/Tests/Fixtures/DataCollector/CloneVarDataCollector.php
deleted file mode 100644
index 4f5de182fd17f1f5713f0295a6ea7579170de697..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/DataCollector/CloneVarDataCollector.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollector;
-
-class CloneVarDataCollector extends DataCollector
-{
-    private $varToClone;
-
-    public function __construct($varToClone)
-    {
-        $this->varToClone = $varToClone;
-    }
-
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        $this->data = $this->cloneVar($this->varToClone);
-    }
-
-    public function reset()
-    {
-        $this->data = [];
-    }
-
-    public function getData()
-    {
-        return $this->data;
-    }
-
-    public function getName()
-    {
-        return 'clone_var';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/DependencyInjection/ExtensionNotValidExtension.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/DependencyInjection/ExtensionNotValidExtension.php
deleted file mode 100644
index 0fd64316fbfcfc72b489e65176f0e379ec230b53..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/DependencyInjection/ExtensionNotValidExtension.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionNotValidBundle\DependencyInjection;
-
-class ExtensionNotValidExtension
-{
-    public function getAlias()
-    {
-        return 'extension_not_valid';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/ExtensionNotValidBundle.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/ExtensionNotValidBundle.php
deleted file mode 100644
index 34e2920392be07f26a23e77408278d91f1b4ad74..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/ExtensionNotValidBundle.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionNotValidBundle;
-
-use Symfony\Component\HttpKernel\Bundle\Bundle;
-
-class ExtensionNotValidBundle extends Bundle
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php
deleted file mode 100644
index 108571718d1be5808518d6801f6f097dd66c118d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Extension\Extension;
-
-class ExtensionPresentExtension extends Extension
-{
-    public function load(array $configs, ContainerBuilder $container)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/ExtensionPresentBundle.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/ExtensionPresentBundle.php
deleted file mode 100644
index 36a7ad404abda7ae81f285c6045f6999e39b9dac..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/ExtensionPresentBundle.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle;
-
-use Symfony\Component\HttpKernel\Bundle\Bundle;
-
-class ExtensionPresentBundle extends Bundle
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php b/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php
deleted file mode 100644
index f7baaa6325fb2d9f01592404eb3f1b0082d337ec..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\HttpKernel\Kernel;
-
-class KernelForOverrideName extends Kernel
-{
-    protected $name = 'overridden';
-
-    public function registerBundles()
-    {
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php b/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php
deleted file mode 100644
index 7b870250cc7d443403240587fbae32028ec9fd57..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\HttpKernel\Kernel;
-
-class KernelForTest extends Kernel
-{
-    public function getBundleMap()
-    {
-        return $this->bundleMap;
-    }
-
-    public function registerBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-
-    public function isBooted()
-    {
-        return $this->booted;
-    }
-
-    public function getProjectDir(): string
-    {
-        return __DIR__;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php b/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php
deleted file mode 100644
index 2391557362f0724882949c1b004db665ce672530..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\Kernel;
-
-class KernelWithoutBundles extends Kernel
-{
-    public function registerBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-
-    public function getProjectDir()
-    {
-        return __DIR__;
-    }
-
-    protected function build(ContainerBuilder $container)
-    {
-        $container->setParameter('test_executed', true);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php b/vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php
deleted file mode 100644
index ffb72a35a7c771d22bf57a609d28016dd2c939bc..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-class ResettableService
-{
-    public static $counter = 0;
-
-    public function reset()
-    {
-        ++self::$counter;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Resources/FooBundle/foo.txt b/vendor/symfony/http-kernel/Tests/Fixtures/Resources/FooBundle/foo.txt
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/TestClient.php b/vendor/symfony/http-kernel/Tests/Fixtures/TestClient.php
deleted file mode 100644
index 140cbfbf51f480bfb04ca3472aa2a60703d4aa26..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/TestClient.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\HttpKernel\HttpKernelBrowser;
-
-class TestClient extends HttpKernelBrowser
-{
-    protected function getScript($request)
-    {
-        $script = parent::getScript($request);
-
-        $autoload = file_exists(__DIR__.'/../../vendor/autoload.php')
-            ? __DIR__.'/../../vendor/autoload.php'
-            : __DIR__.'/../../../../../../vendor/autoload.php'
-        ;
-
-        $script = preg_replace('/(\->register\(\);)/', "$0\nrequire_once '$autoload';\n", $script);
-
-        return $script;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/EsiFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/EsiFragmentRendererTest.php
deleted file mode 100644
index df74ade1540d3067f979806c8bbe53920b45eacc..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/EsiFragmentRendererTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class EsiFragmentRendererTest extends TestCase
-{
-    public function testRenderFallbackToInlineStrategyIfEsiNotSupported()
-    {
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(true));
-        $strategy->render('/', Request::create('/'));
-    }
-
-    public function testRenderFallbackWithScalar()
-    {
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(true), new UriSigner('foo'));
-        $request = Request::create('/');
-        $reference = new ControllerReference('main_controller', ['foo' => [true]], []);
-        $strategy->render($reference, $request);
-    }
-
-    public function testRender()
-    {
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $this->assertEquals('<esi:include src="/" />', $strategy->render('/', $request)->getContent());
-        $this->assertEquals("<esi:comment text=\"This is a comment\" />\n<esi:include src=\"/\" />", $strategy->render('/', $request, ['comment' => 'This is a comment'])->getContent());
-        $this->assertEquals('<esi:include src="/" alt="foo" />', $strategy->render('/', $request, ['alt' => 'foo'])->getContent());
-    }
-
-    public function testRenderControllerReference()
-    {
-        $signer = new UriSigner('foo');
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(), $signer);
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $reference = new ControllerReference('main_controller', [], []);
-        $altReference = new ControllerReference('alt_controller', [], []);
-
-        $this->assertEquals(
-            '<esi:include src="/_fragment?_hash=Jz1P8NErmhKTeI6onI1EdAXTB85359MY3RIk5mSJ60w%3D&_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3Dmain_controller" alt="/_fragment?_hash=iPJEdRoUpGrM1ztqByiorpfMPtiW%2FOWwdH1DBUXHhEc%3D&_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3Dalt_controller" />',
-            $strategy->render($reference, $request, ['alt' => $altReference])->getContent()
-        );
-    }
-
-    public function testRenderControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $strategy->render(new ControllerReference('main_controller'), $request);
-    }
-
-    public function testRenderAltControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $strategy->render('/', $request, ['alt' => new ControllerReference('alt_controller')]);
-    }
-
-    private function getInlineStrategy($called = false)
-    {
-        $inline = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer')->disableOriginalConstructor()->getMock();
-
-        if ($called) {
-            $inline->expects($this->once())->method('render');
-        }
-
-        return $inline;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/FragmentHandlerTest.php b/vendor/symfony/http-kernel/Tests/Fragment/FragmentHandlerTest.php
deleted file mode 100644
index 15e543a2142367823914e58f72fd1108047db66a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/FragmentHandlerTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
-
-/**
- * @group time-sensitive
- */
-class FragmentHandlerTest extends TestCase
-{
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->requestStack = $this->getMockBuilder('Symfony\\Component\\HttpFoundation\\RequestStack')
-            ->disableOriginalConstructor()
-            ->getMock()
-        ;
-        $this->requestStack
-            ->expects($this->any())
-            ->method('getCurrentRequest')
-            ->willReturn(Request::create('/'))
-        ;
-    }
-
-    public function testRenderWhenRendererDoesNotExist()
-    {
-        $this->expectException('InvalidArgumentException');
-        $handler = new FragmentHandler($this->requestStack);
-        $handler->render('/', 'foo');
-    }
-
-    public function testRenderWithUnknownRenderer()
-    {
-        $this->expectException('InvalidArgumentException');
-        $handler = $this->getHandler($this->returnValue(new Response('foo')));
-
-        $handler->render('/', 'bar');
-    }
-
-    public function testDeliverWithUnsuccessfulResponse()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Error when rendering "http://localhost/" (Status code is 404).');
-        $handler = $this->getHandler($this->returnValue(new Response('foo', 404)));
-
-        $handler->render('/', 'foo');
-    }
-
-    public function testRender()
-    {
-        $handler = $this->getHandler($this->returnValue(new Response('foo')), ['/', Request::create('/'), ['foo' => 'foo', 'ignore_errors' => true]]);
-
-        $this->assertEquals('foo', $handler->render('/', 'foo', ['foo' => 'foo']));
-    }
-
-    protected function getHandler($returnValue, $arguments = [])
-    {
-        $renderer = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface')->getMock();
-        $renderer
-            ->expects($this->any())
-            ->method('getName')
-            ->willReturn('foo')
-        ;
-        $e = $renderer
-            ->expects($this->any())
-            ->method('render')
-            ->will($returnValue)
-        ;
-
-        if ($arguments) {
-            $e->with(...$arguments);
-        }
-
-        $handler = new FragmentHandler($this->requestStack);
-        $handler->addRenderer($renderer);
-
-        return $handler;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/HIncludeFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/HIncludeFragmentRendererTest.php
deleted file mode 100644
index cdef37565b5eb7a58fba2bf2329061bc42001ca9..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/HIncludeFragmentRendererTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer;
-use Symfony\Component\HttpKernel\UriSigner;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class HIncludeFragmentRendererTest extends TestCase
-{
-    public function testRenderExceptionWhenControllerAndNoSigner()
-    {
-        $this->expectException('LogicException');
-        $strategy = new HIncludeFragmentRenderer();
-        $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'));
-    }
-
-    public function testRenderWithControllerAndSigner()
-    {
-        $strategy = new HIncludeFragmentRenderer(null, new UriSigner('foo'));
-
-        $this->assertEquals('<hx:include src="/_fragment?_hash=BP%2BOzCD5MRUI%2BHJpgPDOmoju00FnzLhP3TGcSHbbBLs%3D&amp;_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dmain_controller"></hx:include>', $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithUri()
-    {
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo"></hx:include>', $strategy->render('/foo', Request::create('/'))->getContent());
-
-        $strategy = new HIncludeFragmentRenderer(null, new UriSigner('foo'));
-        $this->assertEquals('<hx:include src="/foo"></hx:include>', $strategy->render('/foo', Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithDefault()
-    {
-        // only default
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default'])->getContent());
-
-        // only global default
-        $strategy = new HIncludeFragmentRenderer(null, null, 'global_default');
-        $this->assertEquals('<hx:include src="/foo">global_default</hx:include>', $strategy->render('/foo', Request::create('/'), [])->getContent());
-
-        // global default and default
-        $strategy = new HIncludeFragmentRenderer(null, null, 'global_default');
-        $this->assertEquals('<hx:include src="/foo">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default'])->getContent());
-    }
-
-    public function testRenderWithAttributesOptions()
-    {
-        // with id
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo" id="bar">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default', 'id' => 'bar'])->getContent());
-
-        // with attributes
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo" p1="v1" p2="v2">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default', 'attributes' => ['p1' => 'v1', 'p2' => 'v2']])->getContent());
-
-        // with id & attributes
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo" p1="v1" p2="v2" id="bar">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default', 'id' => 'bar', 'attributes' => ['p1' => 'v1', 'p2' => 'v2']])->getContent());
-    }
-
-    public function testRenderWithTwigAndDefaultText()
-    {
-        $twig = new Environment($loader = new ArrayLoader());
-        $strategy = new HIncludeFragmentRenderer($twig);
-        $this->assertEquals('<hx:include src="/foo">loading...</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'loading...'])->getContent());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testRenderWithDefaultTextLegacy()
-    {
-        $engine = $this->getMockBuilder('Symfony\\Component\\Templating\\EngineInterface')->getMock();
-        $engine->expects($this->once())
-            ->method('exists')
-            ->with('default')
-            ->willThrowException(new \InvalidArgumentException());
-
-        // only default
-        $strategy = new HIncludeFragmentRenderer($engine);
-        $this->assertEquals('<hx:include src="/foo">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default'])->getContent());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
deleted file mode 100644
index a064a76c7dc013778095a1bd803e8f427c08d70d..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
-
-class InlineFragmentRendererTest extends TestCase
-{
-    public function testRender()
-    {
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->returnValue(new Response('foo'))));
-
-        $this->assertEquals('foo', $strategy->render('/', Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithControllerReference()
-    {
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->returnValue(new Response('foo'))));
-
-        $this->assertEquals('foo', $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithObjectsAsAttributes()
-    {
-        $object = new \stdClass();
-
-        $subRequest = Request::create('/_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dmain_controller');
-        $subRequest->attributes->replace(['object' => $object, '_format' => 'html', '_controller' => 'main_controller', '_locale' => 'en']);
-        $subRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $subRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $subRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $subRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($subRequest));
-
-        $this->assertSame('foo', $strategy->render(new ControllerReference('main_controller', ['object' => $object], []), Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithTrustedHeaderDisabled()
-    {
-        Request::setTrustedProxies([], 0);
-
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-        $this->assertSame('foo', $strategy->render('/', Request::create('/'))->getContent());
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testRenderExceptionNoIgnoreErrors()
-    {
-        $this->expectException('RuntimeException');
-        $dispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMock();
-        $dispatcher->expects($this->never())->method('dispatch');
-
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->throwException(new \RuntimeException('foo'))), $dispatcher);
-
-        $this->assertEquals('foo', $strategy->render('/', Request::create('/'))->getContent());
-    }
-
-    public function testRenderExceptionIgnoreErrors()
-    {
-        $exception = new \RuntimeException('foo');
-        $kernel = $this->getKernel($this->throwException($exception));
-        $request = Request::create('/');
-        $expectedEvent = new ExceptionEvent($kernel, $request, $kernel::SUB_REQUEST, $exception);
-        $dispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMock();
-        $dispatcher->expects($this->once())->method('dispatch')->with($expectedEvent, KernelEvents::EXCEPTION);
-
-        $strategy = new InlineFragmentRenderer($kernel, $dispatcher);
-
-        $this->assertEmpty($strategy->render('/', $request, ['ignore_errors' => true])->getContent());
-    }
-
-    public function testRenderExceptionIgnoreErrorsWithAlt()
-    {
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->onConsecutiveCalls(
-            $this->throwException(new \RuntimeException('foo')),
-            $this->returnValue(new Response('bar'))
-        )));
-
-        $this->assertEquals('bar', $strategy->render('/', Request::create('/'), ['ignore_errors' => true, 'alt' => '/foo'])->getContent());
-    }
-
-    private function getKernel($returnValue)
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel
-            ->expects($this->any())
-            ->method('handle')
-            ->will($returnValue)
-        ;
-
-        return $kernel;
-    }
-
-    public function testExceptionInSubRequestsDoesNotMangleOutputBuffers()
-    {
-        $controllerResolver = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface')->getMock();
-        $controllerResolver
-            ->expects($this->once())
-            ->method('getController')
-            ->willReturn(function () {
-                ob_start();
-                echo 'bar';
-                throw new \RuntimeException();
-            })
-        ;
-
-        $argumentResolver = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolverInterface')->getMock();
-        $argumentResolver
-            ->expects($this->once())
-            ->method('getArguments')
-            ->willReturn([])
-        ;
-
-        $kernel = new HttpKernel(new EventDispatcher(), $controllerResolver, new RequestStack(), $argumentResolver);
-        $renderer = new InlineFragmentRenderer($kernel);
-
-        // simulate a main request with output buffering
-        ob_start();
-        echo 'Foo';
-
-        // simulate a sub-request with output buffering and an exception
-        $renderer->render('/', Request::create('/'), ['ignore_errors' => true]);
-
-        $this->assertEquals('Foo', ob_get_clean());
-    }
-
-    public function testLocaleAndFormatAreIsKeptInSubrequest()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->attributes->set('_format', 'foo');
-        $expectedSubRequest->setLocale('fr');
-        if (Request::HEADER_X_FORWARDED_FOR & Request::getTrustedHeaderSet()) {
-            $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-            $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        }
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->attributes->set('_format', 'foo');
-        $request->setLocale('fr');
-        $strategy->render('/', $request);
-    }
-
-    public function testESIHeaderIsKeptInSubrequest()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-
-        if (Request::HEADER_X_FORWARDED_FOR & Request::getTrustedHeaderSet()) {
-            $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-            $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        }
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $strategy->render('/', $request);
-    }
-
-    public function testESIHeaderIsKeptInSubrequestWithTrustedHeaderDisabled()
-    {
-        Request::setTrustedProxies([], Request::HEADER_FORWARDED);
-
-        $this->testESIHeaderIsKeptInSubrequest();
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testHeadersPossiblyResultingIn304AreNotAssignedToSubrequest()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-        $request = Request::create('/', 'GET', [], [], [], ['HTTP_IF_MODIFIED_SINCE' => 'Fri, 01 Jan 2016 00:00:00 GMT', 'HTTP_IF_NONE_MATCH' => '*']);
-        $strategy->render('/', $request);
-    }
-
-    public function testFirstTrustedProxyIsSetAsRemote()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], -1);
-
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $expectedSubRequest->server->set('REMOTE_ADDR', '127.0.0.1');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $strategy->render('/', $request);
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testIpAddressOfRangedTrustedProxyIsSetAsRemote()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $expectedSubRequest->server->set('REMOTE_ADDR', '127.0.0.1');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        Request::setTrustedProxies(['1.1.1.1/24'], -1);
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $strategy->render('/', $request);
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    /**
-     * Creates a Kernel expecting a request equals to $request
-     * Allows delta in comparison in case REQUEST_TIME changed by 1 second.
-     */
-    private function getKernelExpectingRequest(Request $request, $strict = false)
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel
-            ->expects($this->once())
-            ->method('handle')
-            ->with($this->equalTo($request, 1))
-            ->willReturn(new Response('foo'));
-
-        return $kernel;
-    }
-}
-
-class Bar
-{
-    public $bar = 'bar';
-
-    public function getBar()
-    {
-        return $this->bar;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/RoutableFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/RoutableFragmentRendererTest.php
deleted file mode 100644
index 151adb0e97cb4665347c6f265930beab24650966..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/RoutableFragmentRendererTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-
-class RoutableFragmentRendererTest extends TestCase
-{
-    /**
-     * @dataProvider getGenerateFragmentUriData
-     */
-    public function testGenerateFragmentUri($uri, $controller)
-    {
-        $this->assertEquals($uri, $this->callGenerateFragmentUriMethod($controller, Request::create('/')));
-    }
-
-    /**
-     * @dataProvider getGenerateFragmentUriData
-     */
-    public function testGenerateAbsoluteFragmentUri($uri, $controller)
-    {
-        $this->assertEquals('http://localhost'.$uri, $this->callGenerateFragmentUriMethod($controller, Request::create('/'), true));
-    }
-
-    public function getGenerateFragmentUriData()
-    {
-        return [
-            ['/_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', [], [])],
-            ['/_fragment?_path=_format%3Dxml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['_format' => 'xml'], [])],
-            ['/_fragment?_path=foo%3Dfoo%26_format%3Djson%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['foo' => 'foo', '_format' => 'json'], [])],
-            ['/_fragment?bar=bar&_path=foo%3Dfoo%26_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['foo' => 'foo'], ['bar' => 'bar'])],
-            ['/_fragment?foo=foo&_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', [], ['foo' => 'foo'])],
-            ['/_fragment?_path=foo%255B0%255D%3Dfoo%26foo%255B1%255D%3Dbar%26_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['foo' => ['foo', 'bar']], [])],
-        ];
-    }
-
-    public function testGenerateFragmentUriWithARequest()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('_format', 'json');
-        $request->setLocale('fr');
-        $controller = new ControllerReference('controller', [], []);
-
-        $this->assertEquals('/_fragment?_path=_format%3Djson%26_locale%3Dfr%26_controller%3Dcontroller', $this->callGenerateFragmentUriMethod($controller, $request));
-    }
-
-    /**
-     * @dataProvider getGenerateFragmentUriDataWithNonScalar
-     */
-    public function testGenerateFragmentUriWithNonScalar($controller)
-    {
-        $this->expectException('LogicException');
-        $this->callGenerateFragmentUriMethod($controller, Request::create('/'));
-    }
-
-    public function getGenerateFragmentUriDataWithNonScalar()
-    {
-        return [
-            [new ControllerReference('controller', ['foo' => new Foo(), 'bar' => 'bar'], [])],
-            [new ControllerReference('controller', ['foo' => ['foo' => 'foo'], 'bar' => ['bar' => new Foo()]], [])],
-        ];
-    }
-
-    private function callGenerateFragmentUriMethod(ControllerReference $reference, Request $request, $absolute = false)
-    {
-        $renderer = $this->getMockForAbstractClass('Symfony\Component\HttpKernel\Fragment\RoutableFragmentRenderer');
-        $r = new \ReflectionObject($renderer);
-        $m = $r->getMethod('generateFragmentUri');
-        $m->setAccessible(true);
-
-        return $m->invoke($renderer, $reference, $request, $absolute);
-    }
-}
-
-class Foo
-{
-    public $foo;
-
-    public function getFoo()
-    {
-        return $this->foo;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/SsiFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/SsiFragmentRendererTest.php
deleted file mode 100644
index df30e6772722648aedd128e1cbf661bb6329f4f3..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/SsiFragmentRendererTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer;
-use Symfony\Component\HttpKernel\HttpCache\Ssi;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class SsiFragmentRendererTest extends TestCase
-{
-    public function testRenderFallbackToInlineStrategyIfSsiNotSupported()
-    {
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy(true));
-        $strategy->render('/', Request::create('/'));
-    }
-
-    public function testRender()
-    {
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $this->assertEquals('<!--#include virtual="/" -->', $strategy->render('/', $request)->getContent());
-        $this->assertEquals('<!--#include virtual="/" -->', $strategy->render('/', $request, ['comment' => 'This is a comment'])->getContent(), 'Strategy options should not impact the ssi include tag');
-    }
-
-    public function testRenderControllerReference()
-    {
-        $signer = new UriSigner('foo');
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy(), $signer);
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $reference = new ControllerReference('main_controller', [], []);
-        $altReference = new ControllerReference('alt_controller', [], []);
-
-        $this->assertEquals(
-            '<!--#include virtual="/_fragment?_hash=Jz1P8NErmhKTeI6onI1EdAXTB85359MY3RIk5mSJ60w%3D&_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3Dmain_controller" -->',
-            $strategy->render($reference, $request, ['alt' => $altReference])->getContent()
-        );
-    }
-
-    public function testRenderControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $strategy->render(new ControllerReference('main_controller'), $request);
-    }
-
-    public function testRenderAltControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $strategy->render('/', $request, ['alt' => new ControllerReference('alt_controller')]);
-    }
-
-    private function getInlineStrategy($called = false)
-    {
-        $inline = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer')->disableOriginalConstructor()->getMock();
-
-        if ($called) {
-            $inline->expects($this->once())->method('render');
-        }
-
-        return $inline;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/EsiTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/EsiTest.php
deleted file mode 100644
index cdf729e33146bba1002c0393a94a67de5cd70bf5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/EsiTest.php
+++ /dev/null
@@ -1,244 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-
-class EsiTest extends TestCase
-{
-    public function testHasSurrogateEsiCapability()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $this->assertTrue($esi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'foobar');
-        $this->assertFalse($esi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $this->assertFalse($esi->hasSurrogateCapability($request));
-    }
-
-    public function testAddSurrogateEsiCapability()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $esi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="ESI/1.0"', $request->headers->get('Surrogate-Capability'));
-
-        $esi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="ESI/1.0", symfony="ESI/1.0"', $request->headers->get('Surrogate-Capability'));
-    }
-
-    public function testAddSurrogateControl()
-    {
-        $esi = new Esi();
-
-        $response = new Response('foo <esi:include src="" />');
-        $esi->addSurrogateControl($response);
-        $this->assertEquals('content="ESI/1.0"', $response->headers->get('Surrogate-Control'));
-
-        $response = new Response('foo');
-        $esi->addSurrogateControl($response);
-        $this->assertEquals('', $response->headers->get('Surrogate-Control'));
-    }
-
-    public function testNeedsEsiParsing()
-    {
-        $esi = new Esi();
-
-        $response = new Response();
-        $response->headers->set('Surrogate-Control', 'content="ESI/1.0"');
-        $this->assertTrue($esi->needsParsing($response));
-
-        $response = new Response();
-        $this->assertFalse($esi->needsParsing($response));
-    }
-
-    public function testRenderIncludeTag()
-    {
-        $esi = new Esi();
-
-        $this->assertEquals('<esi:include src="/" onerror="continue" alt="/alt" />', $esi->renderIncludeTag('/', '/alt', true));
-        $this->assertEquals('<esi:include src="/" alt="/alt" />', $esi->renderIncludeTag('/', '/alt', false));
-        $this->assertEquals('<esi:include src="/" onerror="continue" />', $esi->renderIncludeTag('/'));
-        $this->assertEquals('<esi:comment text="some comment" />'."\n".'<esi:include src="/" onerror="continue" alt="/alt" />', $esi->renderIncludeTag('/', '/alt', true, 'some comment'));
-    }
-
-    public function testProcessDoesNothingIfContentTypeIsNotHtml()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/plain');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertFalse($response->headers->has('x-body-eval'));
-    }
-
-    public function testMultilineEsiRemoveTagsAreRemoved()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('<esi:remove> <a href="http://www.example.com">www.example.com</a> </esi:remove> Keep this'."<esi:remove>\n <a>www.example.com</a> </esi:remove> And this");
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals(' Keep this And this', $response->getContent());
-    }
-
-    public function testCommentTagsAreRemoved()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('<esi:comment text="some comment &gt;" /> Keep this');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals(' Keep this', $response->getContent());
-    }
-
-    public function testProcess()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <esi:comment text="some comment" /><esi:include src="..." alt="alt" onerror="continue" />');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'alt\', true) ?>'."\n", $response->getContent());
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-
-        $response = new Response('foo <esi:comment text="some comment" /><esi:include src="foo\'" alt="bar\'" onerror="continue" />');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'foo\\\'\', \'bar\\\'\', true) ?>'."\n", $response->getContent());
-
-        $response = new Response('foo <esi:include src="..." />');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'\', false) ?>'."\n", $response->getContent());
-
-        $response = new Response('foo <esi:include src="..."></esi:include>');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'\', false) ?>'."\n", $response->getContent());
-    }
-
-    public function testProcessEscapesPhpTags()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('<?php <? <% <script language=php>');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('<?php echo "<?"; ?>php <?php echo "<?"; ?> <?php echo "<%"; ?> <?php echo "<s"; ?>cript language=php>', $response->getContent());
-    }
-
-    public function testProcessWhenNoSrcInAnEsi()
-    {
-        $this->expectException('RuntimeException');
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <esi:include />');
-        $this->assertSame($response, $esi->process($request, $response));
-    }
-
-    public function testProcessRemoveSurrogateControlHeader()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <esi:include src="..." />');
-        $response->headers->set('Surrogate-Control', 'content="ESI/1.0"');
-        $this->assertSame($response, $esi->process($request, $response));
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-
-        $response->headers->set('Surrogate-Control', 'no-store, content="ESI/1.0"');
-        $this->assertSame($response, $esi->process($request, $response));
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-
-        $response->headers->set('Surrogate-Control', 'content="ESI/1.0", no-store');
-        $this->assertSame($response, $esi->process($request, $response));
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-    }
-
-    public function testHandle()
-    {
-        $esi = new Esi();
-        $cache = $this->getCache(Request::create('/'), new Response('foo'));
-        $this->assertEquals('foo', $esi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200()
-    {
-        $this->expectException('RuntimeException');
-        $esi = new Esi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $esi->handle($cache, '/', '/alt', false);
-    }
-
-    public function testHandleWhenResponseIsNot200AndErrorsAreIgnored()
-    {
-        $esi = new Esi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $this->assertEquals('', $esi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200AndAltIsPresent()
-    {
-        $esi = new Esi();
-        $response1 = new Response('foo');
-        $response1->setStatusCode(404);
-        $response2 = new Response('bar');
-        $cache = $this->getCache(Request::create('/'), [$response1, $response2]);
-        $this->assertEquals('bar', $esi->handle($cache, '/', '/alt', false));
-    }
-
-    protected function getCache($request, $response)
-    {
-        $cache = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\HttpCache')->setMethods(['getRequest', 'handle'])->disableOriginalConstructor()->getMock();
-        $cache->expects($this->any())
-              ->method('getRequest')
-              ->willReturn($request)
-        ;
-        if (\is_array($response)) {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->will($this->onConsecutiveCalls(...$response))
-            ;
-        } else {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->willReturn($response)
-            ;
-        }
-
-        return $cache;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTest.php
deleted file mode 100644
index c5bbc8c6897c93a8e47429a103957a1b77ab0308..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTest.php
+++ /dev/null
@@ -1,1563 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\HttpCache\HttpCache;
-use Symfony\Component\HttpKernel\HttpCache\Store;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @group time-sensitive
- */
-class HttpCacheTest extends HttpCacheTestCase
-{
-    public function testTerminateDelegatesTerminationOnlyForTerminableInterface()
-    {
-        $storeMock = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\HttpCache\\StoreInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        // does not implement TerminableInterface
-        $kernel = new TestKernel();
-        $httpCache = new HttpCache($kernel, $storeMock);
-        $httpCache->terminate(Request::create('/'), new Response());
-
-        $this->assertFalse($kernel->terminateCalled, 'terminate() is never called if the kernel class does not implement TerminableInterface');
-
-        // implements TerminableInterface
-        $kernelMock = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Kernel')
-            ->disableOriginalConstructor()
-            ->setMethods(['terminate', 'registerBundles', 'registerContainerConfiguration'])
-            ->getMock();
-
-        $kernelMock->expects($this->once())
-            ->method('terminate');
-
-        $kernel = new HttpCache($kernelMock, $storeMock);
-        $kernel->terminate(Request::create('/'), new Response());
-    }
-
-    public function testPassesOnNonGetHeadRequests()
-    {
-        $this->setNextResponse(200);
-        $this->request('POST', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertTraceContains('pass');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testInvalidatesOnPostPutDeleteRequests()
-    {
-        foreach (['post', 'put', 'delete'] as $method) {
-            $this->setNextResponse(200);
-            $this->request($method, '/');
-
-            $this->assertHttpKernelIsCalled();
-            $this->assertResponseOk();
-            $this->assertTraceContains('invalidate');
-            $this->assertTraceContains('pass');
-        }
-    }
-
-    public function testDoesNotCacheWithAuthorizationRequestHeaderAndNonPublicResponse()
-    {
-        $this->setNextResponse(200, ['ETag' => '"Foo"']);
-        $this->request('GET', '/', ['HTTP_AUTHORIZATION' => 'basic foobarbaz']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertEquals('private', $this->response->headers->get('Cache-Control'));
-
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testDoesCacheWithAuthorizationRequestHeaderAndPublicResponse()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'ETag' => '"Foo"']);
-        $this->request('GET', '/', ['HTTP_AUTHORIZATION' => 'basic foobarbaz']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertTrue($this->response->headers->has('Age'));
-        $this->assertEquals('public', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testDoesNotCacheWithCookieHeaderAndNonPublicResponse()
-    {
-        $this->setNextResponse(200, ['ETag' => '"Foo"']);
-        $this->request('GET', '/', [], ['foo' => 'bar']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertEquals('private', $this->response->headers->get('Cache-Control'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testDoesNotCacheRequestsWithACookieHeader()
-    {
-        $this->setNextResponse(200);
-        $this->request('GET', '/', [], ['foo' => 'bar']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertEquals('private', $this->response->headers->get('Cache-Control'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testRespondsWith304WhenIfModifiedSinceMatchesLastModified()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Last-Modified' => $time->format(DATE_RFC2822), 'Content-Type' => 'text/plain'], 'Hello World');
-        $this->request('GET', '/', ['HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->headers->get('Content-Type'));
-        $this->assertEmpty($this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testRespondsWith304WhenIfNoneMatchMatchesETag()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'ETag' => '12345', 'Content-Type' => 'text/plain'], 'Hello World');
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '12345']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->headers->get('Content-Type'));
-        $this->assertTrue($this->response->headers->has('ETag'));
-        $this->assertEmpty($this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testRespondsWith304OnlyIfIfNoneMatchAndIfModifiedSinceBothMatch()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $this->setNextResponse(200, [], '', function ($request, $response) use ($time) {
-            $response->setStatusCode(200);
-            $response->headers->set('ETag', '12345');
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-            $response->headers->set('Content-Type', 'text/plain');
-            $response->setContent('Hello World');
-        });
-
-        // only ETag matches
-        $t = \DateTime::createFromFormat('U', time() - 3600);
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '12345', 'HTTP_IF_MODIFIED_SINCE' => $t->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-
-        // only Last-Modified matches
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '1234', 'HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-
-        // Both matches
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '12345', 'HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-    }
-
-    public function testIncrementsMaxAgeWhenNoDateIsSpecifiedEventWhenUsingETag()
-    {
-        $this->setNextResponse(
-            200,
-            [
-                'ETag' => '1234',
-                'Cache-Control' => 'public, s-maxage=60',
-            ]
-        );
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        sleep(2);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertEquals(2, $this->response->headers->get('Age'));
-    }
-
-    public function testValidatesPrivateResponsesCachedOnTheClient()
-    {
-        $this->setNextResponse(200, [], '', function ($request, $response) {
-            $etags = preg_split('/\s*,\s*/', $request->headers->get('IF_NONE_MATCH'));
-            if ($request->cookies->has('authenticated')) {
-                $response->headers->set('Cache-Control', 'private, no-store');
-                $response->setETag('"private tag"');
-                if (\in_array('"private tag"', $etags)) {
-                    $response->setStatusCode(304);
-                } else {
-                    $response->setStatusCode(200);
-                    $response->headers->set('Content-Type', 'text/plain');
-                    $response->setContent('private data');
-                }
-            } else {
-                $response->headers->set('Cache-Control', 'public');
-                $response->setETag('"public tag"');
-                if (\in_array('"public tag"', $etags)) {
-                    $response->setStatusCode(304);
-                } else {
-                    $response->setStatusCode(200);
-                    $response->headers->set('Content-Type', 'text/plain');
-                    $response->setContent('public data');
-                }
-            }
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('"public tag"', $this->response->headers->get('ETag'));
-        $this->assertEquals('public data', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/', [], ['authenticated' => '']);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('"private tag"', $this->response->headers->get('ETag'));
-        $this->assertEquals('private data', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceNotContains('store');
-    }
-
-    public function testStoresResponsesWhenNoCacheRequestDirectivePresent()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('store');
-        $this->assertTrue($this->response->headers->has('Age'));
-    }
-
-    public function testReloadsResponsesWhenCacheHitsButNoCacheRequestDirectivePresentWhenAllowReloadIsSetTrue()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public, max-age=10000'], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_reload'] = true;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Goodbye World', $this->response->getContent());
-        $this->assertTraceContains('reload');
-        $this->assertTraceContains('store');
-    }
-
-    public function testDoesNotReloadResponsesWhenAllowReloadIsSetFalseDefault()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public, max-age=10000'], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_reload'] = false;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('reload');
-
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('reload');
-    }
-
-    public function testRevalidatesFreshCacheEntryWhenMaxAgeRequestDirectiveIsExceededWhenAllowRevalidateOptionIsSetTrue()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, [], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->headers->set('Cache-Control', 'public, max-age=10000');
-            $response->setETag($count);
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_revalidate'] = true;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'max-age=0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Goodbye World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceContains('store');
-    }
-
-    public function testDoesNotRevalidateFreshCacheEntryWhenEnableRevalidateOptionIsSetFalseDefault()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, [], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->headers->set('Cache-Control', 'public, max-age=10000');
-            $response->setETag($count);
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_revalidate'] = false;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'max-age=0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('stale');
-        $this->assertTraceNotContains('invalid');
-        $this->assertTraceContains('fresh');
-
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'max-age=0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('stale');
-        $this->assertTraceNotContains('invalid');
-        $this->assertTraceContains('fresh');
-    }
-
-    public function testFetchesResponseFromBackendWhenCacheMisses()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTrue($this->response->headers->has('Age'));
-    }
-
-    public function testDoesNotCacheSomeStatusCodeResponses()
-    {
-        foreach (array_merge(range(201, 202), range(204, 206), range(303, 305), range(400, 403), range(405, 409), range(411, 417), range(500, 505)) as $code) {
-            $time = \DateTime::createFromFormat('U', time() + 5);
-            $this->setNextResponse($code, ['Expires' => $time->format(DATE_RFC2822)]);
-
-            $this->request('GET', '/');
-            $this->assertEquals($code, $this->response->getStatusCode());
-            $this->assertTraceNotContains('store');
-            $this->assertFalse($this->response->headers->has('Age'));
-        }
-    }
-
-    public function testDoesNotCacheResponsesWithExplicitNoStoreDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Expires' => $time->format(DATE_RFC2822), 'Cache-Control' => 'no-store']);
-
-        $this->request('GET', '/');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testDoesNotCacheResponsesWithoutFreshnessInformationOrAValidator()
-    {
-        $this->setNextResponse();
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceNotContains('store');
-    }
-
-    public function testCachesResponsesWithExplicitNoCacheDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Expires' => $time->format(DATE_RFC2822), 'Cache-Control' => 'public, no-cache']);
-
-        $this->request('GET', '/');
-        $this->assertTraceContains('store');
-        $this->assertTrue($this->response->headers->has('Age'));
-    }
-
-    public function testCachesResponsesWithAnExpirationHeader()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-    }
-
-    public function testCachesResponsesWithAMaxAgeDirective()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public, max-age=5']);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-    }
-
-    public function testCachesResponsesWithASMaxAgeDirective()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 's-maxage=5']);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-    }
-
-    public function testCachesResponsesWithALastModifiedValidatorButNoFreshnessInformation()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Last-Modified' => $time->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testCachesResponsesWithAnETagValidatorButNoFreshnessInformation()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'ETag' => '"123456"']);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testHitsCachedResponsesWithExpiresHeader()
-    {
-        $time1 = \DateTime::createFromFormat('U', time() - 5);
-        $time2 = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Date' => $time1->format(DATE_RFC2822), 'Expires' => $time2->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThan(2, strtotime($this->responses[0]->headers->get('Date')) - strtotime($this->response->headers->get('Date')));
-        $this->assertGreaterThan(0, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testHitsCachedResponseWithMaxAgeDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $this->setNextResponse(200, ['Date' => $time->format(DATE_RFC2822), 'Cache-Control' => 'public, max-age=10']);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThan(2, strtotime($this->responses[0]->headers->get('Date')) - strtotime($this->response->headers->get('Date')));
-        $this->assertGreaterThan(0, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testDegradationWhenCacheLocked()
-    {
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $this->markTestSkipped('Skips on windows to avoid permissions issues.');
-        }
-
-        $this->cacheConfig['stale_while_revalidate'] = 10;
-
-        // The prescence of Last-Modified makes this cacheable (because Response::isValidateable() then).
-        $this->setNextResponse(200, ['Cache-Control' => 'public, s-maxage=5', 'Last-Modified' => 'some while ago'], 'Old response');
-        $this->request('GET', '/'); // warm the cache
-
-        // Now, lock the cache
-        $concurrentRequest = Request::create('/', 'GET');
-        $this->store->lock($concurrentRequest);
-
-        /*
-         *  After 10s, the cached response has become stale. Yet, we're still within the "stale_while_revalidate"
-         *  timeout so we may serve the stale response.
-         */
-        sleep(10);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('stale-while-revalidate');
-        $this->assertEquals('Old response', $this->response->getContent());
-
-        /*
-         * Another 10s later, stale_while_revalidate is over. Resort to serving the old response, but
-         * do so with a "server unavailable" message.
-         */
-        sleep(10);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(503, $this->response->getStatusCode());
-        $this->assertEquals('Old response', $this->response->getContent());
-    }
-
-    public function testHitsCachedResponseWithSMaxAgeDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $this->setNextResponse(200, ['Date' => $time->format(DATE_RFC2822), 'Cache-Control' => 's-maxage=10, max-age=0']);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThan(2, strtotime($this->responses[0]->headers->get('Date')) - strtotime($this->response->headers->get('Date')));
-        $this->assertGreaterThan(0, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testAssignsDefaultTtlWhenResponseHasNoFreshnessInformation()
-    {
-        $this->setNextResponse();
-
-        $this->cacheConfig['default_ttl'] = 10;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=10/', $this->response->headers->get('Cache-Control'));
-
-        $this->cacheConfig['default_ttl'] = 10;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=10/', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testAssignsDefaultTtlWhenResponseHasNoFreshnessInformationAndAfterTtlWasExpired()
-    {
-        $this->setNextResponse();
-
-        $this->cacheConfig['default_ttl'] = 2;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        // expires the cache
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-        $tmp = unserialize($values[0]);
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $tmp[0][1]['date'] = $time->format(DATE_RFC2822);
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('save');
-        $m->setAccessible(true);
-        $m->invoke($this->store, 'md'.hash('sha256', 'http://localhost/'), serialize($tmp));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->setNextResponse();
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testAssignsDefaultTtlWhenResponseHasNoFreshnessInformationAndAfterTtlWasExpiredWithStatus304()
-    {
-        $this->setNextResponse();
-
-        $this->cacheConfig['default_ttl'] = 2;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        // expires the cache
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-        $tmp = unserialize($values[0]);
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $tmp[0][1]['date'] = $time->format(DATE_RFC2822);
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('save');
-        $m->setAccessible(true);
-        $m->invoke($this->store, 'md'.hash('sha256', 'http://localhost/'), serialize($tmp));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('miss');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testDoesNotAssignDefaultTtlWhenResponseHasMustRevalidateDirective()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'must-revalidate']);
-
-        $this->cacheConfig['default_ttl'] = 10;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertNotRegExp('/s-maxage/', $this->response->headers->get('Cache-Control'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testFetchesFullResponseWhenCacheStaleAndNoValidatorsPresent()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-
-        // build initial request
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertNotNull($this->response->headers->get('Age'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        // go in and play around with the cached metadata directly ...
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-        $tmp = unserialize($values[0]);
-        $time = \DateTime::createFromFormat('U', time());
-        $tmp[0][1]['expires'] = $time->format(DATE_RFC2822);
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('save');
-        $m->setAccessible(true);
-        $m->invoke($this->store, 'md'.hash('sha256', 'http://localhost/'), serialize($tmp));
-
-        // build subsequent request; should be found but miss due to freshness
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThanOrEqual(1, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('stale');
-        $this->assertTraceNotContains('fresh');
-        $this->assertTraceNotContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testValidatesCachedResponsesWithLastModifiedAndNoFreshnessInformation()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($time) {
-            $response->headers->set('Cache-Control', 'public');
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-            if ($time->format(DATE_RFC2822) == $request->headers->get('IF_MODIFIED_SINCE')) {
-                $response->setStatusCode(304);
-                $response->setContent('');
-            }
-        });
-
-        // build initial request
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Last-Modified'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('stale');
-
-        // build subsequent request; should be found but miss due to freshness
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Last-Modified'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertLessThanOrEqual(1, $this->response->headers->get('Age'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('miss');
-    }
-
-    public function testValidatesCachedResponsesUseSameHttpMethod()
-    {
-        $test = $this;
-
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($test) {
-            $test->assertSame('OPTIONS', $request->getMethod());
-        });
-
-        // build initial request
-        $this->request('OPTIONS', '/');
-
-        // build subsequent request
-        $this->request('OPTIONS', '/');
-    }
-
-    public function testValidatesCachedResponsesWithETagAndNoFreshnessInformation()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            $response->headers->set('Cache-Control', 'public');
-            $response->headers->set('ETag', '"12345"');
-            if ($response->getETag() == $request->headers->get('IF_NONE_MATCH')) {
-                $response->setStatusCode(304);
-                $response->setContent('');
-            }
-        });
-
-        // build initial request
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('ETag'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        // build subsequent request; should be found but miss due to freshness
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('ETag'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertLessThanOrEqual(1, $this->response->headers->get('Age'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('miss');
-    }
-
-    public function testServesResponseWhileFreshAndRevalidatesWithLastModifiedInformation()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $this->setNextResponse(200, [], 'Hello World', function (Request $request, Response $response) use ($time) {
-            $response->setSharedMaxAge(10);
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-        });
-
-        // prime the cache
-        $this->request('GET', '/');
-
-        // next request before s-maxage has expired: Serve from cache
-        // without hitting the backend
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        sleep(15); // expire the cache
-
-        $this->setNextResponse(304, [], '', function (Request $request, Response $response) use ($time) {
-            $this->assertEquals($time->format(DATE_RFC2822), $request->headers->get('IF_MODIFIED_SINCE'));
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-    }
-
-    public function testReplacesCachedResponsesWhenValidationResultsInNon304Response()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $count = 0;
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($time, &$count) {
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-            $response->headers->set('Cache-Control', 'public');
-            switch (++$count) {
-                case 1:
-                    $response->setContent('first response');
-                    break;
-                case 2:
-                    $response->setContent('second response');
-                    break;
-                case 3:
-                    $response->setContent('');
-                    $response->setStatusCode(304);
-                    break;
-            }
-        });
-
-        // first request should fetch from backend and store in cache
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('first response', $this->response->getContent());
-
-        // second request is validated, is invalid, and replaces cached entry
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('second response', $this->response->getContent());
-
-        // third response is validated, valid, and returns cached entry
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('second response', $this->response->getContent());
-
-        $this->assertEquals(3, $count);
-    }
-
-    public function testPassesHeadRequestsThroughDirectlyOnPass()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            $response->setContent('');
-            $response->setStatusCode(200);
-            $this->assertEquals('HEAD', $request->getMethod());
-        });
-
-        $this->request('HEAD', '/', ['HTTP_EXPECT' => 'something ...']);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('', $this->response->getContent());
-    }
-
-    public function testUsesCacheToRespondToHeadRequestsWhenFresh()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->setContent('Hello World');
-            $response->setStatusCode(200);
-            $this->assertNotEquals('HEAD', $request->getMethod());
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('HEAD', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->getContent());
-        $this->assertEquals(\strlen('Hello World'), $this->response->headers->get('Content-Length'));
-    }
-
-    public function testSendsNoContentWhenFresh()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($time) {
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/', ['HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->getContent());
-    }
-
-    public function testInvalidatesCachedResponsesOnPost()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            if ('GET' == $request->getMethod()) {
-                $response->setStatusCode(200);
-                $response->headers->set('Cache-Control', 'public, max-age=500');
-                $response->setContent('Hello World');
-            } elseif ('POST' == $request->getMethod()) {
-                $response->setStatusCode(303);
-                $response->headers->set('Location', '/');
-                $response->headers->remove('Cache-Control');
-                $response->setContent('');
-            }
-        });
-
-        // build initial request to enter into the cache
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        // make sure it is valid
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        // now POST to same URL
-        $this->request('POST', '/helloworld');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('/', $this->response->headers->get('Location'));
-        $this->assertTraceContains('invalidate');
-        $this->assertTraceContains('pass');
-        $this->assertEquals('', $this->response->getContent());
-
-        // now make sure it was actually invalidated
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceContains('store');
-    }
-
-    public function testServesFromCacheWhenHeadersMatch()
-    {
-        $count = 0;
-        $this->setNextResponse(200, ['Cache-Control' => 'max-age=10000'], '', function ($request, $response) use (&$count) {
-            $response->headers->set('Vary', 'Accept User-Agent Foo');
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->headers->set('X-Response-Count', ++$count);
-            $response->setContent($request->headers->get('USER_AGENT'));
-        });
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-    }
-
-    public function testStoresMultipleResponsesWhenHeadersDiffer()
-    {
-        $count = 0;
-        $this->setNextResponse(200, ['Cache-Control' => 'max-age=10000'], '', function ($request, $response) use (&$count) {
-            $response->headers->set('Vary', 'Accept User-Agent Foo');
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->headers->set('X-Response-Count', ++$count);
-            $response->setContent($request->headers->get('USER_AGENT'));
-        });
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertEquals(1, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/2.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Bob/2.0', $this->response->getContent());
-        $this->assertEquals(2, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertTraceContains('fresh');
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertEquals(1, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/2.0']);
-        $this->assertTraceContains('fresh');
-        $this->assertEquals('Bob/2.0', $this->response->getContent());
-        $this->assertEquals(2, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_USER_AGENT' => 'Bob/2.0']);
-        $this->assertTraceContains('miss');
-        $this->assertEquals('Bob/2.0', $this->response->getContent());
-        $this->assertEquals(3, $this->response->headers->get('X-Response-Count'));
-    }
-
-    public function testShouldCatchExceptions()
-    {
-        $this->catchExceptions();
-
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertExceptionsAreCaught();
-    }
-
-    public function testShouldCatchExceptionsWhenReloadingAndNoCacheRequest()
-    {
-        $this->catchExceptions();
-
-        $this->setNextResponse();
-        $this->cacheConfig['allow_reload'] = true;
-        $this->request('GET', '/', [], [], false, ['Pragma' => 'no-cache']);
-
-        $this->assertExceptionsAreCaught();
-    }
-
-    public function testShouldNotCatchExceptions()
-    {
-        $this->catchExceptions(false);
-
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertExceptionsAreNotCaught();
-    }
-
-    public function testEsiCacheSendsTheLowestTtl()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" /> <esi:include src="/bar" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => ['Cache-Control' => 's-maxage=200'],
-            ],
-            [
-                'status' => 200,
-                'body' => 'My name is Bobby.',
-                'headers' => ['Cache-Control' => 's-maxage=100'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertEquals('Hello World! My name is Bobby.', $this->response->getContent());
-
-        $this->assertEquals(100, $this->response->getTtl());
-    }
-
-    public function testEsiCacheSendsTheLowestTtlForHeadRequests()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => 'I am a long-lived master response, but I embed a short-lived resource: <esi:include src="/foo" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'I am a short-lived resource',
-                'headers' => ['Cache-Control' => 's-maxage=100'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-
-        $this->assertEmpty($this->response->getContent());
-        $this->assertEquals(100, $this->response->getTtl());
-    }
-
-    public function testEsiCacheForceValidation()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" /> <esi:include src="/bar" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => ['ETag' => 'foobar'],
-            ],
-            [
-                'status' => 200,
-                'body' => 'My name is Bobby.',
-                'headers' => ['Cache-Control' => 's-maxage=100'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertEquals('Hello World! My name is Bobby.', $this->response->getContent());
-        $this->assertNull($this->response->getTtl());
-        $this->assertTrue($this->response->mustRevalidate());
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('no-cache'));
-    }
-
-    public function testEsiCacheForceValidationForHeadRequests()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => 'I am the master response and use expiration caching, but I embed another resource: <esi:include src="/foo" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'I am the embedded resource and use validation caching',
-                'headers' => ['ETag' => 'foobar'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-
-        // The response has been assembled from expiration and validation based resources
-        // This can neither be cached nor revalidated, so it should be private/no cache
-        $this->assertEmpty($this->response->getContent());
-        $this->assertNull($this->response->getTtl());
-        $this->assertTrue($this->response->mustRevalidate());
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('no-cache'));
-    }
-
-    public function testEsiRecalculateContentLengthHeader()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" />',
-                'headers' => [
-                    'Content-Length' => 26,
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertEquals('Hello World!', $this->response->getContent());
-        $this->assertEquals(12, $this->response->headers->get('Content-Length'));
-    }
-
-    public function testEsiRecalculateContentLengthHeaderForHeadRequest()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" />',
-                'headers' => [
-                    'Content-Length' => 26,
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-
-        // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
-        // "The Content-Length entity-header field indicates the size of the entity-body,
-        // in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD
-        // method, the size of the entity-body that would have been sent had the request
-        // been a GET."
-        $this->assertEmpty($this->response->getContent());
-        $this->assertEquals(12, $this->response->headers->get('Content-Length'));
-    }
-
-    public function testClientIpIsAlwaysLocalhostForForwardedRequests()
-    {
-        $this->setNextResponse();
-        $this->request('GET', '/', ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $this->kernel->assert(function ($backendRequest) {
-            $this->assertSame('127.0.0.1', $backendRequest->server->get('REMOTE_ADDR'));
-        });
-    }
-
-    /**
-     * @dataProvider getTrustedProxyData
-     */
-    public function testHttpCacheIsSetAsATrustedProxy(array $existing)
-    {
-        Request::setTrustedProxies($existing, Request::HEADER_X_FORWARDED_ALL);
-
-        $this->setNextResponse();
-        $this->request('GET', '/', ['REMOTE_ADDR' => '10.0.0.1']);
-        $this->assertSame($existing, Request::getTrustedProxies());
-
-        $existing = array_unique(array_merge($existing, ['127.0.0.1']));
-        $this->kernel->assert(function ($backendRequest) use ($existing) {
-            $this->assertSame($existing, Request::getTrustedProxies());
-            $this->assertsame('10.0.0.1', $backendRequest->getClientIp());
-        });
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function getTrustedProxyData()
-    {
-        return [
-            [[]],
-            [['10.0.0.2']],
-            [['10.0.0.2', '127.0.0.1']],
-        ];
-    }
-
-    /**
-     * @dataProvider getForwardedData
-     */
-    public function testForwarderHeaderForForwardedRequests($forwarded, $expected)
-    {
-        $this->setNextResponse();
-        $server = ['REMOTE_ADDR' => '10.0.0.1'];
-        if (null !== $forwarded) {
-            Request::setTrustedProxies($server, -1);
-            $server['HTTP_FORWARDED'] = $forwarded;
-        }
-        $this->request('GET', '/', $server);
-
-        $this->kernel->assert(function ($backendRequest) use ($expected) {
-            $this->assertSame($expected, $backendRequest->headers->get('Forwarded'));
-        });
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function getForwardedData()
-    {
-        return [
-            [null, 'for="10.0.0.1";host="localhost";proto=http'],
-            ['for=10.0.0.2', 'for="10.0.0.2";host="localhost";proto=http, for="10.0.0.1"'],
-            ['for=10.0.0.2, for=10.0.0.3', 'for="10.0.0.2";host="localhost";proto=http, for="10.0.0.3", for="10.0.0.1"'],
-        ];
-    }
-
-    public function testEsiCacheRemoveValidationHeadersIfEmbeddedResponses()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/hey" />',
-                'headers' => [
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                    'ETag' => 'hey',
-                    'Last-Modified' => $time->format(DATE_RFC2822),
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hey!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertNull($this->response->getETag());
-        $this->assertNull($this->response->getLastModified());
-    }
-
-    public function testEsiCacheRemoveValidationHeadersIfEmbeddedResponsesAndHeadRequest()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/hey" />',
-                'headers' => [
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                    'ETag' => 'hey',
-                    'Last-Modified' => $time->format(DATE_RFC2822),
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hey!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-        $this->assertEmpty($this->response->getContent());
-        $this->assertNull($this->response->getETag());
-        $this->assertNull($this->response->getLastModified());
-    }
-
-    public function testDoesNotCacheOptionsRequest()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public, s-maxage=60'], 'get');
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public, s-maxage=60'], 'options');
-        $this->request('OPTIONS', '/');
-        $this->assertHttpKernelIsCalled();
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertSame('get', $this->response->getContent());
-    }
-
-    public function testUsesOriginalRequestForSurrogate()
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $store = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\StoreInterface')->getMock();
-
-        $kernel
-            ->expects($this->exactly(2))
-            ->method('handle')
-            ->willReturnCallback(function (Request $request) {
-                $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-
-                return new Response();
-            });
-
-        $cache = new HttpCache($kernel,
-            $store,
-            new Esi()
-        );
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-
-        // Main request
-        $cache->handle($request, HttpKernelInterface::MASTER_REQUEST);
-
-        // Main request was now modified by HttpCache
-        // The surrogate will ask for the request using $this->cache->getRequest()
-        // which MUST return the original request so the surrogate
-        // can actually behave like a reverse proxy like e.g. Varnish would.
-        $this->assertSame('10.0.0.1', $cache->getRequest()->getClientIp());
-        $this->assertSame('10.0.0.1', $cache->getRequest()->server->get('REMOTE_ADDR'));
-
-        // Surrogate request
-        $cache->handle($request, HttpKernelInterface::SUB_REQUEST);
-    }
-
-    public function testTraceHeaderNameCanBeChanged()
-    {
-        $this->cacheConfig['trace_header'] = 'X-My-Header';
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertTrue($this->response->headers->has('X-My-Header'));
-    }
-
-    public function testTraceLevelDefaultsToFullIfDebug()
-    {
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertTrue($this->response->headers->has('X-Symfony-Cache'));
-        $this->assertEquals('GET /: miss', $this->response->headers->get('X-Symfony-Cache'));
-    }
-
-    public function testTraceLevelDefaultsToNoneIfNotDebug()
-    {
-        $this->cacheConfig['debug'] = false;
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertFalse($this->response->headers->has('X-Symfony-Cache'));
-    }
-
-    public function testTraceLevelShort()
-    {
-        $this->cacheConfig['trace_level'] = 'short';
-
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertTrue($this->response->headers->has('X-Symfony-Cache'));
-        $this->assertEquals('miss', $this->response->headers->get('X-Symfony-Cache'));
-    }
-}
-
-class TestKernel implements HttpKernelInterface
-{
-    public $terminateCalled = false;
-
-    public function terminate(Request $request, Response $response)
-    {
-        $this->terminateCalled = true;
-    }
-
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTestCase.php b/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTestCase.php
deleted file mode 100644
index a73a327b53d0dc1020777a883f2a2e5e5e1b6d8c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTestCase.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\HttpCache\HttpCache;
-use Symfony\Component\HttpKernel\HttpCache\Store;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class HttpCacheTestCase extends TestCase
-{
-    protected $kernel;
-    protected $cache;
-    protected $caches;
-    protected $cacheConfig;
-    protected $request;
-    protected $response;
-    protected $responses;
-    protected $catch;
-    protected $esi;
-
-    /**
-     * @var Store
-     */
-    protected $store;
-
-    protected function setUp(): void
-    {
-        $this->kernel = null;
-
-        $this->cache = null;
-        $this->esi = null;
-        $this->caches = [];
-        $this->cacheConfig = [];
-
-        $this->request = null;
-        $this->response = null;
-        $this->responses = [];
-
-        $this->catch = false;
-
-        $this->clearDirectory(sys_get_temp_dir().'/http_cache');
-    }
-
-    protected function tearDown(): void
-    {
-        if ($this->cache) {
-            $this->cache->getStore()->cleanup();
-        }
-        $this->kernel = null;
-        $this->cache = null;
-        $this->caches = null;
-        $this->request = null;
-        $this->response = null;
-        $this->responses = null;
-        $this->cacheConfig = null;
-        $this->catch = null;
-        $this->esi = null;
-
-        $this->clearDirectory(sys_get_temp_dir().'/http_cache');
-    }
-
-    public function assertHttpKernelIsCalled()
-    {
-        $this->assertTrue($this->kernel->hasBeenCalled());
-    }
-
-    public function assertHttpKernelIsNotCalled()
-    {
-        $this->assertFalse($this->kernel->hasBeenCalled());
-    }
-
-    public function assertResponseOk()
-    {
-        $this->assertEquals(200, $this->response->getStatusCode());
-    }
-
-    public function assertTraceContains($trace)
-    {
-        $traces = $this->cache->getTraces();
-        $traces = current($traces);
-
-        $this->assertRegExp('/'.$trace.'/', implode(', ', $traces));
-    }
-
-    public function assertTraceNotContains($trace)
-    {
-        $traces = $this->cache->getTraces();
-        $traces = current($traces);
-
-        $this->assertNotRegExp('/'.$trace.'/', implode(', ', $traces));
-    }
-
-    public function assertExceptionsAreCaught()
-    {
-        $this->assertTrue($this->kernel->isCatchingExceptions());
-    }
-
-    public function assertExceptionsAreNotCaught()
-    {
-        $this->assertFalse($this->kernel->isCatchingExceptions());
-    }
-
-    public function request($method, $uri = '/', $server = [], $cookies = [], $esi = false, $headers = [])
-    {
-        if (null === $this->kernel) {
-            throw new \LogicException('You must call setNextResponse() before calling request().');
-        }
-
-        $this->kernel->reset();
-
-        $this->store = new Store(sys_get_temp_dir().'/http_cache');
-
-        if (!isset($this->cacheConfig['debug'])) {
-            $this->cacheConfig['debug'] = true;
-        }
-
-        $this->esi = $esi ? new Esi() : null;
-        $this->cache = new HttpCache($this->kernel, $this->store, $this->esi, $this->cacheConfig);
-        $this->request = Request::create($uri, $method, [], $cookies, [], $server);
-        $this->request->headers->add($headers);
-
-        $this->response = $this->cache->handle($this->request, HttpKernelInterface::MASTER_REQUEST, $this->catch);
-
-        $this->responses[] = $this->response;
-    }
-
-    public function getMetaStorageValues()
-    {
-        $values = [];
-        foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(sys_get_temp_dir().'/http_cache/md', \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-            $values[] = file_get_contents($file);
-        }
-
-        return $values;
-    }
-
-    // A basic response with 200 status code and a tiny body.
-    public function setNextResponse($statusCode = 200, array $headers = [], $body = 'Hello World', \Closure $customizer = null)
-    {
-        $this->kernel = new TestHttpKernel($body, $statusCode, $headers, $customizer);
-    }
-
-    public function setNextResponses($responses)
-    {
-        $this->kernel = new TestMultipleHttpKernel($responses);
-    }
-
-    public function catchExceptions($catch = true)
-    {
-        $this->catch = $catch;
-    }
-
-    public static function clearDirectory($directory)
-    {
-        if (!is_dir($directory)) {
-            return;
-        }
-
-        $fp = opendir($directory);
-        while (false !== $file = readdir($fp)) {
-            if (!\in_array($file, ['.', '..'])) {
-                if (is_link($directory.'/'.$file)) {
-                    unlink($directory.'/'.$file);
-                } elseif (is_dir($directory.'/'.$file)) {
-                    self::clearDirectory($directory.'/'.$file);
-                    rmdir($directory.'/'.$file);
-                } else {
-                    unlink($directory.'/'.$file);
-                }
-            }
-        }
-
-        closedir($fp);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/ResponseCacheStrategyTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/ResponseCacheStrategyTest.php
deleted file mode 100644
index 22cadf712952896b4c7a819ad855e3b3effef612..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/ResponseCacheStrategyTest.php
+++ /dev/null
@@ -1,469 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\ResponseCacheStrategy;
-
-class ResponseCacheStrategyTest extends TestCase
-{
-    public function testMinimumSharedMaxAgeWins()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $response1 = new Response();
-        $response1->setSharedMaxAge(60);
-        $cacheStrategy->add($response1);
-
-        $response2 = new Response();
-        $response2->setSharedMaxAge(3600);
-        $cacheStrategy->add($response2);
-
-        $response = new Response();
-        $response->setSharedMaxAge(86400);
-        $cacheStrategy->update($response);
-
-        $this->assertSame('60', $response->headers->getCacheControlDirective('s-maxage'));
-    }
-
-    public function testSharedMaxAgeNotSetIfNotSetInAnyEmbeddedRequest()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $response1 = new Response();
-        $response1->setSharedMaxAge(60);
-        $cacheStrategy->add($response1);
-
-        $response2 = new Response();
-        $cacheStrategy->add($response2);
-
-        $response = new Response();
-        $response->setSharedMaxAge(86400);
-        $cacheStrategy->update($response);
-
-        $this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
-    }
-
-    public function testSharedMaxAgeNotSetIfNotSetInMasterRequest()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $response1 = new Response();
-        $response1->setSharedMaxAge(60);
-        $cacheStrategy->add($response1);
-
-        $response2 = new Response();
-        $response2->setSharedMaxAge(3600);
-        $cacheStrategy->add($response2);
-
-        $response = new Response();
-        $cacheStrategy->update($response);
-
-        $this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
-    }
-
-    public function testMasterResponseNotCacheableWhenEmbeddedResponseRequiresValidation()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setLastModified(new \DateTime());
-        $cacheStrategy->add($embeddedResponse);
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertFalse($masterResponse->isFresh());
-    }
-
-    public function testValidationOnMasterResponseIsNotPossibleWhenItContainsEmbeddedResponses()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        // This master response uses the "validation" model
-        $masterResponse = new Response();
-        $masterResponse->setLastModified(new \DateTime());
-        $masterResponse->setEtag('foo');
-
-        // Embedded response uses "expiry" model
-        $embeddedResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $cacheStrategy->add($embeddedResponse);
-
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertFalse($masterResponse->isValidateable());
-        $this->assertFalse($masterResponse->headers->has('Last-Modified'));
-        $this->assertFalse($masterResponse->headers->has('ETag'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
-    }
-
-    public function testMasterResponseWithValidationIsUnchangedWhenThereIsNoEmbeddedResponse()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setLastModified(new \DateTime());
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->isValidateable());
-    }
-
-    public function testMasterResponseWithExpirationIsUnchangedWhenThereIsNoEmbeddedResponse()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->isFresh());
-    }
-
-    public function testMasterResponseIsNotCacheableWhenEmbeddedResponseIsNotCacheable()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600); // Public, cacheable
-
-        /* This response has no validation or expiration information.
-           That makes it uncacheable, it is always stale.
-           (It does *not* make this private, though.) */
-        $embeddedResponse = new Response();
-        $this->assertFalse($embeddedResponse->isFresh()); // not fresh, as no lifetime is provided
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertFalse($masterResponse->isFresh());
-    }
-
-    public function testEmbeddingPrivateResponseMakesMainResponsePrivate()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600); // public, cacheable
-
-        // The embedded response might for example contain per-user data that remains valid for 60 seconds
-        $embeddedResponse = new Response();
-        $embeddedResponse->setPrivate();
-        $embeddedResponse->setMaxAge(60); // this would implicitly set "private" as well, but let's be explicit
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($masterResponse->headers->hasCacheControlDirective('public'));
-    }
-
-    public function testEmbeddingPublicResponseDoesNotMakeMainResponsePublic()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setPrivate(); // this is the default, but let's be explicit
-        $masterResponse->setMaxAge(100);
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setPublic();
-        $embeddedResponse->setSharedMaxAge(100);
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($masterResponse->headers->hasCacheControlDirective('public'));
-    }
-
-    public function testResponseIsExiprableWhenEmbeddedResponseCombinesExpiryAndValidation()
-    {
-        /* When "expiration wins over validation" (https://symfony.com/doc/current/http_cache/validation.html)
-         * and both the main and embedded response provide s-maxage, then the more restricting value of both
-         * should be fine, regardless of whether the embedded response can be validated later on or must be
-         * completely regenerated.
-         */
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setSharedMaxAge(60);
-        $embeddedResponse->setEtag('foo');
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertSame('60', $masterResponse->headers->getCacheControlDirective('s-maxage'));
-    }
-
-    public function testResponseIsExpirableButNotValidateableWhenMasterResponseCombinesExpirationAndValidation()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $masterResponse->setEtag('foo');
-        $masterResponse->setLastModified(new \DateTime());
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setSharedMaxAge(60);
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertSame('60', $masterResponse->headers->getCacheControlDirective('s-maxage'));
-        $this->assertFalse($masterResponse->isValidateable());
-    }
-
-    /**
-     * @dataProvider cacheControlMergingProvider
-     */
-    public function testCacheControlMerging(array $expects, array $master, array $surrogates)
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-        $buildResponse = function ($config) {
-            $response = new Response();
-
-            foreach ($config as $key => $value) {
-                switch ($key) {
-                    case 'age':
-                        $response->headers->set('Age', $value);
-                        break;
-
-                    case 'expires':
-                        $expires = clone $response->getDate();
-                        $expires->modify('+'.$value.' seconds');
-                        $response->setExpires($expires);
-                        break;
-
-                    case 'max-age':
-                        $response->setMaxAge($value);
-                        break;
-
-                    case 's-maxage':
-                        $response->setSharedMaxAge($value);
-                        break;
-
-                    case 'private':
-                        $response->setPrivate();
-                        break;
-
-                    case 'public':
-                        $response->setPublic();
-                        break;
-
-                    default:
-                        $response->headers->addCacheControlDirective($key, $value);
-                }
-            }
-
-            return $response;
-        };
-
-        foreach ($surrogates as $config) {
-            $cacheStrategy->add($buildResponse($config));
-        }
-
-        $response = $buildResponse($master);
-        $cacheStrategy->update($response);
-
-        foreach ($expects as $key => $value) {
-            if ('expires' === $key) {
-                $this->assertSame($value, $response->getExpires()->format('U') - $response->getDate()->format('U'));
-            } elseif ('age' === $key) {
-                $this->assertSame($value, $response->getAge());
-            } elseif (true === $value) {
-                $this->assertTrue($response->headers->hasCacheControlDirective($key), sprintf('Cache-Control header must have "%s" flag', $key));
-            } elseif (false === $value) {
-                $this->assertFalse(
-                    $response->headers->hasCacheControlDirective($key),
-                    sprintf('Cache-Control header must NOT have "%s" flag', $key)
-                );
-            } else {
-                $this->assertSame($value, $response->headers->getCacheControlDirective($key), sprintf('Cache-Control flag "%s" should be "%s"', $key, $value));
-            }
-        }
-    }
-
-    public function cacheControlMergingProvider()
-    {
-        yield 'result is public if all responses are public' => [
-            ['private' => false, 'public' => true],
-            ['public' => true],
-            [
-                ['public' => true],
-            ],
-        ];
-
-        yield 'result is private by default' => [
-            ['private' => true, 'public' => false],
-            ['public' => true],
-            [
-                [],
-            ],
-        ];
-
-        yield 'combines public and private responses' => [
-            ['must-revalidate' => false, 'private' => true, 'public' => false],
-            ['public' => true],
-            [
-                ['private' => true],
-            ],
-        ];
-
-        yield 'inherits no-cache from surrogates' => [
-            ['no-cache' => true, 'public' => false],
-            ['public' => true],
-            [
-                ['no-cache' => true],
-            ],
-        ];
-
-        yield 'inherits no-store from surrogate' => [
-            ['no-store' => true, 'public' => false],
-            ['public' => true],
-            [
-                ['no-store' => true],
-            ],
-        ];
-
-        yield 'resolve to lowest possible max-age' => [
-            ['public' => false, 'private' => true, 's-maxage' => false, 'max-age' => '60'],
-            ['public' => true, 'max-age' => 3600],
-            [
-                ['private' => true, 'max-age' => 60],
-            ],
-        ];
-
-        yield 'resolves multiple max-age' => [
-            ['public' => false, 'private' => true, 's-maxage' => false, 'max-age' => '60'],
-            ['private' => true, 'max-age' => 100],
-            [
-                ['private' => true, 'max-age' => 3600],
-                ['public' => true, 'max-age' => 60, 's-maxage' => 60],
-                ['private' => true, 'max-age' => 60],
-            ],
-        ];
-
-        yield 'merge max-age and s-maxage' => [
-            ['public' => true, 's-maxage' => '60', 'max-age' => null],
-            ['public' => true, 's-maxage' => 3600],
-            [
-                ['public' => true, 'max-age' => 60],
-            ],
-        ];
-
-        yield 'result is private when combining private responses' => [
-            ['no-cache' => false, 'must-revalidate' => false, 'private' => true],
-            ['s-maxage' => 60, 'private' => true],
-            [
-                ['s-maxage' => 60, 'private' => true],
-            ],
-        ];
-
-        yield 'result can have s-maxage and max-age' => [
-            ['public' => true, 'private' => false, 's-maxage' => '60', 'max-age' => '30'],
-            ['s-maxage' => 100, 'max-age' => 2000],
-            [
-                ['s-maxage' => 1000, 'max-age' => 30],
-                ['s-maxage' => 500, 'max-age' => 500],
-                ['s-maxage' => 60, 'max-age' => 1000],
-            ],
-        ];
-
-        yield 'does not set headers without value' => [
-            ['max-age' => null, 's-maxage' => null, 'public' => null],
-            ['private' => true],
-            [
-                ['private' => true],
-            ],
-        ];
-
-        yield 'max-age 0 is sent to the client' => [
-            ['private' => true, 'max-age' => '0'],
-            ['max-age' => 0, 'private' => true],
-            [
-                ['max-age' => 60, 'private' => true],
-            ],
-        ];
-
-        yield 'max-age is relative to age' => [
-            ['max-age' => '240', 'age' => 60],
-            ['max-age' => 180],
-            [
-                ['max-age' => 600, 'age' => 60],
-            ],
-        ];
-
-        yield 'retains lowest age of all responses' => [
-            ['max-age' => '160', 'age' => 60],
-            ['max-age' => 600, 'age' => 60],
-            [
-                ['max-age' => 120, 'age' => 20],
-            ],
-        ];
-
-        yield 'max-age can be less than age, essentially expiring the response' => [
-            ['age' => 120, 'max-age' => '90'],
-            ['max-age' => 90, 'age' => 120],
-            [
-                ['max-age' => 120, 'age' => 60],
-            ],
-        ];
-
-        yield 'max-age is 0 regardless of age' => [
-            ['max-age' => '0'],
-            ['max-age' => 60],
-            [
-                ['max-age' => 0, 'age' => 60],
-            ],
-        ];
-
-        yield 'max-age is not negative' => [
-            ['max-age' => '0'],
-            ['max-age' => 0],
-            [
-                ['max-age' => 0, 'age' => 60],
-            ],
-        ];
-
-        yield 'calculates lowest Expires header' => [
-            ['expires' => 60],
-            ['expires' => 60],
-            [
-                ['expires' => 120],
-            ],
-        ];
-
-        yield 'calculates Expires header relative to age' => [
-            ['expires' => 210, 'age' => 120],
-            ['expires' => 90],
-            [
-                ['expires' => 600, 'age' => '120'],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/SsiTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/SsiTest.php
deleted file mode 100644
index 3d68052cdcc105ac067bc9baaf1cca720ce2fa64..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/SsiTest.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Ssi;
-
-class SsiTest extends TestCase
-{
-    public function testHasSurrogateSsiCapability()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="SSI/1.0"');
-        $this->assertTrue($ssi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'foobar');
-        $this->assertFalse($ssi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $this->assertFalse($ssi->hasSurrogateCapability($request));
-    }
-
-    public function testAddSurrogateSsiCapability()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $ssi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="SSI/1.0"', $request->headers->get('Surrogate-Capability'));
-
-        $ssi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="SSI/1.0", symfony="SSI/1.0"', $request->headers->get('Surrogate-Capability'));
-    }
-
-    public function testAddSurrogateControl()
-    {
-        $ssi = new Ssi();
-
-        $response = new Response('foo <!--#include virtual="" -->');
-        $ssi->addSurrogateControl($response);
-        $this->assertEquals('content="SSI/1.0"', $response->headers->get('Surrogate-Control'));
-
-        $response = new Response('foo');
-        $ssi->addSurrogateControl($response);
-        $this->assertEquals('', $response->headers->get('Surrogate-Control'));
-    }
-
-    public function testNeedsSsiParsing()
-    {
-        $ssi = new Ssi();
-
-        $response = new Response();
-        $response->headers->set('Surrogate-Control', 'content="SSI/1.0"');
-        $this->assertTrue($ssi->needsParsing($response));
-
-        $response = new Response();
-        $this->assertFalse($ssi->needsParsing($response));
-    }
-
-    public function testRenderIncludeTag()
-    {
-        $ssi = new Ssi();
-
-        $this->assertEquals('<!--#include virtual="/" -->', $ssi->renderIncludeTag('/', '/alt', true));
-        $this->assertEquals('<!--#include virtual="/" -->', $ssi->renderIncludeTag('/', '/alt', false));
-        $this->assertEquals('<!--#include virtual="/" -->', $ssi->renderIncludeTag('/'));
-    }
-
-    public function testProcessDoesNothingIfContentTypeIsNotHtml()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/plain');
-        $ssi->process($request, $response);
-
-        $this->assertFalse($response->headers->has('x-body-eval'));
-    }
-
-    public function testProcess()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <!--#include virtual="..." -->');
-        $ssi->process($request, $response);
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'\', false) ?>'."\n", $response->getContent());
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-
-        $response = new Response('foo <!--#include virtual="foo\'" -->');
-        $ssi->process($request, $response);
-
-        $this->assertEquals("foo <?php echo \$this->surrogate->handle(\$this, 'foo\\'', '', false) ?>"."\n", $response->getContent());
-    }
-
-    public function testProcessEscapesPhpTags()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('<?php <? <% <script language=php>');
-        $ssi->process($request, $response);
-
-        $this->assertEquals('<?php echo "<?"; ?>php <?php echo "<?"; ?> <?php echo "<%"; ?> <?php echo "<s"; ?>cript language=php>', $response->getContent());
-    }
-
-    public function testProcessWhenNoSrcInAnSsi()
-    {
-        $this->expectException('RuntimeException');
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <!--#include -->');
-        $ssi->process($request, $response);
-    }
-
-    public function testProcessRemoveSurrogateControlHeader()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <!--#include virtual="..." -->');
-        $response->headers->set('Surrogate-Control', 'content="SSI/1.0"');
-        $ssi->process($request, $response);
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-
-        $response->headers->set('Surrogate-Control', 'no-store, content="SSI/1.0"');
-        $ssi->process($request, $response);
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-
-        $response->headers->set('Surrogate-Control', 'content="SSI/1.0", no-store');
-        $ssi->process($request, $response);
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-    }
-
-    public function testHandle()
-    {
-        $ssi = new Ssi();
-        $cache = $this->getCache(Request::create('/'), new Response('foo'));
-        $this->assertEquals('foo', $ssi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200()
-    {
-        $this->expectException('RuntimeException');
-        $ssi = new Ssi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $ssi->handle($cache, '/', '/alt', false);
-    }
-
-    public function testHandleWhenResponseIsNot200AndErrorsAreIgnored()
-    {
-        $ssi = new Ssi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $this->assertEquals('', $ssi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200AndAltIsPresent()
-    {
-        $ssi = new Ssi();
-        $response1 = new Response('foo');
-        $response1->setStatusCode(404);
-        $response2 = new Response('bar');
-        $cache = $this->getCache(Request::create('/'), [$response1, $response2]);
-        $this->assertEquals('bar', $ssi->handle($cache, '/', '/alt', false));
-    }
-
-    protected function getCache($request, $response)
-    {
-        $cache = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\HttpCache')->setMethods(['getRequest', 'handle'])->disableOriginalConstructor()->getMock();
-        $cache->expects($this->any())
-              ->method('getRequest')
-              ->willReturn($request)
-        ;
-        if (\is_array($response)) {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->will($this->onConsecutiveCalls(...$response))
-            ;
-        } else {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->willReturn($response)
-            ;
-        }
-
-        return $cache;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/StoreTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/StoreTest.php
deleted file mode 100644
index 2887c14f5d574cbed82df45e060d114bc5b11cd8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/StoreTest.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Store;
-
-class StoreTest extends TestCase
-{
-    protected $request;
-    protected $response;
-
-    /**
-     * @var Store
-     */
-    protected $store;
-
-    protected function setUp(): void
-    {
-        $this->request = Request::create('/');
-        $this->response = new Response('hello world', 200, []);
-
-        HttpCacheTestCase::clearDirectory(sys_get_temp_dir().'/http_cache');
-
-        $this->store = new Store(sys_get_temp_dir().'/http_cache');
-    }
-
-    protected function tearDown(): void
-    {
-        $this->store = null;
-        $this->request = null;
-        $this->response = null;
-
-        HttpCacheTestCase::clearDirectory(sys_get_temp_dir().'/http_cache');
-    }
-
-    public function testReadsAnEmptyArrayWithReadWhenNothingCachedAtKey()
-    {
-        $this->assertEmpty($this->getStoreMetadata('/nothing'));
-    }
-
-    public function testUnlockFileThatDoesExist()
-    {
-        $cacheKey = $this->storeSimpleEntry();
-        $this->store->lock($this->request);
-
-        $this->assertTrue($this->store->unlock($this->request));
-    }
-
-    public function testUnlockFileThatDoesNotExist()
-    {
-        $this->assertFalse($this->store->unlock($this->request));
-    }
-
-    public function testRemovesEntriesForKeyWithPurge()
-    {
-        $request = Request::create('/foo');
-        $this->store->write($request, new Response('foo'));
-
-        $metadata = $this->getStoreMetadata($request);
-        $this->assertNotEmpty($metadata);
-
-        $this->assertTrue($this->store->purge('/foo'));
-        $this->assertEmpty($this->getStoreMetadata($request));
-
-        // cached content should be kept after purging
-        $path = $this->store->getPath($metadata[0][1]['x-content-digest'][0]);
-        $this->assertTrue(is_file($path));
-
-        $this->assertFalse($this->store->purge('/bar'));
-    }
-
-    public function testStoresACacheEntry()
-    {
-        $cacheKey = $this->storeSimpleEntry();
-
-        $this->assertNotEmpty($this->getStoreMetadata($cacheKey));
-    }
-
-    public function testSetsTheXContentDigestResponseHeaderBeforeStoring()
-    {
-        $cacheKey = $this->storeSimpleEntry();
-        $entries = $this->getStoreMetadata($cacheKey);
-        list($req, $res) = $entries[0];
-
-        $this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $res['x-content-digest'][0]);
-    }
-
-    public function testFindsAStoredEntryWithLookup()
-    {
-        $this->storeSimpleEntry();
-        $response = $this->store->lookup($this->request);
-
-        $this->assertNotNull($response);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
-    }
-
-    public function testDoesNotFindAnEntryWithLookupWhenNoneExists()
-    {
-        $request = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-
-        $this->assertNull($this->store->lookup($request));
-    }
-
-    public function testCanonizesUrlsForCacheKeys()
-    {
-        $this->storeSimpleEntry($path = '/test?x=y&p=q');
-        $hitsReq = Request::create($path);
-        $missReq = Request::create('/test?p=x');
-
-        $this->assertNotNull($this->store->lookup($hitsReq));
-        $this->assertNull($this->store->lookup($missReq));
-    }
-
-    public function testDoesNotFindAnEntryWithLookupWhenTheBodyDoesNotExist()
-    {
-        $this->storeSimpleEntry();
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $path = $this->getStorePath($this->response->headers->get('X-Content-Digest'));
-        @unlink($path);
-        $this->assertNull($this->store->lookup($this->request));
-    }
-
-    public function testRestoresResponseHeadersProperlyWithLookup()
-    {
-        $this->storeSimpleEntry();
-        $response = $this->store->lookup($this->request);
-
-        $this->assertEquals($response->headers->all(), array_merge(['content-length' => 4, 'x-body-file' => [$this->getStorePath($response->headers->get('X-Content-Digest'))]], $this->response->headers->all()));
-    }
-
-    public function testRestoresResponseContentFromEntityStoreWithLookup()
-    {
-        $this->storeSimpleEntry();
-        $response = $this->store->lookup($this->request);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test')), $response->getContent());
-    }
-
-    public function testInvalidatesMetaAndEntityStoreEntriesWithInvalidate()
-    {
-        $this->storeSimpleEntry();
-        $this->store->invalidate($this->request);
-        $response = $this->store->lookup($this->request);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
-        $this->assertFalse($response->isFresh());
-    }
-
-    public function testSucceedsQuietlyWhenInvalidateCalledWithNoMatchingEntries()
-    {
-        $req = Request::create('/test');
-        $this->store->invalidate($req);
-        $this->assertNull($this->store->lookup($this->request));
-    }
-
-    public function testDoesNotReturnEntriesThatVaryWithLookup()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam']);
-        $res = new Response('test', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req1, $res);
-
-        $this->assertNull($this->store->lookup($req2));
-    }
-
-    public function testDoesNotReturnEntriesThatSlightlyVaryWithLookup()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bam']);
-        $res = new Response('test', 200, ['Vary' => ['Foo', 'Bar']]);
-        $this->store->write($req1, $res);
-
-        $this->assertNull($this->store->lookup($req2));
-    }
-
-    public function testStoresMultipleResponsesForEachVaryCombination()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $res1 = new Response('test 1', 200, ['Vary' => 'Foo Bar']);
-        $key = $this->store->write($req1, $res1);
-
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam']);
-        $res2 = new Response('test 2', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req2, $res2);
-
-        $req3 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Baz', 'HTTP_BAR' => 'Boom']);
-        $res3 = new Response('test 3', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req3, $res3);
-
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 3')), $this->store->lookup($req3)->getContent());
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 2')), $this->store->lookup($req2)->getContent());
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 1')), $this->store->lookup($req1)->getContent());
-
-        $this->assertCount(3, $this->getStoreMetadata($key));
-    }
-
-    public function testOverwritesNonVaryingResponseWithStore()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $res1 = new Response('test 1', 200, ['Vary' => 'Foo Bar']);
-        $key = $this->store->write($req1, $res1);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 1')), $this->store->lookup($req1)->getContent());
-
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam']);
-        $res2 = new Response('test 2', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req2, $res2);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 2')), $this->store->lookup($req2)->getContent());
-
-        $req3 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $res3 = new Response('test 3', 200, ['Vary' => 'Foo Bar']);
-        $key = $this->store->write($req3, $res3);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 3')), $this->store->lookup($req3)->getContent());
-
-        $this->assertCount(2, $this->getStoreMetadata($key));
-    }
-
-    public function testLocking()
-    {
-        $req = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $this->assertTrue($this->store->lock($req));
-
-        $path = $this->store->lock($req);
-        $this->assertTrue($this->store->isLocked($req));
-
-        $this->store->unlock($req);
-        $this->assertFalse($this->store->isLocked($req));
-    }
-
-    public function testPurgeHttps()
-    {
-        $request = Request::create('https://example.com/foo');
-        $this->store->write($request, new Response('foo'));
-
-        $this->assertNotEmpty($this->getStoreMetadata($request));
-
-        $this->assertTrue($this->store->purge('https://example.com/foo'));
-        $this->assertEmpty($this->getStoreMetadata($request));
-    }
-
-    public function testPurgeHttpAndHttps()
-    {
-        $requestHttp = Request::create('https://example.com/foo');
-        $this->store->write($requestHttp, new Response('foo'));
-
-        $requestHttps = Request::create('http://example.com/foo');
-        $this->store->write($requestHttps, new Response('foo'));
-
-        $this->assertNotEmpty($this->getStoreMetadata($requestHttp));
-        $this->assertNotEmpty($this->getStoreMetadata($requestHttps));
-
-        $this->assertTrue($this->store->purge('http://example.com/foo'));
-        $this->assertEmpty($this->getStoreMetadata($requestHttp));
-        $this->assertEmpty($this->getStoreMetadata($requestHttps));
-    }
-
-    protected function storeSimpleEntry($path = null, $headers = [])
-    {
-        if (null === $path) {
-            $path = '/test';
-        }
-
-        $this->request = Request::create($path, 'get', [], [], [], $headers);
-        $this->response = new Response('test', 200, ['Cache-Control' => 'max-age=420']);
-
-        return $this->store->write($this->request, $this->response);
-    }
-
-    protected function getStoreMetadata($key)
-    {
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('getMetadata');
-        $m->setAccessible(true);
-
-        if ($key instanceof Request) {
-            $m1 = $r->getMethod('getCacheKey');
-            $m1->setAccessible(true);
-            $key = $m1->invoke($this->store, $key);
-        }
-
-        return $m->invoke($this->store, $key);
-    }
-
-    protected function getStorePath($key)
-    {
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('getPath');
-        $m->setAccessible(true);
-
-        return $m->invoke($this->store, $key);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/SubRequestHandlerTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/SubRequestHandlerTest.php
deleted file mode 100644
index 61e6beded5803f39f9833685088a893f41c93c5a..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/SubRequestHandlerTest.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\SubRequestHandler;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class SubRequestHandlerTest extends TestCase
-{
-    private static $globalState;
-
-    protected function setUp(): void
-    {
-        self::$globalState = $this->getGlobalState();
-    }
-
-    protected function tearDown(): void
-    {
-        Request::setTrustedProxies(self::$globalState[0], self::$globalState[1]);
-    }
-
-    public function testTrustedHeadersAreKept()
-    {
-        Request::setTrustedProxies(['10.0.0.1'], -1);
-        $globalState = $this->getGlobalState();
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('X-Forwarded-For', '10.0.0.2');
-        $request->headers->set('X-Forwarded-Host', 'Good');
-        $request->headers->set('X-Forwarded-Port', '1234');
-        $request->headers->set('X-Forwarded-Proto', 'https');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.2', $request->getClientIp());
-            $this->assertSame('Good', $request->headers->get('X-Forwarded-Host'));
-            $this->assertSame('1234', $request->headers->get('X-Forwarded-Port'));
-            $this->assertSame('https', $request->headers->get('X-Forwarded-Proto'));
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame($globalState, $this->getGlobalState());
-    }
-
-    public function testUntrustedHeadersAreRemoved()
-    {
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('X-Forwarded-For', '10.0.0.2');
-        $request->headers->set('X-Forwarded-Host', 'Evil');
-        $request->headers->set('X-Forwarded-Port', '1234');
-        $request->headers->set('X-Forwarded-Proto', 'http');
-        $request->headers->set('Forwarded', 'Evil2');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.1', $request->getClientIp());
-            $this->assertFalse($request->headers->has('X-Forwarded-Host'));
-            $this->assertFalse($request->headers->has('X-Forwarded-Port'));
-            $this->assertFalse($request->headers->has('X-Forwarded-Proto'));
-            $this->assertSame('for="10.0.0.1";host="localhost";proto=http', $request->headers->get('Forwarded'));
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame(self::$globalState, $this->getGlobalState());
-    }
-
-    public function testTrustedForwardedHeader()
-    {
-        Request::setTrustedProxies(['10.0.0.1'], -1);
-        $globalState = $this->getGlobalState();
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('Forwarded', 'for="10.0.0.2";host="foo.bar:1234";proto=https');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.2', $request->getClientIp());
-            $this->assertSame('foo.bar:1234', $request->getHttpHost());
-            $this->assertSame('https', $request->getScheme());
-            $this->assertSame(1234, $request->getPort());
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame($globalState, $this->getGlobalState());
-    }
-
-    public function testTrustedXForwardedForHeader()
-    {
-        Request::setTrustedProxies(['10.0.0.1'], -1);
-        $globalState = $this->getGlobalState();
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('X-Forwarded-For', '10.0.0.2');
-        $request->headers->set('X-Forwarded-Host', 'foo.bar');
-        $request->headers->set('X-Forwarded-Proto', 'https');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.2', $request->getClientIp());
-            $this->assertSame('foo.bar', $request->getHttpHost());
-            $this->assertSame('https', $request->getScheme());
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame($globalState, $this->getGlobalState());
-    }
-
-    private function getGlobalState()
-    {
-        return [
-            Request::getTrustedProxies(),
-            Request::getTrustedHeaderSet(),
-        ];
-    }
-}
-
-class TestSubRequestHandlerKernel implements HttpKernelInterface
-{
-    private $assertCallback;
-
-    public function __construct(\Closure $assertCallback)
-    {
-        $this->assertCallback = $assertCallback;
-    }
-
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-        $assertCallback = $this->assertCallback;
-        $assertCallback($request, $type, $catch);
-
-        return new Response();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php b/vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php
deleted file mode 100644
index 304ff9d9e43e716cdcfe5865a16ef96b21b5c477..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class TestHttpKernel extends HttpKernel implements ControllerResolverInterface, ArgumentResolverInterface
-{
-    protected $body;
-    protected $status;
-    protected $headers;
-    protected $called = false;
-    protected $customizer;
-    protected $catch = false;
-    protected $backendRequest;
-
-    public function __construct($body, $status, $headers, \Closure $customizer = null)
-    {
-        $this->body = $body;
-        $this->status = $status;
-        $this->headers = $headers;
-        $this->customizer = $customizer;
-
-        parent::__construct(new EventDispatcher(), $this, null, $this);
-    }
-
-    public function assert(\Closure $callback)
-    {
-        $trustedConfig = [Request::getTrustedProxies(), Request::getTrustedHeaderSet()];
-
-        list($trustedProxies, $trustedHeaderSet, $backendRequest) = $this->backendRequest;
-        Request::setTrustedProxies($trustedProxies, $trustedHeaderSet);
-
-        try {
-            $callback($backendRequest);
-        } finally {
-            list($trustedProxies, $trustedHeaderSet) = $trustedConfig;
-            Request::setTrustedProxies($trustedProxies, $trustedHeaderSet);
-        }
-    }
-
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false)
-    {
-        $this->catch = $catch;
-        $this->backendRequest = [Request::getTrustedProxies(), Request::getTrustedHeaderSet(), $request];
-
-        return parent::handle($request, $type, $catch);
-    }
-
-    public function isCatchingExceptions()
-    {
-        return $this->catch;
-    }
-
-    public function getController(Request $request)
-    {
-        return [$this, 'callController'];
-    }
-
-    public function getArguments(Request $request, $controller)
-    {
-        return [$request];
-    }
-
-    public function callController(Request $request)
-    {
-        $this->called = true;
-
-        $response = new Response($this->body, $this->status, $this->headers);
-
-        if (null !== $customizer = $this->customizer) {
-            $customizer($request, $response);
-        }
-
-        return $response;
-    }
-
-    public function hasBeenCalled()
-    {
-        return $this->called;
-    }
-
-    public function reset()
-    {
-        $this->called = false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php b/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php
deleted file mode 100644
index 010bee86895a76623d0c08c701402e73409bddd8..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class TestMultipleHttpKernel extends HttpKernel implements ControllerResolverInterface, ArgumentResolverInterface
-{
-    protected $bodies = [];
-    protected $statuses = [];
-    protected $headers = [];
-    protected $called = false;
-    protected $backendRequest;
-
-    public function __construct($responses)
-    {
-        foreach ($responses as $response) {
-            $this->bodies[] = $response['body'];
-            $this->statuses[] = $response['status'];
-            $this->headers[] = $response['headers'];
-        }
-
-        parent::__construct(new EventDispatcher(), $this, null, $this);
-    }
-
-    public function getBackendRequest()
-    {
-        return $this->backendRequest;
-    }
-
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false)
-    {
-        $this->backendRequest = $request;
-
-        return parent::handle($request, $type, $catch);
-    }
-
-    public function getController(Request $request)
-    {
-        return [$this, 'callController'];
-    }
-
-    public function getArguments(Request $request, $controller)
-    {
-        return [$request];
-    }
-
-    public function callController(Request $request)
-    {
-        $this->called = true;
-
-        $response = new Response(array_shift($this->bodies), array_shift($this->statuses), array_shift($this->headers));
-
-        return $response;
-    }
-
-    public function hasBeenCalled()
-    {
-        return $this->called;
-    }
-
-    public function reset()
-    {
-        $this->called = false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpKernelBrowserTest.php b/vendor/symfony/http-kernel/Tests/HttpKernelBrowserTest.php
deleted file mode 100644
index fdcfc266675183488ad90410d123ad5fae85cafa..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpKernelBrowserTest.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpKernel\HttpKernelBrowser;
-use Symfony\Component\HttpKernel\Tests\Fixtures\TestClient;
-
-/**
- * @group time-sensitive
- */
-class HttpKernelBrowserTest extends TestCase
-{
-    public function testDoRequest()
-    {
-        $client = new HttpKernelBrowser(new TestHttpKernel());
-
-        $client->request('GET', '/');
-        $this->assertEquals('Request: /', $client->getResponse()->getContent(), '->doRequest() uses the request handler to make the request');
-        $this->assertInstanceOf('Symfony\Component\BrowserKit\Request', $client->getInternalRequest());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Request', $client->getRequest());
-        $this->assertInstanceOf('Symfony\Component\BrowserKit\Response', $client->getInternalResponse());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $client->getResponse());
-
-        $client->request('GET', 'http://www.example.com/');
-        $this->assertEquals('Request: /', $client->getResponse()->getContent(), '->doRequest() uses the request handler to make the request');
-        $this->assertEquals('www.example.com', $client->getRequest()->getHost(), '->doRequest() uses the request handler to make the request');
-
-        $client->request('GET', 'http://www.example.com/?parameter=http://example.com');
-        $this->assertEquals('http://www.example.com/?parameter='.urlencode('http://example.com'), $client->getRequest()->getUri(), '->doRequest() uses the request handler to make the request');
-    }
-
-    public function testGetScript()
-    {
-        $client = new TestClient(new TestHttpKernel());
-        $client->insulate();
-        $client->request('GET', '/');
-
-        $this->assertEquals('Request: /', $client->getResponse()->getContent(), '->getScript() returns a script that uses the request handler to make the request');
-    }
-
-    public function testFilterResponseConvertsCookies()
-    {
-        $client = new HttpKernelBrowser(new TestHttpKernel());
-
-        $r = new \ReflectionObject($client);
-        $m = $r->getMethod('filterResponse');
-        $m->setAccessible(true);
-
-        $response = new Response();
-        $response->headers->setCookie($cookie1 = new Cookie('foo', 'bar', \DateTime::createFromFormat('j-M-Y H:i:s T', '15-Feb-2009 20:00:00 GMT')->format('U'), '/foo', 'http://example.com', true, true, false, null));
-        $domResponse = $m->invoke($client, $response);
-        $this->assertSame((string) $cookie1, $domResponse->getHeader('Set-Cookie'));
-
-        $response = new Response();
-        $response->headers->setCookie($cookie1 = new Cookie('foo', 'bar', \DateTime::createFromFormat('j-M-Y H:i:s T', '15-Feb-2009 20:00:00 GMT')->format('U'), '/foo', 'http://example.com', true, true, false, null));
-        $response->headers->setCookie($cookie2 = new Cookie('foo1', 'bar1', \DateTime::createFromFormat('j-M-Y H:i:s T', '15-Feb-2009 20:00:00 GMT')->format('U'), '/foo', 'http://example.com', true, true, false, null));
-        $domResponse = $m->invoke($client, $response);
-        $this->assertSame((string) $cookie1, $domResponse->getHeader('Set-Cookie'));
-        $this->assertSame([(string) $cookie1, (string) $cookie2], $domResponse->getHeader('Set-Cookie', false));
-    }
-
-    public function testFilterResponseSupportsStreamedResponses()
-    {
-        $client = new HttpKernelBrowser(new TestHttpKernel());
-
-        $r = new \ReflectionObject($client);
-        $m = $r->getMethod('filterResponse');
-        $m->setAccessible(true);
-
-        $response = new StreamedResponse(function () {
-            echo 'foo';
-        });
-
-        $domResponse = $m->invoke($client, $response);
-        $this->assertEquals('foo', $domResponse->getContent());
-    }
-
-    public function testUploadedFile()
-    {
-        $source = tempnam(sys_get_temp_dir(), 'source');
-        file_put_contents($source, '1');
-        $target = sys_get_temp_dir().'/sf.moved.file';
-        @unlink($target);
-
-        $kernel = new TestHttpKernel();
-        $client = new HttpKernelBrowser($kernel);
-
-        $files = [
-            ['tmp_name' => $source, 'name' => 'original', 'type' => 'mime/original', 'size' => null, 'error' => UPLOAD_ERR_OK],
-            new UploadedFile($source, 'original', 'mime/original', UPLOAD_ERR_OK, true),
-        ];
-
-        $file = null;
-        foreach ($files as $file) {
-            $client->request('POST', '/', [], ['foo' => $file]);
-
-            $files = $client->getRequest()->files->all();
-
-            $this->assertCount(1, $files);
-
-            $file = $files['foo'];
-
-            $this->assertEquals('original', $file->getClientOriginalName());
-            $this->assertEquals('mime/original', $file->getClientMimeType());
-            $this->assertEquals(1, $file->getSize());
-        }
-
-        $file->move(\dirname($target), basename($target));
-
-        $this->assertFileExists($target);
-        unlink($target);
-    }
-
-    public function testUploadedFileWhenNoFileSelected()
-    {
-        $kernel = new TestHttpKernel();
-        $client = new HttpKernelBrowser($kernel);
-
-        $file = ['tmp_name' => '', 'name' => '', 'type' => '', 'size' => 0, 'error' => UPLOAD_ERR_NO_FILE];
-
-        $client->request('POST', '/', [], ['foo' => $file]);
-
-        $files = $client->getRequest()->files->all();
-
-        $this->assertCount(1, $files);
-        $this->assertNull($files['foo']);
-    }
-
-    public function testUploadedFileWhenSizeExceedsUploadMaxFileSize()
-    {
-        $source = tempnam(sys_get_temp_dir(), 'source');
-
-        $kernel = new TestHttpKernel();
-        $client = new HttpKernelBrowser($kernel);
-
-        $file = $this
-            ->getMockBuilder('Symfony\Component\HttpFoundation\File\UploadedFile')
-            ->setConstructorArgs([$source, 'original', 'mime/original', UPLOAD_ERR_OK, true])
-            ->setMethods(['getSize', 'getClientSize'])
-            ->getMock()
-        ;
-        /* should be modified when the getClientSize will be removed */
-        $file->expects($this->any())
-            ->method('getSize')
-            ->willReturn(INF)
-        ;
-        $file->expects($this->any())
-            ->method('getClientSize')
-            ->willReturn(PHP_INT_MAX)
-        ;
-
-        $client->request('POST', '/', [], [$file]);
-
-        $files = $client->getRequest()->files->all();
-
-        $this->assertCount(1, $files);
-
-        $file = $files[0];
-
-        $this->assertFalse($file->isValid());
-        $this->assertEquals(UPLOAD_ERR_INI_SIZE, $file->getError());
-        $this->assertEquals('mime/original', $file->getClientMimeType());
-        $this->assertEquals('original', $file->getClientOriginalName());
-        $this->assertEquals(0, $file->getSize());
-
-        unlink($source);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpKernelTest.php b/vendor/symfony/http-kernel/Tests/HttpKernelTest.php
deleted file mode 100644
index 9a6170c086d35b25eac7189b486d488e366bc4c0..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/HttpKernelTest.php
+++ /dev/null
@@ -1,385 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-use Symfony\Component\HttpKernel\Exception\ControllerDoesNotReturnResponseException;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class HttpKernelTest extends TestCase
-{
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrue()
-    {
-        $this->expectException('RuntimeException');
-        $kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
-
-        $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
-    }
-
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalseAndNoListenerIsRegistered()
-    {
-        $this->expectException('RuntimeException');
-        $kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
-
-        $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, false);
-    }
-
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithAHandlingListener()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            $event->setResponse(new Response($event->getException()->getMessage()));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new \RuntimeException('foo'); });
-        $response = $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertEquals('500', $response->getStatusCode());
-        $this->assertEquals('foo', $response->getContent());
-    }
-
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithANonHandlingListener()
-    {
-        $exception = new \RuntimeException();
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            // should set a response, but does not
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () use ($exception) { throw $exception; });
-
-        try {
-            $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
-            $this->fail('LogicException expected');
-        } catch (\RuntimeException $e) {
-            $this->assertSame($exception, $e);
-        }
-    }
-
-    public function testHandleExceptionWithARedirectionResponse()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            $event->setResponse(new RedirectResponse('/login', 301));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new AccessDeniedHttpException(); });
-        $response = $kernel->handle(new Request());
-
-        $this->assertEquals('301', $response->getStatusCode());
-        $this->assertEquals('/login', $response->headers->get('Location'));
-    }
-
-    public function testHandleHttpException()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            $event->setResponse(new Response($event->getException()->getMessage()));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new MethodNotAllowedHttpException(['POST']); });
-        $response = $kernel->handle(new Request());
-
-        $this->assertEquals('405', $response->getStatusCode());
-        $this->assertEquals('POST', $response->headers->get('Allow'));
-    }
-
-    public function getStatusCodes()
-    {
-        return [
-            [200, 404],
-            [404, 200],
-            [301, 200],
-            [500, 200],
-        ];
-    }
-
-    /**
-     * @dataProvider getSpecificStatusCodes
-     */
-    public function testHandleWhenAnExceptionIsHandledWithASpecificStatusCode($expectedStatusCode)
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) use ($expectedStatusCode) {
-            $event->allowCustomResponseCode();
-            $event->setResponse(new Response('', $expectedStatusCode));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new \RuntimeException(); });
-        $response = $kernel->handle(new Request());
-
-        $this->assertEquals($expectedStatusCode, $response->getStatusCode());
-    }
-
-    public function getSpecificStatusCodes()
-    {
-        return [
-            [200],
-            [302],
-            [403],
-        ];
-    }
-
-    public function testHandleWhenAListenerReturnsAResponse()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::REQUEST, function ($event) {
-            $event->setResponse(new Response('hello'));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher);
-
-        $this->assertEquals('hello', $kernel->handle(new Request())->getContent());
-    }
-
-    public function testHandleWhenNoControllerIsFound()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\NotFoundHttpException');
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, false);
-
-        $kernel->handle(new Request());
-    }
-
-    public function testHandleWhenTheControllerIsAClosure()
-    {
-        $response = new Response('foo');
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, function () use ($response) { return $response; });
-
-        $this->assertSame($response, $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAnObjectWithInvoke()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, new TestController());
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAFunction()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, 'Symfony\Component\HttpKernel\Tests\controller_func');
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAnArray()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, [new TestController(), 'controller']);
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAStaticArray()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, ['Symfony\Component\HttpKernel\Tests\TestController', 'staticcontroller']);
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerDoesNotReturnAResponse()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, function () {});
-
-        try {
-            $kernel->handle(new Request());
-
-            $this->fail('The kernel should throw an exception.');
-        } catch (ControllerDoesNotReturnResponseException $e) {
-            $first = $e->getTrace()[0];
-
-            // `file` index the array starting at 0, and __FILE__ starts at 1
-            $line = file($first['file'])[$first['line'] - 2];
-            $this->assertStringContainsString('// call controller', $line);
-        }
-    }
-
-    public function testHandleWhenTheControllerDoesNotReturnAResponseButAViewIsRegistered()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::VIEW, function ($event) {
-            $event->setResponse(new Response($event->getControllerResult()));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { return 'foo'; });
-
-        $this->assertEquals('foo', $kernel->handle(new Request())->getContent());
-    }
-
-    public function testHandleWithAResponseListener()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::RESPONSE, function ($event) {
-            $event->setResponse(new Response('foo'));
-        });
-        $kernel = $this->getHttpKernel($dispatcher);
-
-        $this->assertEquals('foo', $kernel->handle(new Request())->getContent());
-    }
-
-    public function testHandleAllowChangingControllerArguments()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::CONTROLLER_ARGUMENTS, function ($event) {
-            $event->setArguments(['foo']);
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function ($content) { return new Response($content); });
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleAllowChangingControllerAndArguments()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::CONTROLLER_ARGUMENTS, function ($event) {
-            $oldController = $event->getController();
-            $oldArguments = $event->getArguments();
-
-            $newController = function ($id) use ($oldController, $oldArguments) {
-                $response = $oldController(...$oldArguments);
-
-                $response->headers->set('X-Id', $id);
-
-                return $response;
-            };
-
-            $event->setController($newController);
-            $event->setArguments(['bar']);
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function ($content) { return new Response($content); }, null, ['foo']);
-
-        $this->assertResponseEquals(new Response('foo', 200, ['X-Id' => 'bar']), $kernel->handle(new Request()));
-    }
-
-    public function testTerminate()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher);
-        $dispatcher->addListener(KernelEvents::TERMINATE, function ($event) use (&$called, &$capturedKernel, &$capturedRequest, &$capturedResponse) {
-            $called = true;
-            $capturedKernel = $event->getKernel();
-            $capturedRequest = $event->getRequest();
-            $capturedResponse = $event->getResponse();
-        });
-
-        $kernel->terminate($request = Request::create('/'), $response = new Response());
-        $this->assertTrue($called);
-        $this->assertEquals($kernel, $capturedKernel);
-        $this->assertEquals($request, $capturedRequest);
-        $this->assertEquals($response, $capturedResponse);
-    }
-
-    public function testVerifyRequestStackPushPopDuringHandle()
-    {
-        $request = new Request();
-
-        $stack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->setMethods(['push', 'pop'])->getMock();
-        $stack->expects($this->at(0))->method('push')->with($this->equalTo($request));
-        $stack->expects($this->at(1))->method('pop');
-
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, null, $stack);
-
-        $kernel->handle($request, HttpKernelInterface::MASTER_REQUEST);
-    }
-
-    public function testInconsistentClientIpsOnMasterRequests()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\BadRequestHttpException');
-        $request = new Request();
-        $request->setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_FOR | Request::HEADER_FORWARDED);
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('FORWARDED', 'for=2.2.2.2');
-        $request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::REQUEST, function ($event) {
-            $event->getRequest()->getClientIp();
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher);
-        $kernel->handle($request, $kernel::MASTER_REQUEST, false);
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    private function getHttpKernel(EventDispatcherInterface $eventDispatcher, $controller = null, RequestStack $requestStack = null, array $arguments = [])
-    {
-        if (null === $controller) {
-            $controller = function () { return new Response('Hello'); };
-        }
-
-        $controllerResolver = $this->getMockBuilder(ControllerResolverInterface::class)->getMock();
-        $controllerResolver
-            ->expects($this->any())
-            ->method('getController')
-            ->willReturn($controller);
-
-        $argumentResolver = $this->getMockBuilder(ArgumentResolverInterface::class)->getMock();
-        $argumentResolver
-            ->expects($this->any())
-            ->method('getArguments')
-            ->willReturn($arguments);
-
-        return new HttpKernel($eventDispatcher, $controllerResolver, $requestStack, $argumentResolver);
-    }
-
-    private function assertResponseEquals(Response $expected, Response $actual)
-    {
-        $expected->setDate($actual->getDate());
-        $this->assertEquals($expected, $actual);
-    }
-}
-
-class TestController
-{
-    public function __invoke()
-    {
-        return new Response('foo');
-    }
-
-    public function controller()
-    {
-        return new Response('foo');
-    }
-
-    public static function staticController()
-    {
-        return new Response('foo');
-    }
-}
-
-function controller_func()
-{
-    return new Response('foo');
-}
diff --git a/vendor/symfony/http-kernel/Tests/KernelTest.php b/vendor/symfony/http-kernel/Tests/KernelTest.php
deleted file mode 100644
index 26bf7d8aff265ac92faa9e420f820e9ba731a15c..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/KernelTest.php
+++ /dev/null
@@ -1,748 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\Filesystem\Filesystem;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Bundle\BundleInterface;
-use Symfony\Component\HttpKernel\DependencyInjection\ResettableServicePass;
-use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpKernel\Tests\Fixtures\KernelForOverrideName;
-use Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest;
-use Symfony\Component\HttpKernel\Tests\Fixtures\KernelWithoutBundles;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ResettableService;
-
-class KernelTest extends TestCase
-{
-    public static function tearDownAfterClass(): void
-    {
-        $fs = new Filesystem();
-        $fs->remove(__DIR__.'/Fixtures/var');
-    }
-
-    public function testConstructor()
-    {
-        $env = 'test_env';
-        $debug = true;
-        $kernel = new KernelForTest($env, $debug);
-
-        $this->assertEquals($env, $kernel->getEnvironment());
-        $this->assertEquals($debug, $kernel->isDebug());
-        $this->assertFalse($kernel->isBooted());
-        $this->assertLessThanOrEqual(microtime(true), $kernel->getStartTime());
-        $this->assertNull($kernel->getContainer());
-    }
-
-    public function testClone()
-    {
-        $env = 'test_env';
-        $debug = true;
-        $kernel = new KernelForTest($env, $debug);
-
-        $clone = clone $kernel;
-
-        $this->assertEquals($env, $clone->getEnvironment());
-        $this->assertEquals($debug, $clone->isDebug());
-        $this->assertFalse($clone->isBooted());
-        $this->assertLessThanOrEqual(microtime(true), $clone->getStartTime());
-        $this->assertNull($clone->getContainer());
-    }
-
-    public function testClassNameValidityGetter()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The environment "test.env" contains invalid characters, it can only contain characters allowed in PHP class names.');
-        // We check the classname that will be generated by using a $env that
-        // contains invalid characters.
-        $env = 'test.env';
-        $kernel = new KernelForTest($env, false);
-
-        $kernel->boot();
-    }
-
-    public function testInitializeContainerClearsOldContainers()
-    {
-        $fs = new Filesystem();
-        $legacyContainerDir = __DIR__.'/Fixtures/var/cache/custom/ContainerA123456';
-        $fs->mkdir($legacyContainerDir);
-        touch($legacyContainerDir.'.legacy');
-
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $containerDir = __DIR__.'/Fixtures/var/cache/custom/'.substr(\get_class($kernel->getContainer()), 0, 16);
-        $this->assertTrue(unlink(__DIR__.'/Fixtures/var/cache/custom/TestsSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta'));
-        $this->assertFileExists($containerDir);
-        $this->assertFileNotExists($containerDir.'.legacy');
-
-        $kernel = new CustomProjectDirKernel(function ($container) { $container->register('foo', 'stdClass')->setPublic(true); });
-        $kernel->boot();
-
-        $this->assertFileExists($containerDir);
-        $this->assertFileExists($containerDir.'.legacy');
-
-        $this->assertFileNotExists($legacyContainerDir);
-        $this->assertFileNotExists($legacyContainerDir.'.legacy');
-    }
-
-    public function testBootInitializesBundlesAndContainer()
-    {
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer']);
-        $kernel->expects($this->once())
-            ->method('initializeBundles');
-        $kernel->expects($this->once())
-            ->method('initializeContainer');
-
-        $kernel->boot();
-    }
-
-    public function testBootSetsTheContainerToTheBundles()
-    {
-        $bundle = $this->getMockBuilder('Symfony\Component\HttpKernel\Bundle\Bundle')->getMock();
-        $bundle->expects($this->once())
-            ->method('setContainer');
-
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer', 'getBundles']);
-        $kernel->expects($this->once())
-            ->method('getBundles')
-            ->willReturn([$bundle]);
-
-        $kernel->boot();
-    }
-
-    public function testBootSetsTheBootedFlagToTrue()
-    {
-        // use test kernel to access isBooted()
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer']);
-        $kernel->boot();
-
-        $this->assertTrue($kernel->isBooted());
-    }
-
-    public function testClassCacheIsNotLoadedByDefault()
-    {
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer', 'doLoadClassCache']);
-        $kernel->expects($this->never())
-            ->method('doLoadClassCache');
-
-        $kernel->boot();
-    }
-
-    public function testBootKernelSeveralTimesOnlyInitializesBundlesOnce()
-    {
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer']);
-        $kernel->expects($this->once())
-            ->method('initializeBundles');
-
-        $kernel->boot();
-        $kernel->boot();
-    }
-
-    public function testShutdownCallsShutdownOnAllBundles()
-    {
-        $bundle = $this->getMockBuilder('Symfony\Component\HttpKernel\Bundle\Bundle')->getMock();
-        $bundle->expects($this->once())
-            ->method('shutdown');
-
-        $kernel = $this->getKernel([], [$bundle]);
-
-        $kernel->boot();
-        $kernel->shutdown();
-    }
-
-    public function testShutdownGivesNullContainerToAllBundles()
-    {
-        $bundle = $this->getMockBuilder('Symfony\Component\HttpKernel\Bundle\Bundle')->getMock();
-        $bundle->expects($this->at(3))
-            ->method('setContainer')
-            ->with(null);
-
-        $kernel = $this->getKernel(['getBundles']);
-        $kernel->expects($this->any())
-            ->method('getBundles')
-            ->willReturn([$bundle]);
-
-        $kernel->boot();
-        $kernel->shutdown();
-    }
-
-    public function testHandleCallsHandleOnHttpKernel()
-    {
-        $type = HttpKernelInterface::MASTER_REQUEST;
-        $catch = true;
-        $request = new Request();
-
-        $httpKernelMock = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernel')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $httpKernelMock
-            ->expects($this->once())
-            ->method('handle')
-            ->with($request, $type, $catch);
-
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->once())
-            ->method('getHttpKernel')
-            ->willReturn($httpKernelMock);
-
-        $kernel->handle($request, $type, $catch);
-    }
-
-    public function testHandleBootsTheKernel()
-    {
-        $type = HttpKernelInterface::MASTER_REQUEST;
-        $catch = true;
-        $request = new Request();
-
-        $httpKernelMock = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernel')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $kernel = $this->getKernel(['getHttpKernel', 'boot']);
-        $kernel->expects($this->once())
-            ->method('getHttpKernel')
-            ->willReturn($httpKernelMock);
-
-        $kernel->expects($this->once())
-            ->method('boot');
-
-        $kernel->handle($request, $type, $catch);
-    }
-
-    public function testStripComments()
-    {
-        $source = <<<'EOF'
-<?php
-
-$string = 'string should not be   modified';
-
-$string = 'string should not be
-
-modified';
-
-
-$heredoc = <<<HD
-
-
-Heredoc should not be   modified {$a[1+$b]}
-
-
-HD;
-
-$nowdoc = <<<'ND'
-
-
-Nowdoc should not be   modified
-
-
-ND;
-
-/**
- * some class comments to strip
- */
-class TestClass
-{
-    /**
-     * some method comments to strip
-     */
-    public function doStuff()
-    {
-        // inline comment
-    }
-}
-EOF;
-        $expected = <<<'EOF'
-<?php
-$string = 'string should not be   modified';
-$string = 'string should not be
-
-modified';
-$heredoc = <<<HD
-
-
-Heredoc should not be   modified {$a[1+$b]}
-
-
-HD;
-$nowdoc = <<<'ND'
-
-
-Nowdoc should not be   modified
-
-
-ND;
-class TestClass
-{
-    public function doStuff()
-    {
-        }
-}
-EOF;
-
-        $output = Kernel::stripComments($source);
-
-        // Heredocs are preserved, making the output mixing Unix and Windows line
-        // endings, switching to "\n" everywhere on Windows to avoid failure.
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $expected = str_replace("\r\n", "\n", $expected);
-            $output = str_replace("\r\n", "\n", $output);
-        }
-
-        $this->assertEquals($expected, $output);
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetRootDir()
-    {
-        $kernel = new KernelForTest('test', true);
-
-        $this->assertEquals(__DIR__.\DIRECTORY_SEPARATOR.'Fixtures', realpath($kernel->getRootDir()));
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetName()
-    {
-        $kernel = new KernelForTest('test', true);
-
-        $this->assertEquals('Fixtures', $kernel->getName());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testOverrideGetName()
-    {
-        $kernel = new KernelForOverrideName('test', true);
-
-        $this->assertEquals('overridden', $kernel->getName());
-    }
-
-    public function testSerialize()
-    {
-        $env = 'test_env';
-        $debug = true;
-        $kernel = new KernelForTest($env, $debug);
-        $expected = "O:57:\"Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest\":2:{s:14:\"\0*\0environment\";s:8:\"test_env\";s:8:\"\0*\0debug\";b:1;}";
-        $this->assertEquals($expected, serialize($kernel));
-    }
-
-    public function testLocateResourceThrowsExceptionWhenNameIsNotValid()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->getKernel()->locateResource('Foo');
-    }
-
-    public function testLocateResourceThrowsExceptionWhenNameIsUnsafe()
-    {
-        $this->expectException('RuntimeException');
-        $this->getKernel()->locateResource('@FooBundle/../bar');
-    }
-
-    public function testLocateResourceThrowsExceptionWhenBundleDoesNotExist()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->getKernel()->locateResource('@FooBundle/config/routing.xml');
-    }
-
-    public function testLocateResourceThrowsExceptionWhenResourceDoesNotExist()
-    {
-        $this->expectException('InvalidArgumentException');
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle'))
-        ;
-
-        $kernel->locateResource('@Bundle1Bundle/config/routing.xml');
-    }
-
-    public function testLocateResourceReturnsTheFirstThatMatches()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle'))
-        ;
-
-        $this->assertEquals(__DIR__.'/Fixtures/Bundle1Bundle/foo.txt', $kernel->locateResource('@Bundle1Bundle/foo.txt'));
-    }
-
-    public function testLocateResourceIgnoresDirOnNonResource()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Bundle1Bundle/foo.txt',
-            $kernel->locateResource('@Bundle1Bundle/foo.txt', __DIR__.'/Fixtures')
-        );
-    }
-
-    public function testLocateResourceReturnsTheDirOneForResources()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/FooBundle', null, null, 'FooBundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Resources/FooBundle/foo.txt',
-            $kernel->locateResource('@FooBundle/Resources/foo.txt', __DIR__.'/Fixtures/Resources')
-        );
-    }
-
-    public function testLocateResourceOnDirectories()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->exactly(2))
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/FooBundle', null, null, 'FooBundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Resources/FooBundle/',
-            $kernel->locateResource('@FooBundle/Resources/', __DIR__.'/Fixtures/Resources')
-        );
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Resources/FooBundle',
-            $kernel->locateResource('@FooBundle/Resources', __DIR__.'/Fixtures/Resources')
-        );
-
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->exactly(2))
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle', null, null, 'Bundle1Bundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Bundle1Bundle/Resources/',
-            $kernel->locateResource('@Bundle1Bundle/Resources/')
-        );
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Bundle1Bundle/Resources',
-            $kernel->locateResource('@Bundle1Bundle/Resources')
-        );
-    }
-
-    public function testInitializeBundleThrowsExceptionWhenRegisteringTwoBundlesWithTheSameName()
-    {
-        $this->expectException('LogicException');
-        $this->expectExceptionMessage('Trying to register two bundles with the same name "DuplicateName"');
-        $fooBundle = $this->getBundle(__DIR__.'/Fixtures/FooBundle', null, 'FooBundle', 'DuplicateName');
-        $barBundle = $this->getBundle(__DIR__.'/Fixtures/BarBundle', null, 'BarBundle', 'DuplicateName');
-
-        $kernel = $this->getKernel([], [$fooBundle, $barBundle]);
-        $kernel->boot();
-    }
-
-    public function testTerminateReturnsSilentlyIfKernelIsNotBooted()
-    {
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->never())
-            ->method('getHttpKernel');
-
-        $kernel->terminate(Request::create('/'), new Response());
-    }
-
-    public function testTerminateDelegatesTerminationOnlyForTerminableInterface()
-    {
-        // does not implement TerminableInterface
-        $httpKernel = new TestKernel();
-
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->once())
-            ->method('getHttpKernel')
-            ->willReturn($httpKernel);
-
-        $kernel->boot();
-        $kernel->terminate(Request::create('/'), new Response());
-
-        $this->assertFalse($httpKernel->terminateCalled, 'terminate() is never called if the kernel class does not implement TerminableInterface');
-
-        // implements TerminableInterface
-        $httpKernelMock = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernel')
-            ->disableOriginalConstructor()
-            ->setMethods(['terminate'])
-            ->getMock();
-
-        $httpKernelMock
-            ->expects($this->once())
-            ->method('terminate');
-
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->exactly(2))
-            ->method('getHttpKernel')
-            ->willReturn($httpKernelMock);
-
-        $kernel->boot();
-        $kernel->terminate(Request::create('/'), new Response());
-    }
-
-    public function testKernelWithoutBundles()
-    {
-        $kernel = new KernelWithoutBundles('test', true);
-        $kernel->boot();
-
-        $this->assertTrue($kernel->getContainer()->getParameter('test_executed'));
-    }
-
-    public function testProjectDirExtension()
-    {
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $this->assertSame(__DIR__.'/Fixtures', $kernel->getProjectDir());
-        $this->assertSame(__DIR__.\DIRECTORY_SEPARATOR.'Fixtures', $kernel->getContainer()->getParameter('kernel.project_dir'));
-    }
-
-    public function testKernelReset()
-    {
-        (new Filesystem())->remove(__DIR__.'/Fixtures/var/cache');
-
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $containerClass = \get_class($kernel->getContainer());
-        $containerFile = (new \ReflectionClass($kernel->getContainer()))->getFileName();
-        unlink(__DIR__.'/Fixtures/var/cache/custom/TestsSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta');
-
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $this->assertInstanceOf($containerClass, $kernel->getContainer());
-        $this->assertFileExists($containerFile);
-        unlink(__DIR__.'/Fixtures/var/cache/custom/TestsSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta');
-
-        $kernel = new CustomProjectDirKernel(function ($container) { $container->register('foo', 'stdClass')->setPublic(true); });
-        $kernel->boot();
-
-        $this->assertNotInstanceOf($containerClass, $kernel->getContainer());
-        $this->assertFileExists($containerFile);
-        $this->assertFileExists(\dirname($containerFile).'.legacy');
-    }
-
-    public function testKernelPass()
-    {
-        $kernel = new PassKernel();
-        $kernel->boot();
-
-        $this->assertTrue($kernel->getContainer()->getParameter('test.processed'));
-    }
-
-    public function testServicesResetter()
-    {
-        $httpKernelMock = $this->getMockBuilder(HttpKernelInterface::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $httpKernelMock
-            ->expects($this->exactly(2))
-            ->method('handle');
-
-        $kernel = new CustomProjectDirKernel(function ($container) {
-            $container->addCompilerPass(new ResettableServicePass());
-            $container->register('one', ResettableService::class)
-                ->setPublic(true)
-                ->addTag('kernel.reset', ['method' => 'reset']);
-            $container->register('services_resetter', ServicesResetter::class)->setPublic(true);
-        }, $httpKernelMock, 'resetting');
-
-        ResettableService::$counter = 0;
-
-        $request = new Request();
-
-        $kernel->handle($request);
-        $kernel->getContainer()->get('one');
-
-        $this->assertEquals(0, ResettableService::$counter);
-        $this->assertFalse($kernel->getContainer()->initialized('services_resetter'));
-
-        $kernel->handle($request);
-
-        $this->assertEquals(1, ResettableService::$counter);
-    }
-
-    /**
-     * @group time-sensitive
-     */
-    public function testKernelStartTimeIsResetWhileBootingAlreadyBootedKernel()
-    {
-        $kernel = $this->getKernel(['initializeBundles'], [], true);
-        $kernel->boot();
-        $preReBoot = $kernel->getStartTime();
-
-        sleep(3600); //Intentionally large value to detect if ClockMock ever breaks
-        $kernel->reboot(null);
-
-        $this->assertGreaterThan($preReBoot, $kernel->getStartTime());
-    }
-
-    /**
-     * Returns a mock for the BundleInterface.
-     *
-     * @return BundleInterface
-     */
-    protected function getBundle($dir = null, $parent = null, $className = null, $bundleName = null)
-    {
-        $bundle = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Bundle\BundleInterface')
-            ->setMethods(['getPath', 'getParent', 'getName'])
-            ->disableOriginalConstructor()
-        ;
-
-        if ($className) {
-            $bundle->setMockClassName($className);
-        }
-
-        $bundle = $bundle->getMockForAbstractClass();
-
-        $bundle
-            ->expects($this->any())
-            ->method('getName')
-            ->willReturn(null === $bundleName ? \get_class($bundle) : $bundleName)
-        ;
-
-        $bundle
-            ->expects($this->any())
-            ->method('getPath')
-            ->willReturn($dir)
-        ;
-
-        $bundle
-            ->expects($this->any())
-            ->method('getParent')
-            ->willReturn($parent)
-        ;
-
-        return $bundle;
-    }
-
-    /**
-     * Returns a mock for the abstract kernel.
-     *
-     * @param array $methods Additional methods to mock (besides the abstract ones)
-     * @param array $bundles Bundles to register
-     *
-     * @return Kernel
-     */
-    protected function getKernel(array $methods = [], array $bundles = [], bool $debug = false): Kernel
-    {
-        $methods[] = 'registerBundles';
-
-        $kernel = $this
-            ->getMockBuilder(KernelForTest::class)
-            ->setMethods($methods)
-            ->setConstructorArgs(['test', $debug])
-            ->getMock()
-        ;
-        $kernel->expects($this->any())
-            ->method('registerBundles')
-            ->willReturn($bundles)
-        ;
-
-        return $kernel;
-    }
-}
-
-class TestKernel implements HttpKernelInterface
-{
-    public $terminateCalled = false;
-
-    public function terminate()
-    {
-        $this->terminateCalled = true;
-    }
-
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-    }
-
-    public function getProjectDir(): string
-    {
-        return __DIR__.'/Fixtures';
-    }
-}
-
-class CustomProjectDirKernel extends Kernel
-{
-    private $baseDir;
-    private $buildContainer;
-    private $httpKernel;
-
-    public function __construct(\Closure $buildContainer = null, HttpKernelInterface $httpKernel = null, $env = 'custom')
-    {
-        parent::__construct($env, true);
-
-        $this->buildContainer = $buildContainer;
-        $this->httpKernel = $httpKernel;
-    }
-
-    public function registerBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-
-    public function getProjectDir()
-    {
-        return __DIR__.'/Fixtures';
-    }
-
-    protected function build(ContainerBuilder $container)
-    {
-        if ($build = $this->buildContainer) {
-            $build($container);
-        }
-    }
-
-    protected function getHttpKernel()
-    {
-        return $this->httpKernel;
-    }
-}
-
-class PassKernel extends CustomProjectDirKernel implements CompilerPassInterface
-{
-    public function __construct()
-    {
-        parent::__construct();
-        Kernel::__construct('pass', true);
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        $container->setParameter('test.processed', true);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Log/LoggerTest.php b/vendor/symfony/http-kernel/Tests/Log/LoggerTest.php
deleted file mode 100644
index 79b79cc69cb95f0663f42dc01994c8b91bf1a65f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Log/LoggerTest.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Log;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use Symfony\Component\HttpKernel\Log\Logger;
-
-/**
- * @author Kévin Dunglas <dunglas@gmail.com>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class LoggerTest extends TestCase
-{
-    /**
-     * @var LoggerInterface
-     */
-    private $logger;
-
-    /**
-     * @var string
-     */
-    private $tmpFile;
-
-    protected function setUp(): void
-    {
-        $this->tmpFile = tempnam(sys_get_temp_dir(), 'log');
-        $this->logger = new Logger(LogLevel::DEBUG, $this->tmpFile);
-    }
-
-    protected function tearDown(): void
-    {
-        if (!@unlink($this->tmpFile)) {
-            file_put_contents($this->tmpFile, '');
-        }
-    }
-
-    public static function assertLogsMatch(array $expected, array $given)
-    {
-        foreach ($given as $k => $line) {
-            self::assertThat(1 === preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[\+-][0-9]{2}:[0-9]{2} '.preg_quote($expected[$k]).'/', $line), self::isTrue(), "\"$line\" do not match expected pattern \"$expected[$k]\"");
-        }
-    }
-
-    /**
-     * Return the log messages in order.
-     *
-     * @return string[]
-     */
-    public function getLogs()
-    {
-        return file($this->tmpFile, FILE_IGNORE_NEW_LINES);
-    }
-
-    public function testImplements()
-    {
-        $this->assertInstanceOf(LoggerInterface::class, $this->logger);
-    }
-
-    /**
-     * @dataProvider provideLevelsAndMessages
-     */
-    public function testLogsAtAllLevels($level, $message)
-    {
-        $this->logger->{$level}($message, ['user' => 'Bob']);
-        $this->logger->log($level, $message, ['user' => 'Bob']);
-
-        $expected = [
-            "[$level] message of level $level with context: Bob",
-            "[$level] message of level $level with context: Bob",
-        ];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function provideLevelsAndMessages()
-    {
-        return [
-            LogLevel::EMERGENCY => [LogLevel::EMERGENCY, 'message of level emergency with context: {user}'],
-            LogLevel::ALERT => [LogLevel::ALERT, 'message of level alert with context: {user}'],
-            LogLevel::CRITICAL => [LogLevel::CRITICAL, 'message of level critical with context: {user}'],
-            LogLevel::ERROR => [LogLevel::ERROR, 'message of level error with context: {user}'],
-            LogLevel::WARNING => [LogLevel::WARNING, 'message of level warning with context: {user}'],
-            LogLevel::NOTICE => [LogLevel::NOTICE, 'message of level notice with context: {user}'],
-            LogLevel::INFO => [LogLevel::INFO, 'message of level info with context: {user}'],
-            LogLevel::DEBUG => [LogLevel::DEBUG, 'message of level debug with context: {user}'],
-        ];
-    }
-
-    public function testLogLevelDisabled()
-    {
-        $this->logger = new Logger(LogLevel::INFO, $this->tmpFile);
-
-        $this->logger->debug('test', ['user' => 'Bob']);
-        $this->logger->log(LogLevel::DEBUG, 'test', ['user' => 'Bob']);
-
-        // Will always be true, but asserts than an exception isn't thrown
-        $this->assertSame([], $this->getLogs());
-    }
-
-    public function testThrowsOnInvalidLevel()
-    {
-        $this->expectException('Psr\Log\InvalidArgumentException');
-        $this->logger->log('invalid level', 'Foo');
-    }
-
-    public function testThrowsOnInvalidMinLevel()
-    {
-        $this->expectException('Psr\Log\InvalidArgumentException');
-        new Logger('invalid');
-    }
-
-    public function testInvalidOutput()
-    {
-        $this->expectException('Psr\Log\InvalidArgumentException');
-        new Logger(LogLevel::DEBUG, '/');
-    }
-
-    public function testContextReplacement()
-    {
-        $logger = $this->logger;
-        $logger->info('{Message {nothing} {user} {foo.bar} a}', ['user' => 'Bob', 'foo.bar' => 'Bar']);
-
-        $expected = ['[info] {Message {nothing} Bob Bar a}'];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testObjectCastToString()
-    {
-        if (method_exists($this, 'createPartialMock')) {
-            $dummy = $this->createPartialMock(DummyTest::class, ['__toString']);
-        } else {
-            $dummy = $this->createPartialMock(DummyTest::class, ['__toString']);
-        }
-        $dummy->expects($this->atLeastOnce())
-            ->method('__toString')
-            ->willReturn('DUMMY');
-
-        $this->logger->warning($dummy);
-
-        $expected = ['[warning] DUMMY'];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testContextCanContainAnything()
-    {
-        $context = [
-            'bool' => true,
-            'null' => null,
-            'string' => 'Foo',
-            'int' => 0,
-            'float' => 0.5,
-            'nested' => ['with object' => new DummyTest()],
-            'object' => new \DateTime(),
-            'resource' => fopen('php://memory', 'r'),
-        ];
-
-        $this->logger->warning('Crazy context data', $context);
-
-        $expected = ['[warning] Crazy context data'];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testContextExceptionKeyCanBeExceptionOrOtherValues()
-    {
-        $logger = $this->logger;
-        $logger->warning('Random message', ['exception' => 'oops']);
-        $logger->critical('Uncaught Exception!', ['exception' => new \LogicException('Fail')]);
-
-        $expected = [
-            '[warning] Random message',
-            '[critical] Uncaught Exception!',
-        ];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testFormatter()
-    {
-        $this->logger = new Logger(LogLevel::DEBUG, $this->tmpFile, function ($level, $message, $context) {
-            return json_encode(['level' => $level, 'message' => $message, 'context' => $context]).\PHP_EOL;
-        });
-
-        $this->logger->error('An error', ['foo' => 'bar']);
-        $this->logger->warning('A warning', ['baz' => 'bar']);
-        $this->assertSame([
-            '{"level":"error","message":"An error","context":{"foo":"bar"}}',
-            '{"level":"warning","message":"A warning","context":{"baz":"bar"}}',
-        ], $this->getLogs());
-    }
-}
-
-class DummyTest
-{
-    public function __toString()
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Logger.php b/vendor/symfony/http-kernel/Tests/Logger.php
deleted file mode 100644
index 8453cfbd57228b95648d2c4e130d16fa93697db5..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Logger.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use Psr\Log\LoggerInterface;
-
-class Logger implements LoggerInterface
-{
-    protected $logs;
-
-    public function __construct()
-    {
-        $this->clear();
-    }
-
-    public function getLogs($level = false): array
-    {
-        return false === $level ? $this->logs : $this->logs[$level];
-    }
-
-    public function clear()
-    {
-        $this->logs = [
-            'emergency' => [],
-            'alert' => [],
-            'critical' => [],
-            'error' => [],
-            'warning' => [],
-            'notice' => [],
-            'info' => [],
-            'debug' => [],
-        ];
-    }
-
-    public function log($level, $message, array $context = [])
-    {
-        $this->logs[$level][] = $message;
-    }
-
-    public function emergency($message, array $context = [])
-    {
-        $this->log('emergency', $message, $context);
-    }
-
-    public function alert($message, array $context = [])
-    {
-        $this->log('alert', $message, $context);
-    }
-
-    public function critical($message, array $context = [])
-    {
-        $this->log('critical', $message, $context);
-    }
-
-    public function error($message, array $context = [])
-    {
-        $this->log('error', $message, $context);
-    }
-
-    public function warning($message, array $context = [])
-    {
-        $this->log('warning', $message, $context);
-    }
-
-    public function notice($message, array $context = [])
-    {
-        $this->log('notice', $message, $context);
-    }
-
-    public function info($message, array $context = [])
-    {
-        $this->log('info', $message, $context);
-    }
-
-    public function debug($message, array $context = [])
-    {
-        $this->log('debug', $message, $context);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php b/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php
deleted file mode 100644
index f088fe044db1c712e6cc2adba89ed9b9388cee1f..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php
+++ /dev/null
@@ -1,350 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Profiler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Profiler\FileProfilerStorage;
-use Symfony\Component\HttpKernel\Profiler\Profile;
-
-class FileProfilerStorageTest extends TestCase
-{
-    private $tmpDir;
-    private $storage;
-
-    protected function setUp(): void
-    {
-        $this->tmpDir = sys_get_temp_dir().'/sf_profiler_file_storage';
-        if (is_dir($this->tmpDir)) {
-            self::cleanDir();
-        }
-        $this->storage = new FileProfilerStorage('file:'.$this->tmpDir);
-        $this->storage->purge();
-    }
-
-    protected function tearDown(): void
-    {
-        self::cleanDir();
-    }
-
-    public function testStore()
-    {
-        for ($i = 0; $i < 10; ++$i) {
-            $profile = new Profile('token_'.$i);
-            $profile->setIp('127.0.0.1');
-            $profile->setUrl('http://foo.bar');
-            $profile->setMethod('GET');
-            $this->storage->write($profile);
-        }
-        $this->assertCount(10, $this->storage->find('127.0.0.1', 'http://foo.bar', 20, 'GET'), '->write() stores data in the storage');
-    }
-
-    public function testChildren()
-    {
-        $parentProfile = new Profile('token_parent');
-        $parentProfile->setIp('127.0.0.1');
-        $parentProfile->setUrl('http://foo.bar/parent');
-
-        $childProfile = new Profile('token_child');
-        $childProfile->setIp('127.0.0.1');
-        $childProfile->setUrl('http://foo.bar/child');
-
-        $parentProfile->addChild($childProfile);
-
-        $this->storage->write($parentProfile);
-        $this->storage->write($childProfile);
-
-        // Load them from storage
-        $parentProfile = $this->storage->read('token_parent');
-        $childProfile = $this->storage->read('token_child');
-
-        // Check child has link to parent
-        $this->assertNotNull($childProfile->getParent());
-        $this->assertEquals($parentProfile->getToken(), $childProfile->getParentToken());
-
-        // Check parent has child
-        $children = $parentProfile->getChildren();
-        $this->assertCount(1, $children);
-        $this->assertEquals($childProfile->getToken(), $children[0]->getToken());
-    }
-
-    public function testStoreSpecialCharsInUrl()
-    {
-        // The storage accepts special characters in URLs (Even though URLs are not
-        // supposed to contain them)
-        $profile = new Profile('simple_quote');
-        $profile->setUrl('http://foo.bar/\'');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('simple_quote'), '->write() accepts single quotes in URL');
-
-        $profile = new Profile('double_quote');
-        $profile->setUrl('http://foo.bar/"');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('double_quote'), '->write() accepts double quotes in URL');
-
-        $profile = new Profile('backslash');
-        $profile->setUrl('http://foo.bar/\\');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('backslash'), '->write() accepts backslash in URL');
-
-        $profile = new Profile('comma');
-        $profile->setUrl('http://foo.bar/,');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('comma'), '->write() accepts comma in URL');
-    }
-
-    public function testStoreDuplicateToken()
-    {
-        $profile = new Profile('token');
-        $profile->setUrl('http://example.com/');
-
-        $this->assertTrue($this->storage->write($profile), '->write() returns true when the token is unique');
-
-        $profile->setUrl('http://example.net/');
-
-        $this->assertTrue($this->storage->write($profile), '->write() returns true when the token is already present in the storage');
-        $this->assertEquals('http://example.net/', $this->storage->read('token')->getUrl(), '->write() overwrites the current profile data');
-
-        $this->assertCount(1, $this->storage->find('', '', 1000, ''), '->find() does not return the same profile twice');
-    }
-
-    public function testRetrieveByIp()
-    {
-        $profile = new Profile('token');
-        $profile->setIp('127.0.0.1');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertCount(1, $this->storage->find('127.0.0.1', '', 10, 'GET'), '->find() retrieve a record by IP');
-        $this->assertCount(0, $this->storage->find('127.0.%.1', '', 10, 'GET'), '->find() does not interpret a "%" as a wildcard in the IP');
-        $this->assertCount(0, $this->storage->find('127.0._.1', '', 10, 'GET'), '->find() does not interpret a "_" as a wildcard in the IP');
-    }
-
-    public function testRetrieveByStatusCode()
-    {
-        $profile200 = new Profile('statuscode200');
-        $profile200->setStatusCode(200);
-        $this->storage->write($profile200);
-
-        $profile404 = new Profile('statuscode404');
-        $profile404->setStatusCode(404);
-        $this->storage->write($profile404);
-
-        $this->assertCount(1, $this->storage->find(null, null, 10, null, null, null, '200'), '->find() retrieve a record by Status code 200');
-        $this->assertCount(1, $this->storage->find(null, null, 10, null, null, null, '404'), '->find() retrieve a record by Status code 404');
-    }
-
-    public function testRetrieveByUrl()
-    {
-        $profile = new Profile('simple_quote');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/\'');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('double_quote');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/"');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('backslash');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo\\bar/');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('percent');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/%');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('underscore');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/_');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('semicolon');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/;');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/\'', 10, 'GET'), '->find() accepts single quotes in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/"', 10, 'GET'), '->find() accepts double quotes in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo\\bar/', 10, 'GET'), '->find() accepts backslash in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/;', 10, 'GET'), '->find() accepts semicolon in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/%', 10, 'GET'), '->find() does not interpret a "%" as a wildcard in the URL');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/_', 10, 'GET'), '->find() does not interpret a "_" as a wildcard in the URL');
-    }
-
-    public function testStoreTime()
-    {
-        $dt = new \DateTime('now');
-        $start = $dt->getTimestamp();
-
-        for ($i = 0; $i < 3; ++$i) {
-            $dt->modify('+1 minute');
-            $profile = new Profile('time_'.$i);
-            $profile->setIp('127.0.0.1');
-            $profile->setUrl('http://foo.bar');
-            $profile->setTime($dt->getTimestamp());
-            $profile->setMethod('GET');
-            $this->storage->write($profile);
-        }
-
-        $records = $this->storage->find('', '', 3, 'GET', $start, time() + 3 * 60);
-        $this->assertCount(3, $records, '->find() returns all previously added records');
-        $this->assertEquals($records[0]['token'], 'time_2', '->find() returns records ordered by time in descendant order');
-        $this->assertEquals($records[1]['token'], 'time_1', '->find() returns records ordered by time in descendant order');
-        $this->assertEquals($records[2]['token'], 'time_0', '->find() returns records ordered by time in descendant order');
-
-        $records = $this->storage->find('', '', 3, 'GET', $start, time() + 2 * 60);
-        $this->assertCount(2, $records, '->find() should return only first two of the previously added records');
-    }
-
-    public function testRetrieveByEmptyUrlAndIp()
-    {
-        for ($i = 0; $i < 5; ++$i) {
-            $profile = new Profile('token_'.$i);
-            $profile->setMethod('GET');
-            $this->storage->write($profile);
-        }
-        $this->assertCount(5, $this->storage->find('', '', 10, 'GET'), '->find() returns all previously added records');
-        $this->storage->purge();
-    }
-
-    public function testRetrieveByMethodAndLimit()
-    {
-        foreach (['POST', 'GET'] as $method) {
-            for ($i = 0; $i < 5; ++$i) {
-                $profile = new Profile('token_'.$i.$method);
-                $profile->setMethod($method);
-                $this->storage->write($profile);
-            }
-        }
-
-        $this->assertCount(5, $this->storage->find('', '', 5, 'POST'));
-
-        $this->storage->purge();
-    }
-
-    public function testPurge()
-    {
-        $profile = new Profile('token1');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://example.com/');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertNotFalse($this->storage->read('token1'));
-        $this->assertCount(1, $this->storage->find('127.0.0.1', '', 10, 'GET'));
-
-        $profile = new Profile('token2');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://example.net/');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertNotFalse($this->storage->read('token2'));
-        $this->assertCount(2, $this->storage->find('127.0.0.1', '', 10, 'GET'));
-
-        $this->storage->purge();
-
-        $this->assertEmpty($this->storage->read('token'), '->purge() removes all data stored by profiler');
-        $this->assertCount(0, $this->storage->find('127.0.0.1', '', 10, 'GET'), '->purge() removes all items from index');
-    }
-
-    public function testDuplicates()
-    {
-        for ($i = 1; $i <= 5; ++$i) {
-            $profile = new Profile('foo'.$i);
-            $profile->setIp('127.0.0.1');
-            $profile->setUrl('http://example.net/');
-            $profile->setMethod('GET');
-
-            ///three duplicates
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-        }
-        $this->assertCount(3, $this->storage->find('127.0.0.1', 'http://example.net/', 3, 'GET'), '->find() method returns incorrect number of entries');
-    }
-
-    public function testStatusCode()
-    {
-        $profile = new Profile('token1');
-        $profile->setStatusCode(200);
-        $this->storage->write($profile);
-
-        $profile = new Profile('token2');
-        $profile->setStatusCode(404);
-        $this->storage->write($profile);
-
-        $tokens = $this->storage->find('', '', 10, '');
-        $this->assertCount(2, $tokens);
-        $this->assertContains($tokens[0]['status_code'], [200, 404]);
-        $this->assertContains($tokens[1]['status_code'], [200, 404]);
-    }
-
-    public function testMultiRowIndexFile()
-    {
-        $iteration = 3;
-        for ($i = 0; $i < $iteration; ++$i) {
-            $profile = new Profile('token'.$i);
-            $profile->setIp('127.0.0.'.$i);
-            $profile->setUrl('http://foo.bar/'.$i);
-
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-        }
-
-        $handle = fopen($this->tmpDir.'/index.csv', 'r');
-        for ($i = 0; $i < $iteration; ++$i) {
-            $row = fgetcsv($handle);
-            $this->assertEquals('token'.$i, $row[0]);
-            $this->assertEquals('127.0.0.'.$i, $row[1]);
-            $this->assertEquals('http://foo.bar/'.$i, $row[3]);
-        }
-        $this->assertFalse(fgetcsv($handle));
-    }
-
-    public function testReadLineFromFile()
-    {
-        $r = new \ReflectionMethod($this->storage, 'readLineFromFile');
-
-        $r->setAccessible(true);
-
-        $h = tmpfile();
-
-        fwrite($h, "line1\n\n\nline2\n");
-        fseek($h, 0, SEEK_END);
-
-        $this->assertEquals('line2', $r->invoke($this->storage, $h));
-        $this->assertEquals('line1', $r->invoke($this->storage, $h));
-    }
-
-    protected function cleanDir()
-    {
-        $flags = \FilesystemIterator::SKIP_DOTS;
-        $iterator = new \RecursiveDirectoryIterator($this->tmpDir, $flags);
-        $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
-
-        foreach ($iterator as $file) {
-            if (is_file($file)) {
-                unlink($file);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php b/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php
deleted file mode 100644
index 2128ea9bcd8c1606d88be36e1c5c01580be3aa88..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Profiler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
-use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector;
-use Symfony\Component\HttpKernel\Profiler\FileProfilerStorage;
-use Symfony\Component\HttpKernel\Profiler\Profiler;
-
-class ProfilerTest extends TestCase
-{
-    private $tmp;
-    private $storage;
-
-    public function testCollect()
-    {
-        $request = new Request();
-        $request->query->set('foo', 'bar');
-        $response = new Response('', 204);
-        $collector = new RequestDataCollector();
-
-        $profiler = new Profiler($this->storage);
-        $profiler->add($collector);
-        $profile = $profiler->collect($request, $response);
-        $profiler->saveProfile($profile);
-
-        $this->assertSame(204, $profile->getStatusCode());
-        $this->assertSame('GET', $profile->getMethod());
-        $this->assertSame('bar', $profile->getCollector('request')->getRequestQuery()->all()['foo']->getValue());
-    }
-
-    public function testReset()
-    {
-        $collector = $this->getMockBuilder(DataCollectorInterface::class)
-            ->setMethods(['collect', 'getName', 'reset'])
-            ->getMock();
-        $collector->expects($this->any())->method('getName')->willReturn('mock');
-        $collector->expects($this->once())->method('reset');
-
-        $profiler = new Profiler($this->storage);
-        $profiler->add($collector);
-        $profiler->reset();
-    }
-
-    public function testFindWorksWithDates()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, '7th April 2014', '9th April 2014'));
-    }
-
-    public function testFindWorksWithTimestamps()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, '1396828800', '1397001600'));
-    }
-
-    public function testFindWorksWithInvalidDates()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, 'some string', ''));
-    }
-
-    public function testFindWorksWithStatusCode()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, null, null, '204'));
-    }
-
-    protected function setUp(): void
-    {
-        $this->tmp = tempnam(sys_get_temp_dir(), 'sf_profiler');
-        if (file_exists($this->tmp)) {
-            @unlink($this->tmp);
-        }
-
-        $this->storage = new FileProfilerStorage('file:'.$this->tmp);
-        $this->storage->purge();
-    }
-
-    protected function tearDown(): void
-    {
-        if (null !== $this->storage) {
-            $this->storage->purge();
-            $this->storage = null;
-
-            @unlink($this->tmp);
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/TestHttpKernel.php b/vendor/symfony/http-kernel/Tests/TestHttpKernel.php
deleted file mode 100644
index 27ba2d6f8949901133c70c5dda934ec8d94d2ff2..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/TestHttpKernel.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\HttpKernel;
-
-class TestHttpKernel extends HttpKernel implements ControllerResolverInterface, ArgumentResolverInterface
-{
-    public function __construct()
-    {
-        parent::__construct(new EventDispatcher(), $this, null, $this);
-    }
-
-    public function getController(Request $request)
-    {
-        return [$this, 'callController'];
-    }
-
-    public function getArguments(Request $request, $controller)
-    {
-        return [$request];
-    }
-
-    public function callController(Request $request)
-    {
-        return new Response('Request: '.$request->getRequestUri());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/UriSignerTest.php b/vendor/symfony/http-kernel/Tests/UriSignerTest.php
deleted file mode 100644
index b2eb59206ba03cc5757c45ef8fa331eba3b24461..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/Tests/UriSignerTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class UriSignerTest extends TestCase
-{
-    public function testSign()
-    {
-        $signer = new UriSigner('foobar');
-
-        $this->assertStringContainsString('?_hash=', $signer->sign('http://example.com/foo'));
-        $this->assertStringContainsString('?_hash=', $signer->sign('http://example.com/foo?foo=bar'));
-        $this->assertStringContainsString('&foo=', $signer->sign('http://example.com/foo?foo=bar'));
-    }
-
-    public function testCheck()
-    {
-        $signer = new UriSigner('foobar');
-
-        $this->assertFalse($signer->check('http://example.com/foo?_hash=foo'));
-        $this->assertFalse($signer->check('http://example.com/foo?foo=bar&_hash=foo'));
-        $this->assertFalse($signer->check('http://example.com/foo?foo=bar&_hash=foo&bar=foo'));
-
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo')));
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar')));
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&0=integer')));
-
-        $this->assertSame($signer->sign('http://example.com/foo?foo=bar&bar=foo'), $signer->sign('http://example.com/foo?bar=foo&foo=bar'));
-    }
-
-    public function testCheckWithDifferentArgSeparator()
-    {
-        $this->iniSet('arg_separator.output', '&amp;');
-        $signer = new UriSigner('foobar');
-
-        $this->assertSame(
-            'http://example.com/foo?_hash=rIOcC%2FF3DoEGo%2FvnESjSp7uU9zA9S%2F%2BOLhxgMexoPUM%3D&baz=bay&foo=bar',
-            $signer->sign('http://example.com/foo?foo=bar&baz=bay')
-        );
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&baz=bay')));
-    }
-
-    public function testCheckWithDifferentParameter()
-    {
-        $signer = new UriSigner('foobar', 'qux');
-
-        $this->assertSame(
-            'http://example.com/foo?baz=bay&foo=bar&qux=rIOcC%2FF3DoEGo%2FvnESjSp7uU9zA9S%2F%2BOLhxgMexoPUM%3D',
-            $signer->sign('http://example.com/foo?foo=bar&baz=bay')
-        );
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&baz=bay')));
-    }
-
-    public function testSignerWorksWithFragments()
-    {
-        $signer = new UriSigner('foobar');
-
-        $this->assertSame(
-            'http://example.com/foo?_hash=EhpAUyEobiM3QTrKxoLOtQq5IsWyWedoXDPqIjzNj5o%3D&bar=foo&foo=bar#foobar',
-            $signer->sign('http://example.com/foo?bar=foo&foo=bar#foobar')
-        );
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?bar=foo&foo=bar#foobar')));
-    }
-}
diff --git a/vendor/symfony/http-kernel/UriSigner.php b/vendor/symfony/http-kernel/UriSigner.php
index 1dd56ffd76fff3d4adb0af937630c7c772df3cf4..a11a05f848e56bc220df5390011ac9e98575af03 100644
--- a/vendor/symfony/http-kernel/UriSigner.php
+++ b/vendor/symfony/http-kernel/UriSigner.php
@@ -79,17 +79,17 @@ class UriSigner
         $hash = $params[$this->parameter];
         unset($params[$this->parameter]);
 
-        return $this->computeHash($this->buildUrl($url, $params)) === $hash;
+        return hash_equals($this->computeHash($this->buildUrl($url, $params)), $hash);
     }
 
-    private function computeHash($uri)
+    private function computeHash(string $uri): string
     {
         return base64_encode(hash_hmac('sha256', $uri, $this->secret, true));
     }
 
-    private function buildUrl(array $url, array $params = [])
+    private function buildUrl(array $url, array $params = []): string
     {
-        ksort($params, SORT_STRING);
+        ksort($params, \SORT_STRING);
         $url['query'] = http_build_query($params, '', '&');
 
         $scheme = isset($url['scheme']) ? $url['scheme'].'://' : '';
diff --git a/vendor/symfony/http-kernel/composer.json b/vendor/symfony/http-kernel/composer.json
index e07b453b481136c33d43826e00497bcebf429d29..59dd77b63721e146cf594a6b6feceedaa316a8cf 100644
--- a/vendor/symfony/http-kernel/composer.json
+++ b/vendor/symfony/http-kernel/composer.json
@@ -16,32 +16,33 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
-        "symfony/event-dispatcher": "^4.3",
-        "symfony/http-foundation": "^4.1.1",
-        "symfony/debug": "~3.4|~4.0",
-        "symfony/polyfill-ctype": "~1.8",
+        "php": ">=7.1.3",
+        "symfony/error-handler": "^4.4",
+        "symfony/event-dispatcher": "^4.4",
+        "symfony/http-client-contracts": "^1.1|^2",
+        "symfony/http-foundation": "^4.4|^5.0",
+        "symfony/polyfill-ctype": "^1.8",
         "symfony/polyfill-php73": "^1.9",
+        "symfony/polyfill-php80": "^1.15",
         "psr/log": "~1.0"
     },
     "require-dev": {
-        "symfony/browser-kit": "^4.3",
-        "symfony/config": "~3.4|~4.0",
-        "symfony/console": "~3.4|~4.0",
-        "symfony/css-selector": "~3.4|~4.0",
-        "symfony/dependency-injection": "^4.3",
-        "symfony/dom-crawler": "~3.4|~4.0",
-        "symfony/expression-language": "~3.4|~4.0",
-        "symfony/finder": "~3.4|~4.0",
-        "symfony/process": "~3.4|~4.0",
-        "symfony/routing": "~3.4|~4.0",
-        "symfony/stopwatch": "~3.4|~4.0",
-        "symfony/templating": "~3.4|~4.0",
-        "symfony/translation": "~4.2",
-        "symfony/translation-contracts": "^1.1",
-        "symfony/var-dumper": "^4.1.1",
+        "symfony/browser-kit": "^4.3|^5.0",
+        "symfony/config": "^3.4|^4.0|^5.0",
+        "symfony/console": "^3.4|^4.0",
+        "symfony/css-selector": "^3.4|^4.0|^5.0",
+        "symfony/dependency-injection": "^4.3|^5.0",
+        "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+        "symfony/expression-language": "^3.4|^4.0|^5.0",
+        "symfony/finder": "^3.4|^4.0|^5.0",
+        "symfony/process": "^3.4|^4.0|^5.0",
+        "symfony/routing": "^3.4|^4.0|^5.0",
+        "symfony/stopwatch": "^3.4|^4.0|^5.0",
+        "symfony/templating": "^3.4|^4.0|^5.0",
+        "symfony/translation": "^4.2|^5.0",
+        "symfony/translation-contracts": "^1.1|^2",
         "psr/cache": "~1.0",
-        "twig/twig": "^1.34|^2.4"
+        "twig/twig": "^1.34|^2.4|^3.0"
     },
     "provide": {
         "psr/log-implementation": "1.0"
@@ -49,17 +50,16 @@
     "conflict": {
         "symfony/browser-kit": "<4.3",
         "symfony/config": "<3.4",
+        "symfony/console": ">=5",
         "symfony/dependency-injection": "<4.3",
         "symfony/translation": "<4.2",
-        "symfony/var-dumper": "<4.1.1",
         "twig/twig": "<1.34|<2.4,>=2"
     },
     "suggest": {
         "symfony/browser-kit": "",
         "symfony/config": "",
         "symfony/console": "",
-        "symfony/dependency-injection": "",
-        "symfony/var-dumper": ""
+        "symfony/dependency-injection": ""
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\HttpKernel\\": "" },
@@ -67,10 +67,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/http-kernel/phpunit.xml.dist b/vendor/symfony/http-kernel/phpunit.xml.dist
deleted file mode 100644
index 3fc07707f2faeacf24a3ab2315390d1eebe1db41..0000000000000000000000000000000000000000
--- a/vendor/symfony/http-kernel/phpunit.xml.dist
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony HttpKernel Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-
-    <listeners>
-        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener">
-            <arguments>
-                <array>
-                    <element key="time-sensitive"><string>Symfony\Component\HttpFoundation</string></element>
-                </array>
-            </arguments>
-        </listener>
-    </listeners>
-</phpunit>
diff --git a/vendor/symfony/mime/.gitignore b/vendor/symfony/mime/.gitignore
deleted file mode 100644
index 5414c2c655e72ae741a2eccd1d69d06ce7c20f02..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-composer.lock
-phpunit.xml
-vendor/
diff --git a/vendor/symfony/mime/Address.php b/vendor/symfony/mime/Address.php
index be1ca760a7f13fd03aceabf92625e58e71570b64..9847712b107471d166cb7d769c441943adb817a9 100644
--- a/vendor/symfony/mime/Address.php
+++ b/vendor/symfony/mime/Address.php
@@ -20,17 +20,25 @@ use Symfony\Component\Mime\Exception\RfcComplianceException;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
-class Address
+final class Address
 {
+    /**
+     * A regex that matches a structure like 'Name <email@address.com>'.
+     * It matches anything between the first < and last > as email address.
+     * This allows to use a single string to construct an Address, which can be convenient to use in
+     * config, and allows to have more readable config.
+     * This does not try to cover all edge cases for address.
+     */
+    private const FROM_STRING_PATTERN = '~(?<displayName>[^<]*)<(?<addrSpec>.*)>[^>]*~';
+
     private static $validator;
     private static $encoder;
 
     private $address;
+    private $name;
 
-    public function __construct(string $address)
+    public function __construct(string $address, string $name = '')
     {
         if (!class_exists(EmailValidator::class)) {
             throw new LogicException(sprintf('The "%s" class cannot be used as it needs "%s"; try running "composer require egulias/email-validator".', __CLASS__, EmailValidator::class));
@@ -41,6 +49,7 @@ class Address
         }
 
         $this->address = trim($address);
+        $this->name = trim(str_replace(["\n", "\r"], '', $name));
 
         if (!self::$validator->isValid($this->address, new RFCValidation())) {
             throw new RfcComplianceException(sprintf('Email "%s" does not comply with addr-spec of RFC 2822.', $address));
@@ -52,6 +61,11 @@ class Address
         return $this->address;
     }
 
+    public function getName(): string
+    {
+        return $this->name;
+    }
+
     public function getEncodedAddress(): string
     {
         if (null === self::$encoder) {
@@ -63,7 +77,7 @@ class Address
 
     public function toString(): string
     {
-        return $this->getEncodedAddress();
+        return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
     }
 
     /**
@@ -75,10 +89,10 @@ class Address
             return $address;
         }
         if (\is_string($address)) {
-            return new self($address);
+            return self::fromString($address);
         }
 
-        throw new InvalidArgumentException(sprintf('An address can be an instance of Address or a string ("%s") given).', \is_object($address) ? \get_class($address) : \gettype($address)));
+        throw new InvalidArgumentException(sprintf('An address can be an instance of Address or a string ("%s") given).', get_debug_type($address)));
     }
 
     /**
@@ -95,4 +109,17 @@ class Address
 
         return $addrs;
     }
+
+    public static function fromString(string $string): self
+    {
+        if (false === strpos($string, '<')) {
+            return new self($string, '');
+        }
+
+        if (!preg_match(self::FROM_STRING_PATTERN, $string, $matches)) {
+            throw new InvalidArgumentException(sprintf('Could not parse "%s" to a "%s" instance.', $string, static::class));
+        }
+
+        return new self($matches['addrSpec'], trim($matches['displayName'], ' \'"'));
+    }
 }
diff --git a/vendor/symfony/mime/BodyRendererInterface.php b/vendor/symfony/mime/BodyRendererInterface.php
index 8fcc40159554982f28682933287ca932da028a24..d6921726556274a6cbbd596c65cc6ceb447785d1 100644
--- a/vendor/symfony/mime/BodyRendererInterface.php
+++ b/vendor/symfony/mime/BodyRendererInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface BodyRendererInterface
 {
diff --git a/vendor/symfony/mime/CHANGELOG.md b/vendor/symfony/mime/CHANGELOG.md
index 796cfdd155626337ebd1bfaeff76971ea89e2867..6148360dd97d91d84eadf0a20f07a76707a2fd52 100644
--- a/vendor/symfony/mime/CHANGELOG.md
+++ b/vendor/symfony/mime/CHANGELOG.md
@@ -1,6 +1,14 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * [BC BREAK] Removed `NamedAddress` (`Address` now supports a name)
+ * Added PHPUnit constraints
+ * Added `AbstractPart::asDebugString()`
+ * Added `Address::fromString()`
+
 4.3.3
 -----
 
diff --git a/vendor/symfony/mime/CharacterStream.php b/vendor/symfony/mime/CharacterStream.php
index 9b80b2efa481ad0d3f163f4ac1ca6935d9537ab5..9d0a9c6618b788b92047c68d51e96e8d255fba17 100644
--- a/vendor/symfony/mime/CharacterStream.php
+++ b/vendor/symfony/mime/CharacterStream.php
@@ -16,8 +16,6 @@ namespace Symfony\Component\Mime;
  * @author Xavier De Cock <xdecock@gmail.com>
  *
  * @internal
- *
- * @experimental in 4.3
  */
 final class CharacterStream
 {
@@ -99,10 +97,7 @@ final class CharacterStream
             }
         }
         if (\is_resource($input)) {
-            $blocks = 512;
-            if (stream_get_meta_data($input)['seekable'] ?? false) {
-                rewind($input);
-            }
+            $blocks = 16372;
             while (false !== $read = fread($input, $blocks)) {
                 $this->write($read);
             }
@@ -116,7 +111,6 @@ final class CharacterStream
         if ($this->currentPos >= $this->charCount) {
             return null;
         }
-        $ret = null;
         $length = ($this->currentPos + $length > $this->charCount) ? $this->charCount - $this->currentPos : $length;
         if ($this->fixedWidth > 0) {
             $len = $length * $this->fixedWidth;
@@ -177,7 +171,7 @@ final class CharacterStream
         $this->dataSize = \strlen($this->data) - \strlen($ignored);
     }
 
-    private function getUtf8CharPositions(string $string, int $startOffset, &$ignoredChars): int
+    private function getUtf8CharPositions(string $string, int $startOffset, string &$ignoredChars): int
     {
         $strlen = \strlen($string);
         $charPos = \count($this->map['p']);
diff --git a/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php b/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
index 78450b91bd56c712546d23e8695ed844dbfd6f41..e24beb0da14ec285f19f82262b1e8620d7e25b34 100644
--- a/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
+++ b/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
@@ -19,8 +19,6 @@ use Symfony\Component\DependencyInjection\Reference;
  * Registers custom mime types guessers.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class AddMimeTypeGuesserPass implements CompilerPassInterface
 {
diff --git a/vendor/symfony/mime/Email.php b/vendor/symfony/mime/Email.php
index 1bcdc8a1cd3bedc042c6ccd53a2e6cfca58be437..e5f9f11b36fc4d8a15ffe98dc22e0672e58427cb 100644
--- a/vendor/symfony/mime/Email.php
+++ b/vendor/symfony/mime/Email.php
@@ -21,8 +21,6 @@ use Symfony\Component\Mime\Part\TextPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class Email extends Message
 {
@@ -103,7 +101,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -113,7 +111,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -123,7 +121,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getFrom(): array
     {
@@ -159,7 +157,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -169,7 +167,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -179,7 +177,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getTo(): array
     {
@@ -187,7 +185,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -207,7 +205,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getCc(): array
     {
@@ -215,7 +213,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -235,7 +233,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getBcc(): array
     {
@@ -401,6 +399,15 @@ class Email extends Message
         return $this->generateBody();
     }
 
+    public function ensureValidity()
+    {
+        if (null === $this->text && null === $this->html && !$this->attachments) {
+            throw new LogicException('A message must have a text or an HTML part or attachments.');
+        }
+
+        parent::ensureValidity();
+    }
+
     /**
      * Generates an AbstractPart based on the raw body of a message.
      *
@@ -423,10 +430,9 @@ class Email extends Message
      */
     private function generateBody(): AbstractPart
     {
+        $this->ensureValidity();
+
         [$htmlPart, $attachmentParts, $inlineParts] = $this->prepareParts();
-        if (null === $this->text && null === $this->html && !$attachmentParts) {
-            throw new LogicException('A message must have a text or an HTML part or attachments.');
-        }
 
         $part = null === $this->text ? null : new TextPart($this->text, $this->textCharset);
         if (null !== $htmlPart) {
@@ -458,14 +464,8 @@ class Email extends Message
         $htmlPart = null;
         $html = $this->html;
         if (null !== $this->html) {
-            if (\is_resource($html)) {
-                if (stream_get_meta_data($html)['seekable'] ?? false) {
-                    rewind($html);
-                }
-
-                $html = stream_get_contents($html);
-            }
             $htmlPart = new TextPart($html, $this->htmlCharset, 'html');
+            $html = $htmlPart->getBody();
             preg_match_all('(<img\s+[^>]*src\s*=\s*(?:([\'"])cid:([^"]+)\\1|cid:([^>\s]+)))i', $html, $names);
             $names = array_filter(array_unique(array_merge($names[2], $names[3])));
         }
@@ -517,29 +517,29 @@ class Email extends Message
     /**
      * @return $this
      */
-    private function setHeaderBody(string $type, string $name, $body)
+    private function setHeaderBody(string $type, string $name, $body): object
     {
         $this->getHeaders()->setHeaderBody($type, $name, $body);
 
         return $this;
     }
 
-    private function addListAddressHeaderBody($name, array $addresses)
+    private function addListAddressHeaderBody(string $name, array $addresses)
     {
-        if (!$to = $this->getHeaders()->get($name)) {
+        if (!$header = $this->getHeaders()->get($name)) {
             return $this->setListAddressHeaderBody($name, $addresses);
         }
-        $to->addAddresses(Address::createArray($addresses));
+        $header->addAddresses(Address::createArray($addresses));
 
         return $this;
     }
 
-    private function setListAddressHeaderBody($name, array $addresses)
+    private function setListAddressHeaderBody(string $name, array $addresses)
     {
         $addresses = Address::createArray($addresses);
         $headers = $this->getHeaders();
-        if ($to = $headers->get($name)) {
-            $to->setAddresses($addresses);
+        if ($header = $headers->get($name)) {
+            $header->setAddresses($addresses);
         } else {
             $headers->addMailboxListHeader($name, $addresses);
         }
@@ -553,28 +553,16 @@ class Email extends Message
     public function __serialize(): array
     {
         if (\is_resource($this->text)) {
-            if (stream_get_meta_data($this->text)['seekable'] ?? false) {
-                rewind($this->text);
-            }
-
-            $this->text = stream_get_contents($this->text);
+            $this->text = (new TextPart($this->text))->getBody();
         }
 
         if (\is_resource($this->html)) {
-            if (stream_get_meta_data($this->html)['seekable'] ?? false) {
-                rewind($this->html);
-            }
-
-            $this->html = stream_get_contents($this->html);
+            $this->html = (new TextPart($this->html))->getBody();
         }
 
         foreach ($this->attachments as $i => $attachment) {
             if (isset($attachment['body']) && \is_resource($attachment['body'])) {
-                if (stream_get_meta_data($attachment['body'])['seekable'] ?? false) {
-                    rewind($attachment['body']);
-                }
-
-                $this->attachments[$i]['body'] = stream_get_contents($attachment['body']);
+                $this->attachments[$i]['body'] = (new TextPart($attachment['body']))->getBody();
             }
         }
 
diff --git a/vendor/symfony/mime/Encoder/AddressEncoderInterface.php b/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
index 5d6ea3c66a1ad3dbafeaedb92a4b6fdbd21f991d..de477d884f50552900de73aaaa91e334d3c1b844 100644
--- a/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Exception\AddressEncoderException;
 
 /**
  * @author Christian Schmidt
- *
- * @experimental in 4.3
  */
 interface AddressEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/Base64ContentEncoder.php b/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
index e9c352e20e32d35e256854e3ed58a6f8f9533205..440868af70c57ba3d3765f586678e53f667be0ca 100644
--- a/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
+++ b/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Exception\RuntimeException;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class Base64ContentEncoder extends Base64Encoder implements ContentEncoderInterface
 {
@@ -34,11 +32,8 @@ final class Base64ContentEncoder extends Base64Encoder implements ContentEncoder
             throw new RuntimeException('Unable to set the base64 content encoder to the filter.');
         }
 
-        if (stream_get_meta_data($stream)['seekable'] ?? false) {
-            rewind($stream);
-        }
         while (!feof($stream)) {
-            yield fread($stream, 8192);
+            yield fread($stream, 16372);
         }
         stream_filter_remove($filter);
     }
diff --git a/vendor/symfony/mime/Encoder/Base64Encoder.php b/vendor/symfony/mime/Encoder/Base64Encoder.php
index 25dae670b1e137e97d4d1a376792c0a56fab129e..710647857a75ded368c35d4db86af6b134b4a1ab 100644
--- a/vendor/symfony/mime/Encoder/Base64Encoder.php
+++ b/vendor/symfony/mime/Encoder/Base64Encoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 class Base64Encoder implements EncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php b/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
index 8baee5b02ebb2c8d5349b4ed5a801347b3be0ca3..5c06f6d9a6c67b7fb7af76d7247e88e343e9903f 100644
--- a/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
+++ b/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class Base64MimeHeaderEncoder extends Base64Encoder implements MimeHeaderEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/ContentEncoderInterface.php b/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
index b44e1a4a71332c4f625c3306a55acd1521349a3f..a45ad04c2a0d649bfa26ff84fab9a1ad83eaffa4 100644
--- a/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface ContentEncoderInterface extends EncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/EightBitContentEncoder.php b/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
index 94b838ce603f57df97a06db2112b5ae2e6e628cc..82831209eb553140a494d7b4946730cff12a41cf 100644
--- a/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
+++ b/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class EightBitContentEncoder implements ContentEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/EncoderInterface.php b/vendor/symfony/mime/Encoder/EncoderInterface.php
index 3c2ef198e5873741007121b2886509e67f92c01f..bbf6d48866c86d96841dc24f019b619e5bd71534 100644
--- a/vendor/symfony/mime/Encoder/EncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/EncoderInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface EncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/IdnAddressEncoder.php b/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
index 8936047ceb05c38e9e47d87877d1204059d75889..69ab8872ec11a133fe7f6a8ec813dfbfb041bd5a 100644
--- a/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
+++ b/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
@@ -20,13 +20,9 @@ use Symfony\Component\Mime\Exception\AddressEncoderException;
  * SMTP servers.
  *
  * This encoder does not support email addresses with non-ASCII characters in
- * local-part (the substring before @). To send to such addresses, use
- * Utf8AddressEncoder together with SmtpUtf8Handler. Your outbound SMTP server must support
- * the SMTPUTF8 extension.
+ * local-part (the substring before @).
  *
  * @author Christian Schmidt
- *
- * @experimental in 4.3
  */
 final class IdnAddressEncoder implements AddressEncoderInterface
 {
@@ -47,7 +43,7 @@ final class IdnAddressEncoder implements AddressEncoderInterface
             }
 
             if (preg_match('/[^\x00-\x7F]/', $domain)) {
-                $address = sprintf('%s@%s', $local, idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46));
+                $address = sprintf('%s@%s', $local, idn_to_ascii($domain, 0, \INTL_IDNA_VARIANT_UTS46));
             }
         }
 
diff --git a/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php b/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
index f5756650caa8be311bc909d426ee9cae4b4569b1..fff2c782bf5eb747c54066a596e217378167188d 100644
--- a/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface MimeHeaderEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/QpContentEncoder.php b/vendor/symfony/mime/Encoder/QpContentEncoder.php
index ef2de46f0bb85a3d25156136f9082ac3c7fbc38a..4703cc2e68d2ea20e381d013a6db05546190dd0d 100644
--- a/vendor/symfony/mime/Encoder/QpContentEncoder.php
+++ b/vendor/symfony/mime/Encoder/QpContentEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Lars Strojny
- *
- * @experimental in 4.3
  */
 final class QpContentEncoder implements ContentEncoderInterface
 {
@@ -25,10 +23,6 @@ final class QpContentEncoder implements ContentEncoderInterface
         }
 
         // we don't use PHP stream filters here as the content should be small enough
-        if (stream_get_meta_data($stream)['seekable'] ?? false) {
-            rewind($stream);
-        }
-
         yield $this->encodeString(stream_get_contents($stream), 'utf-8', 0, $maxLineLength);
     }
 
diff --git a/vendor/symfony/mime/Encoder/QpEncoder.php b/vendor/symfony/mime/Encoder/QpEncoder.php
index 4ffbaed78e9e43be1c3230d39e3c7bc5eac75883..4f249e069ee9548fa81be3b5095c5ee8e0d9cc3b 100644
--- a/vendor/symfony/mime/Encoder/QpEncoder.php
+++ b/vendor/symfony/mime/Encoder/QpEncoder.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\CharacterStream;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 class QpEncoder implements EncoderInterface
 {
@@ -91,7 +89,7 @@ class QpEncoder implements EncoderInterface
 
     public function __construct()
     {
-        $id = \get_class($this);
+        $id = static::class;
         if (!isset(self::$safeMapShare[$id])) {
             $this->initSafeMap();
             self::$safeMapShare[$id] = $this->safeMap;
diff --git a/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php b/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
index 0413959587bcb46f32f7d87a9d470432fcf8ca5f..d1d38375fade991b0480bb71eda74bbb310c47ed 100644
--- a/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
+++ b/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class QpMimeHeaderEncoder extends QpEncoder implements MimeHeaderEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/Rfc2231Encoder.php b/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
index 4743a7217c95fa131a4ef4ff24129b73e47959d6..aa3e062fafb76b3e68ed111237a5bfea7f6cc053 100644
--- a/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
+++ b/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\CharacterStream;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class Rfc2231Encoder implements EncoderInterface
 {
diff --git a/vendor/symfony/mime/Exception/AddressEncoderException.php b/vendor/symfony/mime/Exception/AddressEncoderException.php
index 73ef7f32228f38095aa5283cb8911dad723039a9..51ee2e06fac3188d3843cb6e1dfe9f41eea80485 100644
--- a/vendor/symfony/mime/Exception/AddressEncoderException.php
+++ b/vendor/symfony/mime/Exception/AddressEncoderException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class AddressEncoderException extends RfcComplianceException
 {
diff --git a/vendor/symfony/mime/Exception/ExceptionInterface.php b/vendor/symfony/mime/Exception/ExceptionInterface.php
index 7dbcdc72b072c5dd5dbb0f5143e08836b401665b..11933900f9834ac7ed181c9b149f4c6d377672b2 100644
--- a/vendor/symfony/mime/Exception/ExceptionInterface.php
+++ b/vendor/symfony/mime/Exception/ExceptionInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface ExceptionInterface extends \Throwable
 {
diff --git a/vendor/symfony/mime/Exception/InvalidArgumentException.php b/vendor/symfony/mime/Exception/InvalidArgumentException.php
index 59d04e234e75028a3578f0e28a35eec3399a9128..e89ebae206564f211b4bf9c947b554906fe378f9 100644
--- a/vendor/symfony/mime/Exception/InvalidArgumentException.php
+++ b/vendor/symfony/mime/Exception/InvalidArgumentException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/Exception/LogicException.php b/vendor/symfony/mime/Exception/LogicException.php
index 07cb0440837f6e0a09629d1b6e235712ad7f4a97..0508ee73c614b082276f55c0432b326ccf13ecce 100644
--- a/vendor/symfony/mime/Exception/LogicException.php
+++ b/vendor/symfony/mime/Exception/LogicException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class LogicException extends \LogicException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/Exception/RfcComplianceException.php b/vendor/symfony/mime/Exception/RfcComplianceException.php
index 5dc4cf5f575537208c23f7796a47fdf00c074c53..26e4a5099bda2dc0890c71fc454a22f04d2b710e 100644
--- a/vendor/symfony/mime/Exception/RfcComplianceException.php
+++ b/vendor/symfony/mime/Exception/RfcComplianceException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class RfcComplianceException extends \InvalidArgumentException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/Exception/RuntimeException.php b/vendor/symfony/mime/Exception/RuntimeException.php
index 84b11fba6ffae51635119a6d27ee6aee7dd0ded0..fb018b00652773844e4776647606ff7706e471e3 100644
--- a/vendor/symfony/mime/Exception/RuntimeException.php
+++ b/vendor/symfony/mime/Exception/RuntimeException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class RuntimeException extends \RuntimeException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php b/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
index a25ebe4d5cdcd64fa6bf3ebce1ebd4ed99b4d6f7..fe1e0cdee0b55eb44925ad7c91e280c793ae1e83 100644
--- a/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
+++ b/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\LogicException;
  * Guesses the MIME type with the binary "file" (only available on *nix).
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @experimental in 4.3
  */
 class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
 {
@@ -33,7 +31,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
      *
      * @param string $cmd The command to run to get the MIME type of a file
      */
-    public function __construct(string $cmd = 'file -b --mime %s 2>/dev/null')
+    public function __construct(string $cmd = 'file -b --mime -- %s 2>/dev/null')
     {
         $this->cmd = $cmd;
     }
@@ -76,7 +74,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
         ob_start();
 
         // need to use --mime instead of -i. see #6641
-        passthru(sprintf($this->cmd, escapeshellarg($path)), $return);
+        passthru(sprintf($this->cmd, escapeshellarg((0 === strpos($path, '-') ? './' : '').$path)), $return);
         if ($return > 0) {
             ob_end_clean();
 
@@ -85,7 +83,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
 
         $type = trim(ob_get_clean());
 
-        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\.]+)#i', $type, $match)) {
+        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\+\.]+)#i', $type, $match)) {
             // it's not a type, but an error message
             return null;
         }
diff --git a/vendor/symfony/mime/FileinfoMimeTypeGuesser.php b/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
index 81c62ee2013ac73d0c1083a3fae7cc55bcf275f5..c6c7559af10040c6453e036f81a93b321363d379 100644
--- a/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
+++ b/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\LogicException;
  * Guesses the MIME type using the PECL extension FileInfo.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @experimental in 4.3
  */
 class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
 {
@@ -56,10 +54,16 @@ class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
             throw new LogicException(sprintf('The "%s" guesser is not supported.', __CLASS__));
         }
 
-        if (false === $finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) {
+        if (false === $finfo = new \finfo(\FILEINFO_MIME_TYPE, $this->magicFile)) {
             return null;
         }
+        $mimeType = $finfo->file($path);
+
+        if ($mimeType && 0 === (\strlen($mimeType) % 2)) {
+            $mimeStart = substr($mimeType, 0, \strlen($mimeType) >> 1);
+            $mimeType = $mimeStart.$mimeStart === $mimeType ? $mimeStart : $mimeType;
+        }
 
-        return $finfo->file($path);
+        return $mimeType;
     }
 }
diff --git a/vendor/symfony/mime/Header/AbstractHeader.php b/vendor/symfony/mime/Header/AbstractHeader.php
index 517ee8dfb23812657bfdda6b5f2035c125fa92a5..e93b87aeb72df4ac255af48e68ffa0e1b7e4e859 100644
--- a/vendor/symfony/mime/Header/AbstractHeader.php
+++ b/vendor/symfony/mime/Header/AbstractHeader.php
@@ -17,8 +17,6 @@ use Symfony\Component\Mime\Encoder\QpMimeHeaderEncoder;
  * An abstract base MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 abstract class AbstractHeader implements HeaderInterface
 {
@@ -222,7 +220,7 @@ abstract class AbstractHeader implements HeaderInterface
      */
     protected function generateTokenLines(string $token): array
     {
-        return preg_split('~(\r\n)~', $token, -1, PREG_SPLIT_DELIM_CAPTURE);
+        return preg_split('~(\r\n)~', $token, -1, \PREG_SPLIT_DELIM_CAPTURE);
     }
 
     /**
diff --git a/vendor/symfony/mime/Header/DateHeader.php b/vendor/symfony/mime/Header/DateHeader.php
index 1e1a979569448033df27c4a1fa3590c26aec3753..a7385d4ce21a24d16ee48a607417f565fc77ca74 100644
--- a/vendor/symfony/mime/Header/DateHeader.php
+++ b/vendor/symfony/mime/Header/DateHeader.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime\Header;
  * A Date MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class DateHeader extends AbstractHeader
 {
@@ -37,10 +35,7 @@ final class DateHeader extends AbstractHeader
         $this->setDateTime($body);
     }
 
-    /**
-     * @return \DateTimeImmutable
-     */
-    public function getBody()
+    public function getBody(): \DateTimeImmutable
     {
         return $this->getDateTime();
     }
diff --git a/vendor/symfony/mime/Header/HeaderInterface.php b/vendor/symfony/mime/Header/HeaderInterface.php
index b0638bca40a3b55e55fef8e0bc679efbcfcda6b7..4546947c78736ef35d13db91045a8926951acccf 100644
--- a/vendor/symfony/mime/Header/HeaderInterface.php
+++ b/vendor/symfony/mime/Header/HeaderInterface.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime\Header;
  * A MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface HeaderInterface
 {
diff --git a/vendor/symfony/mime/Header/Headers.php b/vendor/symfony/mime/Header/Headers.php
index 57f02b25a3ef04c3a1326317267efdf62367a605..57c99c41fce6023c6ed0ac3ceb15a81da44acb7c 100644
--- a/vendor/symfony/mime/Header/Headers.php
+++ b/vendor/symfony/mime/Header/Headers.php
@@ -13,14 +13,11 @@ namespace Symfony\Component\Mime\Header;
 
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Exception\LogicException;
-use Symfony\Component\Mime\NamedAddress;
 
 /**
  * A collection of headers.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class Headers
 {
@@ -62,21 +59,21 @@ final class Headers
     }
 
     /**
-     * @param (NamedAddress|Address|string)[] $addresses
+     * @param (Address|string)[] $addresses
      *
      * @return $this
      */
-    public function addMailboxListHeader(string $name, array $addresses)
+    public function addMailboxListHeader(string $name, array $addresses): self
     {
         return $this->add(new MailboxListHeader($name, Address::createArray($addresses)));
     }
 
     /**
-     * @param NamedAddress|Address|string $address
+     * @param Address|string $address
      *
      * @return $this
      */
-    public function addMailboxHeader(string $name, $address)
+    public function addMailboxHeader(string $name, $address): self
     {
         return $this->add(new MailboxHeader($name, Address::create($address)));
     }
@@ -86,7 +83,7 @@ final class Headers
      *
      * @return $this
      */
-    public function addIdHeader(string $name, $ids)
+    public function addIdHeader(string $name, $ids): self
     {
         return $this->add(new IdentificationHeader($name, $ids));
     }
@@ -96,7 +93,7 @@ final class Headers
      *
      * @return $this
      */
-    public function addPathHeader(string $name, $path)
+    public function addPathHeader(string $name, $path): self
     {
         return $this->add(new PathHeader($name, $path instanceof Address ? $path : new Address($path)));
     }
@@ -104,7 +101,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function addDateHeader(string $name, \DateTimeInterface $dateTime)
+    public function addDateHeader(string $name, \DateTimeInterface $dateTime): self
     {
         return $this->add(new DateHeader($name, $dateTime));
     }
@@ -112,7 +109,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function addTextHeader(string $name, string $value)
+    public function addTextHeader(string $name, string $value): self
     {
         return $this->add(new UnstructuredHeader($name, $value));
     }
@@ -120,7 +117,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function addParameterizedHeader(string $name, string $value, array $params = [])
+    public function addParameterizedHeader(string $name, string $value, array $params = []): self
     {
         return $this->add(new ParameterizedHeader($name, $value, $params));
     }
@@ -133,7 +130,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function add(HeaderInterface $header)
+    public function add(HeaderInterface $header): self
     {
         static $map = [
             'date' => DateHeader::class,
@@ -153,7 +150,7 @@ final class Headers
         $name = strtolower($header->getName());
 
         if (isset($map[$name]) && !$header instanceof $map[$name]) {
-            throw new LogicException(sprintf('The "%s" header must be an instance of "%s" (got "%s").', $header->getName(), $map[$name], \get_class($header)));
+            throw new LogicException(sprintf('The "%s" header must be an instance of "%s" (got "%s").', $header->getName(), $map[$name], get_debug_type($header)));
         }
 
         if (\in_array($name, self::$uniqueHeaders, true) && isset($this->headers[$name]) && \count($this->headers[$name]) > 0) {
diff --git a/vendor/symfony/mime/Header/IdentificationHeader.php b/vendor/symfony/mime/Header/IdentificationHeader.php
index 0695b688da24737ab3ee24907810df6a481d2df8..8a94574e5c64a34936f0f3fc812b864234979816 100644
--- a/vendor/symfony/mime/Header/IdentificationHeader.php
+++ b/vendor/symfony/mime/Header/IdentificationHeader.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\RfcComplianceException;
  * An ID MIME Header for something like Message-ID or Content-ID (one or more addresses).
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class IdentificationHeader extends AbstractHeader
 {
@@ -46,10 +44,7 @@ final class IdentificationHeader extends AbstractHeader
         $this->setId($body);
     }
 
-    /**
-     * @return array
-     */
-    public function getBody()
+    public function getBody(): array
     {
         return $this->getIds();
     }
diff --git a/vendor/symfony/mime/Header/MailboxHeader.php b/vendor/symfony/mime/Header/MailboxHeader.php
index c6649232638060e9ff112c00ac3863ad62bd2c1a..b58c8252fd7c3cdd5fbd885e9c85eee43304fbb7 100644
--- a/vendor/symfony/mime/Header/MailboxHeader.php
+++ b/vendor/symfony/mime/Header/MailboxHeader.php
@@ -13,14 +13,11 @@ namespace Symfony\Component\Mime\Header;
 
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Exception\RfcComplianceException;
-use Symfony\Component\Mime\NamedAddress;
 
 /**
  * A Mailbox MIME Header for something like Sender (one named address).
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MailboxHeader extends AbstractHeader
 {
@@ -45,10 +42,8 @@ final class MailboxHeader extends AbstractHeader
 
     /**
      * @throws RfcComplianceException
-     *
-     * @return Address
      */
-    public function getBody()
+    public function getBody(): Address
     {
         return $this->getAddress();
     }
@@ -69,7 +64,7 @@ final class MailboxHeader extends AbstractHeader
     public function getBodyAsString(): string
     {
         $str = $this->address->getEncodedAddress();
-        if ($this->address instanceof NamedAddress && $name = $this->address->getName()) {
+        if ($name = $this->address->getName()) {
             $str = $this->createPhrase($this, $name, $this->getCharset(), true).' <'.$str.'>';
         }
 
diff --git a/vendor/symfony/mime/Header/MailboxListHeader.php b/vendor/symfony/mime/Header/MailboxListHeader.php
index 51af2da87caab82555e626570664f433b6d239af..1d00fdb12c3da9f69129dac39c50ca61fe74f0c5 100644
--- a/vendor/symfony/mime/Header/MailboxListHeader.php
+++ b/vendor/symfony/mime/Header/MailboxListHeader.php
@@ -13,21 +13,18 @@ namespace Symfony\Component\Mime\Header;
 
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Exception\RfcComplianceException;
-use Symfony\Component\Mime\NamedAddress;
 
 /**
  * A Mailbox list MIME Header for something like From, To, Cc, and Bcc (one or more named addresses).
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class MailboxListHeader extends AbstractHeader
 {
     private $addresses = [];
 
     /**
-     * @param (NamedAddress|Address)[] $addresses
+     * @param Address[] $addresses
      */
     public function __construct(string $name, array $addresses)
     {
@@ -37,7 +34,7 @@ final class MailboxListHeader extends AbstractHeader
     }
 
     /**
-     * @param (NamedAddress|Address)[] $body
+     * @param Address[] $body
      *
      * @throws RfcComplianceException
      */
@@ -49,9 +46,9 @@ final class MailboxListHeader extends AbstractHeader
     /**
      * @throws RfcComplianceException
      *
-     * @return (NamedAddress|Address)[]
+     * @return Address[]
      */
-    public function getBody()
+    public function getBody(): array
     {
         return $this->getAddresses();
     }
@@ -59,7 +56,7 @@ final class MailboxListHeader extends AbstractHeader
     /**
      * Sets a list of addresses to be shown in this Header.
      *
-     * @param (NamedAddress|Address)[] $addresses
+     * @param Address[] $addresses
      *
      * @throws RfcComplianceException
      */
@@ -72,7 +69,7 @@ final class MailboxListHeader extends AbstractHeader
     /**
      * Sets a list of addresses to be shown in this Header.
      *
-     * @param (NamedAddress|Address)[] $addresses
+     * @param Address[] $addresses
      *
      * @throws RfcComplianceException
      */
@@ -92,7 +89,7 @@ final class MailboxListHeader extends AbstractHeader
     }
 
     /**
-     * @return (NamedAddress|Address)[]
+     * @return Address[]
      */
     public function getAddresses(): array
     {
@@ -111,8 +108,8 @@ final class MailboxListHeader extends AbstractHeader
         $strings = [];
         foreach ($this->addresses as $address) {
             $str = $address->getEncodedAddress();
-            if ($address instanceof NamedAddress && $name = $address->getName()) {
-                $str = $this->createPhrase($this, $name, $this->getCharset(), empty($strings)).' <'.$str.'>';
+            if ($name = $address->getName()) {
+                $str = $this->createPhrase($this, $name, $this->getCharset(), !$strings).' <'.$str.'>';
             }
             $strings[] = $str;
         }
diff --git a/vendor/symfony/mime/Header/ParameterizedHeader.php b/vendor/symfony/mime/Header/ParameterizedHeader.php
index 811a969b1b040d6ca696c41956940f7d77735af0..9d3b905a28c16e03904e5ee1e610d0a20d6da886 100644
--- a/vendor/symfony/mime/Header/ParameterizedHeader.php
+++ b/vendor/symfony/mime/Header/ParameterizedHeader.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Encoder\Rfc2231Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class ParameterizedHeader extends UnstructuredHeader
 {
@@ -160,7 +158,8 @@ final class ParameterizedHeader extends UnstructuredHeader
      */
     private function getEndOfParameterValue(string $value, bool $encoded = false, bool $firstLine = false): string
     {
-        if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
+        $forceHttpQuoting = 'content-disposition' === strtolower($this->getName()) && 'form-data' === $this->getValue();
+        if ($forceHttpQuoting || !preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
             $value = '"'.$value.'"';
         }
         $prepend = '=';
diff --git a/vendor/symfony/mime/Header/PathHeader.php b/vendor/symfony/mime/Header/PathHeader.php
index 6d16500a18a2298503cde524afb0d8000f4fa822..5101ad0f9f410783197b290c78fa4880d8cd9a7a 100644
--- a/vendor/symfony/mime/Header/PathHeader.php
+++ b/vendor/symfony/mime/Header/PathHeader.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\RfcComplianceException;
  * A Path Header, such a Return-Path (one address).
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class PathHeader extends AbstractHeader
 {
@@ -42,10 +40,7 @@ final class PathHeader extends AbstractHeader
         $this->setAddress($body);
     }
 
-    /**
-     * @return Address
-     */
-    public function getBody()
+    public function getBody(): Address
     {
         return $this->getAddress();
     }
diff --git a/vendor/symfony/mime/Header/UnstructuredHeader.php b/vendor/symfony/mime/Header/UnstructuredHeader.php
index afb96152570f0ba235dff5abf09057e7c95a8bd9..2085ddfde1822000d3089e4533208cc320b36f79 100644
--- a/vendor/symfony/mime/Header/UnstructuredHeader.php
+++ b/vendor/symfony/mime/Header/UnstructuredHeader.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime\Header;
  * A Simple MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 class UnstructuredHeader extends AbstractHeader
 {
diff --git a/vendor/symfony/mime/LICENSE b/vendor/symfony/mime/LICENSE
index 9a9a61b1c6c105466af6db0736c46666a6da7d21..d53be68356dbf7f546ee467efd26e96ed4e84174 100644
--- a/vendor/symfony/mime/LICENSE
+++ b/vendor/symfony/mime/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2019 Fabien Potencier
+Copyright (c) 2010-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/mime/Message.php b/vendor/symfony/mime/Message.php
index 4d6af1c94d4b48d582ba6b9684d7dca956308736..b7ddb76bc780e1156cf40585037d872ceb81063f 100644
--- a/vendor/symfony/mime/Message.php
+++ b/vendor/symfony/mime/Message.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Part\TextPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class Message extends RawMessage
 {
@@ -34,9 +32,7 @@ class Message extends RawMessage
 
     public function __clone()
     {
-        if (null !== $this->headers) {
-            $this->headers = clone $this->headers;
-        }
+        $this->headers = clone $this->headers;
 
         if (null !== $this->body) {
             $this->body = clone $this->body;
@@ -78,7 +74,10 @@ class Message extends RawMessage
         $headers = clone $this->headers;
 
         if (!$headers->has('From')) {
-            throw new LogicException('An email must have a "From" header.');
+            if (!$headers->has('Sender')) {
+                throw new LogicException('An email must have a "From" or a "Sender" header.');
+            }
+            $headers->addMailboxListHeader('From', [$headers->get('Sender')->getAddress()]);
         }
 
         $headers->addTextHeader('MIME-Version', '1.0');
@@ -88,16 +87,12 @@ class Message extends RawMessage
         }
 
         // determine the "real" sender
-        $senders = $headers->get('From')->getAddresses();
-        $sender = $senders[0];
-        if ($headers->has('Sender')) {
-            $sender = $headers->get('Sender')->getAddress();
-        } elseif (\count($senders) > 1) {
-            $headers->addMailboxHeader('Sender', $sender);
+        if (!$headers->has('Sender') && \count($froms = $headers->get('From')->getAddresses()) > 1) {
+            $headers->addMailboxHeader('Sender', $froms[0]);
         }
 
         if (!$headers->has('Message-ID')) {
-            $headers->addIdHeader('Message-ID', $this->generateMessageId($sender->getAddress()));
+            $headers->addIdHeader('Message-ID', $this->generateMessageId());
         }
 
         // remove the Bcc field which should NOT be part of the sent message
@@ -125,9 +120,30 @@ class Message extends RawMessage
         yield from $body->toIterable();
     }
 
-    private function generateMessageId(string $email): string
+    public function ensureValidity()
     {
-        return bin2hex(random_bytes(16)).strstr($email, '@');
+        if (!$this->headers->has('To') && !$this->headers->has('Cc') && !$this->headers->has('Bcc')) {
+            throw new LogicException('An email must have a "To", "Cc", or "Bcc" header.');
+        }
+
+        if (!$this->headers->has('From') && !$this->headers->has('Sender')) {
+            throw new LogicException('An email must have a "From" or a "Sender" header.');
+        }
+
+        parent::ensureValidity();
+    }
+
+    public function generateMessageId(): string
+    {
+        if ($this->headers->has('Sender')) {
+            $sender = $this->headers->get('Sender')->getAddress();
+        } elseif ($this->headers->has('From')) {
+            $sender = $this->headers->get('From')->getAddresses()[0];
+        } else {
+            throw new LogicException('An email must have a "From" or a "Sender" header.');
+        }
+
+        return bin2hex(random_bytes(16)).strstr($sender->getAddress(), '@');
     }
 
     public function __serialize(): array
diff --git a/vendor/symfony/mime/MessageConverter.php b/vendor/symfony/mime/MessageConverter.php
index b139f1c086db089b3e3da9aef4f23e3412ce1727..788a5ff99663260d675318d567d2369f3984d5b9 100644
--- a/vendor/symfony/mime/MessageConverter.php
+++ b/vendor/symfony/mime/MessageConverter.php
@@ -20,8 +20,6 @@ use Symfony\Component\Mime\Part\TextPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MessageConverter
 {
@@ -57,13 +55,13 @@ final class MessageConverter
             } elseif ($parts[0] instanceof TextPart) {
                 $email = self::createEmailFromTextPart($message, $parts[0]);
             } else {
-                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
             }
 
             return self::attachParts($email, \array_slice($parts, 1));
         }
 
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
     }
 
     private static function createEmailFromTextPart(Message $message, TextPart $part): Email
@@ -75,7 +73,7 @@ final class MessageConverter
             return (new Email(clone $message->getHeaders()))->html($part->getBody(), $part->getPreparedHeaders()->getHeaderParameter('Content-Type', 'charset') ?: 'utf-8');
         }
 
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
     }
 
     private static function createEmailFromAlternativePart(Message $message, AlternativePart $part): Email
@@ -92,7 +90,7 @@ final class MessageConverter
             ;
         }
 
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
     }
 
     private static function createEmailFromRelatedPart(Message $message, RelatedPart $part): Email
@@ -103,7 +101,7 @@ final class MessageConverter
         } elseif ($parts[0] instanceof TextPart) {
             $email = self::createEmailFromTextPart($message, $parts[0]);
         } else {
-            throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+            throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
         }
 
         return self::attachParts($email, \array_slice($parts, 1));
@@ -113,7 +111,7 @@ final class MessageConverter
     {
         foreach ($parts as $part) {
             if (!$part instanceof DataPart) {
-                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($email)));
+                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($email)));
             }
 
             $headers = $part->getPreparedHeaders();
diff --git a/vendor/symfony/mime/MimeTypeGuesserInterface.php b/vendor/symfony/mime/MimeTypeGuesserInterface.php
index b7d27f53e2029d63b444e042b04cb4bc97516061..68b05055e6fbf9c859644f07d7848c4fa9bd1154 100644
--- a/vendor/symfony/mime/MimeTypeGuesserInterface.php
+++ b/vendor/symfony/mime/MimeTypeGuesserInterface.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime;
  * Guesses the MIME type of a file.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface MimeTypeGuesserInterface
 {
diff --git a/vendor/symfony/mime/MimeTypes.php b/vendor/symfony/mime/MimeTypes.php
index 02e8fe50b3429600c401be4e1ac3962da981bea6..d6260b59eadc7682d70d4efcfaf12b8eda99cf29 100644
--- a/vendor/symfony/mime/MimeTypes.php
+++ b/vendor/symfony/mime/MimeTypes.php
@@ -33,8 +33,6 @@ use Symfony\Component\Mime\Exception\LogicException;
  *     $guesser->registerGuesser(new FileinfoMimeTypeGuesser('/path/to/magic/file'));
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MimeTypes implements MimeTypesInterface
 {
@@ -53,7 +51,7 @@ final class MimeTypes implements MimeTypesInterface
             $this->extensions[$mimeType] = $extensions;
 
             foreach ($extensions as $extension) {
-                $this->mimeTypes[$extension] = $mimeType;
+                $this->mimeTypes[$extension][] = $mimeType;
             }
         }
         $this->registerGuesser(new FileBinaryMimeTypeGuesser());
@@ -139,7 +137,7 @@ final class MimeTypes implements MimeTypesInterface
         }
 
         if (!$this->isGuesserSupported()) {
-            throw new LogicException('Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?).');
+            throw new LogicException('Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?).');
         }
 
         return null;
@@ -528,6 +526,7 @@ final class MimeTypes implements MimeTypesInterface
         'application/vnd.ms-ims' => ['ims'],
         'application/vnd.ms-lrm' => ['lrm'],
         'application/vnd.ms-officetheme' => ['thmx'],
+        'application/vnd.ms-outlook' => ['msg'],
         'application/vnd.ms-pki.seccat' => ['cat'],
         'application/vnd.ms-pki.stl' => ['stl'],
         'application/vnd.ms-powerpoint' => ['ppt', 'pps', 'pot', 'ppz'],
@@ -1115,7 +1114,7 @@ final class MimeTypes implements MimeTypesInterface
         'audio/mp2' => ['mp2'],
         'audio/mp3' => ['mp3', 'mpga'],
         'audio/mp4' => ['m4a', 'mp4a', 'f4a'],
-        'audio/mpeg' => ['mpga', 'mp2', 'mp2a', 'mp3', 'm2a', 'm3a'],
+        'audio/mpeg' => ['mp3', 'mpga', 'mp2', 'mp2a', 'm2a', 'm3a'],
         'audio/mpegurl' => ['m3u', 'm3u8', 'vlc'],
         'audio/ogg' => ['oga', 'ogg', 'spx', 'opus'],
         'audio/prs.sid' => ['sid', 'psid'],
@@ -1253,6 +1252,7 @@ final class MimeTypes implements MimeTypesInterface
         'image/psd' => ['psd'],
         'image/rle' => ['rle'],
         'image/sgi' => ['sgi'],
+        'image/svg' => ['svg'],
         'image/svg+xml' => ['svg', 'svgz'],
         'image/svg+xml-compressed' => ['svgz'],
         'image/tiff' => ['tiff', 'tif'],
@@ -2375,6 +2375,7 @@ final class MimeTypes implements MimeTypesInterface
         'mseed' => ['application/vnd.fdsn.mseed'],
         'mseq' => ['application/vnd.mseq'],
         'msf' => ['application/vnd.epson.msf'],
+        'msg' => ['application/vnd.ms-outlook'],
         'msh' => ['model/mesh'],
         'msi' => ['application/x-msdownload', 'application/x-msi'],
         'msl' => ['application/vnd.mobius.msl'],
@@ -2810,7 +2811,7 @@ final class MimeTypes implements MimeTypesInterface
         'sv4crc' => ['application/x-sv4crc'],
         'svc' => ['application/vnd.dvb.service'],
         'svd' => ['application/vnd.svd'],
-        'svg' => ['image/svg+xml'],
+        'svg' => ['image/svg+xml', 'image/svg'],
         'svgz' => ['image/svg+xml', 'image/svg+xml-compressed'],
         'svh' => ['text/x-svhdr'],
         'swa' => ['application/x-director'],
diff --git a/vendor/symfony/mime/MimeTypesInterface.php b/vendor/symfony/mime/MimeTypesInterface.php
index bdf20429a1cd6279e28a3bd567bd5188c4f79df9..9fbd2cc2da24c72a523c981d25cc563b6db5b790 100644
--- a/vendor/symfony/mime/MimeTypesInterface.php
+++ b/vendor/symfony/mime/MimeTypesInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface MimeTypesInterface extends MimeTypeGuesserInterface
 {
diff --git a/vendor/symfony/mime/NamedAddress.php b/vendor/symfony/mime/NamedAddress.php
deleted file mode 100644
index b13fd73526d5f5db0fa71fdd2bc9df69ae87e78f..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/NamedAddress.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
- */
-final class NamedAddress extends Address
-{
-    private $name;
-
-    public function __construct(string $address, string $name)
-    {
-        parent::__construct($address);
-
-        $this->name = trim(str_replace(["\n", "\r"], '', $name));
-    }
-
-    public function getName(): string
-    {
-        return $this->name;
-    }
-
-    public function getEncodedNamedAddress(): string
-    {
-        return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
-    }
-
-    public function toString(): string
-    {
-        return $this->getEncodedNamedAddress();
-    }
-}
diff --git a/vendor/symfony/mime/Part/AbstractMultipartPart.php b/vendor/symfony/mime/Part/AbstractMultipartPart.php
index 34a94d25bc9491a5823e8e3d8003e3111f8067ab..685d250627e432f1ef53ba04a3cce465e83934ae 100644
--- a/vendor/symfony/mime/Part/AbstractMultipartPart.php
+++ b/vendor/symfony/mime/Part/AbstractMultipartPart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Header\Headers;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 abstract class AbstractMultipartPart extends AbstractPart
 {
@@ -76,10 +74,24 @@ abstract class AbstractMultipartPart extends AbstractPart
         yield '--'.$this->getBoundary()."--\r\n";
     }
 
+    public function asDebugString(): string
+    {
+        $str = parent::asDebugString();
+        foreach ($this->getParts() as $part) {
+            $lines = explode("\n", $part->asDebugString());
+            $str .= "\n  â”” ".array_shift($lines);
+            foreach ($lines as $line) {
+                $str .= "\n  |".$line;
+            }
+        }
+
+        return $str;
+    }
+
     private function getBoundary(): string
     {
         if (null === $this->boundary) {
-            $this->boundary = '_=_symfony_'.time().'_'.bin2hex(random_bytes(16)).'_=_';
+            $this->boundary = strtr(base64_encode(random_bytes(6)), '+/', '-_');
         }
 
         return $this->boundary;
diff --git a/vendor/symfony/mime/Part/AbstractPart.php b/vendor/symfony/mime/Part/AbstractPart.php
index 29eaa1ebfdc326f079e4a70712644116390a4230..93892d9df6eecfd5d2a7b0dde3f6ac4906fea8b1 100644
--- a/vendor/symfony/mime/Part/AbstractPart.php
+++ b/vendor/symfony/mime/Part/AbstractPart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Header\Headers;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 abstract class AbstractPart
 {
@@ -52,6 +50,11 @@ abstract class AbstractPart
         yield from $this->bodyToIterable();
     }
 
+    public function asDebugString(): string
+    {
+        return $this->getMediaType().'/'.$this->getMediaSubtype();
+    }
+
     abstract public function bodyToString(): string;
 
     abstract public function bodyToIterable(): iterable;
diff --git a/vendor/symfony/mime/Part/DataPart.php b/vendor/symfony/mime/Part/DataPart.php
index 1cfb1e69b08d056b84dc7d52ab5e4f658df50fc3..5d1d91061b35f460b2782398340318e45d3f4656 100644
--- a/vendor/symfony/mime/Part/DataPart.php
+++ b/vendor/symfony/mime/Part/DataPart.php
@@ -17,8 +17,6 @@ use Symfony\Component\Mime\MimeTypes;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class DataPart extends TextPart
 {
@@ -58,8 +56,12 @@ class DataPart extends TextPart
             $contentType = self::$mimeTypes->getMimeTypes($ext)[0] ?? 'application/octet-stream';
         }
 
+        if (false === is_readable($path)) {
+            throw new InvalidArgumentException(sprintf('Path "%s" is not readable.', $path));
+        }
+
         if (false === $handle = @fopen($path, 'r', false)) {
-            throw new InvalidArgumentException(sprintf('Unable to open path "%s"', $path));
+            throw new InvalidArgumentException(sprintf('Unable to open path "%s".', $path));
         }
         $p = new self($handle, $name ?: basename($path), $contentType);
         $p->handle = $handle;
@@ -105,6 +107,16 @@ class DataPart extends TextPart
         return $headers;
     }
 
+    public function asDebugString(): string
+    {
+        $str = parent::asDebugString();
+        if (null !== $this->filename) {
+            $str .= ' filename: '.$this->filename;
+        }
+
+        return $str;
+    }
+
     private function generateContentId(): string
     {
         return bin2hex(random_bytes(16)).'@symfony';
@@ -117,6 +129,9 @@ class DataPart extends TextPart
         }
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         // converts the body to a string
diff --git a/vendor/symfony/mime/Part/MessagePart.php b/vendor/symfony/mime/Part/MessagePart.php
index 64a53404220d0368b980f7fba9d1d0afc9d51ab6..1b5c23e2bc41182b56e0a94aed1b96fff9412fc0 100644
--- a/vendor/symfony/mime/Part/MessagePart.php
+++ b/vendor/symfony/mime/Part/MessagePart.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\RawMessage;
  * @final
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class MessagePart extends DataPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/AlternativePart.php b/vendor/symfony/mime/Part/Multipart/AlternativePart.php
index ad316a490a92a820271b218392c583c5861faad1..fd75423476296567422637af293fef330b89c144 100644
--- a/vendor/symfony/mime/Part/Multipart/AlternativePart.php
+++ b/vendor/symfony/mime/Part/Multipart/AlternativePart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Part\AbstractMultipartPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class AlternativePart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/DigestPart.php b/vendor/symfony/mime/Part/Multipart/DigestPart.php
index 6199e5b8dba76eab955fd42e76e6e08b8c4367de..27537f15b9791bbe95c4ad0875997178c1c45322 100644
--- a/vendor/symfony/mime/Part/Multipart/DigestPart.php
+++ b/vendor/symfony/mime/Part/Multipart/DigestPart.php
@@ -16,8 +16,6 @@ use Symfony\Component\Mime\Part\MessagePart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class DigestPart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/FormDataPart.php b/vendor/symfony/mime/Part/Multipart/FormDataPart.php
index 75d69a88a08fc34f1a0bb859a133f54122796d42..9e3c9a2a852a8b86deea1c3be5f1d19f116c2738 100644
--- a/vendor/symfony/mime/Part/Multipart/FormDataPart.php
+++ b/vendor/symfony/mime/Part/Multipart/FormDataPart.php
@@ -20,8 +20,6 @@ use Symfony\Component\Mime\Part\TextPart;
  * Implements RFC 7578.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class FormDataPart extends AbstractMultipartPart
 {
@@ -36,13 +34,13 @@ final class FormDataPart extends AbstractMultipartPart
 
         foreach ($fields as $name => $value) {
             if (!\is_string($value) && !\is_array($value) && !$value instanceof TextPart) {
-                throw new InvalidArgumentException(sprintf('A form field value can only be a string, an array, or an instance of TextPart ("%s" given).', \is_object($value) ? \get_class($value) : \gettype($value)));
+                throw new InvalidArgumentException(sprintf('A form field value can only be a string, an array, or an instance of TextPart ("%s" given).', get_debug_type($value)));
             }
 
             $this->fields[$name] = $value;
         }
         // HTTP does not support \r\n in header values
-        $this->getHeaders()->setMaxLineLength(PHP_INT_MAX);
+        $this->getHeaders()->setMaxLineLength(\PHP_INT_MAX);
     }
 
     public function getMediaSubtype(): string
@@ -58,16 +56,25 @@ final class FormDataPart extends AbstractMultipartPart
     private function prepareFields(array $fields): array
     {
         $values = [];
-        array_walk_recursive($fields, function ($item, $key) use (&$values) {
-            if (!\is_array($item)) {
-                $values[] = $this->preparePart($key, $item);
+
+        $prepare = function ($item, $key, $root = null) use (&$values, &$prepare) {
+            $fieldName = $root ? sprintf('%s[%s]', $root, $key) : $key;
+
+            if (\is_array($item)) {
+                array_walk($item, $prepare, $fieldName);
+
+                return;
             }
-        });
+
+            $values[] = $this->preparePart($fieldName, $item);
+        };
+
+        array_walk($fields, $prepare);
 
         return $values;
     }
 
-    private function preparePart($name, $value): TextPart
+    private function preparePart(string $name, $value): TextPart
     {
         if (\is_string($value)) {
             return $this->configurePart($name, new TextPart($value, 'utf-8', 'plain', '8bit'));
@@ -88,7 +95,7 @@ final class FormDataPart extends AbstractMultipartPart
         $part->setDisposition('form-data');
         $part->setName($name);
         // HTTP does not support \r\n in header values
-        $part->getHeaders()->setMaxLineLength(PHP_INT_MAX);
+        $part->getHeaders()->setMaxLineLength(\PHP_INT_MAX);
         $r->setValue($part, '8bit');
 
         return $part;
diff --git a/vendor/symfony/mime/Part/Multipart/MixedPart.php b/vendor/symfony/mime/Part/Multipart/MixedPart.php
index eaa869fbeea897ba2e11487e520c6018cbb1ad74..c8d7028cdd94a92b30727b7e1c2e35346d6d24a2 100644
--- a/vendor/symfony/mime/Part/Multipart/MixedPart.php
+++ b/vendor/symfony/mime/Part/Multipart/MixedPart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Part\AbstractMultipartPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MixedPart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/RelatedPart.php b/vendor/symfony/mime/Part/Multipart/RelatedPart.php
index 2d5563073ce0648cb32e4625ef4fe1be9e9ba578..08fdd5fa977ce67b5bab9437865d31e960a377e7 100644
--- a/vendor/symfony/mime/Part/Multipart/RelatedPart.php
+++ b/vendor/symfony/mime/Part/Multipart/RelatedPart.php
@@ -16,8 +16,6 @@ use Symfony\Component\Mime\Part\AbstractPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class RelatedPart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/TextPart.php b/vendor/symfony/mime/Part/TextPart.php
index 6a0418531525d7eef719606d3850054ddc7edc5a..2a12fab6113a69d27cb204447cbf82ae37452c42 100644
--- a/vendor/symfony/mime/Part/TextPart.php
+++ b/vendor/symfony/mime/Part/TextPart.php
@@ -20,8 +20,6 @@ use Symfony\Component\Mime\Header\Headers;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class TextPart extends AbstractPart
 {
@@ -33,6 +31,7 @@ class TextPart extends AbstractPart
     private $disposition;
     private $name;
     private $encoding;
+    private $seekable;
 
     /**
      * @param resource|string $body
@@ -42,12 +41,13 @@ class TextPart extends AbstractPart
         parent::__construct();
 
         if (!\is_string($body) && !\is_resource($body)) {
-            throw new \TypeError(sprintf('The body of "%s" must be a string or a resource (got "%s").', self::class, \is_object($body) ? \get_class($body) : \gettype($body)));
+            throw new \TypeError(sprintf('The body of "%s" must be a string or a resource (got "%s").', self::class, get_debug_type($body)));
         }
 
         $this->body = $body;
         $this->charset = $charset;
         $this->subtype = $subtype;
+        $this->seekable = \is_resource($body) ? stream_get_meta_data($body)['seekable'] && 0 === fseek($body, 0, \SEEK_CUR) : null;
 
         if (null === $encoding) {
             $this->encoding = $this->chooseEncoding();
@@ -95,11 +95,11 @@ class TextPart extends AbstractPart
 
     public function getBody(): string
     {
-        if (!\is_resource($this->body)) {
+        if (null === $this->seekable) {
             return $this->body;
         }
 
-        if (stream_get_meta_data($this->body)['seekable'] ?? false) {
+        if ($this->seekable) {
             rewind($this->body);
         }
 
@@ -113,8 +113,8 @@ class TextPart extends AbstractPart
 
     public function bodyToIterable(): iterable
     {
-        if (\is_resource($this->body)) {
-            if (stream_get_meta_data($this->body)['seekable'] ?? false) {
+        if (null !== $this->seekable) {
+            if ($this->seekable) {
                 rewind($this->body);
             }
             yield from $this->getEncoder()->encodeByteStream($this->body);
@@ -131,7 +131,7 @@ class TextPart extends AbstractPart
         if ($this->charset) {
             $headers->setHeaderParameter('Content-Type', 'charset', $this->charset);
         }
-        if ($this->name) {
+        if ($this->name && 'form-data' !== $this->disposition) {
             $headers->setHeaderParameter('Content-Type', 'name', $this->name);
         }
         $headers->setHeaderBody('Text', 'Content-Transfer-Encoding', $this->encoding);
@@ -146,6 +146,19 @@ class TextPart extends AbstractPart
         return $headers;
     }
 
+    public function asDebugString(): string
+    {
+        $str = parent::asDebugString();
+        if (null !== $this->charset) {
+            $str .= ' charset: '.$this->charset;
+        }
+        if (null !== $this->disposition) {
+            $str .= ' disposition: '.$this->disposition;
+        }
+
+        return $str;
+    }
+
     private function getEncoder(): ContentEncoderInterface
     {
         if ('8bit' === $this->encoding) {
@@ -168,10 +181,13 @@ class TextPart extends AbstractPart
         return 'quoted-printable';
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         // convert resources to strings for serialization
-        if (\is_resource($this->body)) {
+        if (null !== $this->seekable) {
             $this->body = $this->getBody();
         }
 
diff --git a/vendor/symfony/mime/README.md b/vendor/symfony/mime/README.md
index 32882461e2e18647ca7cd8d04480185169bb7098..4d565c9205fe16f6d475fd19fd2968a1bb09c77e 100644
--- a/vendor/symfony/mime/README.md
+++ b/vendor/symfony/mime/README.md
@@ -3,11 +3,6 @@ MIME Component
 
 The MIME component allows manipulating MIME messages.
 
-**This Component is experimental**.
-[Experimental features](https://symfony.com/doc/current/contributing/code/experimental.html)
-are not covered by Symfony's
-[Backward Compatibility Promise](https://symfony.com/doc/current/contributing/code/bc.html).
-
 Resources
 ---------
 
diff --git a/vendor/symfony/mime/RawMessage.php b/vendor/symfony/mime/RawMessage.php
index 40a2795e2369eccbd80f2daa620d5c5e567afafe..66788d8ad526d3a63f5396fe143ff6ade571be2f 100644
--- a/vendor/symfony/mime/RawMessage.php
+++ b/vendor/symfony/mime/RawMessage.php
@@ -11,10 +11,10 @@
 
 namespace Symfony\Component\Mime;
 
+use Symfony\Component\Mime\Exception\LogicException;
+
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class RawMessage implements \Serializable
 {
@@ -53,10 +53,17 @@ class RawMessage implements \Serializable
         $this->message = $message;
     }
 
+    /**
+     * @throws LogicException if the message is not valid
+     */
+    public function ensureValidity()
+    {
+    }
+
     /**
      * @internal
      */
-    final public function serialize()
+    final public function serialize(): string
     {
         return serialize($this->__serialize());
     }
@@ -71,7 +78,7 @@ class RawMessage implements \Serializable
 
     public function __serialize(): array
     {
-        return [$this->message];
+        return [$this->toString()];
     }
 
     public function __unserialize(array $data): void
diff --git a/vendor/symfony/mime/Tests/AbstractMimeTypeGuesserTest.php b/vendor/symfony/mime/Tests/AbstractMimeTypeGuesserTest.php
deleted file mode 100644
index 3ac9382f84bc6ff2efdfb443f9420b4bf83705d9..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/AbstractMimeTypeGuesserTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-
-abstract class AbstractMimeTypeGuesserTest extends TestCase
-{
-    public static function tearDownAfterClass(): void
-    {
-        $path = __DIR__.'/Fixtures/mimetypes/to_delete';
-        if (file_exists($path)) {
-            @chmod($path, 0666);
-            @unlink($path);
-        }
-    }
-
-    abstract protected function getGuesser(): MimeTypeGuesserInterface;
-
-    public function testGuessImageWithoutExtension()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->assertEquals('image/gif', $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/test'));
-    }
-
-    public function testGuessImageWithDirectory()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->expectException('\InvalidArgumentException');
-        $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/directory');
-    }
-
-    public function testGuessImageWithKnownExtension()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->assertEquals('image/gif', $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/test.gif'));
-    }
-
-    public function testGuessFileWithUnknownExtension()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->assertEquals('application/octet-stream', $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/.unknownextension'));
-    }
-
-    public function testGuessWithIncorrectPath()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->expectException('\InvalidArgumentException');
-        $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/not_here');
-    }
-
-    public function testGuessWithNonReadablePath()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $this->markTestSkipped('Can not verify chmod operations on Windows');
-        }
-
-        if (!getenv('USER') || 'root' === getenv('USER')) {
-            $this->markTestSkipped('This test will fail if run under superuser');
-        }
-
-        $path = __DIR__.'/Fixtures/mimetypes/to_delete';
-        touch($path);
-        @chmod($path, 0333);
-
-        if ('0333' == substr(sprintf('%o', fileperms($path)), -4)) {
-            $this->expectException('\InvalidArgumentException');
-            $this->getGuesser()->guessMimeType($path);
-        } else {
-            $this->markTestSkipped('Can not verify chmod operations, change of file permissions failed');
-        }
-    }
-}
diff --git a/vendor/symfony/mime/Tests/AddressTest.php b/vendor/symfony/mime/Tests/AddressTest.php
deleted file mode 100644
index dd7d3cebf67caddf8bcf53ad570a468054dad9cb..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/AddressTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\NamedAddress;
-
-class AddressTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new Address('fabien@symfonï.com');
-        $this->assertEquals('fabien@symfonï.com', $a->getAddress());
-        $this->assertEquals('fabien@xn--symfon-nwa.com', $a->toString());
-        $this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
-    }
-
-    public function testConstructorWithInvalidAddress()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        new Address('fab   pot@symfony.com');
-    }
-
-    public function testCreate()
-    {
-        $this->assertSame($a = new Address('fabien@symfony.com'), Address::create($a));
-        $this->assertSame($b = new NamedAddress('helene@symfony.com', 'Helene'), Address::create($b));
-        $this->assertEquals($a, Address::create('fabien@symfony.com'));
-    }
-
-    public function testCreateWrongArg()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        Address::create(new \stdClass());
-    }
-
-    public function testCreateArray()
-    {
-        $fabien = new Address('fabien@symfony.com');
-        $helene = new NamedAddress('helene@symfony.com', 'Helene');
-        $this->assertSame([$fabien, $helene], Address::createArray([$fabien, $helene]));
-
-        $this->assertEquals([$fabien], Address::createArray(['fabien@symfony.com']));
-    }
-
-    public function testCreateArrayWrongArg()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        Address::createArray([new \stdClass()]);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/CharacterStreamTest.php b/vendor/symfony/mime/Tests/CharacterStreamTest.php
deleted file mode 100644
index 62f4dc6fe83263d22095a42bc1730f101bba0b52..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/CharacterStreamTest.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\CharacterStream;
-
-class CharacterStreamTest extends TestCase
-{
-    public function testReadCharactersAreInTact()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $stream->write(pack('C*',
-            0xD0, 0xBB,
-            0xD1, 0x8E,
-            0xD0, 0xB1,
-            0xD1, 0x8B,
-            0xD1, 0x85
-        ));
-        $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(2));
-        $this->assertSame(pack('C*', 0xD0, 0xBB), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B), $stream->read(3));
-        $this->assertSame(pack('C*', 0xD1, 0x85), $stream->read(1));
-        $this->assertNull($stream->read(1));
-    }
-
-    public function testCharactersCanBeReadAsByteArrays()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $stream->write(pack('C*',
-            0xD0, 0xBB,
-            0xD1, 0x8E,
-            0xD0, 0xB1,
-            0xD1, 0x8B,
-            0xD1, 0x85
-        ));
-        $this->assertEquals([0xD0, 0x94], $stream->readBytes(1));
-        $this->assertEquals([0xD0, 0xB6, 0xD0, 0xBE], $stream->readBytes(2));
-        $this->assertEquals([0xD0, 0xBB], $stream->readBytes(1));
-        $this->assertEquals([0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B], $stream->readBytes(3));
-        $this->assertEquals([0xD1, 0x85], $stream->readBytes(1));
-        $this->assertNull($stream->readBytes(1));
-    }
-
-    public function testRequestingLargeCharCountPastEndOfStream()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $this->assertSame(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(100));
-        $this->assertNull($stream->read(1));
-    }
-
-    public function testRequestingByteArrayCountPastEndOfStream()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $this->assertEquals([0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE], $stream->readBytes(100));
-        $this->assertNull($stream->readBytes(1));
-    }
-
-    public function testPointerOffsetCanBeSet()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1));
-        $stream->setPointer(0);
-        $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1));
-        $stream->setPointer(2);
-        $this->assertSame(pack('C*', 0xD0, 0xBE), $stream->read(1));
-    }
-
-    public function testAlgorithmWithFixedWidthCharsets()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD1, 0x8D, 0xD0, 0xBB, 0xD0, 0xB0));
-        $this->assertSame(pack('C*', 0xD1, 0x8D), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD0, 0xBB), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD0, 0xB0), $stream->read(1));
-        $this->assertNull($stream->read(1));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php b/vendor/symfony/mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php
deleted file mode 100644
index cf40a4675f117bdd5c3bf9d6c1f1fcf5c83f304e..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\Mime\DependencyInjection\AddMimeTypeGuesserPass;
-use Symfony\Component\Mime\FileinfoMimeTypeGuesser;
-use Symfony\Component\Mime\MimeTypes;
-
-class AddMimeTypeGuesserPassTest extends TestCase
-{
-    public function testTags()
-    {
-        $container = new ContainerBuilder();
-        $container->addCompilerPass(new AddMimeTypeGuesserPass());
-
-        $definition = new Definition(FileinfoMimeTypeGuesser::class);
-        $definition->addArgument('/path/to/magic/file');
-        $definition->addTag('mime.mime_type_guesser');
-        $container->setDefinition('some_mime_type_guesser', $definition->setPublic(true));
-        $container->register('mime_types', MimeTypes::class)->setPublic(true);
-        $container->compile();
-
-        $router = $container->getDefinition('mime_types');
-        $calls = $router->getMethodCalls();
-        $this->assertCount(1, $calls);
-        $this->assertEquals('registerGuesser', $calls[0][0]);
-        $this->assertEquals(new Reference('some_mime_type_guesser'), $calls[0][1][0]);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/EmailTest.php b/vendor/symfony/mime/Tests/EmailTest.php
deleted file mode 100644
index 764f66b079480936960d04a060337bfacc258f7b..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/EmailTest.php
+++ /dev/null
@@ -1,389 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\NamedAddress;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\Multipart\AlternativePart;
-use Symfony\Component\Mime\Part\Multipart\MixedPart;
-use Symfony\Component\Mime\Part\Multipart\RelatedPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-class EmailTest extends TestCase
-{
-    public function testSubject()
-    {
-        $e = new Email();
-        $e->subject('Subject');
-        $this->assertEquals('Subject', $e->getSubject());
-    }
-
-    public function testDate()
-    {
-        $e = new Email();
-        $e->date($d = new \DateTimeImmutable());
-        $this->assertSame($d, $e->getDate());
-    }
-
-    public function testReturnPath()
-    {
-        $e = new Email();
-        $e->returnPath('fabien@symfony.com');
-        $this->assertEquals(new Address('fabien@symfony.com'), $e->getReturnPath());
-    }
-
-    public function testSender()
-    {
-        $e = new Email();
-        $e->sender('fabien@symfony.com');
-        $this->assertEquals(new Address('fabien@symfony.com'), $e->getSender());
-
-        $e->sender($fabien = new Address('fabien@symfony.com'));
-        $this->assertSame($fabien, $e->getSender());
-    }
-
-    public function testFrom()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->from('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getFrom();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addFrom('lucas@symfony.com', $caramel));
-        $v = $e->getFrom();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addFrom('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getFrom());
-
-        $e = new Email();
-        $e->from('lucas@symfony.com');
-        $e->from($caramel);
-        $this->assertSame([$caramel], $e->getFrom());
-    }
-
-    public function testReplyTo()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->replyTo('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getReplyTo();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addReplyTo('lucas@symfony.com', $caramel));
-        $v = $e->getReplyTo();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addReplyTo('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getReplyTo());
-
-        $e = new Email();
-        $e->replyTo('lucas@symfony.com');
-        $e->replyTo($caramel);
-        $this->assertSame([$caramel], $e->getReplyTo());
-    }
-
-    public function testTo()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->to('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getTo();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addTo('lucas@symfony.com', $caramel));
-        $v = $e->getTo();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addTo('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getTo());
-
-        $e = new Email();
-        $e->to('lucas@symfony.com');
-        $e->to($caramel);
-        $this->assertSame([$caramel], $e->getTo());
-    }
-
-    public function testCc()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->cc('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getCc();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addCc('lucas@symfony.com', $caramel));
-        $v = $e->getCc();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addCc('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getCc());
-
-        $e = new Email();
-        $e->cc('lucas@symfony.com');
-        $e->cc($caramel);
-        $this->assertSame([$caramel], $e->getCc());
-    }
-
-    public function testBcc()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->bcc('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getBcc();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addBcc('lucas@symfony.com', $caramel));
-        $v = $e->getBcc();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addBcc('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getBcc());
-
-        $e = new Email();
-        $e->bcc('lucas@symfony.com');
-        $e->bcc($caramel);
-        $this->assertSame([$caramel], $e->getBcc());
-    }
-
-    public function testPriority()
-    {
-        $e = new Email();
-        $this->assertEquals(3, $e->getPriority());
-
-        $e->priority(1);
-        $this->assertEquals(1, $e->getPriority());
-        $e->priority(10);
-        $this->assertEquals(5, $e->getPriority());
-        $e->priority(-10);
-        $this->assertEquals(1, $e->getPriority());
-    }
-
-    public function testGenerateBodyThrowsWhenEmptyBody()
-    {
-        $this->expectException(\LogicException::class);
-        (new Email())->getBody();
-    }
-
-    public function testGetBody()
-    {
-        $e = new Email();
-        $e->setBody($text = new TextPart('text content'));
-        $this->assertEquals($text, $e->getBody());
-    }
-
-    public function testGenerateBody()
-    {
-        $text = new TextPart('text content');
-        $html = new TextPart('html content', 'utf-8', 'html');
-        $att = new DataPart($file = fopen(__DIR__.'/Fixtures/mimetypes/test', 'r'));
-        $img = new DataPart($image = fopen(__DIR__.'/Fixtures/mimetypes/test.gif', 'r'), 'test.gif');
-
-        $e = new Email();
-        $e->text('text content');
-        $this->assertEquals($text, $e->getBody());
-        $this->assertEquals('text content', $e->getTextBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $this->assertEquals($html, $e->getBody());
-        $this->assertEquals('html content', $e->getHtmlBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $e->text('text content');
-        $this->assertEquals(new AlternativePart($text, $html), $e->getBody());
-
-        $e = new Email();
-        $e->html('html content', 'iso-8859-1');
-        $e->text('text content', 'iso-8859-1');
-        $this->assertEquals('iso-8859-1', $e->getTextCharset());
-        $this->assertEquals('iso-8859-1', $e->getHtmlCharset());
-        $this->assertEquals(new AlternativePart(new TextPart('text content', 'iso-8859-1'), new TextPart('html content', 'iso-8859-1', 'html')), $e->getBody());
-
-        $e = new Email();
-        $e->attach($file);
-        $e->text('text content');
-        $this->assertEquals(new MixedPart($text, $att), $e->getBody());
-
-        $e = new Email();
-        $e->attach($file);
-        $e->html('html content');
-        $this->assertEquals(new MixedPart($html, $att), $e->getBody());
-
-        $e = new Email();
-        $e->attach($file);
-        $this->assertEquals(new MixedPart($att), $e->getBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $e->text('text content');
-        $e->attach($file);
-        $this->assertEquals(new MixedPart(new AlternativePart($text, $html), $att), $e->getBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $this->assertEquals(new MixedPart(new AlternativePart($text, $html), $att, $img), $e->getBody());
-
-        $e = new Email();
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $this->assertEquals(new MixedPart($text, $att, $img), $e->getBody());
-
-        $e = new Email();
-        $e->html($content = 'html content <img src="test.gif">');
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $fullhtml = new TextPart($content, 'utf-8', 'html');
-        $this->assertEquals(new MixedPart(new AlternativePart($text, $fullhtml), $att, $img), $e->getBody());
-
-        $e = new Email();
-        $e->html($content = 'html content <img src="cid:test.gif">');
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $fullhtml = new TextPart($content, 'utf-8', 'html');
-        $inlinedimg = (new DataPart($image, 'test.gif'))->asInline();
-        $body = $e->getBody();
-        $this->assertInstanceOf(MixedPart::class, $body);
-        $this->assertCount(2, $related = $body->getParts());
-        $this->assertInstanceOf(RelatedPart::class, $related[0]);
-        $this->assertEquals($att, $related[1]);
-        $this->assertCount(2, $parts = $related[0]->getParts());
-        $this->assertInstanceOf(AlternativePart::class, $parts[0]);
-        $generatedHtml = $parts[0]->getParts()[1];
-        $this->assertStringContainsString('cid:'.$parts[1]->getContentId(), $generatedHtml->getBody());
-
-        $content = 'html content <img src="cid:test.gif">';
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, $content);
-        rewind($r);
-
-        $e = new Email();
-        $e->html($r);
-        // embedding the same image twice results in one image only in the email
-        $e->embed($image, 'test.gif');
-        $e->embed($image, 'test.gif');
-        $body = $e->getBody();
-        $this->assertInstanceOf(RelatedPart::class, $body);
-        // 2 parts only, not 3 (text + embedded image once)
-        $this->assertCount(2, $parts = $body->getParts());
-        $this->assertStringMatchesFormat('html content <img src=3D"cid:%s@symfony">', $parts[0]->bodyToString());
-    }
-
-    public function testAttachments()
-    {
-        $contents = file_get_contents($name = __DIR__.'/Fixtures/mimetypes/test', 'r');
-        $att = new DataPart($file = fopen($name, 'r'), 'test');
-        $inline = (new DataPart($contents, 'test'))->asInline();
-        $e = new Email();
-        $e->attach($file, 'test');
-        $e->embed($contents, 'test');
-        $this->assertEquals([$att, $inline], $e->getAttachments());
-
-        $att = DataPart::fromPath($name, 'test');
-        $inline = DataPart::fromPath($name, 'test')->asInline();
-        $e = new Email();
-        $e->attachFromPath($name);
-        $e->embedFromPath($name);
-        $this->assertEquals([$att->bodyToString(), $inline->bodyToString()], array_map(function (DataPart $a) { return $a->bodyToString(); }, $e->getAttachments()));
-        $this->assertEquals([$att->getPreparedHeaders(), $inline->getPreparedHeaders()], array_map(function (DataPart $a) { return $a->getPreparedHeaders(); }, $e->getAttachments()));
-    }
-
-    public function testSerialize()
-    {
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, 'Text content');
-        rewind($r);
-
-        $e = new Email();
-        $e->from('fabien@symfony.com');
-        $e->text($r);
-        $e->html($r);
-        $contents = file_get_contents($name = __DIR__.'/Fixtures/mimetypes/test', 'r');
-        $file = fopen($name, 'r');
-        $e->attach($file, 'test');
-        $expected = clone $e;
-        $n = unserialize(serialize($e));
-        $this->assertEquals($expected->getHeaders(), $n->getHeaders());
-        $this->assertEquals($e->getBody(), $n->getBody());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/Base64EncoderTest.php b/vendor/symfony/mime/Tests/Encoder/Base64EncoderTest.php
deleted file mode 100644
index a90fbb70fcbdbf43b70d7aacf0b615bb95f092dc..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Encoder/Base64EncoderTest.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\Base64Encoder;
-
-class Base64EncoderTest extends TestCase
-{
-    /*
-    There's really no point in testing the entire base64 encoding to the
-    level QP encoding has been tested.  base64_encode() has been in PHP for
-    years.
-    */
-
-    public function testInputOutputRatioIs3to4Bytes()
-    {
-        /*
-        RFC 2045, 6.8
-
-         The encoding process represents 24-bit groups of input bits as output
-         strings of 4 encoded characters.  Proceeding from left to right, a
-         24-bit input group is formed by concatenating 3 8bit input groups.
-         These 24 bits are then treated as 4 concatenated 6-bit groups, each
-         of which is translated into a single digit in the base64 alphabet.
-         */
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals('MTIz', $encoder->encodeString('123'), '3 bytes of input should yield 4 bytes of output');
-        $this->assertEquals('MTIzNDU2', $encoder->encodeString('123456'), '6 bytes in input should yield 8 bytes of output');
-        $this->assertEquals('MTIzNDU2Nzg5', $encoder->encodeString('123456789'), '%s: 9 bytes in input should yield 12 bytes of output');
-    }
-
-    public function testPadLength()
-    {
-        /*
-        RFC 2045, 6.8
-
-       Special processing is performed if fewer than 24 bits are available
-       at the end of the data being encoded.  A full encoding quantum is
-       always completed at the end of a body.  When fewer than 24 input bits
-       are available in an input group, zero bits are added (on the right)
-       to form an integral number of 6-bit groups.  Padding at the end of
-       the data is performed using the "=" character.  Since all base64
-       input is an integral number of octets, only the following cases can
-       arise: (1) the final quantum of encoding input is an integral
-       multiple of 24 bits; here, the final unit of encoded output will be
-       an integral multiple of 4 characters with no "=" padding, (2) the
-       final quantum of encoding input is exactly 8 bits; here, the final
-       unit of encoded output will be two characters followed by two "="
-       padding characters, or (3) the final quantum of encoding input is
-       exactly 16 bits; here, the final unit of encoded output will be three
-       characters followed by one "=" padding character.
-       */
-
-        $encoder = new Base64Encoder();
-        for ($i = 0; $i < 30; ++$i) {
-            $input = pack('C', random_int(0, 255));
-            $this->assertRegExp('~^[a-zA-Z0-9/\+]{2}==$~', $encoder->encodeString($input), 'A single byte should have 2 bytes of padding');
-        }
-
-        for ($i = 0; $i < 30; ++$i) {
-            $input = pack('C*', random_int(0, 255), random_int(0, 255));
-            $this->assertRegExp('~^[a-zA-Z0-9/\+]{3}=$~', $encoder->encodeString($input), 'Two bytes should have 1 byte of padding');
-        }
-
-        for ($i = 0; $i < 30; ++$i) {
-            $input = pack('C*', random_int(0, 255), random_int(0, 255), random_int(0, 255));
-            $this->assertRegExp('~^[a-zA-Z0-9/\+]{4}$~', $encoder->encodeString($input), 'Three bytes should have no padding');
-        }
-    }
-
-    public function testMaximumLineLengthIs76Characters()
-    {
-        /*
-         The encoded output stream must be represented in lines of no more
-         than 76 characters each.  All line breaks or other characters not
-         found in Table 1 must be ignored by decoding software.
-         */
-
-        $input =
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-        $output =
-        'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQk'.//38
-        'NERUZHSElKS0xNTk9QUVJTVFVWV1hZWjEyMzQ1'."\r\n".//76 *
-        'Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3'.//38
-        'h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla'."\r\n".//76 *
-        'MTIzNDU2Nzg5MEFCQ0RFRkdISUpLTE1OT1BRUl'.//38
-        'NUVVZXWFla';                                       //48
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals($output, $encoder->encodeString($input), 'Lines should be no more than 76 characters');
-    }
-
-    public function testMaximumLineLengthCanBeSpecified()
-    {
-        $input =
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-        $output =
-        'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQk'.//38
-        'NERUZHSElKS0'."\r\n".//50 *
-        'xNTk9QUVJTVFVWV1hZWjEyMzQ1Njc4OTBhYmNk'.//38
-        'ZWZnaGlqa2xt'."\r\n".//50 *
-        'bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1'.//38
-        'BRUlNUVVZXWF'."\r\n".//50 *
-        'laMTIzNDU2Nzg5MEFCQ0RFRkdISUpLTE1OT1BR'.//38
-        'UlNUVVZXWFla';                                     //50 *
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 0, 50), 'Lines should be no more than 100 characters');
-    }
-
-    public function testFirstLineLengthCanBeDifferent()
-    {
-        $input =
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-        $output =
-        'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQk'.//38
-        'NERUZHSElKS0xNTk9QU'."\r\n".//57 *
-        'VJTVFVWV1hZWjEyMzQ1Njc4OTBhYmNkZWZnaGl'.//38
-        'qa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLT'."\r\n".//76 *
-        'E1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5MEFCQ0R'.//38
-        'FRkdISUpLTE1OT1BRUlNUVVZXWFla';                    //67
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 19), 'First line offset is 19 so first line should be 57 chars long');
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/Base64MimeHeaderEncoderTest.php b/vendor/symfony/mime/Tests/Encoder/Base64MimeHeaderEncoderTest.php
deleted file mode 100644
index 34bfe0d47c96099508d1135d285e0b6644053761..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Encoder/Base64MimeHeaderEncoderTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\Base64MimeHeaderEncoder;
-
-class Base64MimeHeaderEncoderTest extends TestCase
-{
-    public function testNameIsB()
-    {
-        $this->assertEquals('B', (new Base64MimeHeaderEncoder())->getName());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/QpEncoderTest.php b/vendor/symfony/mime/Tests/Encoder/QpEncoderTest.php
deleted file mode 100644
index bf08b2f095573eb96960d505be4fb388e1872495..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Encoder/QpEncoderTest.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\QpEncoder;
-
-class QpEncoderTest extends TestCase
-{
-    /* -- RFC 2045, 6.7 --
-    (1)   (General 8bit representation) Any octet, except a CR or
-                    LF that is part of a CRLF line break of the canonical
-                    (standard) form of the data being encoded, may be
-                    represented by an "=" followed by a two digit
-                    hexadecimal representation of the octet's value.  The
-                    digits of the hexadecimal alphabet, for this purpose,
-                    are "0123456789ABCDEF".  Uppercase letters must be
-                    used; lowercase letters are not allowed.  Thus, for
-                    example, the decimal value 12 (US-ASCII form feed) can
-                    be represented by "=0C", and the decimal value 61 (US-
-                    ASCII EQUAL SIGN) can be represented by "=3D".  This
-                    rule must be followed except when the following rules
-                    allow an alternative encoding.
-                    */
-
-    public function testPermittedCharactersAreNotEncoded()
-    {
-        /* -- RFC 2045, 6.7 --
-        (2)   (Literal representation) Octets with decimal values of
-                    33 through 60 inclusive, and 62 through 126, inclusive,
-                    MAY be represented as the US-ASCII characters which
-                    correspond to those octets (EXCLAMATION POINT through
-                    LESS THAN, and GREATER THAN through TILDE,
-                    respectively).
-                    */
-
-        $encoder = new QpEncoder();
-        foreach (array_merge(range(33, 60), range(62, 126)) as $ordinal) {
-            $char = \chr($ordinal);
-            $this->assertSame($char, $encoder->encodeString($char));
-        }
-    }
-
-    public function testWhiteSpaceAtLineEndingIsEncoded()
-    {
-        /* -- RFC 2045, 6.7 --
-        (3)   (White Space) Octets with values of 9 and 32 MAY be
-                    represented as US-ASCII TAB (HT) and SPACE characters,
-                    respectively, but MUST NOT be so represented at the end
-                    of an encoded line.  Any TAB (HT) or SPACE characters
-                    on an encoded line MUST thus be followed on that line
-                    by a printable character.  In particular, an "=" at the
-                    end of an encoded line, indicating a soft line break
-                    (see rule #5) may follow one or more TAB (HT) or SPACE
-                    characters.  It follows that an octet with decimal
-                    value 9 or 32 appearing at the end of an encoded line
-                    must be represented according to Rule #1.  This rule is
-                    necessary because some MTAs (Message Transport Agents,
-                    programs which transport messages from one user to
-                    another, or perform a portion of such transfers) are
-                    known to pad lines of text with SPACEs, and others are
-                    known to remove "white space" characters from the end
-                    of a line.  Therefore, when decoding a Quoted-Printable
-                    body, any trailing white space on a line must be
-                    deleted, as it will necessarily have been added by
-                    intermediate transport agents.
-                    */
-
-        $encoder = new QpEncoder();
-
-        $HT = \chr(0x09); // 9
-        $SPACE = \chr(0x20); // 32
-
-        // HT
-        $string = 'a'.$HT.$HT."\r\n".'b';
-        $this->assertEquals('a'.$HT.'=09'."\r\n".'b', $encoder->encodeString($string));
-
-        // SPACE
-        $string = 'a'.$SPACE.$SPACE."\r\n".'b';
-        $this->assertEquals('a'.$SPACE.'=20'."\r\n".'b', $encoder->encodeString($string));
-    }
-
-    public function testCRLFIsLeftAlone()
-    {
-        /*
-        (4)   (Line Breaks) A line break in a text body, represented
-                    as a CRLF sequence in the text canonical form, must be
-                    represented by a (RFC 822) line break, which is also a
-                    CRLF sequence, in the Quoted-Printable encoding.  Since
-                    the canonical representation of media types other than
-                    text do not generally include the representation of
-                    line breaks as CRLF sequences, no hard line breaks
-                    (i.e. line breaks that are intended to be meaningful
-                    and to be displayed to the user) can occur in the
-                    quoted-printable encoding of such types.  Sequences
-                    like "=0D", "=0A", "=0A=0D" and "=0D=0A" will routinely
-                    appear in non-text data represented in quoted-
-                    printable, of course.
-
-                    Note that many implementations may elect to encode the
-                    local representation of various content types directly
-                    rather than converting to canonical form first,
-                    encoding, and then converting back to local
-                    representation.  In particular, this may apply to plain
-                    text material on systems that use newline conventions
-                    other than a CRLF terminator sequence.  Such an
-                    implementation optimization is permissible, but only
-                    when the combined canonicalization-encoding step is
-                    equivalent to performing the three steps separately.
-                    */
-
-        $encoder = new QpEncoder();
-        $string = 'a'."\r\n".'b'."\r\n".'c'."\r\n";
-        $this->assertEquals($string, $encoder->encodeString($string));
-    }
-
-    public function testLinesLongerThan76CharactersAreSoftBroken()
-    {
-        /*
-        (5)   (Soft Line Breaks) The Quoted-Printable encoding
-                    REQUIRES that encoded lines be no more than 76
-                    characters long.  If longer lines are to be encoded
-                    with the Quoted-Printable encoding, "soft" line breaks
-                    must be used.  An equal sign as the last character on a
-                    encoded line indicates such a non-significant ("soft")
-                    line break in the encoded text.
-                    */
-
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 140);
-        $output = '';
-        for ($i = 0; $i < 140; ++$i) {
-            // we read 4 chars at a time (max is 75)
-            if (18 * 4 /* 72 */ == $i) {
-                $output .= "=\r\n";
-            }
-            $output .= 'a';
-        }
-        $this->assertEquals($output, $encoder->encodeString($input));
-    }
-
-    public function testMaxLineLengthCanBeSpecified()
-    {
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 100);
-        $output = '';
-        for ($i = 0; $i < 100; ++$i) {
-            // we read 4 chars at a time (max is 53)
-            if (13 * 4 /* 52 */ == $i) {
-                $output .= "=\r\n";
-            }
-            $output .= 'a';
-        }
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 0, 54));
-    }
-
-    public function testBytesBelowPermittedRangeAreEncoded()
-    {
-        // According to Rule (1 & 2)
-        $encoder = new QpEncoder();
-        foreach (range(0, 32) as $ordinal) {
-            $char = \chr($ordinal);
-            $this->assertEquals(sprintf('=%02X', $ordinal), $encoder->encodeString($char));
-        }
-    }
-
-    public function testDecimalByte61IsEncoded()
-    {
-        // According to Rule (1 & 2)
-        $encoder = new QpEncoder();
-        $this->assertEquals('=3D', $encoder->encodeString('='));
-    }
-
-    public function testBytesAbovePermittedRangeAreEncoded()
-    {
-        // According to Rule (1 & 2)
-        $encoder = new QpEncoder();
-        foreach (range(127, 255) as $ordinal) {
-            $this->assertSame(sprintf('=%02X', $ordinal), $encoder->encodeString(\chr($ordinal), 'iso-8859-1'));
-        }
-    }
-
-    public function testFirstLineLengthCanBeDifferent()
-    {
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 140);
-        $output = '';
-        for ($i = 0; $i < 140; ++$i) {
-            // we read 4 chars at a time (max is 54 for the first line and 75 for the second one)
-            if (13 * 4 == $i || 13 * 4 + 18 * 4 == $i) {
-                $output .= "=\r\n";
-            }
-            $output .= 'a';
-        }
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 22), 'First line should start at offset 22 so can only have max length 54');
-    }
-
-    public function testTextIsPreWrapped()
-    {
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 70)."\r\n".str_repeat('a', 70)."\r\n".str_repeat('a', 70);
-        $this->assertEquals($input, $encoder->encodeString($input));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/QpMimeHeaderEncoderTest.php b/vendor/symfony/mime/Tests/Encoder/QpMimeHeaderEncoderTest.php
deleted file mode 100644
index f075452cbb1d4ed9e4a76d0754a4d532dc55e5be..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Encoder/QpMimeHeaderEncoderTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\QpMimeHeaderEncoder;
-
-class QpMimeHeaderEncoderTest extends TestCase
-{
-    public function testNameIsQ()
-    {
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('Q', $encoder->getName());
-    }
-
-    public function testSpaceAndTabNeverAppear()
-    {
-        /* -- RFC 2047, 4.
-         Only a subset of the printable ASCII characters may be used in
-        'encoded-text'.  Space and tab characters are not allowed, so that
-        the beginning and end of an 'encoded-word' are obvious.
-        */
-
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertNotRegExp('~[ \t]~', $encoder->encodeString("a \t b"), 'encoded-words in headers cannot contain LWSP as per RFC 2047.');
-    }
-
-    public function testSpaceIsRepresentedByUnderscore()
-    {
-        /* -- RFC 2047, 4.2.
-        (2) The 8-bit hexadecimal value 20 (e.g., ISO-8859-1 SPACE) may be
-        represented as "_" (underscore, ASCII 95.).  (This character may
-        not pass through some internetwork mail gateways, but its use
-        will greatly enhance readability of "Q" encoded data with mail
-        readers that do not support this encoding.)  Note that the "_"
-        always represents hexadecimal 20, even if the SPACE character
-        occupies a different code position in the character set in use.
-        */
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('a_b', $encoder->encodeString('a b'), 'Spaces can be represented by more readable underscores as per RFC 2047.');
-    }
-
-    public function testEqualsAndQuestionAndUnderscoreAreEncoded()
-    {
-        /* -- RFC 2047, 4.2.
-        (3) 8-bit values which correspond to printable ASCII characters other
-        than "=", "?", and "_" (underscore), MAY be represented as those
-        characters.  (But see section 5 for restrictions.)  In
-        particular, SPACE and TAB MUST NOT be represented as themselves
-        within encoded words.
-        */
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('=3D=3F=5F', $encoder->encodeString('=?_'), 'Chars =, ? and _ (underscore) may not appear as per RFC 2047.');
-    }
-
-    public function testParensAndQuotesAreEncoded()
-    {
-        /* -- RFC 2047, 5 (2).
-         A "Q"-encoded 'encoded-word' which appears in a 'comment' MUST NOT
-        contain the characters "(", ")" or "
-        */
-
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('=28=22=29', $encoder->encodeString('(")'), 'Chars (, " (DQUOTE) and ) may not appear as per RFC 2047.');
-    }
-
-    public function testOnlyCharactersAllowedInPhrasesAreUsed()
-    {
-        /* -- RFC 2047, 5.
-        (3) As a replacement for a 'word' entity within a 'phrase', for example,
-        one that precedes an address in a From, To, or Cc header.  The ABNF
-        definition for 'phrase' from RFC 822 thus becomes:
-
-        phrase = 1*( encoded-word / word )
-
-        In this case the set of characters that may be used in a "Q"-encoded
-        'encoded-word' is restricted to: <upper and lower case ASCII
-        letters, decimal digits, "!", "*", "+", "-", "/", "=", and "_"
-        (underscore, ASCII 95.)>.  An 'encoded-word' that appears within a
-        'phrase' MUST be separated from any adjacent 'word', 'text' or
-        'special' by 'linear-white-space'.
-        */
-
-        $allowedBytes = array_merge(
-            range(\ord('a'), \ord('z')), range(\ord('A'), \ord('Z')),
-            range(\ord('0'), \ord('9')),
-            [\ord('!'), \ord('*'), \ord('+'), \ord('-'), \ord('/')]
-        );
-        $encoder = new QpMimeHeaderEncoder();
-        foreach (range(0x00, 0xFF) as $byte) {
-            $char = pack('C', $byte);
-            $encodedChar = $encoder->encodeString($char, 'iso-8859-1');
-            if (\in_array($byte, $allowedBytes)) {
-                $this->assertEquals($char, $encodedChar, 'Character '.$char.' should not be encoded.');
-            } elseif (0x20 == $byte) {
-                // special case
-                $this->assertEquals('_', $encodedChar, 'Space character should be replaced.');
-            } else {
-                $this->assertEquals(sprintf('=%02X', $byte), $encodedChar, 'Byte '.$byte.' should be encoded.');
-            }
-        }
-    }
-
-    public function testEqualsNeverAppearsAtEndOfLine()
-    {
-        /* -- RFC 2047, 5 (3).
-        The 'encoded-text' in an 'encoded-word' must be self-contained;
-        'encoded-text' MUST NOT be continued from one 'encoded-word' to
-        another.  This implies that the 'encoded-text' portion of a "B"
-        'encoded-word' will be a multiple of 4 characters long; for a "Q"
-        'encoded-word', any "=" character that appears in the 'encoded-text'
-        portion will be followed by two hexadecimal characters.
-        */
-
-        $input = str_repeat('a', 140);
-
-        $output = '';
-        $seq = 0;
-        for (; $seq < 140; ++$seq) {
-            // compute the end of line (multiple of 4 chars)
-            if (18 * 4 === $seq) {
-                $output .= "\r\n"; // =\r\n
-            }
-            $output .= 'a';
-        }
-
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals($output, $encoder->encodeString($input));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/Rfc2231EncoderTest.php b/vendor/symfony/mime/Tests/Encoder/Rfc2231EncoderTest.php
deleted file mode 100644
index edcb15fcec371133896f740d0068aa73666d3ddc..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Encoder/Rfc2231EncoderTest.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\Rfc2231Encoder;
-
-class Rfc2231EncoderTest extends TestCase
-{
-    private $rfc2045Token = '/^[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+$/D';
-
-    /* --
-    This algorithm is described in RFC 2231, but is barely touched upon except
-    for mentioning bytes can be represented as their octet values (e.g. %20 for
-    the SPACE character).
-
-    The tests here focus on how to use that representation to always generate text
-    which matches RFC 2045's definition of "token".
-    */
-
-    public function testEncodingAsciiCharactersProducesValidToken()
-    {
-        $string = '';
-        foreach (range(0x00, 0x7F) as $octet) {
-            $char = pack('C', $octet);
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string);
-
-        foreach (explode("\r\n", $encoded) as $line) {
-            $this->assertRegExp($this->rfc2045Token, $line, 'Encoder should always return a valid RFC 2045 token.');
-        }
-    }
-
-    public function testEncodingNonAsciiCharactersProducesValidToken()
-    {
-        $string = '';
-        foreach (range(0x80, 0xFF) as $octet) {
-            $char = pack('C', $octet);
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string);
-
-        foreach (explode("\r\n", $encoded) as $line) {
-            $this->assertRegExp($this->rfc2045Token, $line, 'Encoder should always return a valid RFC 2045 token.');
-        }
-    }
-
-    public function testMaximumLineLengthCanBeSet()
-    {
-        $string = '';
-        for ($x = 0; $x < 200; ++$x) {
-            $char = 'a';
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string, 'utf-8', 0, 75);
-
-        // 72 here and not 75 as we read 4 chars at a time
-        $this->assertEquals(
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 56),
-            $encoded,
-            'Lines should be wrapped at each 72 characters'
-        );
-    }
-
-    public function testFirstLineCanHaveShorterLength()
-    {
-        $string = '';
-        for ($x = 0; $x < 200; ++$x) {
-            $char = 'a';
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string, 'utf-8', 24, 72);
-
-        $this->assertEquals(
-            str_repeat('a', 48)."\r\n".
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 8),
-            $encoded,
-            'First line should be 24 bytes shorter than the others.'
-        );
-    }
-
-    public function testEncodingAndDecodingSamples()
-    {
-        $dir = realpath(__DIR__.'/../Fixtures/samples/charsets');
-        $sampleFp = opendir($dir);
-        while (false !== $encoding = readdir($sampleFp)) {
-            if ('.' == substr($encoding, 0, 1)) {
-                continue;
-            }
-
-            $encoder = new Rfc2231Encoder();
-            if (is_dir($dir.'/'.$encoding)) {
-                $fileFp = opendir($dir.'/'.$encoding);
-                while (false !== $sampleFile = readdir($fileFp)) {
-                    if ('.' == substr($sampleFile, 0, 1)) {
-                        continue;
-                    }
-
-                    $text = file_get_contents($dir.'/'.$encoding.'/'.$sampleFile);
-                    $encodedText = $encoder->encodeString($text, $encoding);
-                    $this->assertEquals(
-                        urldecode(implode('', explode("\r\n", $encodedText))), $text,
-                        'Encoded string should decode back to original string for sample '.$dir.'/'.$encoding.'/'.$sampleFile
-                    );
-                }
-                closedir($fileFp);
-            }
-        }
-        closedir($sampleFp);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/FileBinaryMimeTypeGuesserTest.php b/vendor/symfony/mime/Tests/FileBinaryMimeTypeGuesserTest.php
deleted file mode 100644
index 0742732895e524cb7d1db39364ae417e8377e71a..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/FileBinaryMimeTypeGuesserTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use Symfony\Component\Mime\FileBinaryMimeTypeGuesser;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-
-class FileBinaryMimeTypeGuesserTest extends AbstractMimeTypeGuesserTest
-{
-    protected function getGuesser(): MimeTypeGuesserInterface
-    {
-        return new FileBinaryMimeTypeGuesser();
-    }
-}
diff --git a/vendor/symfony/mime/Tests/FileinfoMimeTypeGuesserTest.php b/vendor/symfony/mime/Tests/FileinfoMimeTypeGuesserTest.php
deleted file mode 100644
index d2e6930a4b9c383d95ac759c1de5105c170b3988..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/FileinfoMimeTypeGuesserTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use Symfony\Component\Mime\FileinfoMimeTypeGuesser;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-
-/**
- * @requires extension fileinfo
- */
-class FileinfoMimeTypeGuesserTest extends AbstractMimeTypeGuesserTest
-{
-    protected function getGuesser(): MimeTypeGuesserInterface
-    {
-        return new FileinfoMimeTypeGuesser();
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/.unknownextension b/vendor/symfony/mime/Tests/Fixtures/mimetypes/.unknownextension
deleted file mode 100644
index 4d1ae35ba2c8ec712fa2a379db44ad639ca277bd..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Fixtures/mimetypes/.unknownextension
+++ /dev/null
@@ -1 +0,0 @@
-f
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/directory/.empty b/vendor/symfony/mime/Tests/Fixtures/mimetypes/directory/.empty
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/other-file.example b/vendor/symfony/mime/Tests/Fixtures/mimetypes/other-file.example
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/test b/vendor/symfony/mime/Tests/Fixtures/mimetypes/test
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
Binary files a/vendor/symfony/mime/Tests/Fixtures/mimetypes/test and /dev/null differ
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/test.gif b/vendor/symfony/mime/Tests/Fixtures/mimetypes/test.gif
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
Binary files a/vendor/symfony/mime/Tests/Fixtures/mimetypes/test.gif and /dev/null differ
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-2022-jp/one.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-2022-jp/one.txt
deleted file mode 100644
index c2923deb983a0fb8bd031720089f456f0594398a..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-2022-jp/one.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-ISO-2022-JPは、インターネット上(特に電子メール)などで使われる日本の文字用の文字符号化方式。ISO/IEC 2022のエスケープシーケンスを利用して文字集合を切り替える7ビットのコードであることを特徴とする (アナウンス機能のエスケープシーケンスは省略される)。俗に「JISコード」と呼ばれることもある。
-
-概要
-日本語表記への利用が想定されている文字コードであり、日本語の利用されるネットワークにおいて、日本の規格を応用したものである。また文字集合としては、日本語で用いられる漢字、ひらがな、カタカナはもちろん、ラテン文字、ギリシア文字、キリル文字なども含んでおり、学術や産業の分野での利用も考慮たものとなっている。規格名に、ISOの日本語の言語コードであるjaではなく、国・地域名コードのJPが示されているゆえんである。
-文字集合としてJIS X 0201のC0集合(制御文字)、JIS X 0201のラテン文字集合、ISO 646の国際基準版図形文字、JIS X 0208の1978年版(JIS C 6226-1978)と1983年および1990年版が利用できる。JIS X 0201の片仮名文字集合は利用できない。1986年以降、日本の電子メールで用いられてきたJUNETコードを、村井純・Mark Crispin・Erik van der Poelが1993年にRFC化したもの(RFC 1468)。後にJIS X 0208:1997の附属書2としてJISに規定された。MIMEにおける文字符号化方式の識別用の名前として IANA に登録されている。
-なお、符号化の仕様についてはISO/IEC 2022#ISO-2022-JPも参照。
-
-ISO-2022-JPと非標準的拡張使用
-「JISコード」(または「ISO-2022-JP」)というコード名の規定下では、その仕様通りの使用が求められる。しかし、Windows OS上では、実際にはCP932コード (MicrosoftによるShift JISを拡張した亜種。ISO-2022-JP規定外文字が追加されている。)による独自拡張(の文字)を断りなく使うアプリケーションが多い。この例としてInternet ExplorerやOutlook Expressがある。また、EmEditor、秀丸エディタやThunderbirdのようなMicrosoft社以外のWindowsアプリケーションでも同様の場合がある。この場合、ISO-2022-JPの範囲外の文字を使ってしまうと、異なる製品間では未定義不明文字として認識されるか、もしくは文字化けを起こす原因となる。そのため、Windows用の電子メールクライアントであっても独自拡張の文字を使用すると警告を出したり、あえて使えないように制限しているものも存在する。さらにはISO-2022-JPの範囲内であってもCP932は非標準文字(FULLWIDTH TILDE等)を持つので文字化けの原因になり得る。
-また、符号化方式名をISO-2022-JPとしているのに、文字集合としてはJIS X 0212 (いわゆる補助漢字) やJIS X 0201の片仮名文字集合 (いわゆる半角カナ) をも符号化している例があるが、ISO-2022-JPではこれらの文字を許容していない。これらの符号化は独自拡張の実装であり、中にはISO/IEC 2022の仕様に準拠すらしていないものもある[2]。従って受信側の電子メールクライアントがこれらの独自拡張に対応していない場合、その文字あるいはその文字を含む行、時にはテキスト全体が文字化けすることがある。
-
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-8859-1/one.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-8859-1/one.txt
deleted file mode 100644
index 3101178af2d73a0e8688b8d9c35da2b1a70208f6..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-8859-1/one.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Op mat eraus hinnen beschte, rou zënne schaddreg ké. Ké sin Eisen Kaffi prächteg, den haut esou Fielse wa, Well zielen d'Welt am dir. Aus grousse rëschten d'Stroos do, as dat Kléder gewëss d'Kàchen. Schied gehéiert d'Vioule net hu, rou ke zënter Säiten d'Hierz. Ze eise Fletschen mat, gei as gréng d'Lëtzebuerger. Wäit räich no mat.
-
-Säiten d'Liewen aus en. Un gëtt bléit lossen wee, da wéi alle weisen Kolrettchen. Et deser d'Pan d'Kirmes vun, en wuel Benn rëschten méi. En get drem ménger beschte, da wär Stad welle. Nun Dach d'Pied do, mä gét ruffen gehéiert. Ze onser ugedon fir, d'Liewen Plett'len ech no, si Räis wielen bereet wat. Iwer spilt fir jo.
-
-An hin däischter Margréitchen, eng ke Frot brommt, vu den Räis néierens. Da hir Hunn Frot nozegon, rout Fläiß Himmel zum si, net gutt Kaffi Gesträich fu. Vill lait Gaart sou wa, Land Mamm Schuebersonndeg rei do. Gei geet Minutt en, gei d'Leit beschte Kolrettchen et, Mamm fergiess un hun.
-
-Et gutt Heck kommen oft, Lann rëscht rei um, Hunn rëscht schéinste ke der. En lait zielen schnéiwäiss hir, fu rou botze éiweg Minutt, rem fest gudden schaddreg en. Noper bereet Margréitchen mat op, dem denkt d'Leit d'Vioule no, oft ké Himmel Hämmel. En denkt blénken Fréijor net, Gart Schiet d'Natur no wou. No hin Ierd Frot d'Kirmes. Hire aremt un rou, ké den éiweg wielen Milliounen.
-
-Mir si Hunn Blénkeg. Ké get ston derfir d'Kàchen. Haut d'Pan fu ons, dé frou löschteg d'Meereische rei. Sou op wuel Léift. Stret schlon grousse gin hu. Mä denkt d'Leit hinnen net, ké gét haut fort rëscht.
-
-Koum d'Pan hannendrun ass ké, ké den brét Kaffi geplot. Schéi Hären d'Pied fu gét, do d'Mier néierens bei. Rëm päift Hämmel am, wee Engel beschéngt mä. Brommt klinzecht der ke, wa rout jeitzt dén. Get Zalot d'Vioule däischter da, jo fir Bänk päift duerch, bei d'Beem schéinen Plett'len jo. Den haut Faarwen ze, eng en Biereg Kirmesdag, um sin alles Faarwen d'Vioule.
-
-Eng Hunn Schied et, wat wa Frot fest gebotzt. Bei jo bleiwe ruffen Klarinett. Un Feld klinzecht gét, rifft Margréitchen rem ke. Mir dé Noper duurch gewëss, ston sech kille sin en. Gei Stret d'Wise um, Haus Gart wee as. Monn ménger an blo, wat da Gart gefällt Hämmelsbrot.
-
-Brommt geplot och ze, dat wa Räis Well Kaffi. Do get spilt prächteg, as wär kille bleiwe gewalteg. Onser frësch Margréitchen rem ke, blo en huet ugedon. Onser Hemecht wär de, hu eraus d'Sonn dat, eise deser hannendrun da och.
-
-As durch Himmel hun, no fest iw'rem schéinste mir, Hunn séngt Hierz ke zum. Séngt iw'rem d'Natur zum an. Ke wär gutt Grénge. Kënnt gudden prächteg mä rei. Dé dir Blénkeg Klarinett Kolrettchen, da fort muerges d'Kanner wou, main Feld ruffen vu wéi. Da gin esou Zalot gewalteg, gét vill Hemecht blénken dé.
-
-Haut gréng nun et, nei vu Bass gréng d'Gaassen. Fest d'Beem uechter si gin. Oft vu sinn wellen kréien. Et ass lait Zalot schéinen.
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/one.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/one.txt
deleted file mode 100644
index 26c94d5d231cb1f5718d6d1df8253f361000e2d3..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/one.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Код одно гринспана руководишь на. Его вы знания движение. Ты две начать
-одиночку, сказать основатель удовольствием но миф. Бы какие система тем.
-Полностью использует три мы, человек клоунов те нас, бы давать творческую
-эзотерическая шеф.
-
-Мог не помнить никакого сэкономленного, две либо какие пишите бы. Должен
-компанию кто те, этот заключалась проектировщик не ты. Глупые периоды ты
-для. Вам который хороший он. Те любых кремния концентрируются мог,
-собирать принадлежите без вы.
-
-Джоэла меньше хорошего вы миф, за тем году разработки. Даже управляющим
-руководители был не. Три коде выпускать заботиться ну. То его система
-удовольствием безостановочно, или ты главной процессорах. Мы без джоэл
-знания получат, статьи остальные мы ещё.
-
-Них русском касается поскольку по, образование должником
-систематизированный ну мои. Прийти кандидата университет но нас, для бы
-должны никакого, биг многие причин интервьюирования за.
-
-Тем до плиту почему. Вот учёт такие одного бы, об биг разным внешних
-промежуток. Вас до какому возможностей безответственный, были погодите бы
-его, по них глупые долгий количества.
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/three.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/three.txt
deleted file mode 100644
index c81ccd598b6077fe92c78afa7aee238f2f4cf0ea..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/three.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-Αν ήδη διάβασε γλιτώσει μεταγλωτίσει, αυτήν θυμάμαι μου μα. Την κατάσταση χρησιμοποίησέ να! Τα διαφορά φαινόμενο διολισθήσεις πες, υψηλότερη προκαλείς περισσότερες όχι κι. Με ελέγχου γίνεται σας, μικρής δημιουργούν τη του. Τις τα γράψει εικόνες απαράδεκτη?
-
-Να ότι πρώτοι απαραίτητο. Άμεση πετάνε κακόκεφος τον ώς, να χώρου πιθανότητες του. Το μέχρι ορίστε λιγότερους σας. Πω ναί φυσικά εικόνες.
-
-Μου οι κώδικα αποκλειστικούς, λες το μάλλον συνεχώς. Νέου σημεία απίστευτα σας μα. Χρόνου μεταγλωτιστής σε νέα, τη τις πιάνει μπορούσες προγραμματιστές. Των κάνε βγαίνει εντυπωσιακό τα? Κρατάει τεσσαρών δυστυχώς της κι, ήδη υψηλότερη εξακολουθεί τα?
-
-Ώρα πετάνε μπορούσε λιγότερους αν, τα απαράδεκτη συγχωνευτεί ροή. Τη έγραψες συνηθίζουν σαν. Όλα με υλικό στήλες χειρότερα. Ανώδυνη δουλέψει επί ως, αν διαδίκτυο εσωτερικών παράγοντες από. Κεντρικό επιτυχία πες το.
-
-Πω ναι λέει τελειώσει, έξι ως έργων τελειώσει. Με αρχεία βουτήξουν ανταγωνιστής ώρα, πολύ γραφικά σελίδων τα στη. Όρο οέλεγχος δημιουργούν δε, ας θέλεις ελέγχου συντακτικό όρο! Της θυμάμαι επιδιόρθωση τα. Για μπορούσε περισσότερο αν, μέγιστη σημαίνει αποφάσισε τα του, άτομο αποτελέσει τι στα.
-
-Τι στην αφήσεις διοίκηση στη. Τα εσφαλμένη δημιουργια επιχείριση έξι! Βήμα μαγικά εκτελέσει ανά τη. Όλη αφήσεις συνεχώς εμπορικά αν, το λες κόλπα επιτυχία. Ότι οι ζώνη κειμένων. Όρο κι ρωτάει γραμμής πελάτες, τελειώσει διολισθήσεις καθυστερούσε αν εγώ? Τι πετούν διοίκηση προβλήματα ήδη.
-
-Τη γλιτώσει αποθηκευτικού μια. Πω έξι δημιουργια πιθανότητες, ως πέντε ελέγχους εκτελείται λες. Πως ερωτήσεις διοικητικό συγκεντρωμένοι οι, ας συνεχώς διοικητικό αποστηθίσει σαν. Δε πρώτες συνεχώς διολισθήσεις έχω, από τι κανένας βουτήξουν, γειτονιάς προσεκτικά ανταγωνιστής κι σαν.
-
-Δημιουργια συνηθίζουν κλπ τι? Όχι ποσοστό διακοπής κι. Κλπ φακέλους δεδομένη εξοργιστικά θα? Υποψήφιο καθορίζουν με όλη, στα πήρε προσοχή εταιρείες πω, ώς τον συνάδελφος διοικητικό δημιουργήσεις! Δούλευε επιτίθενται σας θα, με ένας παραγωγικής ένα, να ναι σημεία μέγιστη απαράδεκτη?
-
-Σας τεσσαρών συνεντεύξης τη, αρπάζεις σίγουρος μη για', επί τοπικές εντολές ακούσει θα? Ως δυστυχής μεταγλωτιστής όλη, να την είχαν σφάλμα απαραίτητο! Μην ώς άτομο διορθώσει χρησιμοποιούνταν. Δεν τα κόλπα πετάξαμε, μη που άγχος υόρκη άμεση, αφού δυστυχώς διακόψουμε όρο αν! Όλη μαγικά πετάνε επιδιορθώσεις δε, ροή φυσικά αποτελέσει πω.
-
-Άπειρα παραπάνω φαινόμενο πω ώρα, σαν πόρτες κρατήσουν συνηθίζουν ως. Κι ώρα τρέξει είχαμε εφαρμογή. Απλό σχεδιαστής μεταγλωτιστής ας επί, τις τα όταν έγραψες γραμμής? Όλα κάνεις συνάδελφος εργαζόμενοι θα, χαρτιού χαμηλός τα ροή. Ως ναι όροφο έρθει, μην πελάτες αποφάσισε μεταφραστής με, να βιαστικά εκδόσεις αναζήτησης λες. Των φταίει εκθέσεις προσπαθήσεις οι, σπίτι αποστηθίσει ας λες?
-
-Ώς που υπηρεσία απαραίτητο δημιουργείς. Μη άρα χαρά καθώς νύχτας, πω ματ μπουν είχαν. Άμεση δημιουργείς ώς ροή, γράψει γραμμής σίγουρος στα τι! Αν αφού πρώτοι εργαζόμενων ναί.
-
-Άμεση διορθώσεις με δύο? Έχουν παράδειγμα των θα, μου έρθει θυμάμαι περισσότερο το. Ότι θα αφού χρειάζονται περισσότερες. Σαν συνεχώς περίπου οι.
-
-Ώς πρώτης πετάξαμε λες, όρο κι πρώτες ζητήσεις δυστυχής. Ανά χρόνου διακοπή επιχειρηματίες ας, ώς μόλις άτομο χειρότερα όρο, κρατάει σχεδιαστής προσπαθήσεις νέο το. Πουλάς προσθέσει όλη πω, τύπου χαρακτηριστικό εγώ σε, πω πιο δούλευε αναζήτησης? Αναφορά δίνοντας σαν μη, μάθε δεδομένη εσωτερικών με ναι, αναφέρονται περιβάλλοντος ώρα αν. Και λέει απόλαυσε τα, που το όροφο προσπαθούν?
-
-Πάντα χρόνου χρήματα ναι το, σαν σωστά θυμάμαι σκεφτείς τα. Μα αποτελέσει ανεπιθύμητη την, πιο το τέτοιο ατόμου, τη των τρόπο εργαλείων επιδιόρθωσης. Περιβάλλον παραγωγικής σου κι, κλπ οι τύπου κακόκεφους αποστηθίσει, δε των πλέον τρόποι. Πιθανότητες χαρακτηριστικών σας κι, γραφικά δημιουργήσεις μια οι, πω πολλοί εξαρτάται προσεκτικά εδώ. Σταματάς παράγοντες για' ώς, στις ρωτάει το ναι! Καρέκλα ζητήσεις συνδυασμούς τη ήδη!
-
-Για μαγικά συνεχώς ακούσει το. Σταματάς προϊόντα βουτήξουν ώς ροή. Είχαν πρώτες οι ναι, μα λες αποστηθίσει ανακαλύπτεις. Όροφο άλγεβρα παραπάνω εδώ τη, πρόσληψη λαμβάνουν καταλάθος ήδη ας? Ως και εισαγωγή κρατήσουν, ένας κακόκεφους κι μας, όχι κώδικάς παίξουν πω. Πω νέα κρατάει εκφράσουν, τότε τελικών τη όχι, ας της τρέξει αλλάζοντας αποκλειστικούς.
-
-Ένας βιβλίο σε άρα, ναι ως γράψει ταξινομεί διορθώσεις! Εδώ να γεγονός συγγραφείς, ώς ήδη διακόψουμε επιχειρηματίες? Ότι πακέτων εσφαλμένη κι, θα όρο κόλπα παραγωγικής? Αν έχω κεντρικό υψηλότερη, κι δεν ίδιο πετάνε παρατηρούμενη! Που λοιπόν σημαντικό μα, προκαλείς χειροκροτήματα ως όλα, μα επί κόλπα άγχος γραμμές! Δε σου κάνεις βουτήξουν, μη έργων επενδυτής χρησιμοποίησέ στα, ως του πρώτες διάσημα σημαντικό.
-
-Βιβλίο τεράστιο προκύπτουν σαν το, σαν τρόπο επιδιόρθωση ας. Είχαν προσοχή προσπάθεια κι ματ, εδώ ως έτσι σελίδων συζήτηση. Και στην βγαίνει εσφαλμένη με, δυστυχής παράδειγμα δε μας, από σε υόρκη επιδιόρθωσης. Νέα πω νέου πιθανό, στήλες συγγραφείς μπαίνοντας μα για', το ρωτήσει κακόκεφους της? Μου σε αρέσει συγγραφής συγχωνευτεί, μη μου υόρκη ξέχασε διακοπής! Ώς επί αποφάσισε αποκλειστικούς χρησιμοποιώντας, χρήματα σελίδων ταξινομεί ναι με.
-
-Μη ανά γραμμή απόλαυσε, πω ναι μάτσο διασφαλίζεται. Τη έξι μόλις εργάστηκε δημιουργούν, έκδοση αναφορά δυσκολότερο οι νέο. Σας ως μπορούσε παράδειγμα, αν ότι δούλευε μπορούσε αποκλειστικούς, πιο λέει βουτήξουν διορθώσει ως. Έχω τελευταία κακόκεφους ας, όσο εργαζόμενων δημιουργήσεις τα.
-
-Του αν δουλέψει μπορούσε, πετούν χαμηλός εδώ ας? Κύκλο τύπους με που, δεν σε έχουν συνεχώς χειρότερα, τις τι απαράδεκτη συνηθίζουν? Θα μην τους αυτήν, τη ένα πήρε πακέτων, κι προκύπτουν περιβάλλον πως. Μα για δουλέψει απόλαυσε εφαμοργής, ώς εδώ σημαίνει μπορούσες, άμεση ακούσει προσοχή τη εδώ?
-
-Στα δώσε αθόρυβες λιγότερους οι, δε αναγκάζονται αποκλειστικούς όλα! Ας μπουν διοικητικό μια, πάντα ελέγχου διορθώσεις ώς τον. Ότι πήρε κανόνα μα. Που άτομα κάνεις δημιουργίες τα, οι μας αφού κόλπα προγραμματιστής, αφού ωραίο προκύπτουν στα ως. Θέμα χρησιμοποιήσει αν όλα, του τα άλγεβρα σελίδων. Τα ότι ανώδυνη δυστυχώς συνδυασμούς, μας οι πάντα γνωρίζουμε ανταγωνιστής, όχι τα δοκιμάσεις σχεδιαστής! Στην συνεντεύξης επιδιόρθωση πιο τα, μα από πουλάς περιβάλλον παραγωγικής.
-
-Έχουν μεταγλωτίσει σε σας, σε πάντα πρώτης μειώσει των, γράψει ρουτίνα δυσκολότερο ήδη μα? Ταξινομεί διορθώσεις να μας. Θα της προσπαθούν περιεχόμενα, δε έχω τοπικές στέλνοντάς. Ανά δε αλφα άμεση, κάποιο ρωτάει γνωρίζουμε πω στη, φράση μαγικά συνέχεια δε δύο! Αν είχαμε μειώσει ροή, μας μετράει καθυστερούσε επιδιορθώσεις μη. Χάος υόρκη κεντρικό έχω σε, ανά περίπου αναγκάζονται πω.
-
-Όσο επιστρέφουν χρονοδιαγράμματα μη. Πως ωραίο κακόκεφος διαχειριστής ως, τις να διακοπής αναζήτησης. Κάποιο ποσοστό ταξινομεί επί τη? Μάθε άμεση αλλάζοντας δύο με, μου νέου πάντα να.
-
-Πω του δυστυχώς πιθανότητες. Κι ρωτάει υψηλότερη δημιουργια ότι, πω εισαγωγή τελευταία απομόνωση ναι. Των ζητήσεις γνωρίζουμε ώς? Για' μη παραδοτέου αναφέρονται! Ύψος παραγωγικά ροή ως, φυσικά διάβασε εικόνες όσο σε? Δεν υόρκη διορθώσεις επεξεργασία θα, ως μέση σύστημα χρησιμοποιήσει τις.
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/two.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/two.txt
deleted file mode 100644
index 2443fc4d88e6ab9795ded0bab336b6c2d86f0286..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/two.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-रखति आवश्यकत प्रेरना मुख्यतह हिंदी किएलोग असक्षम कार्यलय करते विवरण किके मानसिक दिनांक पुर्व संसाध एवम् कुशलता अमितकुमार प्रोत्साहित जनित देखने उदेशीत विकसित बलवान ब्रौशर किएलोग विश्लेषण लोगो कैसे जागरुक प्रव्रुति प्रोत्साहित सदस्य आवश्यकत प्रसारन उपलब्धता अथवा हिंदी जनित दर्शाता यन्त्रालय बलवान अतित सहयोग शुरुआत सभीकुछ माहितीवानीज्य लिये खरिदे है।अभी एकत्रित सम्पर्क रिती मुश्किल प्राथमिक भेदनक्षमता विश्व उन्हे गटको द्वारा तकरीबन
-
-विश्व द्वारा व्याख्या सके। आजपर वातावरण व्याख्यान पहोच। हमारी कीसे प्राथमिक विचारशिलता पुर्व करती कम्प्युटर भेदनक्षमता लिये बलवान और्४५० यायेका वार्तालाप सुचना भारत शुरुआत लाभान्वित पढाए संस्था वर्णित मार्गदर्शन चुनने
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Header/DateHeaderTest.php b/vendor/symfony/mime/Tests/Header/DateHeaderTest.php
deleted file mode 100644
index 4fc92b96aecf96240d138a328ae8dba960b7d359..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/DateHeaderTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\DateHeader;
-
-class DateHeaderTest extends TestCase
-{
-    /* --
-    The following tests refer to RFC 2822, section 3.6.1 and 3.3.
-    */
-
-    public function testGetDateTime()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable());
-        $this->assertSame($dateTime, $header->getDateTime());
-    }
-
-    public function testDateTimeCanBeSetBySetter()
-    {
-        $header = new DateHeader('Date', new \DateTimeImmutable());
-        $header->setDateTime($dateTime = new \DateTimeImmutable());
-        $this->assertSame($dateTime, $header->getDateTime());
-    }
-
-    public function testDateTimeIsConvertedToImmutable()
-    {
-        $dateTime = new \DateTime();
-        $header = new DateHeader('Date', $dateTime);
-        $this->assertInstanceOf('DateTimeImmutable', $header->getDateTime());
-        $this->assertEquals($dateTime->getTimestamp(), $header->getDateTime()->getTimestamp());
-        $this->assertEquals($dateTime->getTimezone(), $header->getDateTime()->getTimezone());
-    }
-
-    public function testDateTimeIsImmutable()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTime('2000-01-01 12:00:00 Europe/Berlin'));
-        $dateTime->setDate(2002, 2, 2);
-        $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getDateTime()->format('r'));
-        $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getBodyAsString());
-    }
-
-    public function testDateTimeIsConvertedToRfc2822Date()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable('2000-01-01 12:00:00 Europe/Berlin'));
-        $header->setDateTime($dateTime);
-        $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getBodyAsString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable());
-        $header->setBody($dateTime);
-        $this->assertEquals($dateTime->format('r'), $header->getBodyAsString());
-    }
-
-    public function testGetBody()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable());
-        $header->setDateTime($dateTime);
-        $this->assertEquals($dateTime, $header->getBody());
-    }
-
-    public function testToString()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable('2000-01-01 12:00:00 Europe/Berlin'));
-        $header->setDateTime($dateTime);
-        $this->assertEquals('Date: Sat, 01 Jan 2000 12:00:00 +0100', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/HeadersTest.php b/vendor/symfony/mime/Tests/Header/HeadersTest.php
deleted file mode 100644
index 3568c9a6e45d60ecd62566612eadea834ab497f7..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/HeadersTest.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\IdentificationHeader;
-use Symfony\Component\Mime\Header\MailboxListHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-
-class HeadersTest extends TestCase
-{
-    public function testAddMailboxListHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addMailboxListHeader('From', ['person@domain']);
-        $this->assertNotNull($headers->get('From'));
-    }
-
-    public function testAddDateHeaderDelegatesToFactory()
-    {
-        $dateTime = new \DateTimeImmutable();
-        $headers = new Headers();
-        $headers->addDateHeader('Date', $dateTime);
-        $this->assertNotNull($headers->get('Date'));
-    }
-
-    public function testAddTextHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Subject', 'some text');
-        $this->assertNotNull($headers->get('Subject'));
-    }
-
-    public function testAddParameterizedHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']);
-        $this->assertNotNull($headers->get('Content-Type'));
-    }
-
-    public function testAddIdHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertNotNull($headers->get('Message-ID'));
-    }
-
-    public function testAddPathHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addPathHeader('Return-Path', 'some@path');
-        $this->assertNotNull($headers->get('Return-Path'));
-    }
-
-    public function testHasReturnsFalseWhenNoHeaders()
-    {
-        $headers = new Headers();
-        $this->assertFalse($headers->has('Some-Header'));
-    }
-
-    public function testAddedMailboxListHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addMailboxListHeader('From', ['person@domain']);
-        $this->assertTrue($headers->has('From'));
-    }
-
-    public function testAddedDateHeaderIsSeenByHas()
-    {
-        $dateTime = new \DateTimeImmutable();
-        $headers = new Headers();
-        $headers->addDateHeader('Date', $dateTime);
-        $this->assertTrue($headers->has('Date'));
-    }
-
-    public function testAddedTextHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Subject', 'some text');
-        $this->assertTrue($headers->has('Subject'));
-    }
-
-    public function testAddedParameterizedHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']);
-        $this->assertTrue($headers->has('Content-Type'));
-    }
-
-    public function testAddedIdHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertTrue($headers->has('Message-ID'));
-    }
-
-    public function testAddedPathHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addPathHeader('Return-Path', 'some@path');
-        $this->assertTrue($headers->has('Return-Path'));
-    }
-
-    public function testNewlySetHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->add(new UnstructuredHeader('X-Foo', 'bar'));
-        $this->assertTrue($headers->has('X-Foo'));
-    }
-
-    public function testHasCanDistinguishMultipleHeaders()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('X-Test', 'some@id');
-        $headers->addTextHeader('X-Test', 'other@id');
-        $this->assertTrue($headers->has('X-Test'));
-    }
-
-    public function testGet()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertEquals($header->toString(), $headers->get('Message-ID')->toString());
-    }
-
-    public function testGetReturnsNullIfHeaderNotSet()
-    {
-        $headers = new Headers();
-        $this->assertNull($headers->get('Message-ID'));
-    }
-
-    public function testAllReturnsAllHeadersMatchingName()
-    {
-        $header0 = new UnstructuredHeader('X-Test', 'some@id');
-        $header1 = new UnstructuredHeader('X-Test', 'other@id');
-        $header2 = new UnstructuredHeader('X-Test', 'more@id');
-        $headers = new Headers();
-        $headers->addTextHeader('X-Test', 'some@id');
-        $headers->addTextHeader('X-Test', 'other@id');
-        $headers->addTextHeader('X-Test', 'more@id');
-        $this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->all('X-Test')));
-    }
-
-    public function testAllReturnsAllHeadersIfNoArguments()
-    {
-        $header0 = new IdentificationHeader('Message-ID', 'some@id');
-        $header1 = new UnstructuredHeader('Subject', 'thing');
-        $header2 = new MailboxListHeader('To', [new Address('person@example.org')]);
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $headers->addTextHeader('Subject', 'thing');
-        $headers->addMailboxListHeader('To', [new Address('person@example.org')]);
-        $this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->all()));
-    }
-
-    public function testAllReturnsEmptyArrayIfNoneSet()
-    {
-        $headers = new Headers();
-        $this->assertEquals([], iterator_to_array($headers->all('Received')));
-    }
-
-    public function testRemoveRemovesAllHeadersWithName()
-    {
-        $header0 = new UnstructuredHeader('X-Test', 'some@id');
-        $header1 = new UnstructuredHeader('X-Test', 'other@id');
-        $headers = new Headers();
-        $headers->addIdHeader('X-Test', 'some@id');
-        $headers->addIdHeader('X-Test', 'other@id');
-        $headers->remove('X-Test');
-        $this->assertFalse($headers->has('X-Test'));
-        $this->assertFalse($headers->has('X-Test'));
-    }
-
-    public function testHasIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertTrue($headers->has('message-id'));
-    }
-
-    public function testGetIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertEquals($header, $headers->get('message-id'));
-    }
-
-    public function testAllIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertEquals([$header], iterator_to_array($headers->all('message-id')));
-    }
-
-    public function testRemoveIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $headers->remove('message-id');
-        $this->assertFalse($headers->has('Message-ID'));
-    }
-
-    public function testToStringJoinsHeadersTogether()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Foo', 'bar');
-        $headers->addTextHeader('Zip', 'buttons');
-        $this->assertEquals("Foo: bar\r\nZip: buttons\r\n", $headers->toString());
-    }
-
-    public function testHeadersWithoutBodiesAreNotDisplayed()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Foo', 'bar');
-        $headers->addTextHeader('Zip', '');
-        $this->assertEquals("Foo: bar\r\n", $headers->toString());
-    }
-
-    public function testToArray()
-    {
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $headers->addTextHeader('Foo', str_repeat('a', 60).pack('C', 0x8F));
-        $this->assertEquals([
-            'Message-ID: <some@id>',
-            "Foo: =?utf-8?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r\n =?utf-8?Q?aaaa?=",
-        ], $headers->toArray());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/IdentificationHeaderTest.php b/vendor/symfony/mime/Tests/Header/IdentificationHeaderTest.php
deleted file mode 100644
index b7f0095d3a164fb64821637039df219a6c6f91c8..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/IdentificationHeaderTest.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\IdentificationHeader;
-
-class IdentificationHeaderTest extends TestCase
-{
-    public function testValueMatchesMsgIdSpec()
-    {
-        /* -- RFC 2822, 3.6.4.
-         message-id      =       "Message-ID:" msg-id CRLF
-
-         in-reply-to     =       "In-Reply-To:" 1*msg-id CRLF
-
-         references      =       "References:" 1*msg-id CRLF
-
-         msg-id          =       [CFWS] "<" id-left "@" id-right ">" [CFWS]
-
-         id-left         =       dot-atom-text / no-fold-quote / obs-id-left
-
-         id-right        =       dot-atom-text / no-fold-literal / obs-id-right
-
-         no-fold-quote   =       DQUOTE *(qtext / quoted-pair) DQUOTE
-
-         no-fold-literal =       "[" *(dtext / quoted-pair) "]"
-        */
-
-        $header = new IdentificationHeader('Message-ID', 'id-left@id-right');
-        $this->assertEquals('<id-left@id-right>', $header->getBodyAsString());
-    }
-
-    public function testIdCanBeRetrievedVerbatim()
-    {
-        $header = new IdentificationHeader('Message-ID', 'id-left@id-right');
-        $this->assertEquals('id-left@id-right', $header->getId());
-    }
-
-    public function testMultipleIdsCanBeSet()
-    {
-        $header = new IdentificationHeader('References', 'c@d');
-        $header->setIds(['a@b', 'x@y']);
-        $this->assertEquals(['a@b', 'x@y'], $header->getIds());
-    }
-
-    public function testSettingMultipleIdsProducesAListValue()
-    {
-        /* -- RFC 2822, 3.6.4.
-        The "References:" and "In-Reply-To:" field each contain one or more
-        unique message identifiers, optionally separated by CFWS.
-
-         .. SNIP ..
-
-         in-reply-to     =       "In-Reply-To:" 1*msg-id CRLF
-
-         references      =       "References:" 1*msg-id CRLF
-         */
-
-        $header = new IdentificationHeader('References', ['a@b', 'x@y']);
-        $this->assertEquals('<a@b> <x@y>', $header->getBodyAsString());
-    }
-
-    public function testIdLeftCanBeQuoted()
-    {
-        /* -- RFC 2822, 3.6.4.
-         id-left         =       dot-atom-text / no-fold-quote / obs-id-left
-         */
-
-        $header = new IdentificationHeader('References', '"ab"@c');
-        $this->assertEquals('"ab"@c', $header->getId());
-        $this->assertEquals('<"ab"@c>', $header->getBodyAsString());
-    }
-
-    public function testIdLeftCanContainAnglesAsQuotedPairs()
-    {
-        /* -- RFC 2822, 3.6.4.
-         no-fold-quote   =       DQUOTE *(qtext / quoted-pair) DQUOTE
-         */
-
-        $header = new IdentificationHeader('References', '"a\\<\\>b"@c');
-        $this->assertEquals('"a\\<\\>b"@c', $header->getId());
-        $this->assertEquals('<"a\\<\\>b"@c>', $header->getBodyAsString());
-    }
-
-    public function testIdLeftCanBeDotAtom()
-    {
-        $header = new IdentificationHeader('References', 'a.b+&%$.c@d');
-        $this->assertEquals('a.b+&%$.c@d', $header->getId());
-        $this->assertEquals('<a.b+&%$.c@d>', $header->getBodyAsString());
-    }
-
-    public function testInvalidIdLeftThrowsException()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('Email "a b c@d" does not comply with addr-spec of RFC 2822.');
-        $header = new IdentificationHeader('References', 'a b c@d');
-    }
-
-    public function testIdRightCanBeDotAtom()
-    {
-        /* -- RFC 2822, 3.6.4.
-         id-right        =       dot-atom-text / no-fold-literal / obs-id-right
-         */
-
-        $header = new IdentificationHeader('References', 'a@b.c+&%$.d');
-        $this->assertEquals('a@b.c+&%$.d', $header->getId());
-        $this->assertEquals('<a@b.c+&%$.d>', $header->getBodyAsString());
-    }
-
-    public function testIdRightCanBeLiteral()
-    {
-        /* -- RFC 2822, 3.6.4.
-         no-fold-literal =       "[" *(dtext / quoted-pair) "]"
-        */
-
-        $header = new IdentificationHeader('References', 'a@[1.2.3.4]');
-        $this->assertEquals('a@[1.2.3.4]', $header->getId());
-        $this->assertEquals('<a@[1.2.3.4]>', $header->getBodyAsString());
-    }
-
-    public function testIdRigthIsIdnEncoded()
-    {
-        $header = new IdentificationHeader('References', 'a@ä');
-        $this->assertEquals('a@ä', $header->getId());
-        $this->assertEquals('<a@xn--4ca>', $header->getBodyAsString());
-    }
-
-    public function testInvalidIdRightThrowsException()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('Email "a@b c d" does not comply with addr-spec of RFC 2822.');
-        $header = new IdentificationHeader('References', 'a@b c d');
-    }
-
-    public function testMissingAtSignThrowsException()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('Email "abc" does not comply with addr-spec of RFC 2822.');
-        /* -- RFC 2822, 3.6.4.
-         msg-id          =       [CFWS] "<" id-left "@" id-right ">" [CFWS]
-         */
-        $header = new IdentificationHeader('References', 'abc');
-    }
-
-    public function testSetBody()
-    {
-        $header = new IdentificationHeader('Message-ID', 'c@d');
-        $header->setBody('a@b');
-        $this->assertEquals(['a@b'], $header->getIds());
-    }
-
-    public function testGetBody()
-    {
-        $header = new IdentificationHeader('Message-ID', 'a@b');
-        $this->assertEquals(['a@b'], $header->getBody());
-    }
-
-    public function testStringValue()
-    {
-        $header = new IdentificationHeader('References', ['a@b', 'x@y']);
-        $this->assertEquals('References: <a@b> <x@y>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/MailboxHeaderTest.php b/vendor/symfony/mime/Tests/Header/MailboxHeaderTest.php
deleted file mode 100644
index 72f22ff980260162cf0e2de76e614ad65fb581e3..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/MailboxHeaderTest.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\MailboxHeader;
-use Symfony\Component\Mime\NamedAddress;
-
-class MailboxHeaderTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $header = new MailboxHeader('Sender', $address = new Address('fabien@symfony.com'));
-        $this->assertEquals($address, $header->getAddress());
-        $this->assertEquals($address, $header->getBody());
-    }
-
-    public function testAddress()
-    {
-        $header = new MailboxHeader('Sender', new Address('fabien@symfony.com'));
-        $header->setBody($address = new Address('helene@symfony.com'));
-        $this->assertEquals($address, $header->getAddress());
-        $this->assertEquals($address, $header->getBody());
-        $header->setAddress($address = new Address('thomas@symfony.com'));
-        $this->assertEquals($address, $header->getAddress());
-        $this->assertEquals($address, $header->getBody());
-    }
-
-    public function testgetBodyAsString()
-    {
-        $header = new MailboxHeader('Sender', new Address('fabien@symfony.com'));
-        $this->assertEquals('fabien@symfony.com', $header->getBodyAsString());
-
-        $header->setAddress(new Address('fabien@sïmfony.com'));
-        $this->assertEquals('fabien@xn--smfony-iwa.com', $header->getBodyAsString());
-
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier'));
-        $this->assertEquals('Fabien Potencier <fabien@symfony.com>', $header->getBodyAsString());
-
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier, "from Symfony"'));
-        $this->assertEquals('"Fabien Potencier, \"from Symfony\"" <fabien@symfony.com>', $header->getBodyAsString());
-
-        $header = new MailboxHeader('From', new NamedAddress('fabien@symfony.com', 'Fabien Potencier, \\escaped\\'));
-        $this->assertEquals('"Fabien Potencier, \\\\escaped\\\\" <fabien@symfony.com>', $header->getBodyAsString());
-
-        $name = 'P'.pack('C', 0x8F).'tencier';
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien '.$name));
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('Fabien =?'.$header->getCharset().'?Q?P=8Ftencier?= <fabien@symfony.com>', $header->getBodyAsString());
-    }
-
-    public function testUtf8CharsInLocalPartThrows()
-    {
-        $this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException');
-        $header = new MailboxHeader('Sender', new Address('fabïen@symfony.com'));
-        $header->getBodyAsString();
-    }
-
-    public function testToString()
-    {
-        $header = new MailboxHeader('Sender', new Address('fabien@symfony.com'));
-        $this->assertEquals('Sender: fabien@symfony.com', $header->toString());
-
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier'));
-        $this->assertEquals('Sender: Fabien Potencier <fabien@symfony.com>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/MailboxListHeaderTest.php b/vendor/symfony/mime/Tests/Header/MailboxListHeaderTest.php
deleted file mode 100644
index 2eee1cfa8663ad1a9e6bd6096eb1393f9fed70dc..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/MailboxListHeaderTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\MailboxListHeader;
-use Symfony\Component\Mime\NamedAddress;
-
-class MailboxListHeaderTest extends TestCase
-{
-    // RFC 2822, 3.6.2 for all tests
-
-    public function testMailboxIsSetForAddress()
-    {
-        $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals(['chris@swiftmailer.org'], $header->getAddressStrings());
-    }
-
-    public function testMailboxIsRenderedForNameAddress()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn')]);
-        $this->assertEquals(['Chris Corbyn <chris@swiftmailer.org>'], $header->getAddressStrings());
-    }
-
-    public function testAddressCanBeReturnedForAddress()
-    {
-        $header = new MailboxListHeader('From', $addresses = [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals($addresses, $header->getAddresses());
-    }
-
-    public function testQuotesInNameAreQuoted()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, "DHE"')]);
-        $this->assertEquals(['"Chris Corbyn, \"DHE\"" <chris@swiftmailer.org>'], $header->getAddressStrings());
-    }
-
-    public function testEscapeCharsInNameAreQuoted()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, \\escaped\\')]);
-        $this->assertEquals(['"Chris Corbyn, \\\\escaped\\\\" <chris@swiftmailer.org>'], $header->getAddressStrings());
-    }
-
-    public function testUtf8CharsInDomainAreIdnEncoded()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swïftmailer.org', 'Chris Corbyn')]);
-        $this->assertEquals(['Chris Corbyn <chris@xn--swftmailer-78a.org>'], $header->getAddressStrings());
-    }
-
-    public function testUtf8CharsInLocalPartThrows()
-    {
-        $this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException');
-        $header = new MailboxListHeader('From', [new NamedAddress('chrïs@swiftmailer.org', 'Chris Corbyn')]);
-        $header->getAddressStrings();
-    }
-
-    public function testGetMailboxesReturnsNameValuePairs()
-    {
-        $header = new MailboxListHeader('From', $addresses = [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, DHE')]);
-        $this->assertEquals($addresses, $header->getAddresses());
-    }
-
-    public function testMultipleAddressesAsMailboxStrings()
-    {
-        $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org'), new Address('mark@swiftmailer.org')]);
-        $this->assertEquals(['chris@swiftmailer.org', 'mark@swiftmailer.org'], $header->getAddressStrings());
-    }
-
-    public function testNameIsEncodedIfNonAscii()
-    {
-        $name = 'C'.pack('C', 0x8F).'rbyn';
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris '.$name)]);
-        $header->setCharset('iso-8859-1');
-        $addresses = $header->getAddressStrings();
-        $this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses));
-    }
-
-    public function testEncodingLineLengthCalculations()
-    {
-        /* -- RFC 2047, 2.
-        An 'encoded-word' may not be more than 75 characters long, including
-        'charset', 'encoding', 'encoded-text', and delimiters.
-        */
-
-        $name = 'C'.pack('C', 0x8F).'rbyn';
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris '.$name)]);
-        $header->setCharset('iso-8859-1');
-        $addresses = $header->getAddressStrings();
-        $this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses));
-    }
-
-    public function testGetValueReturnsMailboxStringValue()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn')]);
-        $this->assertEquals('Chris Corbyn <chris@swiftmailer.org>', $header->getBodyAsString());
-    }
-
-    public function testGetValueReturnsMailboxStringValueForMultipleMailboxes()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn'), new NamedAddress('mark@swiftmailer.org', 'Mark Corbyn')]);
-        $this->assertEquals('Chris Corbyn <chris@swiftmailer.org>, Mark Corbyn <mark@swiftmailer.org>', $header->getBodyAsString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new MailboxListHeader('From', []);
-        $header->setBody($addresses = [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals($addresses, $header->getAddresses());
-    }
-
-    public function testGetBody()
-    {
-        $header = new MailboxListHeader('From', $addresses = [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals($addresses, $header->getBody());
-    }
-
-    public function testToString()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@example.org', 'Chris Corbyn'), new NamedAddress('mark@example.org', 'Mark Corbyn')]);
-        $this->assertEquals('From: Chris Corbyn <chris@example.org>, Mark Corbyn <mark@example.org>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/ParameterizedHeaderTest.php b/vendor/symfony/mime/Tests/Header/ParameterizedHeaderTest.php
deleted file mode 100644
index e41d03857df08fc069386dfb83b7d07769c77e49..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/ParameterizedHeaderTest.php
+++ /dev/null
@@ -1,295 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-
-class ParameterizedHeaderTest extends TestCase
-{
-    private $charset = 'utf-8';
-    private $lang = 'en-us';
-
-    public function testValueIsReturnedVerbatim()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/plain');
-        $this->assertEquals('text/plain', $header->getValue());
-    }
-
-    public function testParametersAreAppended()
-    {
-        /* -- RFC 2045, 5.1
-        parameter := attribute "=" value
-
-        attribute := token
-                                    ; Matching of attributes
-                                    ; is ALWAYS case-insensitive.
-
-        value := token / quoted-string
-
-        token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,
-                 or tspecials>
-
-        tspecials :=  "(" / ")" / "<" / ">" / "@" /
-                   "," / ";" / ":" / "\" / <">
-                   "/" / "[" / "]" / "?" / "="
-                   ; Must be in quoted-string,
-                   ; to use within parameter values
-        */
-
-        $header = new ParameterizedHeader('Content-Type', 'text/plain');
-        $header->setParameters(['charset' => 'utf-8']);
-        $this->assertEquals('text/plain; charset=utf-8', $header->getBodyAsString());
-    }
-
-    public function testSpaceInParamResultsInQuotedString()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'attachment');
-        $header->setParameters(['filename' => 'my file.txt']);
-        $this->assertEquals('attachment; filename="my file.txt"', $header->getBodyAsString());
-    }
-
-    public function testLongParamsAreBrokenIntoMultipleAttributeStrings()
-    {
-        /* -- RFC 2231, 3.
-        The asterisk character ("*") followed
-        by a decimal count is employed to indicate that multiple parameters
-        are being used to encapsulate a single parameter value.  The count
-        starts at 0 and increments by 1 for each subsequent section of the
-        parameter value.  Decimal values are used and neither leading zeroes
-        nor gaps in the sequence are allowed.
-
-        The original parameter value is recovered by concatenating the
-        various sections of the parameter, in order.  For example, the
-        content-type field
-
-                Content-Type: message/external-body; access-type=URL;
-         URL*0="ftp://";
-         URL*1="cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"
-
-        is semantically identical to
-
-                Content-Type: message/external-body; access-type=URL;
-                    URL="ftp://cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"
-
-        Note that quotes around parameter values are part of the value
-        syntax; they are NOT part of the value itself.  Furthermore, it is
-        explicitly permitted to have a mixture of quoted and unquoted
-        continuation fields.
-        */
-
-        $value = str_repeat('a', 180);
-
-        $header = new ParameterizedHeader('Content-Disposition', 'attachment');
-        $header->setParameters(['filename' => $value]);
-        $this->assertEquals(
-            'attachment; '.
-            'filename*0*=utf-8\'\''.str_repeat('a', 60).";\r\n ".
-            'filename*1*='.str_repeat('a', 60).";\r\n ".
-            'filename*2*='.str_repeat('a', 60),
-            $header->getBodyAsString()
-        );
-    }
-
-    public function testEncodedParamDataIncludesCharsetAndLanguage()
-    {
-        /* -- RFC 2231, 4.
-        Asterisks ("*") are reused to provide the indicator that language and
-        character set information is present and encoding is being used. A
-        single quote ("'") is used to delimit the character set and language
-        information at the beginning of the parameter value. Percent signs
-        ("%") are used as the encoding flag, which agrees with RFC 2047.
-
-        Specifically, an asterisk at the end of a parameter name acts as an
-        indicator that character set and language information may appear at
-        the beginning of the parameter value. A single quote is used to
-        separate the character set, language, and actual value information in
-        the parameter value string, and an percent sign is used to flag
-        octets encoded in hexadecimal.  For example:
-
-                Content-Type: application/x-stuff;
-         title*=us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A
-
-        Note that it is perfectly permissible to leave either the character
-        set or language field blank.  Note also that the single quote
-        delimiters MUST be present even when one of the field values is
-        omitted.
-        */
-
-        $value = str_repeat('a', 20).pack('C', 0x8F).str_repeat('a', 10);
-        $header = new ParameterizedHeader('Content-Disposition', 'attachment');
-        $header->setCharset('iso-8859-1');
-        $header->setValue('attachment');
-        $header->setParameters(['filename' => $value]);
-        $header->setLanguage($this->lang);
-        $this->assertEquals(
-            'attachment; filename*='.$header->getCharset()."'".$this->lang."'".
-            str_repeat('a', 20).'%8F'.str_repeat('a', 10),
-            $header->getBodyAsString()
-        );
-    }
-
-    public function testMultipleEncodedParamLinesAreFormattedCorrectly()
-    {
-        /* -- RFC 2231, 4.1.
-        Character set and language information may be combined with the
-        parameter continuation mechanism. For example:
-
-        Content-Type: application/x-stuff
-        title*0*=us-ascii'en'This%20is%20even%20more%20
-        title*1*=%2A%2A%2Afun%2A%2A%2A%20
-        title*2="isn't it!"
-
-           Note that:
-
-        (1)   Language and character set information only appear at
-              the beginning of a given parameter value.
-
-        (2)   Continuations do not provide a facility for using more
-              than one character set or language in the same
-              parameter value.
-
-        (3)   A value presented using multiple continuations may
-              contain a mixture of encoded and unencoded segments.
-
-        (4)   The first segment of a continuation MUST be encoded if
-              language and character set information are given.
-
-        (5)   If the first segment of a continued parameter value is
-              encoded the language and character set field delimiters
-              MUST be present even when the fields are left blank.
-           */
-
-        $value = str_repeat('a', 20).pack('C', 0x8F).str_repeat('a', 60);
-        $header = new ParameterizedHeader('Content-Disposition', 'attachment');
-        $header->setValue('attachment');
-        $header->setCharset('utf-6');
-        $header->setParameters(['filename' => $value]);
-        $header->setLanguage($this->lang);
-        $this->assertEquals(
-            'attachment; filename*0*='.$header->getCharset()."'".$this->lang."'".
-            str_repeat('a', 20).'%8F'.str_repeat('a', 23).";\r\n ".
-            'filename*1*='.str_repeat('a', 37),
-            $header->getBodyAsString()
-        );
-    }
-
-    public function testToString()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setParameters(['charset' => 'utf-8']);
-        $this->assertEquals('Content-Type: text/html; charset=utf-8', $header->toString());
-    }
-
-    public function testValueCanBeEncodedIfNonAscii()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', $value);
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['lookslike' => 'foobar']);
-        $this->assertEquals('X-Foo: =?'.$header->getCharset().'?Q?fo=8Fbar?=; lookslike=foobar', $header->toString());
-    }
-
-    public function testValueAndParamCanBeEncodedIfNonAscii()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', $value);
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('X-Foo: =?'.$header->getCharset().'?Q?fo=8Fbar?=; says*='.$header->getCharset()."''fo%8Fbar", $header->toString());
-    }
-
-    public function testParamsAreEncodedIfNonAscii()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', 'bar');
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('X-Foo: bar; says*='.$header->getCharset()."''fo%8Fbar", $header->toString());
-    }
-
-    public function testParamsAreEncodedWithLegacyEncodingEnabled()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('Content-Type', 'bar');
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('Content-Type: bar; says="=?'.$header->getCharset().'?Q?fo=8Fbar?="', $header->toString());
-    }
-
-    public function testLanguageInformationAppearsInEncodedWords()
-    {
-        /* -- RFC 2231, 5.
-        5.  Language specification in Encoded Words
-
-        RFC 2047 provides support for non-US-ASCII character sets in RFC 822
-        message header comments, phrases, and any unstructured text field.
-        This is done by defining an encoded word construct which can appear
-        in any of these places.  Given that these are fields intended for
-        display, it is sometimes necessary to associate language information
-        with encoded words as well as just the character set.  This
-        specification extends the definition of an encoded word to allow the
-        inclusion of such information.  This is simply done by suffixing the
-        character set specification with an asterisk followed by the language
-        tag.  For example:
-
-                    From: =?US-ASCII*EN?Q?Keith_Moore?= <moore@cs.utk.edu>
-
-        -- RFC 2047, 5. Use of encoded-words in message headers
-          ...
-        + An 'encoded-word' MUST NOT be used in parameter of a MIME
-          Content-Type or Content-Disposition field, or in any structured
-          field body except within a 'comment' or 'phrase'.
-
-        -- RFC 2047, Appendix - changes since RFC 1522
-          ...
-        + clarify that encoded-words are allowed in '*text' fields in both
-          RFC822 headers and MIME body part headers, but NOT as parameter
-          values.
-        */
-
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', $value);
-        $header->setCharset('iso-8859-1');
-        $header->setLanguage('en');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('X-Foo: =?'.$header->getCharset().'*en?Q?fo=8Fbar?=; says*='.$header->getCharset()."'en'fo%8Fbar", $header->toString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setBody('text/plain');
-        $this->assertEquals('text/plain', $header->getValue());
-    }
-
-    public function testGetBody()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/plain');
-        $this->assertEquals('text/plain', $header->getBody());
-    }
-
-    public function testSetParameter()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setParameters(['charset' => 'utf-8', 'delsp' => 'yes']);
-        $header->setParameter('delsp', 'no');
-        $this->assertEquals(['charset' => 'utf-8', 'delsp' => 'no'], $header->getParameters());
-    }
-
-    public function testGetParameter()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setParameters(['charset' => 'utf-8', 'delsp' => 'yes']);
-        $this->assertEquals('utf-8', $header->getParameter('charset'));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/PathHeaderTest.php b/vendor/symfony/mime/Tests/Header/PathHeaderTest.php
deleted file mode 100644
index 6bc029aee4cea3b9fba67ec879f424d80a7ff6f1..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/PathHeaderTest.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\PathHeader;
-
-class PathHeaderTest extends TestCase
-{
-    public function testSingleAddressCanBeSetAndFetched()
-    {
-        $header = new PathHeader('Return-Path', $address = new Address('chris@swiftmailer.org'));
-        $this->assertEquals($address, $header->getAddress());
-    }
-
-    public function testAddressMustComplyWithRfc2822()
-    {
-        $this->expectException('Exception');
-        $header = new PathHeader('Return-Path', new Address('chr is@swiftmailer.org'));
-    }
-
-    public function testValueIsAngleAddrWithValidAddress()
-    {
-        /* -- RFC 2822, 3.6.7.
-
-            return          =       "Return-Path:" path CRLF
-
-            path            =       ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
-                                                            obs-path
-         */
-
-        $header = new PathHeader('Return-Path', new Address('chris@swiftmailer.org'));
-        $this->assertEquals('<chris@swiftmailer.org>', $header->getBodyAsString());
-    }
-
-    public function testAddressIsIdnEncoded()
-    {
-        $header = new PathHeader('Return-Path', new Address('chris@swïftmailer.org'));
-        $this->assertEquals('<chris@xn--swftmailer-78a.org>', $header->getBodyAsString());
-    }
-
-    public function testAddressMustBeEncodable()
-    {
-        $this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException');
-        $header = new PathHeader('Return-Path', new Address('chrïs@swiftmailer.org'));
-        $header->getBodyAsString();
-    }
-
-    public function testSetBody()
-    {
-        $header = new PathHeader('Return-Path', new Address('foo@example.com'));
-        $header->setBody($address = new Address('foo@bar.tld'));
-        $this->assertEquals($address, $header->getAddress());
-    }
-
-    public function testGetBody()
-    {
-        $header = new PathHeader('Return-Path', $address = new Address('foo@bar.tld'));
-        $this->assertEquals($address, $header->getBody());
-    }
-
-    public function testToString()
-    {
-        $header = new PathHeader('Return-Path', new Address('chris@swiftmailer.org'));
-        $this->assertEquals('Return-Path: <chris@swiftmailer.org>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/UnstructuredHeaderTest.php b/vendor/symfony/mime/Tests/Header/UnstructuredHeaderTest.php
deleted file mode 100644
index 3e065bf268a795552f720eb2d168e6eaa7bd0672..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Header/UnstructuredHeaderTest.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-
-class UnstructuredHeaderTest extends TestCase
-{
-    private $charset = 'utf-8';
-
-    public function testGetNameReturnsNameVerbatim()
-    {
-        $header = new UnstructuredHeader('Subject', '');
-        $this->assertEquals('Subject', $header->getName());
-    }
-
-    public function testGetValueReturnsValueVerbatim()
-    {
-        $header = new UnstructuredHeader('Subject', 'Test');
-        $this->assertEquals('Test', $header->getValue());
-    }
-
-    public function testBasicStructureIsKeyValuePair()
-    {
-        /* -- RFC 2822, 2.2
-        Header fields are lines composed of a field name, followed by a colon
-        (":"), followed by a field body, and terminated by CRLF.
-        */
-        $header = new UnstructuredHeader('Subject', 'Test');
-        $this->assertEquals('Subject: Test', $header->toString());
-    }
-
-    public function testLongHeadersAreFoldedAtWordBoundary()
-    {
-        /* -- RFC 2822, 2.2.3
-        Each header field is logically a single line of characters comprising
-        the field name, the colon, and the field body.  For convenience
-        however, and to deal with the 998/78 character limitations per line,
-        the field body portion of a header field can be split into a multiple
-        line representation; this is called "folding".  The general rule is
-        that wherever this standard allows for folding white space (not
-        simply WSP characters), a CRLF may be inserted before any WSP.
-        */
-
-        $value = 'The quick brown fox jumped over the fence, he was a very very '.
-            'scary brown fox with a bushy tail';
-        $header = new UnstructuredHeader('X-Custom-Header', $value);
-        /*
-            X-Custom-Header: The quick brown fox jumped over the fence, he was a very very
-            scary brown fox with a bushy tail
-        */
-        $this->assertEquals(
-            'X-Custom-Header: The quick brown fox jumped over the fence, he was a'.
-            ' very'."\r\n".//Folding
-            ' very scary brown fox with a bushy tail',
-            $header->toString(), '%s: The header should have been folded at 76th char'
-        );
-    }
-
-    public function testPrintableAsciiOnlyAppearsInHeaders()
-    {
-        /* -- RFC 2822, 2.2.
-        A field name MUST be composed of printable US-ASCII characters (i.e.,
-        characters that have values between 33 and 126, inclusive), except
-        colon.  A field body may be composed of any US-ASCII characters,
-        except for CR and LF.
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $this->assertRegExp('~^[^:\x00-\x20\x80-\xFF]+: [^\x80-\xFF\r\n]+$~s', $header->toString());
-    }
-
-    public function testEncodedWordsFollowGeneralStructure()
-    {
-        /* -- RFC 2047, 1.
-        Generally, an "encoded-word" is a sequence of printable ASCII
-        characters that begins with "=?", ends with "?=", and has two "?"s in
-        between.
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $this->assertRegExp('~^X-Test: \=?.*?\?.*?\?.*?\?=$~s', $header->toString());
-    }
-
-    public function testEncodedWordIncludesCharsetAndEncodingMethodAndText()
-    {
-        /* -- RFC 2047, 2.
-        An 'encoded-word' is defined by the following ABNF grammar.  The
-        notation of RFC 822 is used, with the exception that white space
-        characters MUST NOT appear between components of an 'encoded-word'.
-
-        encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: =?'.$header->getCharset().'?Q?=8F?=', $header->toString());
-    }
-
-    public function testEncodedWordsAreUsedToEncodedNonPrintableAscii()
-    {
-        // SPACE and TAB permitted
-        $nonPrintableBytes = array_merge(range(0x00, 0x08), range(0x10, 0x19), [0x7F]);
-        foreach ($nonPrintableBytes as $byte) {
-            $char = pack('C', $byte);
-            $encodedChar = sprintf('=%02X', $byte);
-            $header = new UnstructuredHeader('X-A', $char);
-            $header->setCharset('iso-8859-1');
-            $this->assertEquals('X-A: =?'.$header->getCharset().'?Q?'.$encodedChar.'?=', $header->toString(), 'Non-printable ascii should be encoded');
-        }
-    }
-
-    public function testEncodedWordsAreUsedToEncode8BitOctets()
-    {
-        foreach (range(0x80, 0xFF) as $byte) {
-            $char = pack('C', $byte);
-            $encodedChar = sprintf('=%02X', $byte);
-            $header = new UnstructuredHeader('X-A', $char);
-            $header->setCharset('iso-8859-1');
-            $this->assertEquals('X-A: =?'.$header->getCharset().'?Q?'.$encodedChar.'?=', $header->toString(), '8-bit octets should be encoded');
-        }
-    }
-
-    public function testEncodedWordsAreNoMoreThan75CharsPerLine()
-    {
-        /* -- RFC 2047, 2.
-        An 'encoded-word' may not be more than 75 characters long, including
-        'charset', 'encoding', 'encoded-text', and delimiters.
-
-        ... SNIP ...
-
-        While there is no limit to the length of a multiple-line header
-        field, each line of a header field that contains one or more
-        'encoded-word's is limited to 76 characters.
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-
-        //Note that multi-line headers begin with LWSP which makes 75 + 1 = 76
-        //Note also that =?utf-8?q??= is 12 chars which makes 75 - 12 = 63
-
-        //* X-Test: is 8 chars
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: =?'.$header->getCharset().'?Q?=8F?=', $header->toString());
-    }
-
-    public function testFWSPIsUsedWhenEncoderReturnsMultipleLines()
-    {
-        /* --RFC 2047, 2.
-        If it is desirable to encode more text than will fit in an 'encoded-word' of
-        75 characters, multiple 'encoded-word's (separated by CRLF SPACE) may
-        be used.
-        */
-
-        // Note that multi-line headers begin with LWSP which makes 75 + 1 = 76
-        // Note also that =?utf-8?q??= is 12 chars which makes 75 - 12 = 63
-
-        //* X-Test: is 8 chars
-        $header = new UnstructuredHeader('X-Test', pack('C', 0x8F).'line_one_here'."\r\n".'line_two_here');
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: =?'.$header->getCharset().'?Q?=8Fline=5Fone=5Fhere?='."\r\n".' =?'.$header->getCharset().'?Q?line=5Ftwo=5Fhere?=', $header->toString());
-    }
-
-    public function testAdjacentWordsAreEncodedTogether()
-    {
-        /* -- RFC 2047, 5 (1)
-         Ordinary ASCII text and 'encoded-word's may appear together in the
-        same header field.  However, an 'encoded-word' that appears in a
-        header field defined as '*text' MUST be separated from any adjacent
-        'encoded-word' or 'text' by 'linear-white-space'.
-
-         -- RFC 2047, 2.
-         IMPORTANT: 'encoded-word's are designed to be recognized as 'atom's
-        by an RFC 822 parser.  As a consequence, unencoded white space
-        characters (such as SPACE and HTAB) are FORBIDDEN within an
-        'encoded-word'.
-        */
-
-        // It would be valid to encode all words needed, however it's probably
-        // easiest to encode the longest amount required at a time
-
-        $word = 'w'.pack('C', 0x8F).'rd';
-        $text = 'start '.$word.' '.$word.' then '.$word;
-        // 'start', ' word word', ' and end', ' word'
-
-        $header = new UnstructuredHeader('X-Test', $text);
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: start =?'.$header->getCharset().'?Q?'.
-            'w=8Frd_w=8Frd?= then =?'.$header->getCharset().'?Q?'.
-            'w=8Frd?=', $header->toString(),
-            'Adjacent encoded words should appear grouped with WSP encoded'
-        );
-    }
-
-    public function testLanguageInformationAppearsInEncodedWords()
-    {
-        /* -- RFC 2231, 5.
-        5.  Language specification in Encoded Words
-
-        RFC 2047 provides support for non-US-ASCII character sets in RFC 822
-        message header comments, phrases, and any unstructured text field.
-        This is done by defining an encoded word construct which can appear
-        in any of these places.  Given that these are fields intended for
-        display, it is sometimes necessary to associate language information
-        with encoded words as well as just the character set.  This
-        specification extends the definition of an encoded word to allow the
-        inclusion of such information.  This is simply done by suffixing the
-        character set specification with an asterisk followed by the language
-        tag.  For example:
-
-                    From: =?US-ASCII*EN?Q?Keith_Moore?= <moore@cs.utk.edu>
-        */
-
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new UnstructuredHeader('Subject', $value);
-        $header->setLanguage('en');
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('Subject: =?iso-8859-1*en?Q?fo=8Fbar?=', $header->toString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new UnstructuredHeader('X-Test', '');
-        $header->setBody('test');
-        $this->assertEquals('test', $header->getValue());
-    }
-
-    public function testGetBody()
-    {
-        $header = new UnstructuredHeader('Subject', 'test');
-        $this->assertEquals('test', $header->getBody());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/MessageConverterTest.php b/vendor/symfony/mime/Tests/MessageConverterTest.php
deleted file mode 100644
index 6a780862463776be8bc25cb90819eed1604ad9eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/MessageConverterTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\MessageConverter;
-
-class MessageConverterTest extends TestCase
-{
-    public function testToEmail()
-    {
-        $file = file_get_contents(__DIR__.'/Fixtures/mimetypes/test.gif');
-        $email = (new Email())->from('fabien@symfony.com');
-        $this->assertSame($email, MessageConverter::toEmail($email));
-
-        $this->assertConversion((clone $email)->text('text content'));
-        $this->assertConversion((clone $email)->html('HTML content <img src="cid:test.jpg" />'));
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->embed($file, 'test.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->embed($file, 'test.jpg', 'image/gif')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->embed($file, 'test.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->embed($file, 'test_attached.jpg', 'image/gif')
-        );
-    }
-
-    private function assertConversion(Email $expected)
-    {
-        $r = new \ReflectionMethod($expected, 'generateBody');
-        $r->setAccessible(true);
-
-        $message = new Message($expected->getHeaders(), $r->invoke($expected));
-        $converted = MessageConverter::toEmail($message);
-        if ($expected->getHtmlBody()) {
-            $this->assertStringMatchesFormat(str_replace('cid:test.jpg', 'cid:%s', $expected->getHtmlBody()), $converted->getHtmlBody());
-            $expected->html('HTML content');
-            $converted->html('HTML content');
-        }
-        $this->assertEquals($expected, $converted);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/MessageTest.php b/vendor/symfony/mime/Tests/MessageTest.php
deleted file mode 100644
index cc806b919e3f9cae5f7194de387f37251a20766f..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/MessageTest.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\MailboxListHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\NamedAddress;
-use Symfony\Component\Mime\Part\TextPart;
-
-class MessageTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $m = new Message();
-        $this->assertNull($m->getBody());
-        $this->assertEquals(new Headers(), $m->getHeaders());
-
-        $m = new Message($h = (new Headers())->addDateHeader('Date', new \DateTime()), $b = new TextPart('content'));
-        $this->assertSame($b, $m->getBody());
-        $this->assertEquals($h, $m->getHeaders());
-
-        $m = new Message();
-        $m->setBody($b);
-        $m->setHeaders($h);
-        $this->assertSame($b, $m->getBody());
-        $this->assertSame($h, $m->getHeaders());
-    }
-
-    public function testGetPreparedHeadersThrowsWhenNoFrom()
-    {
-        $this->expectException(\LogicException::class);
-        (new Message())->getPreparedHeaders();
-    }
-
-    public function testGetPreparedHeadersCloneHeaders()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $this->assertNotSame($message->getPreparedHeaders(), $message->getHeaders());
-    }
-
-    public function testGetPreparedHeadersSetRequiredHeaders()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $headers = $message->getPreparedHeaders();
-        $this->assertTrue($headers->has('MIME-Version'));
-        $this->assertTrue($headers->has('Message-ID'));
-        $this->assertTrue($headers->has('Date'));
-        $this->assertFalse($headers->has('Bcc'));
-    }
-
-    public function testGetPreparedHeaders()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $h = $message->getPreparedHeaders();
-        $this->assertCount(4, iterator_to_array($h->all()));
-        $this->assertEquals(new MailboxListHeader('From', [new Address('fabien@symfony.com')]), $h->get('From'));
-        $this->assertEquals(new UnstructuredHeader('MIME-Version', '1.0'), $h->get('mime-version'));
-        $this->assertTrue($h->has('Message-Id'));
-        $this->assertTrue($h->has('Date'));
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $message->getHeaders()->addDateHeader('Date', $n = new \DateTimeImmutable());
-        $this->assertEquals($n, $message->getPreparedHeaders()->get('Date')->getDateTime());
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $message->getHeaders()->addMailboxListHeader('Bcc', ['fabien@symfony.com']);
-        $this->assertNull($message->getPreparedHeaders()->get('Bcc'));
-    }
-
-    public function testGetPreparedHeadersWithNoFrom()
-    {
-        $this->expectException(\LogicException::class);
-        (new Message())->getPreparedHeaders();
-    }
-
-    public function testGetPreparedHeadersWithNamedFrom()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]);
-        $h = $message->getPreparedHeaders();
-        $this->assertEquals(new MailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]), $h->get('From'));
-        $this->assertTrue($h->has('Message-Id'));
-    }
-
-    public function testGetPreparedHeadersHasSenderWhenNeeded()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $this->assertNull($message->getPreparedHeaders()->get('Sender'));
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com', 'lucas@symfony.com']);
-        $this->assertEquals('fabien@symfony.com', $message->getPreparedHeaders()->get('Sender')->getAddress()->getAddress());
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com', 'lucas@symfony.com']);
-        $message->getHeaders()->addMailboxHeader('Sender', 'thomas@symfony.com');
-        $this->assertEquals('thomas@symfony.com', $message->getPreparedHeaders()->get('Sender')->getAddress()->getAddress());
-    }
-
-    public function testToString()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $expected = <<<EOF
-From: fabien@symfony.com
-MIME-Version: 1.0
-Date: %s
-Message-ID: <%s@symfony.com>
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: quoted-printable
-
-
-EOF;
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", $message->toString()));
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", implode('', iterator_to_array($message->toIterable(), false))));
-
-        $message = new Message(null, new TextPart('content'));
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $expected = <<<EOF
-From: fabien@symfony.com
-MIME-Version: 1.0
-Date: %s
-Message-ID: <%s@symfony.com>
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: quoted-printable
-
-content
-EOF;
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", $message->toString()));
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", implode('', iterator_to_array($message->toIterable(), false))));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/MimeTypesTest.php b/vendor/symfony/mime/Tests/MimeTypesTest.php
deleted file mode 100644
index c5ff262b80ffabfe367b4dee9b565661427dda86..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/MimeTypesTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use Symfony\Component\Mime\Exception\RuntimeException;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-use Symfony\Component\Mime\MimeTypes;
-
-/**
- * @requires extension fileinfo
- */
-class MimeTypesTest extends AbstractMimeTypeGuesserTest
-{
-    protected function getGuesser(): MimeTypeGuesserInterface
-    {
-        return new MimeTypes();
-    }
-
-    public function testUnsupportedGuesser()
-    {
-        $guesser = $this->getGuesser();
-        $guesser->registerGuesser(new class() implements MimeTypeGuesserInterface {
-            public function isGuesserSupported(): bool
-            {
-                return false;
-            }
-
-            public function guessMimeType(string $mimeType): ?string
-            {
-                throw new RuntimeException('Should never be called.');
-            }
-        });
-        $this->assertEquals('image/gif', $guesser->guessMimeType(__DIR__.'/Fixtures/mimetypes/test'));
-    }
-
-    public function testGetExtensions()
-    {
-        $mt = new MimeTypes();
-        $this->assertSame(['mbox'], $mt->getExtensions('application/mbox'));
-        $this->assertSame(['ai', 'eps', 'ps'], $mt->getExtensions('application/postscript'));
-        $this->assertSame([], $mt->getExtensions('application/whatever-symfony'));
-    }
-
-    public function testGetMimeTypes()
-    {
-        $mt = new MimeTypes();
-        $this->assertSame(['application/mbox'], $mt->getMimeTypes('mbox'));
-        $this->assertContains('application/postscript', $mt->getMimeTypes('ai'));
-        $this->assertContains('application/postscript', $mt->getMimeTypes('ps'));
-        $this->assertSame([], $mt->getMimeTypes('symfony'));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/NamedAddressTest.php b/vendor/symfony/mime/Tests/NamedAddressTest.php
deleted file mode 100644
index b793cbbaf843dccb4c9daf251a6175e30ae81d02..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/NamedAddressTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\NamedAddress;
-
-class NamedAddressTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new NamedAddress('fabien@symfonï.com', 'Fabien');
-        $this->assertEquals('Fabien', $a->getName());
-        $this->assertEquals('fabien@symfonï.com', $a->getAddress());
-        $this->assertEquals('Fabien <fabien@xn--symfon-nwa.com>', $a->toString());
-        $this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
-    }
-
-    public function nameEmptyDataProvider(): array
-    {
-        return [[''], [' '], [" \r\n "]];
-    }
-
-    /**
-     * @dataProvider nameEmptyDataProvider
-     */
-    public function testNameEmpty(string $name)
-    {
-        $mail = 'mail@example.org';
-
-        $this->assertSame($mail, (new NamedAddress($mail, $name))->getEncodedNamedAddress());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/DataPartTest.php b/vendor/symfony/mime/Tests/Part/DataPartTest.php
deleted file mode 100644
index d8a08a24303c24c7241c37150cb3949717ecc7c4..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/DataPartTest.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\IdentificationHeader;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Part\DataPart;
-
-class DataPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $p = new DataPart('content');
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals(base64_encode('content'), $p->bodyToString());
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        // bodyToIterable() can be called several times
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('application', $p->getMediaType());
-        $this->assertEquals('octet-stream', $p->getMediaSubType());
-
-        $p = new DataPart('content', null, 'text/html');
-        $this->assertEquals('text', $p->getMediaType());
-        $this->assertEquals('html', $p->getMediaSubType());
-    }
-
-    public function testConstructorWithResource()
-    {
-        $f = fopen('php://memory', 'r+', false);
-        fwrite($f, 'content');
-        rewind($f);
-        $p = new DataPart($f);
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals(base64_encode('content'), $p->bodyToString());
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        fclose($f);
-    }
-
-    public function testConstructorWithNonStringOrResource()
-    {
-        $this->expectException(\TypeError::class);
-        new DataPart(new \stdClass());
-    }
-
-    public function testHeaders()
-    {
-        $p = new DataPart('content');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'application/octet-stream'),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment')
-        ), $p->getPreparedHeaders());
-
-        $p = new DataPart('content', 'photo.jpg', 'text/html');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'photo.jpg', 'filename' => 'photo.jpg'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testAsInline()
-    {
-        $p = new DataPart('content', 'photo.jpg', 'text/html');
-        $p->asInline();
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'inline', ['name' => 'photo.jpg', 'filename' => 'photo.jpg'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testAsInlineWithCID()
-    {
-        $p = new DataPart('content', 'photo.jpg', 'text/html');
-        $p->asInline();
-        $cid = $p->getContentId();
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'inline', ['name' => 'photo.jpg', 'filename' => 'photo.jpg']),
-            new IdentificationHeader('Content-ID', $cid)
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testFromPath()
-    {
-        $p = DataPart::fromPath($file = __DIR__.'/../Fixtures/mimetypes/test.gif');
-        $content = file_get_contents($file);
-        $this->assertEquals($content, $p->getBody());
-        $this->assertEquals(base64_encode($content), $p->bodyToString());
-        $this->assertEquals(base64_encode($content), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('image', $p->getMediaType());
-        $this->assertEquals('gif', $p->getMediaSubType());
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'image/gif', ['name' => 'test.gif']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'test.gif', 'filename' => 'test.gif'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testFromPathWithMeta()
-    {
-        $p = DataPart::fromPath($file = __DIR__.'/../Fixtures/mimetypes/test.gif', 'photo.gif', 'image/jpeg');
-        $content = file_get_contents($file);
-        $this->assertEquals($content, $p->getBody());
-        $this->assertEquals(base64_encode($content), $p->bodyToString());
-        $this->assertEquals(base64_encode($content), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('image', $p->getMediaType());
-        $this->assertEquals('jpeg', $p->getMediaSubType());
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'image/jpeg', ['name' => 'photo.gif']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'photo.gif', 'filename' => 'photo.gif'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testHasContentId()
-    {
-        $p = new DataPart('content');
-        $this->assertFalse($p->hasContentId());
-        $p->getContentId();
-        $this->assertTrue($p->hasContentId());
-    }
-
-    public function testSerialize()
-    {
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, 'Text content');
-        rewind($r);
-
-        $p = new DataPart($r);
-        $p->getHeaders()->addTextHeader('foo', 'bar');
-        $expected = clone $p;
-        $this->assertEquals($expected->toString(), unserialize(serialize($p))->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/MessagePartTest.php b/vendor/symfony/mime/Tests/Part/MessagePartTest.php
deleted file mode 100644
index 21a4eb03b129203ed33969aa27da5694b6c2a61b..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/MessagePartTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Part\MessagePart;
-
-class MessagePartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $p = new MessagePart((new Email())->from('fabien@symfony.com')->text('content'));
-        $this->assertStringContainsString('content', $p->getBody());
-        $this->assertStringContainsString('content', $p->bodyToString());
-        $this->assertStringContainsString('content', implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('message', $p->getMediaType());
-        $this->assertEquals('rfc822', $p->getMediaSubType());
-    }
-
-    public function testHeaders()
-    {
-        $p = new MessagePart((new Email())->from('fabien@symfony.com')->text('content')->subject('Subject'));
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'message/rfc822', ['name' => 'Subject.eml']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'Subject.eml', 'filename' => 'Subject.eml'])
-        ), $p->getPreparedHeaders());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php
deleted file mode 100644
index 2dbc1315ef1b4f5c286d36db29d05d4032b98f6f..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\Multipart\AlternativePart;
-
-class AlternativePartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new AlternativePart();
-        $this->assertEquals('multipart', $a->getMediaType());
-        $this->assertEquals('alternative', $a->getMediaSubtype());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php
deleted file mode 100644
index 82738efbc5cbe76d471b64f3352efd86608d93eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\Part\MessagePart;
-use Symfony\Component\Mime\Part\Multipart\DigestPart;
-
-class DigestPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $r = new DigestPart($a = new MessagePart(new Message()), $b = new MessagePart(new Message()));
-        $this->assertEquals('multipart', $r->getMediaType());
-        $this->assertEquals('digest', $r->getMediaSubtype());
-        $this->assertEquals([$a, $b], $r->getParts());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php
deleted file mode 100644
index 71a03e6863d8a451fdffb84bf3ccd79998399423..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\Multipart\FormDataPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-class FormDataPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $r = new \ReflectionProperty(TextPart::class, 'encoding');
-        $r->setAccessible(true);
-
-        $b = new TextPart('content');
-        $c = DataPart::fromPath($file = __DIR__.'/../../Fixtures/mimetypes/test.gif');
-        $f = new FormDataPart([
-            'foo' => $content = 'very very long content that will not be cut even if the length is way more than 76 characters, ok?',
-            'bar' => clone $b,
-            'baz' => clone $c,
-        ]);
-        $this->assertEquals('multipart', $f->getMediaType());
-        $this->assertEquals('form-data', $f->getMediaSubtype());
-        $t = new TextPart($content, 'utf-8', 'plain', '8bit');
-        $t->setDisposition('form-data');
-        $t->setName('foo');
-        $t->getHeaders()->setMaxLineLength(PHP_INT_MAX);
-        $b->setDisposition('form-data');
-        $b->setName('bar');
-        $b->getHeaders()->setMaxLineLength(PHP_INT_MAX);
-        $r->setValue($b, '8bit');
-        $c->setDisposition('form-data');
-        $c->setName('baz');
-        $c->getHeaders()->setMaxLineLength(PHP_INT_MAX);
-        $r->setValue($c, '8bit');
-        $this->assertEquals([$t, $b, $c], $f->getParts());
-    }
-
-    public function testToString()
-    {
-        $p = DataPart::fromPath($file = __DIR__.'/../../Fixtures/mimetypes/test.gif');
-        $this->assertEquals(base64_encode(file_get_contents($file)), $p->bodyToString());
-    }
-
-    public function testContentLineLength()
-    {
-        $f = new FormDataPart([
-            'foo' => new DataPart($foo = str_repeat('foo', 1000), 'foo.txt', 'text/plain'),
-            'bar' => $bar = str_repeat('bar', 1000),
-        ]);
-        $parts = $f->getParts();
-        $this->assertEquals($foo, $parts[0]->bodyToString());
-        $this->assertEquals($bar, $parts[1]->bodyToString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php
deleted file mode 100644
index 3ff02ee6cacd5ae91aceccf108ef03e7ff3aa7eb..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\Multipart\MixedPart;
-
-class MixedPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new MixedPart();
-        $this->assertEquals('multipart', $a->getMediaType());
-        $this->assertEquals('mixed', $a->getMediaSubtype());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php
deleted file mode 100644
index 2a5a7bed97cd4cb748f78f3fdf39b310343ba0fd..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\Multipart\RelatedPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-class RelatedPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $r = new RelatedPart($a = new TextPart('content'), $b = new TextPart('HTML content', 'utf-8', 'html'), $c = new TextPart('HTML content again', 'utf-8', 'html'));
-        $this->assertEquals('multipart', $r->getMediaType());
-        $this->assertEquals('related', $r->getMediaSubtype());
-        $this->assertEquals([$a, $b, $c], $r->getParts());
-        $this->assertFalse($a->getHeaders()->has('Content-ID'));
-        $this->assertTrue($b->getHeaders()->has('Content-ID'));
-        $this->assertTrue($c->getHeaders()->has('Content-ID'));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/TextPartTest.php b/vendor/symfony/mime/Tests/Part/TextPartTest.php
deleted file mode 100644
index c3818b883d46540fbda79a6f5f5845c10c0a1bad..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/Part/TextPartTest.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Part\TextPart;
-
-class TextPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $p = new TextPart('content');
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals('content', $p->bodyToString());
-        $this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
-        // bodyToIterable() can be called several times
-        $this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('text', $p->getMediaType());
-        $this->assertEquals('plain', $p->getMediaSubType());
-
-        $p = new TextPart('content', null, 'html');
-        $this->assertEquals('html', $p->getMediaSubType());
-    }
-
-    public function testConstructorWithResource()
-    {
-        $f = fopen('php://memory', 'r+', false);
-        fwrite($f, 'content');
-        rewind($f);
-        $p = new TextPart($f);
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals('content', $p->bodyToString());
-        $this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
-        fclose($f);
-    }
-
-    public function testConstructorWithNonStringOrResource()
-    {
-        $this->expectException(\TypeError::class);
-        new TextPart(new \stdClass());
-    }
-
-    public function testHeaders()
-    {
-        $p = new TextPart('content');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'quoted-printable')
-        ), $p->getPreparedHeaders());
-
-        $p = new TextPart('content', 'iso-8859-1');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'iso-8859-1']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'quoted-printable')
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testEncoding()
-    {
-        $p = new TextPart('content', 'utf-8', 'plain', 'base64');
-        $this->assertEquals(base64_encode('content'), $p->bodyToString());
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64')
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testSerialize()
-    {
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, 'Text content');
-        rewind($r);
-
-        $p = new TextPart($r);
-        $p->getHeaders()->addTextHeader('foo', 'bar');
-        $expected = clone $p;
-        $this->assertEquals($expected->toString(), unserialize(serialize($p))->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/RawMessageTest.php b/vendor/symfony/mime/Tests/RawMessageTest.php
deleted file mode 100644
index 5d1588bff00fa66d617c91e9eace4d5918fd45c9..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/Tests/RawMessageTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\RawMessage;
-
-class RawMessageTest extends TestCase
-{
-    public function testToString()
-    {
-        $message = new RawMessage('string');
-        $this->assertEquals('string', $message->toString());
-        $this->assertEquals('string', implode('', iterator_to_array($message->toIterable())));
-        // calling methods more than once work
-        $this->assertEquals('string', $message->toString());
-        $this->assertEquals('string', implode('', iterator_to_array($message->toIterable())));
-
-        $message = new RawMessage(new \ArrayObject(['some', ' ', 'string']));
-        $this->assertEquals('some string', $message->toString());
-        $this->assertEquals('some string', implode('', iterator_to_array($message->toIterable())));
-        // calling methods more than once work
-        $this->assertEquals('some string', $message->toString());
-        $this->assertEquals('some string', implode('', iterator_to_array($message->toIterable())));
-    }
-}
diff --git a/vendor/symfony/mime/composer.json b/vendor/symfony/mime/composer.json
index 0697e5609930c87c5814c5a195512f5c6896776d..36050a3469f3a58be37f66f4200a6787932e8257 100644
--- a/vendor/symfony/mime/composer.json
+++ b/vendor/symfony/mime/composer.json
@@ -16,13 +16,17 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
+        "php": ">=7.2.5",
         "symfony/polyfill-intl-idn": "^1.10",
-        "symfony/polyfill-mbstring": "^1.0"
+        "symfony/polyfill-mbstring": "^1.0",
+        "symfony/polyfill-php80": "^1.15"
     },
     "require-dev": {
         "egulias/email-validator": "^2.1.10",
-        "symfony/dependency-injection": "~3.4|^4.1"
+        "symfony/dependency-injection": "^4.4|^5.0"
+    },
+    "conflict": {
+        "symfony/mailer": "<4.4"
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\Mime\\": "" },
@@ -30,10 +34,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/mime/phpunit.xml.dist b/vendor/symfony/mime/phpunit.xml.dist
deleted file mode 100644
index a1c68d0e5f37155e4cc9cf9756d19c9dd41f0020..0000000000000000000000000000000000000000
--- a/vendor/symfony/mime/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony MIME Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/polyfill-ctype/bootstrap.php b/vendor/symfony/polyfill-ctype/bootstrap.php
index 14d1d0faa37151ccb47e6067f6d3e96b8207db48..0bc45cfdf469c9cd815113e64c0151ad00f36310 100644
--- a/vendor/symfony/polyfill-ctype/bootstrap.php
+++ b/vendor/symfony/polyfill-ctype/bootstrap.php
@@ -12,15 +12,35 @@
 use Symfony\Polyfill\Ctype as p;
 
 if (!function_exists('ctype_alnum')) {
-    function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); }
-    function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); }
-    function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); }
-    function ctype_digit($text) { return p\Ctype::ctype_digit($text); }
-    function ctype_graph($text) { return p\Ctype::ctype_graph($text); }
-    function ctype_lower($text) { return p\Ctype::ctype_lower($text); }
-    function ctype_print($text) { return p\Ctype::ctype_print($text); }
-    function ctype_punct($text) { return p\Ctype::ctype_punct($text); }
-    function ctype_space($text) { return p\Ctype::ctype_space($text); }
-    function ctype_upper($text) { return p\Ctype::ctype_upper($text); }
-    function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); }
+    function ctype_alnum($input) { return p\Ctype::ctype_alnum($input); }
+}
+if (!function_exists('ctype_alpha')) {
+    function ctype_alpha($input) { return p\Ctype::ctype_alpha($input); }
+}
+if (!function_exists('ctype_cntrl')) {
+    function ctype_cntrl($input) { return p\Ctype::ctype_cntrl($input); }
+}
+if (!function_exists('ctype_digit')) {
+    function ctype_digit($input) { return p\Ctype::ctype_digit($input); }
+}
+if (!function_exists('ctype_graph')) {
+    function ctype_graph($input) { return p\Ctype::ctype_graph($input); }
+}
+if (!function_exists('ctype_lower')) {
+    function ctype_lower($input) { return p\Ctype::ctype_lower($input); }
+}
+if (!function_exists('ctype_print')) {
+    function ctype_print($input) { return p\Ctype::ctype_print($input); }
+}
+if (!function_exists('ctype_punct')) {
+    function ctype_punct($input) { return p\Ctype::ctype_punct($input); }
+}
+if (!function_exists('ctype_space')) {
+    function ctype_space($input) { return p\Ctype::ctype_space($input); }
+}
+if (!function_exists('ctype_upper')) {
+    function ctype_upper($input) { return p\Ctype::ctype_upper($input); }
+}
+if (!function_exists('ctype_xdigit')) {
+    function ctype_xdigit($input) { return p\Ctype::ctype_xdigit($input); }
 }
diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json
index 090f923ef1dcb151a058806d94a8c658e4889136..2088bb9f6fff4373bdb1eb0cf78646e475919408 100644
--- a/vendor/symfony/polyfill-ctype/composer.json
+++ b/vendor/symfony/polyfill-ctype/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" },
@@ -28,7 +28,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-intl-idn/Idn.php b/vendor/symfony/polyfill-intl-idn/Idn.php
index adb718d29652ecc3897c8dbb7d502462ea32a8c4..535248a203d876cb2395f9fa43ff3b70ba8bc1c5 100644
--- a/vendor/symfony/polyfill-intl-idn/Idn.php
+++ b/vendor/symfony/polyfill-intl-idn/Idn.php
@@ -1,180 +1,736 @@
 <?php
 
 /*
- * Copyright (c) 2014 TrueServer B.V.
+ * This file is part of the Symfony package.
  *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is furnished
- * to do so, subject to the following conditions:
+ * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
  *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Originally forked from
- * https://github.com/true/php-punycode/blob/v2.1.1/src/Punycode.php
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
  */
 
 namespace Symfony\Polyfill\Intl\Idn;
 
+use Exception;
+use Normalizer;
+use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
+use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
+
 /**
- * Partial intl implementation in pure PHP.
- *
- * Implemented:
- * - idn_to_ascii - Convert domain name to IDNA ASCII form
- * - idn_to_utf8  - Convert domain name from IDNA ASCII to Unicode
- *
- * @author Renan Gonçalves <renan.saddam@gmail.com>
- * @author Sebastian Kroczek <sk@xbug.de>
- * @author Dmitry Lukashin <dmitry@lukashin.ru>
- * @author Laurent Bassin <laurent@bassin.info>
+ * @see https://www.unicode.org/reports/tr46/
  *
  * @internal
  */
 final class Idn
 {
+    const ERROR_EMPTY_LABEL = 1;
+    const ERROR_LABEL_TOO_LONG = 2;
+    const ERROR_DOMAIN_NAME_TOO_LONG = 4;
+    const ERROR_LEADING_HYPHEN = 8;
+    const ERROR_TRAILING_HYPHEN = 0x10;
+    const ERROR_HYPHEN_3_4 = 0x20;
+    const ERROR_LEADING_COMBINING_MARK = 0x40;
+    const ERROR_DISALLOWED = 0x80;
+    const ERROR_PUNYCODE = 0x100;
+    const ERROR_LABEL_HAS_DOT = 0x200;
+    const ERROR_INVALID_ACE_LABEL = 0x400;
+    const ERROR_BIDI = 0x800;
+    const ERROR_CONTEXTJ = 0x1000;
+    const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
+    const ERROR_CONTEXTO_DIGITS = 0x4000;
+
     const INTL_IDNA_VARIANT_2003 = 0;
     const INTL_IDNA_VARIANT_UTS46 = 1;
 
-    private static $encodeTable = array(
-        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
-        'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
-        'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-    );
-
-    private static $decodeTable = array(
-        'a' => 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 5,
-        'g' => 6, 'h' => 7, 'i' => 8, 'j' => 9, 'k' => 10, 'l' => 11,
-        'm' => 12, 'n' => 13, 'o' => 14, 'p' => 15, 'q' => 16, 'r' => 17,
-        's' => 18, 't' => 19, 'u' => 20, 'v' => 21, 'w' => 22, 'x' => 23,
-        'y' => 24, 'z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29,
-        '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35,
+    const IDNA_DEFAULT = 0;
+    const IDNA_ALLOW_UNASSIGNED = 1;
+    const IDNA_USE_STD3_RULES = 2;
+    const IDNA_CHECK_BIDI = 4;
+    const IDNA_CHECK_CONTEXTJ = 8;
+    const IDNA_NONTRANSITIONAL_TO_ASCII = 16;
+    const IDNA_NONTRANSITIONAL_TO_UNICODE = 32;
+
+    const MAX_DOMAIN_SIZE = 253;
+    const MAX_LABEL_SIZE = 63;
+
+    const BASE = 36;
+    const TMIN = 1;
+    const TMAX = 26;
+    const SKEW = 38;
+    const DAMP = 700;
+    const INITIAL_BIAS = 72;
+    const INITIAL_N = 128;
+    const DELIMITER = '-';
+    const MAX_INT = 2147483647;
+
+    /**
+     * Contains the numeric value of a basic code point (for use in representing integers) in the
+     * range 0 to BASE-1, or -1 if b is does not represent a value.
+     *
+     * @var array<int, int>
+     */
+    private static $basicToDigit = array(
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
+
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     );
 
-    public static function idn_to_ascii($domain, $options, $variant, &$idna_info = array())
+    /**
+     * @var array<int, int>
+     */
+    private static $virama;
+
+    /**
+     * @var array<int, string>
+     */
+    private static $mapped;
+
+    /**
+     * @var array<int, bool>
+     */
+    private static $ignored;
+
+    /**
+     * @var array<int, string>
+     */
+    private static $deviation;
+
+    /**
+     * @var array<int, bool>
+     */
+    private static $disallowed;
+
+    /**
+     * @var array<int, string>
+     */
+    private static $disallowed_STD3_mapped;
+
+    /**
+     * @var array<int, bool>
+     */
+    private static $disallowed_STD3_valid;
+
+    /**
+     * @var bool
+     */
+    private static $mappingTableLoaded = false;
+
+    /**
+     * @see https://www.unicode.org/reports/tr46/#ToASCII
+     *
+     * @param string $domainName
+     * @param int    $options
+     * @param int    $variant
+     * @param array  $idna_info
+     *
+     * @return string|false
+     */
+    public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
     {
         if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
             @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
         }
 
-        if (self::INTL_IDNA_VARIANT_UTS46 === $variant) {
-            $domain = mb_strtolower($domain, 'utf-8');
-        }
-
-        $parts = explode('.', $domain);
+        $options = array(
+            'CheckHyphens' => true,
+            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
+            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
+            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
+            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII),
+            'VerifyDnsLength' => true,
+        );
+        $info = new Info();
+        $labels = self::process((string) $domainName, $options, $info);
+
+        foreach ($labels as $i => $label) {
+            // Only convert labels to punycode that contain non-ASCII code points
+            if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
+                try {
+                    $label = 'xn--'.self::punycodeEncode($label);
+                } catch (Exception $e) {
+                    $info->errors |= self::ERROR_PUNYCODE;
+                }
 
-        foreach ($parts as $i => &$part) {
-            if ('' === $part && \count($parts) > 1 + $i) {
-                return false;
-            }
-            if (false === $part = self::encodePart($part)) {
-                return false;
+                $labels[$i] = $label;
             }
         }
 
-        $output = implode('.', $parts);
+        if ($options['VerifyDnsLength']) {
+            self::validateDomainAndLabelLength($labels, $info);
+        }
 
         $idna_info = array(
-            'result' => \strlen($output) > 255 ? false : $output,
-            'isTransitionalDifferent' => false,
-            'errors' => 0,
+            'result' => implode('.', $labels),
+            'isTransitionalDifferent' => $info->transitionalDifferent,
+            'errors' => $info->errors,
         );
 
-        return $idna_info['result'];
+        return 0 === $info->errors ? $idna_info['result'] : false;
     }
 
-    public static function idn_to_utf8($domain, $options, $variant, &$idna_info = array())
+    /**
+     * @see https://www.unicode.org/reports/tr46/#ToUnicode
+     *
+     * @param string $domainName
+     * @param int    $options
+     * @param int    $variant
+     * @param array  $idna_info
+     *
+     * @return string|false
+     */
+    public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
     {
         if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
             @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
         }
 
-        $parts = explode('.', $domain);
+        $info = new Info();
+        $labels = self::process((string) $domainName, array(
+            'CheckHyphens' => true,
+            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
+            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
+            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
+            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE),
+        ), $info);
+        $idna_info = array(
+            'result' => implode('.', $labels),
+            'isTransitionalDifferent' => $info->transitionalDifferent,
+            'errors' => $info->errors,
+        );
+
+        return 0 === $info->errors ? $idna_info['result'] : false;
+    }
+
+    /**
+     * @param string $label
+     *
+     * @return bool
+     */
+    private static function isValidContextJ(array $codePoints, $label)
+    {
+        if (!isset(self::$virama)) {
+            self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
+        }
+
+        $offset = 0;
 
-        foreach ($parts as &$part) {
-            $length = \strlen($part);
-            if ($length < 1 || 63 < $length) {
+        foreach ($codePoints as $i => $codePoint) {
+            if (0x200C !== $codePoint && 0x200D !== $codePoint) {
                 continue;
             }
-            if (0 !== strpos($part, 'xn--')) {
+
+            if (!isset($codePoints[$i - 1])) {
+                return false;
+            }
+
+            // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
+            if (isset(self::$virama[$codePoints[$i - 1]])) {
+                continue;
+            }
+
+            // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
+            // True;
+            // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
+            if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, PREG_OFFSET_CAPTURE, $offset)) {
+                $offset += \strlen($matches[1][0]);
+
                 continue;
             }
 
-            $part = substr($part, 4);
-            $part = self::decodePart($part);
+            return false;
         }
 
-        $output = implode('.', $parts);
+        return true;
+    }
 
-        $idna_info = array(
-            'result' => \strlen($output) > 255 ? false : $output,
-            'isTransitionalDifferent' => false,
-            'errors' => 0,
-        );
+    /**
+     * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
+     *
+     * @param string              $input
+     * @param array<string, bool> $options
+     *
+     * @return string
+     */
+    private static function mapCodePoints($input, array $options, Info $info)
+    {
+        $str = '';
+        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
+        $transitional = $options['Transitional_Processing'];
+
+        foreach (self::utf8Decode($input) as $codePoint) {
+            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
+
+            switch ($data['status']) {
+                case 'disallowed':
+                    $info->errors |= self::ERROR_DISALLOWED;
+
+                    // no break.
+
+                case 'valid':
+                    $str .= mb_chr($codePoint, 'utf-8');
+
+                    break;
+
+                case 'ignored':
+                    // Do nothing.
+                    break;
+
+                case 'mapped':
+                    $str .= $data['mapping'];
+
+                    break;
+
+                case 'deviation':
+                    $info->transitionalDifferent = true;
+                    $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
 
-        return $idna_info['result'];
+                    break;
+            }
+        }
+
+        return $str;
     }
 
-    private static function encodePart($input)
+    /**
+     * @see https://www.unicode.org/reports/tr46/#Processing
+     *
+     * @param string              $domain
+     * @param array<string, bool> $options
+     *
+     * @return array<int, string>
+     */
+    private static function process($domain, array $options, Info $info)
     {
-        $codePoints = self::listCodePoints($input);
+        // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
+        // we need to respect the VerifyDnsLength option.
+        $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
 
-        $n = 128;
-        $bias = 72;
-        $delta = 0;
-        $h = $b = \count($codePoints['basic']);
+        if ($checkForEmptyLabels && '' === $domain) {
+            $info->errors |= self::ERROR_EMPTY_LABEL;
 
-        $output = '';
-        foreach ($codePoints['basic'] as $code) {
-            $output .= mb_chr($code, 'utf-8');
+            return array($domain);
         }
-        if ($input === $output) {
-            return $output;
+
+        // Step 1. Map each code point in the domain name string
+        $domain = self::mapCodePoints($domain, $options, $info);
+
+        // Step 2. Normalize the domain name string to Unicode Normalization Form C.
+        if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
+            $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
         }
-        if ($b > 0) {
-            $output .= '-';
+
+        // Step 3. Break the string into labels at U+002E (.) FULL STOP.
+        $labels = explode('.', $domain);
+        $lastLabelIndex = \count($labels) - 1;
+
+        // Step 4. Convert and validate each label in the domain name string.
+        foreach ($labels as $i => $label) {
+            $validationOptions = $options;
+
+            if ('xn--' === substr($label, 0, 4)) {
+                try {
+                    $label = self::punycodeDecode(substr($label, 4));
+                } catch (Exception $e) {
+                    $info->errors |= self::ERROR_PUNYCODE;
+
+                    continue;
+                }
+
+                $validationOptions['Transitional_Processing'] = false;
+                $labels[$i] = $label;
+            }
+
+            self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
+        }
+
+        if ($info->bidiDomain && !$info->validBidiDomain) {
+            $info->errors |= self::ERROR_BIDI;
+        }
+
+        // Any input domain name string that does not record an error has been successfully
+        // processed according to this specification. Conversely, if an input domain_name string
+        // causes an error, then the processing of the input domain_name string fails. Determining
+        // what to do with error input is up to the caller, and not in the scope of this document.
+        return $labels;
+    }
+
+    /**
+     * @see https://tools.ietf.org/html/rfc5893#section-2
+     *
+     * @param string $label
+     */
+    private static function validateBidiLabel($label, Info $info)
+    {
+        if (1 === preg_match(Regex::RTL_LABEL, $label)) {
+            $info->bidiDomain = true;
+
+            // Step 1. The first character must be a character with Bidi property L, R, or AL.
+            // If it has the R or AL property, it is an RTL label
+            if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
+            // CS, ET, ON, BN, or NSM are allowed.
+            if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            // Step 3. In an RTL label, the end of the label must be a character with Bidi property
+            // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
+            if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
+            if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            return;
+        }
+
+        // We are a LTR label
+        // Step 1. The first character must be a character with Bidi property L, R, or AL.
+        // If it has the L property, it is an LTR label.
+        if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
+            $info->validBidiDomain = false;
+
+            return;
+        }
+
+        // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
+        // ES, CS, ET, ON, BN, or NSM are allowed.
+        if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
+            $info->validBidiDomain = false;
+
+            return;
+        }
+
+        // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
+        // EN, followed by zero or more characters with Bidi property NSM.
+        if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
+            $info->validBidiDomain = false;
+
+            return;
+        }
+    }
+
+    /**
+     * @param array<int, string> $labels
+     */
+    private static function validateDomainAndLabelLength(array $labels, Info $info)
+    {
+        $maxDomainSize = self::MAX_DOMAIN_SIZE;
+        $length = \count($labels);
+
+        // Number of "." delimiters.
+        $domainLength = $length - 1;
+
+        // If the last label is empty and it is not the first label, then it is the root label.
+        // Increase the max size by 1, making it 254, to account for the root label's "."
+        // delimiter. This also means we don't need to check the last label's length for being too
+        // long.
+        if ($length > 1 && '' === $labels[$length - 1]) {
+            ++$maxDomainSize;
+            --$length;
+        }
+
+        for ($i = 0; $i < $length; ++$i) {
+            $bytes = \strlen($labels[$i]);
+            $domainLength += $bytes;
+
+            if ($bytes > self::MAX_LABEL_SIZE) {
+                $info->errors |= self::ERROR_LABEL_TOO_LONG;
+            }
+        }
+
+        if ($domainLength > $maxDomainSize) {
+            $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
+        }
+    }
+
+    /**
+     * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
+     *
+     * @param string              $label
+     * @param array<string, bool> $options
+     * @param bool                $canBeEmpty
+     */
+    private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
+    {
+        if ('' === $label) {
+            if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
+                $info->errors |= self::ERROR_EMPTY_LABEL;
+            }
+
+            return;
+        }
+
+        // Step 1. The label must be in Unicode Normalization Form C.
+        if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
+            $info->errors |= self::ERROR_INVALID_ACE_LABEL;
+        }
+
+        $codePoints = self::utf8Decode($label);
+
+        if ($options['CheckHyphens']) {
+            // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
+            // in both the thrid and fourth positions.
+            if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
+                $info->errors |= self::ERROR_HYPHEN_3_4;
+            }
+
+            // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
+            // HYPHEN-MINUS character.
+            if ('-' === substr($label, 0, 1)) {
+                $info->errors |= self::ERROR_LEADING_HYPHEN;
+            }
+
+            if ('-' === substr($label, -1, 1)) {
+                $info->errors |= self::ERROR_TRAILING_HYPHEN;
+            }
+        }
+
+        // Step 4. The label must not contain a U+002E (.) FULL STOP.
+        if (false !== strpos($label, '.')) {
+            $info->errors |= self::ERROR_LABEL_HAS_DOT;
+        }
+
+        // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
+        if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
+            $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
+        }
+
+        // Step 6. Each code point in the label must only have certain status values according to
+        // Section 5, IDNA Mapping Table:
+        $transitional = $options['Transitional_Processing'];
+        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
+
+        foreach ($codePoints as $codePoint) {
+            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
+            $status = $data['status'];
+
+            if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
+                continue;
+            }
+
+            $info->errors |= self::ERROR_DISALLOWED;
+
+            break;
+        }
+
+        // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
+        // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
+        // [IDNA2008].
+        if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
+            $info->errors |= self::ERROR_CONTEXTJ;
         }
 
-        $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']);
-        sort($codePoints['nonBasic']);
+        // Step 8. If CheckBidi, and if the domain name is a  Bidi domain name, then the label must
+        // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
+        if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
+            self::validateBidiLabel($label, $info);
+        }
+    }
 
+    /**
+     * @see https://tools.ietf.org/html/rfc3492#section-6.2
+     *
+     * @param string $input
+     *
+     * @return string
+     */
+    private static function punycodeDecode($input)
+    {
+        $n = self::INITIAL_N;
+        $out = 0;
         $i = 0;
-        $length = mb_strlen($input, 'utf-8');
-        while ($h < $length) {
-            $m = $codePoints['nonBasic'][$i++];
+        $bias = self::INITIAL_BIAS;
+        $lastDelimIndex = strrpos($input, self::DELIMITER);
+        $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
+        $inputLength = \strlen($input);
+        $output = array();
+        $bytes = array_map('ord', str_split($input));
+
+        for ($j = 0; $j < $b; ++$j) {
+            if ($bytes[$j] > 0x7F) {
+                throw new Exception('Invalid input');
+            }
+
+            $output[$out++] = $input[$j];
+        }
+
+        if ($b > 0) {
+            ++$b;
+        }
+
+        for ($in = $b; $in < $inputLength; ++$out) {
+            $oldi = $i;
+            $w = 1;
+
+            for ($k = self::BASE; /* no condition */; $k += self::BASE) {
+                if ($in >= $inputLength) {
+                    throw new Exception('Invalid input');
+                }
+
+                $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
+
+                if ($digit < 0) {
+                    throw new Exception('Invalid input');
+                }
+
+                if ($digit > intdiv(self::MAX_INT - $i, $w)) {
+                    throw new Exception('Integer overflow');
+                }
+
+                $i += $digit * $w;
+
+                if ($k <= $bias) {
+                    $t = self::TMIN;
+                } elseif ($k >= $bias + self::TMAX) {
+                    $t = self::TMAX;
+                } else {
+                    $t = $k - $bias;
+                }
+
+                if ($digit < $t) {
+                    break;
+                }
+
+                $baseMinusT = self::BASE - $t;
+
+                if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
+                    throw new Exception('Integer overflow');
+                }
+
+                $w *= $baseMinusT;
+            }
+
+            $outPlusOne = $out + 1;
+            $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
+
+            if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
+                throw new Exception('Integer overflow');
+            }
+
+            $n += intdiv($i, $outPlusOne);
+            $i %= $outPlusOne;
+            array_splice($output, $i++, 0, array(mb_chr($n, 'utf-8')));
+        }
+
+        return implode('', $output);
+    }
+
+    /**
+     * @see https://tools.ietf.org/html/rfc3492#section-6.3
+     *
+     * @param string $input
+     *
+     * @return string
+     */
+    private static function punycodeEncode($input)
+    {
+        $n = self::INITIAL_N;
+        $delta = 0;
+        $out = 0;
+        $bias = self::INITIAL_BIAS;
+        $inputLength = 0;
+        $output = '';
+        $iter = self::utf8Decode($input);
+
+        foreach ($iter as $codePoint) {
+            ++$inputLength;
+
+            if ($codePoint < 0x80) {
+                $output .= \chr($codePoint);
+                ++$out;
+            }
+        }
+
+        $h = $out;
+        $b = $out;
+
+        if ($b > 0) {
+            $output .= self::DELIMITER;
+            ++$out;
+        }
+
+        while ($h < $inputLength) {
+            $m = self::MAX_INT;
+
+            foreach ($iter as $codePoint) {
+                if ($codePoint >= $n && $codePoint < $m) {
+                    $m = $codePoint;
+                }
+            }
+
+            if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
+                throw new Exception('Integer overflow');
+            }
+
             $delta += ($m - $n) * ($h + 1);
             $n = $m;
 
-            foreach ($codePoints['all'] as $c) {
-                if ($c < $n || $c < 128) {
-                    ++$delta;
+            foreach ($iter as $codePoint) {
+                if ($codePoint < $n && 0 === ++$delta) {
+                    throw new Exception('Integer overflow');
                 }
-                if ($c === $n) {
+
+                if ($codePoint === $n) {
                     $q = $delta;
-                    for ($k = 36;; $k += 36) {
-                        $t = self::calculateThreshold($k, $bias);
+
+                    for ($k = self::BASE; /* no condition */; $k += self::BASE) {
+                        if ($k <= $bias) {
+                            $t = self::TMIN;
+                        } elseif ($k >= $bias + self::TMAX) {
+                            $t = self::TMAX;
+                        } else {
+                            $t = $k - $bias;
+                        }
+
                         if ($q < $t) {
                             break;
                         }
 
-                        $code = $t + (($q - $t) % (36 - $t));
-                        $output .= self::$encodeTable[$code];
-
-                        $q = ($q - $t) / (36 - $t);
+                        $qMinusT = $q - $t;
+                        $baseMinusT = self::BASE - $t;
+                        $output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false);
+                        ++$out;
+                        $q = intdiv($qMinusT, $baseMinusT);
                     }
 
-                    $output .= self::$encodeTable[$q];
-                    $bias = self::adapt($delta, $h + 1, ($h === $b));
+                    $output .= self::encodeDigit($q, false);
+                    ++$out;
+                    $bias = self::adaptBias($delta, $h + 1, $h === $b);
                     $delta = 0;
                     ++$h;
                 }
@@ -184,100 +740,186 @@ final class Idn
             ++$n;
         }
 
-        $output = 'xn--'.$output;
-
-        return \strlen($output) < 1 || 63 < \strlen($output) ? false : strtolower($output);
+        return $output;
     }
 
-    private static function listCodePoints($input)
+    /**
+     * @see https://tools.ietf.org/html/rfc3492#section-6.1
+     *
+     * @param int  $delta
+     * @param int  $numPoints
+     * @param bool $firstTime
+     *
+     * @return int
+     */
+    private static function adaptBias($delta, $numPoints, $firstTime)
     {
-        $codePoints = array(
-            'all' => array(),
-            'basic' => array(),
-            'nonBasic' => array(),
-        );
+        // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
+        $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
+        $delta += intdiv($delta, $numPoints);
+        $k = 0;
 
-        $length = mb_strlen($input, 'utf-8');
-        for ($i = 0; $i < $length; ++$i) {
-            $char = mb_substr($input, $i, 1, 'utf-8');
-            $code = mb_ord($char, 'utf-8');
-            if ($code < 128) {
-                $codePoints['all'][] = $codePoints['basic'][] = $code;
-            } else {
-                $codePoints['all'][] = $codePoints['nonBasic'][] = $code;
-            }
+        while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
+            $delta = intdiv($delta, self::BASE - self::TMIN);
+            $k += self::BASE;
         }
 
-        return $codePoints;
+        return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
     }
 
-    private static function calculateThreshold($k, $bias)
+    /**
+     * @param int  $d
+     * @param bool $flag
+     *
+     * @return string
+     */
+    private static function encodeDigit($d, $flag)
     {
-        if ($k <= $bias + 1) {
-            return 1;
-        }
-        if ($k >= $bias + 26) {
-            return 26;
-        }
-
-        return $k - $bias;
+        return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
     }
 
-    private static function adapt($delta, $numPoints, $firstTime)
+    /**
+     * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
+     * invalid byte sequences will be replaced by a U+FFFD replacement code point.
+     *
+     * @see https://encoding.spec.whatwg.org/#utf-8-decoder
+     *
+     * @param string $input
+     *
+     * @return array<int, int>
+     */
+    private static function utf8Decode($input)
     {
-        $delta = (int) ($firstTime ? $delta / 700 : $delta / 2);
-        $delta += (int) ($delta / $numPoints);
+        $bytesSeen = 0;
+        $bytesNeeded = 0;
+        $lowerBoundary = 0x80;
+        $upperBoundary = 0xBF;
+        $codePoint = 0;
+        $codePoints = array();
+        $length = \strlen($input);
 
-        $k = 0;
-        while ($delta > 35 * 13) {
-            $delta = (int) ($delta / 35);
-            $k = $k + 36;
+        for ($i = 0; $i < $length; ++$i) {
+            $byte = \ord($input[$i]);
+
+            if (0 === $bytesNeeded) {
+                if ($byte >= 0x00 && $byte <= 0x7F) {
+                    $codePoints[] = $byte;
+
+                    continue;
+                }
+
+                if ($byte >= 0xC2 && $byte <= 0xDF) {
+                    $bytesNeeded = 1;
+                    $codePoint = $byte & 0x1F;
+                } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
+                    if (0xE0 === $byte) {
+                        $lowerBoundary = 0xA0;
+                    } elseif (0xED === $byte) {
+                        $upperBoundary = 0x9F;
+                    }
+
+                    $bytesNeeded = 2;
+                    $codePoint = $byte & 0xF;
+                } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
+                    if (0xF0 === $byte) {
+                        $lowerBoundary = 0x90;
+                    } elseif (0xF4 === $byte) {
+                        $upperBoundary = 0x8F;
+                    }
+
+                    $bytesNeeded = 3;
+                    $codePoint = $byte & 0x7;
+                } else {
+                    $codePoints[] = 0xFFFD;
+                }
+
+                continue;
+            }
+
+            if ($byte < $lowerBoundary || $byte > $upperBoundary) {
+                $codePoint = 0;
+                $bytesNeeded = 0;
+                $bytesSeen = 0;
+                $lowerBoundary = 0x80;
+                $upperBoundary = 0xBF;
+                --$i;
+                $codePoints[] = 0xFFFD;
+
+                continue;
+            }
+
+            $lowerBoundary = 0x80;
+            $upperBoundary = 0xBF;
+            $codePoint = ($codePoint << 6) | ($byte & 0x3F);
+
+            if (++$bytesSeen !== $bytesNeeded) {
+                continue;
+            }
+
+            $codePoints[] = $codePoint;
+            $codePoint = 0;
+            $bytesNeeded = 0;
+            $bytesSeen = 0;
         }
 
-        return $k + (int) (36 * $delta / ($delta + 38));
+        // String unexpectedly ended, so append a U+FFFD code point.
+        if (0 !== $bytesNeeded) {
+            $codePoints[] = 0xFFFD;
+        }
+
+        return $codePoints;
     }
 
-    private static function decodePart($input)
+    /**
+     * @param int  $codePoint
+     * @param bool $useSTD3ASCIIRules
+     *
+     * @return array{status: string, mapping?: string}
+     */
+    private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
     {
-        $n = 128;
-        $i = 0;
-        $bias = 72;
-        $output = '';
+        if (!self::$mappingTableLoaded) {
+            self::$mappingTableLoaded = true;
+            self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
+            self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
+            self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
+            self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
+            self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
+            self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
+        }
 
-        $pos = strrpos($input, '-');
-        if (false !== $pos) {
-            $output = substr($input, 0, $pos++);
-        } else {
-            $pos = 0;
+        if (isset(self::$mapped[$codePoint])) {
+            return array('status' => 'mapped', 'mapping' => self::$mapped[$codePoint]);
         }
 
-        $outputLength = \strlen($output);
-        $inputLength = \strlen($input);
+        if (isset(self::$ignored[$codePoint])) {
+            return array('status' => 'ignored');
+        }
 
-        while ($pos < $inputLength) {
-            $oldi = $i;
-            $w = 1;
+        if (isset(self::$deviation[$codePoint])) {
+            return array('status' => 'deviation', 'mapping' => self::$deviation[$codePoint]);
+        }
 
-            for ($k = 36;; $k += 36) {
-                $digit = self::$decodeTable[$input[$pos++]];
-                $i += $digit * $w;
-                $t = self::calculateThreshold($k, $bias);
+        if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
+            return array('status' => 'disallowed');
+        }
 
-                if ($digit < $t) {
-                    break;
-                }
+        $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
 
-                $w *= 36 - $t;
+        if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
+            $status = 'disallowed';
+
+            if (!$useSTD3ASCIIRules) {
+                $status = $isDisallowedMapped ? 'mapped' : 'valid';
             }
 
-            $bias = self::adapt($i - $oldi, ++$outputLength, 0 === $oldi);
-            $n = $n + (int) ($i / $outputLength);
-            $i = $i % $outputLength;
-            $output = mb_substr($output, 0, $i, 'utf-8').mb_chr($n, 'utf-8').mb_substr($output, $i, $outputLength - 1, 'utf-8');
+            if ($isDisallowedMapped) {
+                return array('status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]);
+            }
 
-            ++$i;
+            return array('status' => $status);
         }
 
-        return $output;
+        return array('status' => 'valid');
     }
 }
diff --git a/vendor/symfony/polyfill-intl-idn/LICENSE b/vendor/symfony/polyfill-intl-idn/LICENSE
index 3f853aaf35fe186d4016761eb6e8a403de3e6e0d..03c5e25774f3575f2e27efcab97d5daf756506f8 100644
--- a/vendor/symfony/polyfill-intl-idn/LICENSE
+++ b/vendor/symfony/polyfill-intl-idn/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/polyfill-intl-idn/README.md b/vendor/symfony/polyfill-intl-idn/README.md
index 5fd8c6e97834a0bcbbaad627e34b8e35307a1de8..2e75f2e520a45d87c6d17fd9b0fbef839b2fd5f8 100644
--- a/vendor/symfony/polyfill-intl-idn/README.md
+++ b/vendor/symfony/polyfill-intl-idn/README.md
@@ -1,7 +1,7 @@
 Symfony Polyfill / Intl: Idn
 ============================
 
-This component provides `idn_to_ascii` and `idn_to_utf8` functions to users who run php versions without the intl extension.
+This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension.
 
 More information can be found in the
 [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
diff --git a/vendor/symfony/polyfill-intl-idn/bootstrap.php b/vendor/symfony/polyfill-intl-idn/bootstrap.php
index c6e3921d764c903257ed9cde7000e1751f5537c0..f02d5de73d228e054e9bce4933e99fb8bd54cf21 100644
--- a/vendor/symfony/polyfill-intl-idn/bootstrap.php
+++ b/vendor/symfony/polyfill-intl-idn/bootstrap.php
@@ -11,49 +11,131 @@
 
 use Symfony\Polyfill\Intl\Idn as p;
 
-if (!function_exists('idn_to_ascii')) {
+if (extension_loaded('intl')) {
+    return;
+}
+
+if (!defined('U_IDNA_PROHIBITED_ERROR')) {
     define('U_IDNA_PROHIBITED_ERROR', 66560);
+}
+if (!defined('U_IDNA_ERROR_START')) {
     define('U_IDNA_ERROR_START', 66560);
+}
+if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
     define('U_IDNA_UNASSIGNED_ERROR', 66561);
+}
+if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
     define('U_IDNA_CHECK_BIDI_ERROR', 66562);
+}
+if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
     define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
+}
+if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
     define('U_IDNA_ACE_PREFIX_ERROR', 66564);
+}
+if (!defined('U_IDNA_VERIFICATION_ERROR')) {
     define('U_IDNA_VERIFICATION_ERROR', 66565);
+}
+if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
     define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
+}
+if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
     define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
+}
+if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
     define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
+}
+if (!defined('U_IDNA_ERROR_LIMIT')) {
     define('U_IDNA_ERROR_LIMIT', 66569);
+}
+if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
     define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
+}
+if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
     define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
+}
+if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
     define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
+}
+if (!defined('IDNA_DEFAULT')) {
     define('IDNA_DEFAULT', 0);
+}
+if (!defined('IDNA_ALLOW_UNASSIGNED')) {
     define('IDNA_ALLOW_UNASSIGNED', 1);
+}
+if (!defined('IDNA_USE_STD3_RULES')) {
     define('IDNA_USE_STD3_RULES', 2);
+}
+if (!defined('IDNA_CHECK_BIDI')) {
     define('IDNA_CHECK_BIDI', 4);
+}
+if (!defined('IDNA_CHECK_CONTEXTJ')) {
     define('IDNA_CHECK_CONTEXTJ', 8);
+}
+if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
     define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
+}
+if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
     define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
+}
+if (!defined('INTL_IDNA_VARIANT_2003')) {
     define('INTL_IDNA_VARIANT_2003', 0);
+}
+if (!defined('INTL_IDNA_VARIANT_UTS46')) {
     define('INTL_IDNA_VARIANT_UTS46', 1);
+}
+if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
     define('IDNA_ERROR_EMPTY_LABEL', 1);
+}
+if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
     define('IDNA_ERROR_LABEL_TOO_LONG', 2);
+}
+if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
     define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
+}
+if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
     define('IDNA_ERROR_LEADING_HYPHEN', 8);
+}
+if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
     define('IDNA_ERROR_TRAILING_HYPHEN', 16);
+}
+if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
     define('IDNA_ERROR_HYPHEN_3_4', 32);
+}
+if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
     define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
+}
+if (!defined('IDNA_ERROR_DISALLOWED')) {
     define('IDNA_ERROR_DISALLOWED', 128);
+}
+if (!defined('IDNA_ERROR_PUNYCODE')) {
     define('IDNA_ERROR_PUNYCODE', 256);
+}
+if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
     define('IDNA_ERROR_LABEL_HAS_DOT', 512);
+}
+if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
     define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
+}
+if (!defined('IDNA_ERROR_BIDI')) {
     define('IDNA_ERROR_BIDI', 2048);
+}
+if (!defined('IDNA_ERROR_CONTEXTJ')) {
     define('IDNA_ERROR_CONTEXTJ', 4096);
+}
 
-    if (PHP_VERSION_ID < 70400) {
+if (PHP_VERSION_ID < 70400) {
+    if (!function_exists('idn_to_ascii')) {
         function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
+    }
+    if (!function_exists('idn_to_utf8')) {
         function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
-    } else {
+    }
+} else {
+    if (!function_exists('idn_to_ascii')) {
         function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
+    }
+    if (!function_exists('idn_to_utf8')) {
         function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
     }
 }
diff --git a/vendor/symfony/polyfill-intl-idn/composer.json b/vendor/symfony/polyfill-intl-idn/composer.json
index d2e3f4b19740e7ba388beea3b52217206b553580..a3bd0d760d98980ca7bb01dd70b12d28b2bc1c61 100644
--- a/vendor/symfony/polyfill-intl-idn/composer.json
+++ b/vendor/symfony/polyfill-intl-idn/composer.json
@@ -10,15 +10,19 @@
             "name": "Laurent Bassin",
             "email": "laurent@bassin.info"
         },
+        {
+            "name": "Trevor Rowbotham",
+            "email": "trevor.rowbotham@pm.me"
+        },
         {
             "name": "Symfony Community",
             "homepage": "https://symfony.com/contributors"
         }
     ],
     "require": {
-        "php": ">=5.3.3",
-        "symfony/polyfill-mbstring": "^1.3",
-        "symfony/polyfill-php72": "^1.9"
+        "php": ">=7.1",
+        "symfony/polyfill-intl-normalizer": "^1.10",
+        "symfony/polyfill-php72": "^1.10"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
@@ -30,7 +34,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-mbstring/Mbstring.php b/vendor/symfony/polyfill-mbstring/Mbstring.php
index 1fc4feea72cd8ba056ebb794a97a5a6254be08c7..7bb3023715abb0d2ce8d90cebe6b175a2e0ec8fb 100644
--- a/vendor/symfony/polyfill-mbstring/Mbstring.php
+++ b/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -115,10 +115,8 @@ final class Mbstring
         return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
     }
 
-    public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null)
+    public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
     {
-        $vars = array(&$a, &$b, &$c, &$d, &$e, &$f);
-
         $ok = true;
         array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
             if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
@@ -512,7 +510,9 @@ final class Mbstring
             $offset = 0;
         } elseif ($offset = (int) $offset) {
             if ($offset < 0) {
-                $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+                if (0 > $offset += self::mb_strlen($needle)) {
+                    $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+                }
                 $offset = 0;
             } else {
                 $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
@@ -532,7 +532,7 @@ final class Mbstring
             return null;
         }
 
-        if ($split_length < 1) {
+        if (1 > $split_length = (int) $split_length) {
             trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
 
             return false;
@@ -542,6 +542,17 @@ final class Mbstring
             $encoding = mb_internal_encoding();
         }
 
+        if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
+            $rx = '/(';
+            while (65535 < $split_length) {
+                $rx .= '.{65535}';
+                $split_length -= 65535;
+            }
+            $rx .= '.{'.$split_length.'})/us';
+
+            return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+        }
+
         $result = array();
         $length = mb_strlen($string, $encoding);
 
@@ -616,10 +627,11 @@ final class Mbstring
     {
         $encoding = self::getEncoding($encoding);
         if ('CP850' === $encoding || 'ASCII' === $encoding) {
-            return strrchr($haystack, $needle, $part);
+            $pos = strrpos($haystack, $needle);
+        } else {
+            $needle = self::mb_substr($needle, 0, 1, $encoding);
+            $pos = iconv_strrpos($haystack, $needle, $encoding);
         }
-        $needle = self::mb_substr($needle, 0, 1, $encoding);
-        $pos = iconv_strrpos($haystack, $needle, $encoding);
 
         return self::getSubpart($pos, $part, $haystack, $encoding);
     }
@@ -815,11 +827,16 @@ final class Mbstring
             return self::$internalEncoding;
         }
 
+        if ('UTF-8' === $encoding) {
+            return 'UTF-8';
+        }
+
         $encoding = strtoupper($encoding);
 
         if ('8BIT' === $encoding || 'BINARY' === $encoding) {
             return 'CP850';
         }
+
         if ('UTF8' === $encoding) {
             return 'UTF-8';
         }
diff --git a/vendor/symfony/polyfill-mbstring/README.md b/vendor/symfony/polyfill-mbstring/README.md
index 342e8286dbf694422c31e61b1a5bdf16f71785b4..4efb599d81fcc2374cbf42273628660f40c6c683 100644
--- a/vendor/symfony/polyfill-mbstring/README.md
+++ b/vendor/symfony/polyfill-mbstring/README.md
@@ -2,7 +2,7 @@ Symfony Polyfill / Mbstring
 ===========================
 
 This component provides a partial, native PHP implementation for the
-[Mbstring](http://php.net/mbstring) extension.
+[Mbstring](https://php.net/mbstring) extension.
 
 More information can be found in the
 [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
index e6fbfa64e6215a3e572d3d99f794cc6a85ea8af8..a22eca57bd99cc09a64162b32de0b143bf31be52 100644
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -1,6 +1,6 @@
 <?php
 
-return array(
+return array (
   'A' => 'a',
   'B' => 'b',
   'C' => 'c',
@@ -510,6 +510,138 @@ return array(
   'Ⴥ' => 'ⴥ',
   'Ⴧ' => 'ⴧ',
   'Ⴭ' => 'ⴭ',
+  'Ꭰ' => 'ꭰ',
+  'Ꭱ' => 'ꭱ',
+  'Ꭲ' => 'ꭲ',
+  'Ꭳ' => 'ꭳ',
+  'Ꭴ' => 'ꭴ',
+  'Ꭵ' => 'ꭵ',
+  'Ꭶ' => 'ꭶ',
+  'Ꭷ' => 'ꭷ',
+  'Ꭸ' => 'ꭸ',
+  'Ꭹ' => 'ꭹ',
+  'Ꭺ' => 'ꭺ',
+  'Ꭻ' => 'ꭻ',
+  'Ꭼ' => 'ꭼ',
+  'Ꭽ' => 'ꭽ',
+  'Ꭾ' => 'ꭾ',
+  'Ꭿ' => 'ꭿ',
+  'Ꮀ' => 'ꮀ',
+  'Ꮁ' => 'ꮁ',
+  'Ꮂ' => 'ꮂ',
+  'Ꮃ' => 'ꮃ',
+  'Ꮄ' => 'ꮄ',
+  'Ꮅ' => 'ꮅ',
+  'Ꮆ' => 'ꮆ',
+  'Ꮇ' => 'ꮇ',
+  'Ꮈ' => 'ꮈ',
+  'Ꮉ' => 'ꮉ',
+  'Ꮊ' => 'ꮊ',
+  'Ꮋ' => 'ꮋ',
+  'Ꮌ' => 'ꮌ',
+  'Ꮍ' => 'ꮍ',
+  'Ꮎ' => 'ꮎ',
+  'Ꮏ' => 'ꮏ',
+  'Ꮐ' => 'ꮐ',
+  'Ꮑ' => 'ꮑ',
+  'Ꮒ' => 'ꮒ',
+  'Ꮓ' => 'ꮓ',
+  'Ꮔ' => 'ꮔ',
+  'Ꮕ' => 'ꮕ',
+  'Ꮖ' => 'ꮖ',
+  'Ꮗ' => 'ꮗ',
+  'Ꮘ' => 'ꮘ',
+  'Ꮙ' => 'ꮙ',
+  'Ꮚ' => 'ꮚ',
+  'Ꮛ' => 'ꮛ',
+  'Ꮜ' => 'ꮜ',
+  'Ꮝ' => 'ꮝ',
+  'Ꮞ' => 'ꮞ',
+  'Ꮟ' => 'ꮟ',
+  'Ꮠ' => 'ꮠ',
+  'Ꮡ' => 'ꮡ',
+  'Ꮢ' => 'ꮢ',
+  'Ꮣ' => 'ꮣ',
+  'Ꮤ' => 'ꮤ',
+  'Ꮥ' => 'ꮥ',
+  'Ꮦ' => 'ꮦ',
+  'Ꮧ' => 'ꮧ',
+  'Ꮨ' => 'ꮨ',
+  'Ꮩ' => 'ꮩ',
+  'Ꮪ' => 'ꮪ',
+  'Ꮫ' => 'ꮫ',
+  'Ꮬ' => 'ꮬ',
+  'Ꮭ' => 'ꮭ',
+  'Ꮮ' => 'ꮮ',
+  'Ꮯ' => 'ꮯ',
+  'Ꮰ' => 'ꮰ',
+  'Ꮱ' => 'ꮱ',
+  'Ꮲ' => 'ꮲ',
+  'Ꮳ' => 'ꮳ',
+  'Ꮴ' => 'ꮴ',
+  'Ꮵ' => 'ꮵ',
+  'Ꮶ' => 'ꮶ',
+  'Ꮷ' => 'ꮷ',
+  'Ꮸ' => 'ꮸ',
+  'Ꮹ' => 'ꮹ',
+  'Ꮺ' => 'ꮺ',
+  'Ꮻ' => 'ꮻ',
+  'Ꮼ' => 'ꮼ',
+  'Ꮽ' => 'ꮽ',
+  'Ꮾ' => 'ꮾ',
+  'Ꮿ' => 'ꮿ',
+  'Ᏸ' => 'ᏸ',
+  'Ᏹ' => 'ᏹ',
+  'Ᏺ' => 'ᏺ',
+  'Ᏻ' => 'ᏻ',
+  'Ᏼ' => 'ᏼ',
+  'Ᏽ' => 'ᏽ',
+  'Ა' => 'ა',
+  'Ბ' => 'ბ',
+  'Გ' => 'გ',
+  'Დ' => 'დ',
+  'Ე' => 'ე',
+  'Ვ' => 'ვ',
+  'Ზ' => 'ზ',
+  'Თ' => 'თ',
+  'Ი' => 'ი',
+  'Კ' => 'კ',
+  'Ლ' => 'ლ',
+  'Მ' => 'მ',
+  'Ნ' => 'ნ',
+  'Ო' => 'ო',
+  'Პ' => 'პ',
+  'Ჟ' => 'ჟ',
+  'Რ' => 'რ',
+  'Ს' => 'ს',
+  'Ტ' => 'ტ',
+  'Უ' => 'უ',
+  'Ფ' => 'ფ',
+  'Ქ' => 'ქ',
+  'Ღ' => 'ღ',
+  'Ყ' => 'ყ',
+  'Შ' => 'შ',
+  'Ჩ' => 'ჩ',
+  'Ც' => 'ც',
+  'Ძ' => 'ძ',
+  'Წ' => 'წ',
+  'Ჭ' => 'ჭ',
+  'Ხ' => 'ხ',
+  'Ჯ' => 'ჯ',
+  'Ჰ' => 'ჰ',
+  'Ჱ' => 'ჱ',
+  'Ჲ' => 'ჲ',
+  'Ჳ' => 'ჳ',
+  'Ჴ' => 'ჴ',
+  'Ჵ' => 'ჵ',
+  'Ჶ' => 'ჶ',
+  'Ჷ' => 'ჷ',
+  'Ჸ' => 'ჸ',
+  'Ჹ' => 'ჹ',
+  'Ჺ' => 'ჺ',
+  'Ჽ' => 'ჽ',
+  'Ჾ' => 'ჾ',
+  'Ჿ' => 'ჿ',
   'Ḁ' => 'ḁ',
   'Ḃ' => 'ḃ',
   'Ḅ' => 'ḅ',
@@ -993,8 +1125,24 @@ return array(
   'Ɜ' => 'ɜ',
   'Ɡ' => 'ɡ',
   'Ɬ' => 'ɬ',
+  'Ɪ' => 'ɪ',
   'êž°' => 'Êž',
   'Ʇ' => 'ʇ',
+  'Ʝ' => 'ʝ',
+  'êž³' => 'ê­“',
+  'êž´' => 'êžµ',
+  'êž¶' => 'êž·',
+  'Ꞹ' => 'ꞹ',
+  'Ꞻ' => 'ꞻ',
+  'êž¼' => 'êž½',
+  'êž¾' => 'êž¿',
+  'Ꟃ' => 'ꟃ',
+  'Ꞔ' => 'ꞔ',
+  'Ʂ' => 'ʂ',
+  'Ᶎ' => 'ᶎ',
+  'Ꟈ' => 'ꟈ',
+  'Ꟊ' => 'ꟊ',
+  'Ꟶ' => 'ꟶ',
   'A' => 'a',
   'B' => 'b',
   'C' => 'c',
@@ -1061,6 +1209,93 @@ return array(
   '𐐥' => '𐑍',
   '𐐦' => '𐑎',
   '𐐧' => '𐑏',
+  '𐒰' => '𐓘',
+  '𐒱' => '𐓙',
+  '𐒲' => '𐓚',
+  '𐒳' => '𐓛',
+  '𐒴' => '𐓜',
+  '𐒵' => '𐓝',
+  '𐒶' => '𐓞',
+  '𐒷' => '𐓟',
+  '𐒸' => '𐓠',
+  '𐒹' => '𐓡',
+  '𐒺' => '𐓢',
+  '𐒻' => '𐓣',
+  '𐒼' => '𐓤',
+  '𐒽' => '𐓥',
+  '𐒾' => '𐓦',
+  '𐒿' => '𐓧',
+  '𐓀' => '𐓨',
+  '𐓁' => '𐓩',
+  '𐓂' => '𐓪',
+  '𐓃' => '𐓫',
+  '𐓄' => '𐓬',
+  '𐓅' => '𐓭',
+  '𐓆' => '𐓮',
+  '𐓇' => '𐓯',
+  '𐓈' => '𐓰',
+  '𐓉' => '𐓱',
+  '𐓊' => '𐓲',
+  '𐓋' => '𐓳',
+  '𐓌' => '𐓴',
+  '𐓍' => '𐓵',
+  '𐓎' => '𐓶',
+  '𐓏' => '𐓷',
+  '𐓐' => '𐓸',
+  '𐓑' => '𐓹',
+  '𐓒' => '𐓺',
+  '𐓓' => '𐓻',
+  '𐲀' => '𐳀',
+  '𐲁' => '𐳁',
+  '𐲂' => '𐳂',
+  '𐲃' => '𐳃',
+  '𐲄' => '𐳄',
+  '𐲅' => '𐳅',
+  '𐲆' => '𐳆',
+  '𐲇' => '𐳇',
+  '𐲈' => '𐳈',
+  '𐲉' => '𐳉',
+  '𐲊' => '𐳊',
+  '𐲋' => '𐳋',
+  '𐲌' => '𐳌',
+  '𐲍' => '𐳍',
+  '𐲎' => '𐳎',
+  '𐲏' => '𐳏',
+  '𐲐' => '𐳐',
+  '𐲑' => '𐳑',
+  '𐲒' => '𐳒',
+  '𐲓' => '𐳓',
+  '𐲔' => '𐳔',
+  '𐲕' => '𐳕',
+  '𐲖' => '𐳖',
+  '𐲗' => '𐳗',
+  '𐲘' => '𐳘',
+  '𐲙' => '𐳙',
+  '𐲚' => '𐳚',
+  '𐲛' => '𐳛',
+  '𐲜' => '𐳜',
+  '𐲝' => '𐳝',
+  '𐲞' => '𐳞',
+  '𐲟' => '𐳟',
+  '𐲠' => '𐳠',
+  '𐲡' => '𐳡',
+  '𐲢' => '𐳢',
+  '𐲣' => '𐳣',
+  '𐲤' => '𐳤',
+  '𐲥' => '𐳥',
+  '𐲦' => '𐳦',
+  '𐲧' => '𐳧',
+  '𐲨' => '𐳨',
+  '𐲩' => '𐳩',
+  '𐲪' => '𐳪',
+  '𐲫' => '𐳫',
+  '𐲬' => '𐳬',
+  '𐲭' => '𐳭',
+  '𐲮' => '𐳮',
+  '𐲯' => '𐳯',
+  '𐲰' => '𐳰',
+  '𐲱' => '𐳱',
+  '𐲲' => '𐳲',
   'ð‘¢ ' => 'ð‘£€',
   '𑢡' => '𑣁',
   '𑢢' => '𑣂',
@@ -1093,4 +1328,70 @@ return array(
   '𑢽' => '𑣝',
   '𑢾' => '𑣞',
   '𑢿' => '𑣟',
+  'ð–¹€' => 'ð–¹ ',
+  '𖹁' => '𖹡',
+  '𖹂' => '𖹢',
+  '𖹃' => '𖹣',
+  '𖹄' => '𖹤',
+  'ð–¹…' => 'ð–¹¥',
+  '𖹆' => '𖹦',
+  '𖹇' => '𖹧',
+  '𖹈' => '𖹨',
+  '𖹉' => '𖹩',
+  '𖹊' => '𖹪',
+  '𖹋' => '𖹫',
+  '𖹌' => '𖹬',
+  '𖹍' => '𖹭',
+  '𖹎' => '𖹮',
+  '𖹏' => '𖹯',
+  '𖹐' => '𖹰',
+  '𖹑' => '𖹱',
+  'ð–¹’' => 'ð–¹²',
+  '𖹓' => '𖹳',
+  'ð–¹”' => 'ð–¹´',
+  '𖹕' => '𖹵',
+  'ð–¹–' => 'ð–¹¶',
+  'ð–¹—' => 'ð–¹·',
+  '𖹘' => '𖹸',
+  'ð–¹™' => 'ð–¹¹',
+  '𖹚' => '𖹺',
+  'ð–¹›' => 'ð–¹»',
+  '𖹜' => '𖹼',
+  '𖹝' => '𖹽',
+  '𖹞' => '𖹾',
+  '𖹟' => '𖹿',
+  '𞤀' => '𞤢',
+  '𞤁' => '𞤣',
+  '𞤂' => '𞤤',
+  '𞤃' => '𞤥',
+  '𞤄' => '𞤦',
+  '𞤅' => '𞤧',
+  '𞤆' => '𞤨',
+  '𞤇' => '𞤩',
+  '𞤈' => '𞤪',
+  '𞤉' => '𞤫',
+  '𞤊' => '𞤬',
+  '𞤋' => '𞤭',
+  '𞤌' => '𞤮',
+  '𞤍' => '𞤯',
+  '𞤎' => '𞤰',
+  '𞤏' => '𞤱',
+  '𞤐' => '𞤲',
+  '𞤑' => '𞤳',
+  '𞤒' => '𞤴',
+  '𞤓' => '𞤵',
+  '𞤔' => '𞤶',
+  '𞤕' => '𞤷',
+  '𞤖' => '𞤸',
+  '𞤗' => '𞤹',
+  '𞤘' => '𞤺',
+  '𞤙' => '𞤻',
+  '𞤚' => '𞤼',
+  '𞤛' => '𞤽',
+  '𞤜' => '𞤾',
+  '𞤝' => '𞤿',
+  '𞤞' => '𞥀',
+  '𞤟' => '𞥁',
+  '𞤠' => '𞥂',
+  '𞤡' => '𞥃',
 );
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
index b8103b2e808dd0a670c04868f20edcc969ea7e70..ecbc15895eb71c7b92bb18bce90d955848b509a9 100644
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
@@ -1,6 +1,6 @@
 <?php
 
-return array(
+return array (
   'a' => 'A',
   'b' => 'B',
   'c' => 'C',
@@ -225,6 +225,7 @@ return array(
   'ɦ' => 'Ɦ',
   'ɨ' => 'Ɨ',
   'É©' => 'Æ–',
+  'ɪ' => 'Ɪ',
   'É«' => 'â±¢',
   'ɬ' => 'Ɬ',
   'ɯ' => 'Ɯ',
@@ -233,6 +234,7 @@ return array(
   'ɵ' => 'Ɵ',
   'ɽ' => 'Ɽ',
   'ʀ' => 'Ʀ',
+  'ʂ' => 'Ʂ',
   'ʃ' => 'Ʃ',
   'ʇ' => 'Ʇ',
   'ʈ' => 'Ʈ',
@@ -241,6 +243,7 @@ return array(
   'ʋ' => 'Ʋ',
   'ʌ' => 'Ʌ',
   'Ê’' => 'Æ·',
+  'ʝ' => 'Ʝ',
   'Êž' => 'êž°',
   'ͅ' => 'Ι',
   'ͱ' => 'Ͱ',
@@ -493,8 +496,70 @@ return array(
   'Ö„' => 'Õ”',
   'Ö…' => 'Õ•',
   'Ö†' => 'Õ–',
+  'ა' => 'Ა',
+  'ბ' => 'Ბ',
+  'გ' => 'Გ',
+  'დ' => 'Დ',
+  'ე' => 'Ე',
+  'ვ' => 'Ვ',
+  'ზ' => 'Ზ',
+  'თ' => 'Თ',
+  'ი' => 'Ი',
+  'კ' => 'Კ',
+  'ლ' => 'Ლ',
+  'მ' => 'Მ',
+  'ნ' => 'Ნ',
+  'ო' => 'Ო',
+  'პ' => 'Პ',
+  'ჟ' => 'Ჟ',
+  'რ' => 'Რ',
+  'ს' => 'Ს',
+  'ტ' => 'Ტ',
+  'უ' => 'Უ',
+  'ფ' => 'Ფ',
+  'ქ' => 'Ქ',
+  'ღ' => 'Ღ',
+  'ყ' => 'Ყ',
+  'შ' => 'Შ',
+  'ჩ' => 'Ჩ',
+  'ც' => 'Ც',
+  'ძ' => 'Ძ',
+  'წ' => 'Წ',
+  'ჭ' => 'Ჭ',
+  'ხ' => 'Ხ',
+  'ჯ' => 'Ჯ',
+  'ჰ' => 'Ჰ',
+  'ჱ' => 'Ჱ',
+  'ჲ' => 'Ჲ',
+  'ჳ' => 'Ჳ',
+  'ჴ' => 'Ჴ',
+  'ჵ' => 'Ჵ',
+  'ჶ' => 'Ჶ',
+  'ჷ' => 'Ჷ',
+  'ჸ' => 'Ჸ',
+  'ჹ' => 'Ჹ',
+  'ჺ' => 'Ჺ',
+  'ჽ' => 'Ჽ',
+  'ჾ' => 'Ჾ',
+  'ჿ' => 'Ჿ',
+  'ᏸ' => 'Ᏸ',
+  'ᏹ' => 'Ᏹ',
+  'ᏺ' => 'Ᏺ',
+  'ᏻ' => 'Ᏻ',
+  'ᏼ' => 'Ᏼ',
+  'ᏽ' => 'Ᏽ',
+  'á²€' => 'Ð’',
+  'ᲁ' => 'Д',
+  'ᲂ' => 'О',
+  'ᲃ' => 'С',
+  'ᲄ' => 'Т',
+  'ᲅ' => 'Т',
+  'ᲆ' => 'Ъ',
+  'ᲇ' => 'Ѣ',
+  'ᲈ' => 'Ꙋ',
   'ᵹ' => 'Ᵹ',
   'áµ½' => 'â±£',
+  'ᶎ' => 'Ᶎ',
   'ḁ' => 'Ḁ',
   'ḃ' => 'Ḃ',
   'ḅ' => 'Ḅ',
@@ -993,6 +1058,7 @@ return array(
   'ꞌ' => 'Ꞌ',
   'ꞑ' => 'Ꞑ',
   'êž“' => 'êž’',
+  'ꞔ' => 'Ꞔ',
   'êž—' => 'êž–',
   'ꞙ' => 'Ꞙ',
   'êž›' => 'êžš',
@@ -1003,6 +1069,97 @@ return array(
   'ꞥ' => 'Ꞥ',
   'ꞧ' => 'Ꞧ',
   'ꞩ' => 'Ꞩ',
+  'êžµ' => 'êž´',
+  'êž·' => 'êž¶',
+  'ꞹ' => 'Ꞹ',
+  'ꞻ' => 'Ꞻ',
+  'êž½' => 'êž¼',
+  'êž¿' => 'êž¾',
+  'ꟃ' => 'Ꟃ',
+  'ꟈ' => 'Ꟈ',
+  'ꟊ' => 'Ꟊ',
+  'ꟶ' => 'Ꟶ',
+  'ê­“' => 'êž³',
+  'ꭰ' => 'Ꭰ',
+  'ꭱ' => 'Ꭱ',
+  'ꭲ' => 'Ꭲ',
+  'ꭳ' => 'Ꭳ',
+  'ꭴ' => 'Ꭴ',
+  'ꭵ' => 'Ꭵ',
+  'ꭶ' => 'Ꭶ',
+  'ꭷ' => 'Ꭷ',
+  'ꭸ' => 'Ꭸ',
+  'ꭹ' => 'Ꭹ',
+  'ꭺ' => 'Ꭺ',
+  'ꭻ' => 'Ꭻ',
+  'ꭼ' => 'Ꭼ',
+  'ꭽ' => 'Ꭽ',
+  'ꭾ' => 'Ꭾ',
+  'ꭿ' => 'Ꭿ',
+  'ꮀ' => 'Ꮀ',
+  'ꮁ' => 'Ꮁ',
+  'ꮂ' => 'Ꮂ',
+  'ꮃ' => 'Ꮃ',
+  'ꮄ' => 'Ꮄ',
+  'ꮅ' => 'Ꮅ',
+  'ꮆ' => 'Ꮆ',
+  'ꮇ' => 'Ꮇ',
+  'ꮈ' => 'Ꮈ',
+  'ꮉ' => 'Ꮉ',
+  'ꮊ' => 'Ꮊ',
+  'ꮋ' => 'Ꮋ',
+  'ꮌ' => 'Ꮌ',
+  'ꮍ' => 'Ꮍ',
+  'ꮎ' => 'Ꮎ',
+  'ꮏ' => 'Ꮏ',
+  'ꮐ' => 'Ꮐ',
+  'ꮑ' => 'Ꮑ',
+  'ꮒ' => 'Ꮒ',
+  'ꮓ' => 'Ꮓ',
+  'ꮔ' => 'Ꮔ',
+  'ꮕ' => 'Ꮕ',
+  'ꮖ' => 'Ꮖ',
+  'ꮗ' => 'Ꮗ',
+  'ꮘ' => 'Ꮘ',
+  'ꮙ' => 'Ꮙ',
+  'ꮚ' => 'Ꮚ',
+  'ꮛ' => 'Ꮛ',
+  'ꮜ' => 'Ꮜ',
+  'ꮝ' => 'Ꮝ',
+  'ꮞ' => 'Ꮞ',
+  'ꮟ' => 'Ꮟ',
+  'ꮠ' => 'Ꮠ',
+  'ꮡ' => 'Ꮡ',
+  'ꮢ' => 'Ꮢ',
+  'ꮣ' => 'Ꮣ',
+  'ꮤ' => 'Ꮤ',
+  'ꮥ' => 'Ꮥ',
+  'ꮦ' => 'Ꮦ',
+  'ꮧ' => 'Ꮧ',
+  'ꮨ' => 'Ꮨ',
+  'ꮩ' => 'Ꮩ',
+  'ꮪ' => 'Ꮪ',
+  'ꮫ' => 'Ꮫ',
+  'ꮬ' => 'Ꮬ',
+  'ꮭ' => 'Ꮭ',
+  'ꮮ' => 'Ꮮ',
+  'ꮯ' => 'Ꮯ',
+  'ꮰ' => 'Ꮰ',
+  'ꮱ' => 'Ꮱ',
+  'ꮲ' => 'Ꮲ',
+  'ꮳ' => 'Ꮳ',
+  'ꮴ' => 'Ꮴ',
+  'ꮵ' => 'Ꮵ',
+  'ꮶ' => 'Ꮶ',
+  'ꮷ' => 'Ꮷ',
+  'ꮸ' => 'Ꮸ',
+  'ꮹ' => 'Ꮹ',
+  'ꮺ' => 'Ꮺ',
+  'ꮻ' => 'Ꮻ',
+  'ꮼ' => 'Ꮼ',
+  'ꮽ' => 'Ꮽ',
+  'ꮾ' => 'Ꮾ',
+  'ꮿ' => 'Ꮿ',
   'a' => 'A',
   'b' => 'B',
   'c' => 'C',
@@ -1069,6 +1226,93 @@ return array(
   '𐑍' => '𐐥',
   '𐑎' => '𐐦',
   '𐑏' => '𐐧',
+  '𐓘' => '𐒰',
+  '𐓙' => '𐒱',
+  '𐓚' => '𐒲',
+  '𐓛' => '𐒳',
+  '𐓜' => '𐒴',
+  '𐓝' => '𐒵',
+  '𐓞' => '𐒶',
+  '𐓟' => '𐒷',
+  '𐓠' => '𐒸',
+  '𐓡' => '𐒹',
+  '𐓢' => '𐒺',
+  '𐓣' => '𐒻',
+  '𐓤' => '𐒼',
+  '𐓥' => '𐒽',
+  '𐓦' => '𐒾',
+  '𐓧' => '𐒿',
+  '𐓨' => '𐓀',
+  '𐓩' => '𐓁',
+  '𐓪' => '𐓂',
+  '𐓫' => '𐓃',
+  '𐓬' => '𐓄',
+  '𐓭' => '𐓅',
+  '𐓮' => '𐓆',
+  '𐓯' => '𐓇',
+  '𐓰' => '𐓈',
+  '𐓱' => '𐓉',
+  '𐓲' => '𐓊',
+  '𐓳' => '𐓋',
+  '𐓴' => '𐓌',
+  '𐓵' => '𐓍',
+  '𐓶' => '𐓎',
+  '𐓷' => '𐓏',
+  '𐓸' => '𐓐',
+  '𐓹' => '𐓑',
+  '𐓺' => '𐓒',
+  '𐓻' => '𐓓',
+  '𐳀' => '𐲀',
+  '𐳁' => '𐲁',
+  '𐳂' => '𐲂',
+  '𐳃' => '𐲃',
+  '𐳄' => '𐲄',
+  '𐳅' => '𐲅',
+  '𐳆' => '𐲆',
+  '𐳇' => '𐲇',
+  '𐳈' => '𐲈',
+  '𐳉' => '𐲉',
+  '𐳊' => '𐲊',
+  '𐳋' => '𐲋',
+  '𐳌' => '𐲌',
+  '𐳍' => '𐲍',
+  '𐳎' => '𐲎',
+  '𐳏' => '𐲏',
+  '𐳐' => '𐲐',
+  '𐳑' => '𐲑',
+  '𐳒' => '𐲒',
+  '𐳓' => '𐲓',
+  '𐳔' => '𐲔',
+  '𐳕' => '𐲕',
+  '𐳖' => '𐲖',
+  '𐳗' => '𐲗',
+  '𐳘' => '𐲘',
+  '𐳙' => '𐲙',
+  '𐳚' => '𐲚',
+  '𐳛' => '𐲛',
+  '𐳜' => '𐲜',
+  '𐳝' => '𐲝',
+  '𐳞' => '𐲞',
+  '𐳟' => '𐲟',
+  '𐳠' => '𐲠',
+  '𐳡' => '𐲡',
+  '𐳢' => '𐲢',
+  '𐳣' => '𐲣',
+  '𐳤' => '𐲤',
+  '𐳥' => '𐲥',
+  '𐳦' => '𐲦',
+  '𐳧' => '𐲧',
+  '𐳨' => '𐲨',
+  '𐳩' => '𐲩',
+  '𐳪' => '𐲪',
+  '𐳫' => '𐲫',
+  '𐳬' => '𐲬',
+  '𐳭' => '𐲭',
+  '𐳮' => '𐲮',
+  '𐳯' => '𐲯',
+  '𐳰' => '𐲰',
+  '𐳱' => '𐲱',
+  '𐳲' => '𐲲',
   'ð‘£€' => 'ð‘¢ ',
   '𑣁' => '𑢡',
   '𑣂' => '𑢢',
@@ -1101,4 +1345,70 @@ return array(
   '𑣝' => '𑢽',
   '𑣞' => '𑢾',
   '𑣟' => '𑢿',
+  'ð–¹ ' => 'ð–¹€',
+  '𖹡' => '𖹁',
+  '𖹢' => '𖹂',
+  '𖹣' => '𖹃',
+  '𖹤' => '𖹄',
+  'ð–¹¥' => 'ð–¹…',
+  '𖹦' => '𖹆',
+  '𖹧' => '𖹇',
+  '𖹨' => '𖹈',
+  '𖹩' => '𖹉',
+  '𖹪' => '𖹊',
+  '𖹫' => '𖹋',
+  '𖹬' => '𖹌',
+  '𖹭' => '𖹍',
+  '𖹮' => '𖹎',
+  '𖹯' => '𖹏',
+  '𖹰' => '𖹐',
+  '𖹱' => '𖹑',
+  'ð–¹²' => 'ð–¹’',
+  '𖹳' => '𖹓',
+  'ð–¹´' => 'ð–¹”',
+  '𖹵' => '𖹕',
+  'ð–¹¶' => 'ð–¹–',
+  'ð–¹·' => 'ð–¹—',
+  '𖹸' => '𖹘',
+  'ð–¹¹' => 'ð–¹™',
+  '𖹺' => '𖹚',
+  'ð–¹»' => 'ð–¹›',
+  '𖹼' => '𖹜',
+  '𖹽' => '𖹝',
+  '𖹾' => '𖹞',
+  '𖹿' => '𖹟',
+  '𞤢' => '𞤀',
+  '𞤣' => '𞤁',
+  '𞤤' => '𞤂',
+  '𞤥' => '𞤃',
+  '𞤦' => '𞤄',
+  '𞤧' => '𞤅',
+  '𞤨' => '𞤆',
+  '𞤩' => '𞤇',
+  '𞤪' => '𞤈',
+  '𞤫' => '𞤉',
+  '𞤬' => '𞤊',
+  '𞤭' => '𞤋',
+  '𞤮' => '𞤌',
+  '𞤯' => '𞤍',
+  '𞤰' => '𞤎',
+  '𞤱' => '𞤏',
+  '𞤲' => '𞤐',
+  '𞤳' => '𞤑',
+  '𞤴' => '𞤒',
+  '𞤵' => '𞤓',
+  '𞤶' => '𞤔',
+  '𞤷' => '𞤕',
+  '𞤸' => '𞤖',
+  '𞤹' => '𞤗',
+  '𞤺' => '𞤘',
+  '𞤻' => '𞤙',
+  '𞤼' => '𞤚',
+  '𞤽' => '𞤛',
+  '𞤾' => '𞤜',
+  '𞤿' => '𞤝',
+  '𞥀' => '𞤞',
+  '𞥁' => '𞤟',
+  '𞥂' => '𞤠',
+  '𞥃' => '𞤡',
 );
diff --git a/vendor/symfony/polyfill-mbstring/bootstrap.php b/vendor/symfony/polyfill-mbstring/bootstrap.php
index 204a41ba271e343369ecf9a63d617aae7f5271bc..d0a93d4ddc22468595b185f1eb233e22c830aec5 100644
--- a/vendor/symfony/polyfill-mbstring/bootstrap.php
+++ b/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -11,52 +11,137 @@
 
 use Symfony\Polyfill\Mbstring as p;
 
-if (!function_exists('mb_strlen')) {
-    define('MB_CASE_UPPER', 0);
-    define('MB_CASE_LOWER', 1);
-    define('MB_CASE_TITLE', 2);
-
-    function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); }
-    function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); }
-    function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); }
-    function mb_decode_numericentity($s, $convmap, $enc = null) { return p\Mbstring::mb_decode_numericentity($s, $convmap, $enc); }
-    function mb_encode_numericentity($s, $convmap, $enc = null, $is_hex = false) { return p\Mbstring::mb_encode_numericentity($s, $convmap, $enc, $is_hex); }
-    function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); }
-    function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); }
-    function mb_language($lang = null) { return p\Mbstring::mb_language($lang); }
+if (!function_exists('mb_convert_encoding')) {
+    function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+    function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+    function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+    function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+    function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+    function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+    function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+    function mb_language($language = null) { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
     function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
     function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
-    function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); }
-    function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); }
-    function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); }
-    function mb_parse_str($s, &$result = array()) { parse_str($s, $result); }
-    function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); }
-    function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); }
-    function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); }
-    function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); }
-    function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); }
-    function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); }
-    function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); }
-    function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); }
-    function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); }
-    function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); }
-    function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); }
-    function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); }
-    function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); }
+}
+if (!function_exists('mb_check_encoding')) {
+    function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+    function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+    function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+    function mb_parse_str($string, &$result = array()) { parse_str($string, $result); }
+}
+if (!function_exists('mb_strlen')) {
+    function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+    function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+    function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+    function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+    function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+    function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+    function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+    function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+    function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+    function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+    function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+    function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+    function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
     function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
-    function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); }
-    function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); }
-    function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); }
-    function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); }
+}
+if (!function_exists('mb_http_output')) {
+    function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+    function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+    function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+    function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
+}
+if (!function_exists('mb_http_input')) {
     function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
-    function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); }
 }
-if (!function_exists('mb_chr')) {
-    function mb_ord($s, $enc = null) { return p\Mbstring::mb_ord($s, $enc); }
-    function mb_chr($code, $enc = null) { return p\Mbstring::mb_chr($code, $enc); }
-    function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
+
+if (!function_exists('mb_convert_variables')) {
+    if (PHP_VERSION_ID >= 80000) {
+        function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); }
+    } else {
+        function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
+    }
 }
 
+if (!function_exists('mb_ord')) {
+    function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+    function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
+}
 if (!function_exists('mb_str_split')) {
-    function mb_str_split($string, $split_length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $split_length, $encoding); }
+    function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+    return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+    define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+    define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+    define('MB_CASE_TITLE', 2);
 }
diff --git a/vendor/symfony/polyfill-mbstring/composer.json b/vendor/symfony/polyfill-mbstring/composer.json
index 308f009a10a0dab6632cc54d286a0c115295df2f..ca4a8392eed3e7ec9e316a38afeadff724b4350e 100644
--- a/vendor/symfony/polyfill-mbstring/composer.json
+++ b/vendor/symfony/polyfill-mbstring/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
@@ -28,7 +28,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-php72/Php72.php b/vendor/symfony/polyfill-php72/Php72.php
index d531e8441bff9f706fe9de1a0a76f27201b7fbe8..1e36d5e62b6a8fefa3944ca15f71f0ecb3fdf330 100644
--- a/vendor/symfony/polyfill-php72/Php72.php
+++ b/vendor/symfony/polyfill-php72/Php72.php
@@ -95,7 +95,8 @@ final class Php72
             return;
         }
 
-        return self::$hashMask ^ hexdec(substr($hash, 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
+        // On 32-bit systems, PHP_INT_SIZE is 4,
+        return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
     }
 
     public static function sapi_windows_vt100_support($stream, $enable = null)
@@ -166,7 +167,7 @@ final class Php72
             self::$hashMask = (int) substr(ob_get_clean(), 17);
         }
 
-        self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
+        self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
     }
 
     public static function mb_chr($code, $encoding = null)
@@ -190,7 +191,7 @@ final class Php72
 
     public static function mb_ord($s, $encoding = null)
     {
-        if (null == $encoding) {
+        if (null === $encoding) {
             $s = mb_convert_encoding($s, 'UTF-8');
         } elseif ('UTF-8' !== $encoding) {
             $s = mb_convert_encoding($s, 'UTF-8', $encoding);
diff --git a/vendor/symfony/polyfill-php72/README.md b/vendor/symfony/polyfill-php72/README.md
index 82c45f7a58609564f91c44767789c3ee0664991c..59dec8a237f5d96cbcb969651e50a099e7ac38cd 100644
--- a/vendor/symfony/polyfill-php72/README.md
+++ b/vendor/symfony/polyfill-php72/README.md
@@ -15,8 +15,9 @@ Moved to core since 7.2 (was in the optional XML extension earlier):
 - [`utf8_encode`](https://php.net/utf8_encode)
 - [`utf8_decode`](https://php.net/utf8_decode)
 
-Also, it provides a constant added to PHP 7.2:
-- [`PHP_OS_FAMILY`](http://php.net/manual/en/reserved.constants.php#constant.php-os-family)
+Also, it provides constants added to PHP 7.2:
+- [`PHP_FLOAT_*`](https://php.net/reserved.constants#constant.php-float-dig)
+- [`PHP_OS_FAMILY`](https://php.net/reserved.constants#constant.php-os-family)
 
 More information can be found in the
 [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
diff --git a/vendor/symfony/polyfill-php72/bootstrap.php b/vendor/symfony/polyfill-php72/bootstrap.php
index 519056de4aa1ec2b25b06b77b4dad800720c5016..3154b2c32fc27f02f2869a24c97dabb154df9a2d 100644
--- a/vendor/symfony/polyfill-php72/bootstrap.php
+++ b/vendor/symfony/polyfill-php72/bootstrap.php
@@ -11,26 +11,47 @@
 
 use Symfony\Polyfill\Php72 as p;
 
-if (PHP_VERSION_ID < 70200) {
-    if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
-        function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
-    }
-    if (!function_exists('stream_isatty')) {
-        function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
-    }
-    if (!function_exists('utf8_encode')) {
-        function utf8_encode($s) { return p\Php72::utf8_encode($s); }
-        function utf8_decode($s) { return p\Php72::utf8_decode($s); }
-    }
-    if (!function_exists('spl_object_id')) {
-        function spl_object_id($s) { return p\Php72::spl_object_id($s); }
-    }
-    if (!defined('PHP_OS_FAMILY')) {
-        define('PHP_OS_FAMILY', p\Php72::php_os_family());
-    }
-    if (!function_exists('mb_chr')) {
-        function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); }
-        function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); }
-        function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
-    }
+if (PHP_VERSION_ID >= 70200) {
+    return;
+}
+
+if (!defined('PHP_FLOAT_DIG')) {
+    define('PHP_FLOAT_DIG', 15);
+}
+if (!defined('PHP_FLOAT_EPSILON')) {
+    define('PHP_FLOAT_EPSILON', 2.2204460492503E-16);
+}
+if (!defined('PHP_FLOAT_MIN')) {
+    define('PHP_FLOAT_MIN', 2.2250738585072E-308);
+}
+if (!defined('PHP_FLOAT_MAX')) {
+    define('PHP_FLOAT_MAX', 1.7976931348623157E+308);
+}
+if (!defined('PHP_OS_FAMILY')) {
+    define('PHP_OS_FAMILY', p\Php72::php_os_family());
+}
+
+if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
+    function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
+}
+if (!function_exists('stream_isatty')) {
+    function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
+}
+if (!function_exists('utf8_encode')) {
+    function utf8_encode($string) { return p\Php72::utf8_encode($string); }
+}
+if (!function_exists('utf8_decode')) {
+    function utf8_decode($string) { return p\Php72::utf8_decode($string); }
+}
+if (!function_exists('spl_object_id')) {
+    function spl_object_id($object) { return p\Php72::spl_object_id($object); }
+}
+if (!function_exists('mb_ord')) {
+    function mb_ord($string, $encoding = null) { return p\Php72::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+    function mb_chr($codepoint, $encoding = null) { return p\Php72::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
 }
diff --git a/vendor/symfony/polyfill-php72/composer.json b/vendor/symfony/polyfill-php72/composer.json
index 5cfcbb757868847c87b6cd7c7c38dbfb9db5e766..994443a44cad19c40ed824c524c7033078be355d 100644
--- a/vendor/symfony/polyfill-php72/composer.json
+++ b/vendor/symfony/polyfill-php72/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Php72\\": "" },
@@ -25,7 +25,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-php73/bootstrap.php b/vendor/symfony/polyfill-php73/bootstrap.php
index 4c3f44f6bf8247cadfc4a8cea9b67f20d857fc81..267872522f72d56baa88e9b764c9901c644f8bde 100644
--- a/vendor/symfony/polyfill-php73/bootstrap.php
+++ b/vendor/symfony/polyfill-php73/bootstrap.php
@@ -11,22 +11,21 @@
 
 use Symfony\Polyfill\Php73 as p;
 
-if (PHP_VERSION_ID < 70300) {
-    if (!function_exists('is_countable')) {
-        function is_countable($var) { return is_array($var) || $var instanceof Countable || $var instanceof ResourceBundle || $var instanceof SimpleXmlElement; }
-    }
-
-    if (!function_exists('hrtime')) {
-        require_once __DIR__.'/Php73.php';
-        p\Php73::$startAt = (int) microtime(true);
-        function hrtime($asNum = false) { return p\Php73::hrtime($asNum); }
-    }
-
-    if (!function_exists('array_key_first')) {
-        function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
-    }
+if (PHP_VERSION_ID >= 70300) {
+    return;
+}
 
-    if (!function_exists('array_key_last')) {
-        function array_key_last(array $array) { end($array); return key($array); }
-    }
+if (!function_exists('is_countable')) {
+    function is_countable($value) { return is_array($value) || $value instanceof Countable || $value instanceof ResourceBundle || $value instanceof SimpleXmlElement; }
+}
+if (!function_exists('hrtime')) {
+    require_once __DIR__.'/Php73.php';
+    p\Php73::$startAt = (int) microtime(true);
+    function hrtime($as_number  = false) { return p\Php73::hrtime($as_number ); }
+}
+if (!function_exists('array_key_first')) {
+    function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
+}
+if (!function_exists('array_key_last')) {
+    function array_key_last(array $array) { return key(array_slice($array, -1, 1, true)); }
 }
diff --git a/vendor/symfony/polyfill-php73/composer.json b/vendor/symfony/polyfill-php73/composer.json
index 92808af8f983e10a5ca63298add09ceffa195593..6c9660dddd67c5317bbac2c33675701899822520 100644
--- a/vendor/symfony/polyfill-php73/composer.json
+++ b/vendor/symfony/polyfill-php73/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Php73\\": "" },
@@ -26,7 +26,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/routing/.gitignore b/vendor/symfony/routing/.gitignore
deleted file mode 100644
index c49a5d8df5c6548379f00c77fe572a7217bce218..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/routing/Annotation/Route.php b/vendor/symfony/routing/Annotation/Route.php
index 4d5f6181155912f9ae0abbef45b78824204e14fb..dc1cee319c9e062bae11acac6a5dc2aeaa7b897c 100644
--- a/vendor/symfony/routing/Annotation/Route.php
+++ b/vendor/symfony/routing/Annotation/Route.php
@@ -31,9 +31,6 @@ class Route
     private $methods = [];
     private $schemes = [];
     private $condition;
-    private $locale;
-    private $format;
-    private $utf8;
 
     /**
      * @param array $data An array of key/value parameters
@@ -43,7 +40,7 @@ class Route
     public function __construct(array $data)
     {
         if (isset($data['localized_paths'])) {
-            throw new \BadMethodCallException(sprintf('Unknown property "localized_paths" on annotation "%s".', \get_class($this)));
+            throw new \BadMethodCallException(sprintf('Unknown property "localized_paths" on annotation "%s".', static::class));
         }
 
         if (isset($data['value'])) {
@@ -67,14 +64,14 @@ class Route
         }
 
         if (isset($data['utf8'])) {
-            $data['options']['utf8'] = filter_var($data['utf8'], FILTER_VALIDATE_BOOLEAN) ?: false;
+            $data['options']['utf8'] = filter_var($data['utf8'], \FILTER_VALIDATE_BOOLEAN) ?: false;
             unset($data['utf8']);
         }
 
         foreach ($data as $key => $value) {
             $method = 'set'.str_replace('_', '', $key);
             if (!method_exists($this, $method)) {
-                throw new \BadMethodCallException(sprintf('Unknown property "%s" on annotation "%s".', $key, \get_class($this)));
+                throw new \BadMethodCallException(sprintf('Unknown property "%s" on annotation "%s".', $key, static::class));
             }
             $this->$method($value);
         }
diff --git a/vendor/symfony/routing/CHANGELOG.md b/vendor/symfony/routing/CHANGELOG.md
index 5f133efd6ef9cb23ebd828635fdecc1e67497282..4eebca62065b09c7a7975a7b2fe1842df77c0c7d 100644
--- a/vendor/symfony/routing/CHANGELOG.md
+++ b/vendor/symfony/routing/CHANGELOG.md
@@ -1,6 +1,13 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * Deprecated `ServiceRouterLoader` in favor of `ContainerLoader`.
+ * Deprecated `ObjectRouteLoader` in favor of `ObjectLoader`.
+ * Added a way to exclude patterns of resources from being imported by the `import()` method
+
 4.3.0
 -----
 
diff --git a/vendor/symfony/routing/CompiledRoute.php b/vendor/symfony/routing/CompiledRoute.php
index 87278e702a899127cd44c77f1330cd31af2c5c99..b6f31b2ebe94d734ab03877aeaf92e4773439b3a 100644
--- a/vendor/symfony/routing/CompiledRoute.php
+++ b/vendor/symfony/routing/CompiledRoute.php
@@ -64,6 +64,8 @@ class CompiledRoute implements \Serializable
     }
 
     /**
+     * @return string
+     *
      * @internal since Symfony 4.3
      * @final since Symfony 4.3
      */
diff --git a/vendor/symfony/routing/Exception/MethodNotAllowedException.php b/vendor/symfony/routing/Exception/MethodNotAllowedException.php
index e129ec8bf2178ce938f37852b6d3e5ab40f80cc7..b897081bd5d844b025a9eab58e204a357d996fb5 100644
--- a/vendor/symfony/routing/Exception/MethodNotAllowedException.php
+++ b/vendor/symfony/routing/Exception/MethodNotAllowedException.php
@@ -22,7 +22,7 @@ class MethodNotAllowedException extends \RuntimeException implements ExceptionIn
 {
     protected $allowedMethods = [];
 
-    public function __construct(array $allowedMethods, string $message = null, int $code = 0, \Exception $previous = null)
+    public function __construct(array $allowedMethods, string $message = null, int $code = 0, \Throwable $previous = null)
     {
         $this->allowedMethods = array_map('strtoupper', $allowedMethods);
 
diff --git a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php b/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
index 41cd5893ae2f385cd01dac4fe3bdbe065688fa3d..adcc99e31015abdb1299f5bf1f86e76edff9658f 100644
--- a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
+++ b/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
@@ -40,7 +40,6 @@ class CompiledUrlGenerator extends UrlGenerator
         if (null !== $locale) {
             do {
                 if (($this->compiledRoutes[$name.'.'.$locale][1]['_canonical_route'] ?? null) === $name) {
-                    unset($parameters['_locale']);
                     $name .= '.'.$locale;
                     break;
                 }
@@ -53,6 +52,14 @@ class CompiledUrlGenerator extends UrlGenerator
 
         list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = $this->compiledRoutes[$name];
 
+        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
+            if (!\in_array('_locale', $variables, true)) {
+                unset($parameters['_locale']);
+            } elseif (!isset($parameters['_locale'])) {
+                $parameters['_locale'] = $defaults['_locale'];
+            }
+        }
+
         return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes);
     }
 }
diff --git a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
index 096519aa1a72f1a7db90ce97e11463c1bf386515..26daefc63c7f227d2321d209a25df72f2e2fbd74 100644
--- a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
+++ b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
@@ -24,8 +24,6 @@ interface GeneratorDumperInterface
      * Dumps a set of routes to a string representation of executable code
      * that can then be used to generate a URL of such a route.
      *
-     * @param array $options An array of options
-     *
      * @return string Executable code
      */
     public function dump(array $options = []);
diff --git a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
index 3869ffda4eebe4434d5c7ced0212a361e7771532..23081f917013d4bfe2ea5b457fb1ca662f9cbe3a 100644
--- a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
+++ b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\Routing\Generator\Dumper;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlGeneratorDumper" instead.', PhpGeneratorDumper::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlGeneratorDumper" instead.', PhpGeneratorDumper::class), \E_USER_DEPRECATED);
 
 use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
 
@@ -79,10 +79,8 @@ EOF;
     /**
      * Generates PHP code representing an array of defined routes
      * together with the routes properties (e.g. requirements).
-     *
-     * @return string PHP code
      */
-    private function generateDeclaredRoutes()
+    private function generateDeclaredRoutes(): string
     {
         $routes = "[\n";
         foreach ($this->getRoutes()->all() as $name => $route) {
@@ -105,10 +103,8 @@ EOF;
 
     /**
      * Generates PHP code representing the `generate` method that implements the UrlGeneratorInterface.
-     *
-     * @return string PHP code
      */
-    private function generateGenerateMethod()
+    private function generateGenerateMethod(): string
     {
         return <<<'EOF'
     public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
@@ -120,7 +116,6 @@ EOF;
         if (null !== $locale && null !== $name) {
             do {
                 if ((self::$declaredRoutes[$name.'.'.$locale][1]['_canonical_route'] ?? null) === $name) {
-                    unset($parameters['_locale']);
                     $name .= '.'.$locale;
                     break;
                 }
@@ -133,6 +128,14 @@ EOF;
 
         list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name];
 
+        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
+            if (!\in_array('_locale', $variables, true)) {
+                unset($parameters['_locale']);
+            } elseif (!isset($parameters['_locale'])) {
+                $parameters['_locale'] = $defaults['_locale'];
+            }
+        }
+
         return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes);
     }
 EOF;
diff --git a/vendor/symfony/routing/Generator/UrlGenerator.php b/vendor/symfony/routing/Generator/UrlGenerator.php
index 8be593bf98b6f93c5f3ca478522f11cae5583101..7adf2ed27e77c79bbd7d62ebb31864f2fa44d618 100644
--- a/vendor/symfony/routing/Generator/UrlGenerator.php
+++ b/vendor/symfony/routing/Generator/UrlGenerator.php
@@ -134,7 +134,6 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
         if (null !== $locale) {
             do {
                 if (null !== ($route = $this->routes->get($name.'.'.$locale)) && $route->getDefault('_canonical_route') === $name) {
-                    unset($parameters['_locale']);
                     break;
                 }
             } while (false !== $locale = strstr($locale, '_', true));
@@ -147,7 +146,18 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
         // the Route has a cache of its own and is not recompiled as long as it does not get modified
         $compiledRoute = $route->compile();
 
-        return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes());
+        $defaults = $route->getDefaults();
+        $variables = $compiledRoute->getVariables();
+
+        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
+            if (!\in_array('_locale', $variables, true)) {
+                unset($parameters['_locale']);
+            } elseif (!isset($parameters['_locale'])) {
+                $parameters['_locale'] = $defaults['_locale'];
+            }
+        }
+
+        return $this->doGenerate($variables, $defaults, $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes());
     }
 
     /**
@@ -292,7 +302,7 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
             unset($extra['_fragment']);
         }
 
-        if ($extra && $query = http_build_query($extra, '', '&', PHP_QUERY_RFC3986)) {
+        if ($extra && $query = http_build_query($extra, '', '&', \PHP_QUERY_RFC3986)) {
             $url .= '?'.strtr($query, self::QUERY_FRAGMENT_DECODED);
         }
 
diff --git a/vendor/symfony/routing/LICENSE b/vendor/symfony/routing/LICENSE
index a677f43763ca467472898351b328aee41e2edd7c..9e936ec0448b8549e5edf08e5ac5f01491a8bfc8 100644
--- a/vendor/symfony/routing/LICENSE
+++ b/vendor/symfony/routing/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/routing/Loader/AnnotationClassLoader.php b/vendor/symfony/routing/Loader/AnnotationClassLoader.php
index 6390a79f581187a6278217c48481b6f669fa4c95..ca7f46b164c95efa779d805e75cba4577c9385e1 100644
--- a/vendor/symfony/routing/Loader/AnnotationClassLoader.php
+++ b/vendor/symfony/routing/Loader/AnnotationClassLoader.php
@@ -18,11 +18,12 @@ use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Routing\Annotation\Route as RouteAnnotation;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 /**
  * AnnotationClassLoader loads routing information from a PHP class and its methods.
  *
- * You need to define an implementation for the getRouteDefaults() method. Most of the
+ * You need to define an implementation for the configureRoute() method. Most of the
  * time, this method should define some PHP callable to be called for the route
  * (a controller in MVC speak).
  *
@@ -146,7 +147,7 @@ abstract class AnnotationClassLoader implements LoaderInterface
 
         foreach ($requirements as $placeholder => $requirement) {
             if (\is_int($placeholder)) {
-                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s::%s()"?', $placeholder, $requirement, $name, $class->getName(), $method->getName()), E_USER_DEPRECATED);
+                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s::%s()"?', $placeholder, $requirement, $name, $class->getName(), $method->getName()), \E_USER_DEPRECATED);
             }
         }
 
@@ -211,6 +212,7 @@ abstract class AnnotationClassLoader implements LoaderInterface
             $this->configureRoute($route, $class, $method, $annot);
             if (0 !== $locale) {
                 $route->setDefault('_locale', $locale);
+                $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                 $route->setDefault('_canonical_route', $name);
                 $collection->add($name.'.'.$locale, $route);
             } else {
@@ -303,7 +305,7 @@ abstract class AnnotationClassLoader implements LoaderInterface
 
             foreach ($globals['requirements'] as $placeholder => $requirement) {
                 if (\is_int($placeholder)) {
-                    @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" in "%s"?', $placeholder, $requirement, $class->getName()), E_USER_DEPRECATED);
+                    @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" in "%s"?', $placeholder, $requirement, $class->getName()), \E_USER_DEPRECATED);
                 }
             }
         }
diff --git a/vendor/symfony/routing/Loader/AnnotationFileLoader.php b/vendor/symfony/routing/Loader/AnnotationFileLoader.php
index eafd614d4ffd224814c9fc51eb32dcfc3c6f5d21..8f9af3a8f76d5b2cc02014807319304ae5e9980f 100644
--- a/vendor/symfony/routing/Loader/AnnotationFileLoader.php
+++ b/vendor/symfony/routing/Loader/AnnotationFileLoader.php
@@ -75,7 +75,7 @@ class AnnotationFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'annotation' === $type);
+        return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'annotation' === $type);
     }
 
     /**
@@ -91,10 +91,15 @@ class AnnotationFileLoader extends FileLoader
         $namespace = false;
         $tokens = token_get_all(file_get_contents($file));
 
-        if (1 === \count($tokens) && T_INLINE_HTML === $tokens[0][0]) {
+        if (1 === \count($tokens) && \T_INLINE_HTML === $tokens[0][0]) {
             throw new \InvalidArgumentException(sprintf('The file "%s" does not contain PHP code. Did you forgot to add the "<?php" start tag at the beginning of the file?', $file));
         }
 
+        $nsTokens = [\T_NS_SEPARATOR => true, \T_STRING => true];
+        if (\defined('T_NAME_QUALIFIED')) {
+            $nsTokens[T_NAME_QUALIFIED] = true;
+        }
+
         for ($i = 0; isset($tokens[$i]); ++$i) {
             $token = $tokens[$i];
 
@@ -102,19 +107,19 @@ class AnnotationFileLoader extends FileLoader
                 continue;
             }
 
-            if (true === $class && T_STRING === $token[0]) {
+            if (true === $class && \T_STRING === $token[0]) {
                 return $namespace.'\\'.$token[1];
             }
 
-            if (true === $namespace && T_STRING === $token[0]) {
+            if (true === $namespace && isset($nsTokens[$token[0]])) {
                 $namespace = $token[1];
-                while (isset($tokens[++$i][1]) && \in_array($tokens[$i][0], [T_NS_SEPARATOR, T_STRING])) {
+                while (isset($tokens[++$i][1], $nsTokens[$tokens[$i][0]])) {
                     $namespace .= $tokens[$i][1];
                 }
                 $token = $tokens[$i];
             }
 
-            if (T_CLASS === $token[0]) {
+            if (\T_CLASS === $token[0]) {
                 // Skip usage of ::class constant and anonymous classes
                 $skipClassToken = false;
                 for ($j = $i - 1; $j > 0; --$j) {
@@ -122,10 +127,10 @@ class AnnotationFileLoader extends FileLoader
                         break;
                     }
 
-                    if (T_DOUBLE_COLON === $tokens[$j][0] || T_NEW === $tokens[$j][0]) {
+                    if (\T_DOUBLE_COLON === $tokens[$j][0] || \T_NEW === $tokens[$j][0]) {
                         $skipClassToken = true;
                         break;
-                    } elseif (!\in_array($tokens[$j][0], [T_WHITESPACE, T_DOC_COMMENT, T_COMMENT])) {
+                    } elseif (!\in_array($tokens[$j][0], [\T_WHITESPACE, \T_DOC_COMMENT, \T_COMMENT])) {
                         break;
                     }
                 }
@@ -135,7 +140,7 @@ class AnnotationFileLoader extends FileLoader
                 }
             }
 
-            if (T_NAMESPACE === $token[0]) {
+            if (\T_NAMESPACE === $token[0]) {
                 $namespace = true;
             }
         }
diff --git a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php b/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
index e1de75e01de52ce0b80a591346b430d890602ffc..79c1100a82fb98620286c279cbb250ab9ff4009f 100644
--- a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
+++ b/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
@@ -47,10 +47,8 @@ class CollectionConfigurator
 
     /**
      * Creates a sub-collection.
-     *
-     * @return self
      */
-    final public function collection($name = '')
+    final public function collection(string $name = ''): self
     {
         return new self($this->collection, $this->name.$name, $this, $this->prefixes);
     }
@@ -62,7 +60,7 @@ class CollectionConfigurator
      *
      * @return $this
      */
-    final public function prefix($prefix)
+    final public function prefix($prefix): self
     {
         if (\is_array($prefix)) {
             if (null === $this->parentPrefixes) {
@@ -88,7 +86,7 @@ class CollectionConfigurator
         return $this;
     }
 
-    private function createRoute($path): Route
+    private function createRoute(string $path): Route
     {
         return (clone $this->route)->setPath($path);
     }
diff --git a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php b/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
index 92e7efde4600b0e25b61ab23d7feacc1e93984a1..0059a632a197701fea2cb3e7c9779d4ea6d7cbca 100644
--- a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
+++ b/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
@@ -13,6 +13,7 @@ namespace Symfony\Component\Routing\Loader\Configurator;
 
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 /**
  * @author Nicolas Grekas <p@tchwork.com>
@@ -41,7 +42,7 @@ class ImportConfigurator
      *
      * @return $this
      */
-    final public function prefix($prefix, bool $trailingSlashOnRoot = true)
+    final public function prefix($prefix, bool $trailingSlashOnRoot = true): self
     {
         if (!\is_array($prefix)) {
             $this->route->addPrefix($prefix);
@@ -63,6 +64,7 @@ class ImportConfigurator
                     foreach ($prefix as $locale => $localePrefix) {
                         $localizedRoute = clone $route;
                         $localizedRoute->setDefault('_locale', $locale);
+                        $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                         $localizedRoute->setDefault('_canonical_route', $name);
                         $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
                         $this->route->add($name.'.'.$locale, $localizedRoute);
@@ -84,7 +86,7 @@ class ImportConfigurator
      *
      * @return $this
      */
-    final public function namePrefix(string $namePrefix)
+    final public function namePrefix(string $namePrefix): self
     {
         $this->route->addNamePrefix($namePrefix);
 
diff --git a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php b/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
index a315cfb4ad07ee43a430087287a44336817e1287..8ed06f307c6464ac23705374d6eb11c6e17d8e66 100644
--- a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
+++ b/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
@@ -34,12 +34,13 @@ class RoutingConfigurator
     }
 
     /**
-     * @return ImportConfigurator
+     * @param string|string[]|null $exclude Glob patterns to exclude from the import
      */
-    final public function import($resource, $type = null, $ignoreErrors = false)
+    final public function import($resource, string $type = null, bool $ignoreErrors = false, $exclude = null): ImportConfigurator
     {
         $this->loader->setCurrentDir(\dirname($this->path));
-        $imported = $this->loader->import($resource, $type, $ignoreErrors, $this->file);
+
+        $imported = $this->loader->import($resource, $type, $ignoreErrors, $this->file, $exclude) ?: [];
         if (!\is_array($imported)) {
             return new ImportConfigurator($this->collection, $imported);
         }
@@ -52,10 +53,7 @@ class RoutingConfigurator
         return new ImportConfigurator($this->collection, $mergedCollection);
     }
 
-    /**
-     * @return CollectionConfigurator
-     */
-    final public function collection($name = '')
+    final public function collection(string $name = ''): CollectionConfigurator
     {
         return new CollectionConfigurator($this->collection, $name);
     }
diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
index 45642d2fec0cdfba9ee4ff96eece088ef7f08ab1..84899aa2e27fc5fa4649874e24f137198f9e2adb 100644
--- a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
+++ b/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
@@ -15,6 +15,7 @@ use Symfony\Component\Routing\Loader\Configurator\CollectionConfigurator;
 use Symfony\Component\Routing\Loader\Configurator\RouteConfigurator;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 trait AddTrait
 {
@@ -67,6 +68,7 @@ trait AddTrait
             $routes->add($name.'.'.$locale, $route = $this->createRoute($path));
             $this->collection->add($this->name.$name.'.'.$locale, $route);
             $route->setDefault('_locale', $locale);
+            $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
             $route->setDefault('_canonical_route', $this->name.$name);
         }
 
@@ -83,7 +85,7 @@ trait AddTrait
         return $this->add($name, $path);
     }
 
-    private function createRoute($path): Route
+    private function createRoute(string $path): Route
     {
         return new Route($path);
     }
diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
index 92c4d2ffdcccf7e6247682f78b10607747e7b03e..04009cd16d3a81e10c2ffd2b8b243de1e52839b0 100644
--- a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
+++ b/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
@@ -26,7 +26,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function defaults(array $defaults)
+    final public function defaults(array $defaults): self
     {
         $this->route->addDefaults($defaults);
 
@@ -38,7 +38,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function requirements(array $requirements)
+    final public function requirements(array $requirements): self
     {
         $this->route->addRequirements($requirements);
 
@@ -50,7 +50,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function options(array $options)
+    final public function options(array $options): self
     {
         $this->route->addOptions($options);
 
@@ -62,7 +62,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function utf8(bool $utf8 = true)
+    final public function utf8(bool $utf8 = true): self
     {
         $this->route->addOptions(['utf8' => $utf8]);
 
@@ -74,7 +74,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function condition(string $condition)
+    final public function condition(string $condition): self
     {
         $this->route->setCondition($condition);
 
@@ -86,7 +86,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function host(string $pattern)
+    final public function host(string $pattern): self
     {
         $this->route->setHost($pattern);
 
@@ -101,7 +101,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function schemes(array $schemes)
+    final public function schemes(array $schemes): self
     {
         $this->route->setSchemes($schemes);
 
@@ -116,7 +116,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function methods(array $methods)
+    final public function methods(array $methods): self
     {
         $this->route->setMethods($methods);
 
@@ -130,7 +130,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function controller($controller)
+    final public function controller($controller): self
     {
         $this->route->addDefaults(['_controller' => $controller]);
 
@@ -142,7 +142,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function locale(string $locale)
+    final public function locale(string $locale): self
     {
         $this->route->addDefaults(['_locale' => $locale]);
 
@@ -154,7 +154,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function format(string $format)
+    final public function format(string $format): self
     {
         $this->route->addDefaults(['_format' => $format]);
 
diff --git a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
index 0276719c10e8e9abba45c4094df15ec31d80e1fa..ab2be10269cdcfcd3dcd5f7ccf9c6a8162828ecb 100644
--- a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
+++ b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
@@ -12,12 +12,17 @@
 namespace Symfony\Component\Routing\Loader\DependencyInjection;
 
 use Psr\Container\ContainerInterface;
+use Symfony\Component\Routing\Loader\ContainerLoader;
 use Symfony\Component\Routing\Loader\ObjectRouteLoader;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ServiceRouterLoader::class, ContainerLoader::class), \E_USER_DEPRECATED);
+
 /**
  * A route loader that executes a service to load the routes.
  *
  * @author Ryan Weaver <ryan@knpuniversity.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\Routing\Loader\ContainerLoader instead.
  */
 class ServiceRouterLoader extends ObjectRouteLoader
 {
diff --git a/vendor/symfony/routing/Loader/ObjectRouteLoader.php b/vendor/symfony/routing/Loader/ObjectRouteLoader.php
index 8f0680f02aa5cf8f3936f69ac8aaac005550f810..44f28fb8a43c243d8c059540533904413f7333e2 100644
--- a/vendor/symfony/routing/Loader/ObjectRouteLoader.php
+++ b/vendor/symfony/routing/Loader/ObjectRouteLoader.php
@@ -11,16 +11,16 @@
 
 namespace Symfony\Component\Routing\Loader;
 
-use Symfony\Component\Config\Loader\Loader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\RouteCollection;
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ObjectRouteLoader::class, ObjectLoader::class), \E_USER_DEPRECATED);
 
 /**
  * A route loader that calls a method on an object to load the routes.
  *
  * @author Ryan Weaver <ryan@knpuniversity.com>
+ *
+ * @deprecated since Symfony 4.4, use ObjectLoader instead.
  */
-abstract class ObjectRouteLoader extends Loader
+abstract class ObjectRouteLoader extends ObjectLoader
 {
     /**
      * Returns the object that the method will be called on to load routes.
@@ -34,53 +34,6 @@ abstract class ObjectRouteLoader extends Loader
      */
     abstract protected function getServiceObject($id);
 
-    /**
-     * Calls the service that will load the routes.
-     *
-     * @param string      $resource Some value that will resolve to a callable
-     * @param string|null $type     The resource type
-     *
-     * @return RouteCollection
-     */
-    public function load($resource, $type = null)
-    {
-        if (!preg_match('/^[^\:]+(?:::?(?:[^\:]+))?$/', $resource)) {
-            throw new \InvalidArgumentException(sprintf('Invalid resource "%s" passed to the "service" route loader: use the format "service::method" or "service" if your service has an "__invoke" method.', $resource));
-        }
-
-        if (1 === substr_count($resource, ':')) {
-            $resource = str_replace(':', '::', $resource);
-            @trigger_error(sprintf('Referencing service route loaders with a single colon is deprecated since Symfony 4.1. Use %s instead.', $resource), E_USER_DEPRECATED);
-        }
-
-        $parts = explode('::', $resource);
-        $serviceString = $parts[0];
-        $method = $parts[1] ?? '__invoke';
-
-        $loaderObject = $this->getServiceObject($serviceString);
-
-        if (!\is_object($loaderObject)) {
-            throw new \LogicException(sprintf('%s:getServiceObject() must return an object: %s returned', \get_class($this), \gettype($loaderObject)));
-        }
-
-        if (!\is_callable([$loaderObject, $method])) {
-            throw new \BadMethodCallException(sprintf('Method "%s" not found on "%s" when importing routing resource "%s"', $method, \get_class($loaderObject), $resource));
-        }
-
-        $routeCollection = $loaderObject->$method($this);
-
-        if (!$routeCollection instanceof RouteCollection) {
-            $type = \is_object($routeCollection) ? \get_class($routeCollection) : \gettype($routeCollection);
-
-            throw new \LogicException(sprintf('The %s::%s method must return a RouteCollection: %s returned', \get_class($loaderObject), $method, $type));
-        }
-
-        // make the service file tracked so that if it changes, the cache rebuilds
-        $this->addClassResource(new \ReflectionClass($loaderObject), $routeCollection);
-
-        return $routeCollection;
-    }
-
     /**
      * {@inheritdoc}
      */
@@ -89,12 +42,11 @@ abstract class ObjectRouteLoader extends Loader
         return 'service' === $type;
     }
 
-    private function addClassResource(\ReflectionClass $class, RouteCollection $collection)
+    /**
+     * {@inheritdoc}
+     */
+    protected function getObject(string $id)
     {
-        do {
-            if (is_file($class->getFileName())) {
-                $collection->addResource(new FileResource($class->getFileName()));
-            }
-        } while ($class = $class->getParentClass());
+        return $this->getServiceObject($id);
     }
 }
diff --git a/vendor/symfony/routing/Loader/PhpFileLoader.php b/vendor/symfony/routing/Loader/PhpFileLoader.php
index a5cf95156401249963306c33c658989c33dfe12c..054290bff73e0dd0dc02454053d49e53ec255b62 100644
--- a/vendor/symfony/routing/Loader/PhpFileLoader.php
+++ b/vendor/symfony/routing/Loader/PhpFileLoader.php
@@ -63,7 +63,7 @@ class PhpFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'php' === $type);
+        return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'php' === $type);
     }
 }
 
diff --git a/vendor/symfony/routing/Loader/XmlFileLoader.php b/vendor/symfony/routing/Loader/XmlFileLoader.php
index ed4faf3915b72ddb748f7c4f40c35341f47b9d01..e8732b3d6a12dd7bcd38b4e4bce0ac637205c76d 100644
--- a/vendor/symfony/routing/Loader/XmlFileLoader.php
+++ b/vendor/symfony/routing/Loader/XmlFileLoader.php
@@ -16,6 +16,7 @@ use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Config\Util\XmlUtils;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 /**
  * XmlFileLoader loads XML routing files.
@@ -63,10 +64,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses a node from a loaded XML file.
      *
-     * @param RouteCollection $collection Collection to associate with the node
-     * @param \DOMElement     $node       Element to parse
-     * @param string          $path       Full path of the XML file being processed
-     * @param string          $file       Loaded file name
+     * @param \DOMElement $node Element to parse
+     * @param string      $path Full path of the XML file being processed
+     * @param string      $file Loaded file name
      *
      * @throws \InvalidArgumentException When the XML is invalid
      */
@@ -93,15 +93,14 @@ class XmlFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && 'xml' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'xml' === $type);
+        return \is_string($resource) && 'xml' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'xml' === $type);
     }
 
     /**
      * Parses a route and adds it to the RouteCollection.
      *
-     * @param RouteCollection $collection RouteCollection instance
-     * @param \DOMElement     $node       Element to parse that represents a Route
-     * @param string          $path       Full path of the XML file being processed
+     * @param \DOMElement $node Element to parse that represents a Route
+     * @param string      $path Full path of the XML file being processed
      *
      * @throws \InvalidArgumentException When the XML is invalid
      */
@@ -111,8 +110,8 @@ class XmlFileLoader extends FileLoader
             throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have an "id" attribute.', $path));
         }
 
-        $schemes = preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, PREG_SPLIT_NO_EMPTY);
-        $methods = preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, PREG_SPLIT_NO_EMPTY);
+        $schemes = preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY);
+        $methods = preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY);
 
         list($defaults, $requirements, $options, $condition, $paths) = $this->parseConfigs($node, $path);
 
@@ -131,6 +130,7 @@ class XmlFileLoader extends FileLoader
             foreach ($paths as $locale => $p) {
                 $defaults['_locale'] = $locale;
                 $defaults['_canonical_route'] = $id;
+                $requirements['_locale'] = preg_quote($locale, RouteCompiler::REGEX_DELIMITER);
                 $route = new Route($p, $defaults, $requirements, $options, $node->getAttribute('host'), $schemes, $methods, $condition);
                 $collection->add($id.'.'.$locale, $route);
             }
@@ -140,10 +140,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses an import and adds the routes in the resource to the RouteCollection.
      *
-     * @param RouteCollection $collection RouteCollection instance
-     * @param \DOMElement     $node       Element to parse that represents a Route
-     * @param string          $path       Full path of the XML file being processed
-     * @param string          $file       Loaded file name
+     * @param \DOMElement $node Element to parse that represents a Route
+     * @param string      $path Full path of the XML file being processed
+     * @param string      $file Loaded file name
      *
      * @throws \InvalidArgumentException When the XML is invalid
      */
@@ -156,8 +155,8 @@ class XmlFileLoader extends FileLoader
         $type = $node->getAttribute('type');
         $prefix = $node->getAttribute('prefix');
         $host = $node->hasAttribute('host') ? $node->getAttribute('host') : null;
-        $schemes = $node->hasAttribute('schemes') ? preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, PREG_SPLIT_NO_EMPTY) : null;
-        $methods = $node->hasAttribute('methods') ? preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, PREG_SPLIT_NO_EMPTY) : null;
+        $schemes = $node->hasAttribute('schemes') ? preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY) : null;
+        $methods = $node->hasAttribute('methods') ? preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY) : null;
         $trailingSlashOnRoot = $node->hasAttribute('trailing-slash-on-root') ? XmlUtils::phpize($node->getAttribute('trailing-slash-on-root')) : true;
 
         list($defaults, $requirements, $options, $condition, /* $paths */, $prefixes) = $this->parseConfigs($node, $path);
@@ -166,10 +165,24 @@ class XmlFileLoader extends FileLoader
             throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must not have both a "prefix" attribute and <prefix> child nodes.', $path));
         }
 
+        $exclude = [];
+        foreach ($node->childNodes as $child) {
+            if ($child instanceof \DOMElement && $child->localName === $exclude && self::NAMESPACE_URI === $child->namespaceURI) {
+                $exclude[] = $child->nodeValue;
+            }
+        }
+
+        if ($node->hasAttribute('exclude')) {
+            if ($exclude) {
+                throw new \InvalidArgumentException('You cannot use both the attribute "exclude" and <exclude> tags at the same time.');
+            }
+            $exclude = [$node->getAttribute('exclude')];
+        }
+
         $this->setCurrentDir(\dirname($path));
 
         /** @var RouteCollection[] $imported */
-        $imported = $this->import($resource, ('' !== $type ? $type : null), false, $file);
+        $imported = $this->import($resource, ('' !== $type ? $type : null), false, $file, $exclude) ?: [];
 
         if (!\is_array($imported)) {
             $imported = [$imported];
@@ -198,6 +211,7 @@ class XmlFileLoader extends FileLoader
                             $localizedRoute = clone $route;
                             $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
                             $localizedRoute->setDefault('_locale', $locale);
+                            $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                             $localizedRoute->setDefault('_canonical_route', $name);
                             $subCollection->add($name.'.'.$locale, $localizedRoute);
                         }
@@ -253,14 +267,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses the config elements (default, requirement, option).
      *
-     * @param \DOMElement $node Element to parse that contains the configs
-     * @param string      $path Full path of the XML file being processed
-     *
-     * @return array An array with the defaults as first item, requirements as second and options as third
-     *
      * @throws \InvalidArgumentException When the XML is invalid
      */
-    private function parseConfigs(\DOMElement $node, $path)
+    private function parseConfigs(\DOMElement $node, string $path): array
     {
         $defaults = [];
         $requirements = [];
@@ -306,9 +315,9 @@ class XmlFileLoader extends FileLoader
 
         if ($controller = $node->getAttribute('controller')) {
             if (isset($defaults['_controller'])) {
-                $name = $node->hasAttribute('id') ? sprintf('"%s"', $node->getAttribute('id')) : sprintf('the "%s" tag', $node->tagName);
+                $name = $node->hasAttribute('id') ? sprintf('"%s".', $node->getAttribute('id')) : sprintf('the "%s" tag.', $node->tagName);
 
-                throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "controller" attribute and the defaults key "_controller" for %s.', $path, $name));
+                throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "controller" attribute and the defaults key "_controller" for ', $path).$name);
             }
 
             $defaults['_controller'] = $controller;
@@ -329,12 +338,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses the "default" elements.
      *
-     * @param \DOMElement $element The "default" element to parse
-     * @param string      $path    Full path of the XML file being processed
-     *
      * @return array|bool|float|int|string|null The parsed value of the "default" element
      */
-    private function parseDefaultsConfig(\DOMElement $element, $path)
+    private function parseDefaultsConfig(\DOMElement $element, string $path)
     {
         if ($this->isElementValueNull($element)) {
             return null;
@@ -364,14 +370,11 @@ class XmlFileLoader extends FileLoader
     /**
      * Recursively parses the value of a "default" element.
      *
-     * @param \DOMElement $node The node value
-     * @param string      $path Full path of the XML file being processed
-     *
      * @return array|bool|float|int|string The parsed value
      *
      * @throws \InvalidArgumentException when the XML is invalid
      */
-    private function parseDefaultNode(\DOMElement $node, $path)
+    private function parseDefaultNode(\DOMElement $node, string $path)
     {
         if ($this->isElementValueNull($node)) {
             return null;
@@ -423,7 +426,7 @@ class XmlFileLoader extends FileLoader
         }
     }
 
-    private function isElementValueNull(\DOMElement $element)
+    private function isElementValueNull(\DOMElement $element): bool
     {
         $namespaceUri = 'http://www.w3.org/2001/XMLSchema-instance';
 
diff --git a/vendor/symfony/routing/Loader/YamlFileLoader.php b/vendor/symfony/routing/Loader/YamlFileLoader.php
index 15c223ecadcf4c6a899e86006e8ec59a5d4eae38..c7aa00e17962985e7edc2317ae34fc530872f52d 100644
--- a/vendor/symfony/routing/Loader/YamlFileLoader.php
+++ b/vendor/symfony/routing/Loader/YamlFileLoader.php
@@ -15,6 +15,7 @@ use Symfony\Component\Config\Loader\FileLoader;
 use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 use Symfony\Component\Yaml\Exception\ParseException;
 use Symfony\Component\Yaml\Parser as YamlParser;
 use Symfony\Component\Yaml\Yaml;
@@ -28,7 +29,7 @@ use Symfony\Component\Yaml\Yaml;
 class YamlFileLoader extends FileLoader
 {
     private static $availableKeys = [
-        'resource', 'type', 'prefix', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition', 'controller', 'name_prefix', 'trailing_slash_on_root', 'locale', 'format', 'utf8',
+        'resource', 'type', 'prefix', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition', 'controller', 'name_prefix', 'trailing_slash_on_root', 'locale', 'format', 'utf8', 'exclude',
     ];
     private $yamlParser;
 
@@ -61,7 +62,7 @@ class YamlFileLoader extends FileLoader
         try {
             $parsedConfig = $this->yamlParser->parseFile($path, Yaml::PARSE_CONSTANT);
         } catch (ParseException $e) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML.', $path), 0, $e);
+            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML: ', $path).$e->getMessage(), 0, $e);
         }
 
         $collection = new RouteCollection();
@@ -95,16 +96,15 @@ class YamlFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && \in_array(pathinfo($resource, PATHINFO_EXTENSION), ['yml', 'yaml'], true) && (!$type || 'yaml' === $type);
+        return \is_string($resource) && \in_array(pathinfo($resource, \PATHINFO_EXTENSION), ['yml', 'yaml'], true) && (!$type || 'yaml' === $type);
     }
 
     /**
      * Parses a route and adds it to the RouteCollection.
      *
-     * @param RouteCollection $collection A RouteCollection instance
-     * @param string          $name       Route name
-     * @param array           $config     Route definition
-     * @param string          $path       Full path of the YAML file being processed
+     * @param string $name   Route name
+     * @param array  $config Route definition
+     * @param string $path   Full path of the YAML file being processed
      */
     protected function parseRoute(RouteCollection $collection, $name, array $config, $path)
     {
@@ -118,7 +118,7 @@ class YamlFileLoader extends FileLoader
 
         foreach ($requirements as $placeholder => $requirement) {
             if (\is_int($placeholder)) {
-                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s"?', $placeholder, $requirement, $name, $path), E_USER_DEPRECATED);
+                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s"?', $placeholder, $requirement, $name, $path), \E_USER_DEPRECATED);
             }
         }
 
@@ -141,6 +141,7 @@ class YamlFileLoader extends FileLoader
             foreach ($config['path'] as $locale => $path) {
                 $localizedRoute = clone $route;
                 $localizedRoute->setDefault('_locale', $locale);
+                $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                 $localizedRoute->setDefault('_canonical_route', $name);
                 $localizedRoute->setPath($path);
                 $collection->add($name.'.'.$locale, $localizedRoute);
@@ -154,10 +155,9 @@ class YamlFileLoader extends FileLoader
     /**
      * Parses an import and adds the routes in the resource to the RouteCollection.
      *
-     * @param RouteCollection $collection A RouteCollection instance
-     * @param array           $config     Route definition
-     * @param string          $path       Full path of the YAML file being processed
-     * @param string          $file       Loaded file name
+     * @param array  $config Route definition
+     * @param string $path   Full path of the YAML file being processed
+     * @param string $file   Loaded file name
      */
     protected function parseImport(RouteCollection $collection, array $config, $path, $file)
     {
@@ -171,6 +171,7 @@ class YamlFileLoader extends FileLoader
         $schemes = isset($config['schemes']) ? $config['schemes'] : null;
         $methods = isset($config['methods']) ? $config['methods'] : null;
         $trailingSlashOnRoot = $config['trailing_slash_on_root'] ?? true;
+        $exclude = $config['exclude'] ?? null;
 
         if (isset($config['controller'])) {
             $defaults['_controller'] = $config['controller'];
@@ -187,7 +188,7 @@ class YamlFileLoader extends FileLoader
 
         $this->setCurrentDir(\dirname($path));
 
-        $imported = $this->import($config['resource'], $type, false, $file);
+        $imported = $this->import($config['resource'], $type, false, $file, $exclude) ?: [];
 
         if (!\is_array($imported)) {
             $imported = [$imported];
@@ -215,6 +216,7 @@ class YamlFileLoader extends FileLoader
                         foreach ($prefix as $locale => $localePrefix) {
                             $localizedRoute = clone $route;
                             $localizedRoute->setDefault('_locale', $locale);
+                            $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                             $localizedRoute->setDefault('_canonical_route', $name);
                             $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
                             $subCollection->add($name.'.'.$locale, $localizedRoute);
diff --git a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
index ebf6632a57269d1a75ef3a95b2903c28f54a98c2..8e61d03e9a980d6299b0f3ae7450a8e2a391ade5 100644
--- a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
+++ b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
@@ -61,9 +61,11 @@
     <xsd:sequence maxOccurs="unbounded" minOccurs="0">
       <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" />
       <xsd:element name="prefix" type="localized-path" minOccurs="0" maxOccurs="unbounded" />
+      <xsd:element name="exclude" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
     </xsd:sequence>
     <xsd:attribute name="resource" type="xsd:string" use="required" />
     <xsd:attribute name="type" type="xsd:string" />
+    <xsd:attribute name="exclude" type="xsd:string" />
     <xsd:attribute name="prefix" type="xsd:string" />
     <xsd:attribute name="name-prefix" type="xsd:string" />
     <xsd:attribute name="host" type="xsd:string" />
diff --git a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
index ab67e6885ac924534d2eb8e8441996877981ee8b..73e2e1e0a06af7b5086793c13f506e797b347712 100644
--- a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
+++ b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
@@ -121,7 +121,7 @@ EOF;
         }
     }
 EOF;
-            $compiledRoutes[4] = $forDump ? $checkConditionCode .= ",\n" : eval('return '.$checkConditionCode.';');
+            $compiledRoutes[4] = $forDump ? $checkConditionCode.",\n" : eval('return '.$checkConditionCode.';');
         } else {
             $compiledRoutes[4] = $forDump ? "    null, // \$checkCondition\n" : null;
         }
@@ -244,7 +244,7 @@ EOF;
      * Last but not least:
      *  - Because it is not possibe to mix unicode/non-unicode patterns in a single regexp, several of them can be generated.
      *  - The same regexp can be used several times when the logic in the switch rejects the match. When this happens, the
-     *    matching-but-failing subpattern is blacklisted by replacing its name by "(*F)", which forces a failure-to-match.
+     *    matching-but-failing subpattern is excluded by replacing its name by "(*F)", which forces a failure-to-match.
      *    To ease this backlisting operation, the name of subpatterns is also the string offset where the replacement should occur.
      */
     private function compileDynamicRoutes(RouteCollection $collection, bool $matchHost, int $chunkLimit, array &$conditions): array
@@ -443,7 +443,7 @@ EOF;
         ];
     }
 
-    private function getExpressionLanguage()
+    private function getExpressionLanguage(): ExpressionLanguage
     {
         if (null === $this->expressionLanguage) {
             if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
@@ -455,7 +455,7 @@ EOF;
         return $this->expressionLanguage;
     }
 
-    private function indent($code, $level = 1)
+    private function indent(string $code, int $level = 1): string
     {
         return preg_replace('/^./m', str_repeat('    ', $level).'$0', $code);
     }
diff --git a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
index 0528a7b213c61408d0db5cd6c3d16489bdf0463e..8ef76df8f8ccdfa0320221d33f6515a712508279 100644
--- a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
+++ b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
@@ -32,7 +32,7 @@ trait CompiledUrlMatcherTrait
     private $dynamicRoutes = [];
     private $checkCondition;
 
-    public function match($pathinfo)
+    public function match($pathinfo): array
     {
         $allow = $allowSchemes = [];
         if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) {
diff --git a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
index 2a25293aa3e5cc52b580202cabd2653c7e8e6962..34aad927413304d02887f4845d6d6985935248d6 100644
--- a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
+++ b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
@@ -24,8 +24,6 @@ interface MatcherDumperInterface
      * Dumps a set of routes to a string representation of executable code
      * that can then be used to match a request against these routes.
      *
-     * @param array $options An array of options
-     *
      * @return string Executable code
      */
     public function dump(array $options = []);
diff --git a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
index ee505e1641446ce3ff08951c61c66c8983646847..09404efaa391ad93aa975ae09fd9da4b24c19675 100644
--- a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
+++ b/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\Routing\Matcher\Dumper;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlMatcherDumper" instead.', PhpMatcherDumper::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlMatcherDumper" instead.', PhpMatcherDumper::class), \E_USER_DEPRECATED);
 
 /**
  * PhpMatcherDumper creates a PHP class able to match URLs for a given set of routes.
diff --git a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
index fb035d1e8777e4db8d24e0d9fa3c44214d76da46..b687ffb4b1befa74c86533451455944ad4027dd6 100644
--- a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
+++ b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
@@ -152,7 +152,7 @@ class TraceableUrlMatcher extends UrlMatcher
         return [];
     }
 
-    private function addTrace($log, $level = self::ROUTE_DOES_NOT_MATCH, $name = null, $route = null)
+    private function addTrace(string $log, int $level = self::ROUTE_DOES_NOT_MATCH, string $name = null, Route $route = null)
     {
         $this->traces[] = [
             'log' => $log,
diff --git a/vendor/symfony/routing/Matcher/UrlMatcher.php b/vendor/symfony/routing/Matcher/UrlMatcher.php
index dca1d6366fa025ae46eaac8ed0cf970d416c592a..b44dfa1b62cfe64c28430c97120162843f9fd8fd 100644
--- a/vendor/symfony/routing/Matcher/UrlMatcher.php
+++ b/vendor/symfony/routing/Matcher/UrlMatcher.php
@@ -93,9 +93,7 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
             throw new NoConfigurationException();
         }
 
-        throw 0 < \count($this->allow)
-            ? new MethodNotAllowedException(array_unique($this->allow))
-            : new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
+        throw 0 < \count($this->allow) ? new MethodNotAllowedException(array_unique($this->allow)) : new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
     }
 
     /**
@@ -120,8 +118,7 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
     /**
      * Tries to match a URL with a set of routes.
      *
-     * @param string          $pathinfo The path info to be parsed
-     * @param RouteCollection $routes   The set of routes
+     * @param string $pathinfo The path info to be parsed
      *
      * @return array An array of parameters
      *
@@ -208,7 +205,6 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
      * in matchers that do not have access to the matched Route instance
      * (like the PHP and Apache matcher dumpers).
      *
-     * @param Route  $route      The route we are matching against
      * @param string $name       The name of the route
      * @param array  $attributes An array of attributes from the matcher
      *
@@ -231,7 +227,6 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
      *
      * @param string $pathinfo The path
      * @param string $name     The route name
-     * @param Route  $route    The route
      *
      * @return array The first element represents the status, the second contains additional information
      */
@@ -279,7 +274,7 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
     /**
      * @internal
      */
-    protected function createRequest($pathinfo)
+    protected function createRequest(string $pathinfo): ?Request
     {
         if (!class_exists('Symfony\Component\HttpFoundation\Request')) {
             return null;
diff --git a/vendor/symfony/routing/README.md b/vendor/symfony/routing/README.md
index 88fb1fde5a7bdc716a76b150b189a64b3dd84cdd..03b258ec8203bdc051699fcab60530420ca30de5 100644
--- a/vendor/symfony/routing/README.md
+++ b/vendor/symfony/routing/README.md
@@ -3,10 +3,48 @@ Routing Component
 
 The Routing component maps an HTTP request to a set of configuration variables.
 
+Getting Started
+---------------
+
+```
+$ composer require symfony/routing
+```
+
+```php
+use App\Controller\BlogController;
+use Symfony\Component\Routing\Generator\UrlGenerator;
+use Symfony\Component\Routing\Matcher\UrlMatcher;
+use Symfony\Component\Routing\RequestContext;
+use Symfony\Component\Routing\Route;
+use Symfony\Component\Routing\RouteCollection;
+
+$route = new Route('/blog/{slug}', ['_controller' => BlogController::class]);
+$routes = new RouteCollection();
+$routes->add('blog_show', $route);
+
+$context = new RequestContext();
+
+// Routing can match routes with incoming requests
+$matcher = new UrlMatcher($routes, $context);
+$parameters = $matcher->match('/blog/lorem-ipsum');
+// $parameters = [
+//     '_controller' => 'App\Controller\BlogController',
+//     'slug' => 'lorem-ipsum',
+//     '_route' => 'blog_show'
+// ]
+
+// Routing can also generate URLs for a given route
+$generator = new UrlGenerator($routes, $context);
+$url = $generator->generate('blog_show', [
+    'slug' => 'my-blog-post',
+]);
+// $url = '/blog/my-blog-post'
+```
+
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/routing/index.html)
+  * [Documentation](https://symfony.com/doc/current/routing.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/routing/RequestContext.php b/vendor/symfony/routing/RequestContext.php
index 591dd15938695f4d3a3d321d37046dc563eb92c7..1d68b17e3932152ee7a565658b11277db5cb5ad2 100644
--- a/vendor/symfony/routing/RequestContext.php
+++ b/vendor/symfony/routing/RequestContext.php
@@ -57,8 +57,8 @@ class RequestContext
         $this->setMethod($request->getMethod());
         $this->setHost($request->getHost());
         $this->setScheme($request->getScheme());
-        $this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
-        $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
+        $this->setHttpPort($request->isSecure() || null === $request->getPort() ? $this->httpPort : $request->getPort());
+        $this->setHttpsPort($request->isSecure() && null !== $request->getPort() ? $request->getPort() : $this->httpsPort);
         $this->setQueryString($request->server->get('QUERY_STRING', ''));
 
         return $this;
diff --git a/vendor/symfony/routing/Route.php b/vendor/symfony/routing/Route.php
index 90d8e617c4e9723fd5087ecce7d7ce4f8477cd68..7f20c794c9ee05703b3c1e78b8d195d87a95d7f5 100644
--- a/vendor/symfony/routing/Route.php
+++ b/vendor/symfony/routing/Route.php
@@ -45,10 +45,10 @@ class Route implements \Serializable
      * @param array           $defaults     An array of default parameter values
      * @param array           $requirements An array of requirements for parameters (regexes)
      * @param array           $options      An array of options
-     * @param string          $host         The host pattern to match
+     * @param string|null     $host         The host pattern to match
      * @param string|string[] $schemes      A required URI scheme or an array of restricted schemes
      * @param string|string[] $methods      A required HTTP method or an array of restricted methods
-     * @param string          $condition    A condition that should evaluate to true for the route to match
+     * @param string|null     $condition    A condition that should evaluate to true for the route to match
      */
     public function __construct(string $path, array $defaults = [], array $requirements = [], array $options = [], ?string $host = '', $schemes = [], $methods = [], ?string $condition = '')
     {
@@ -78,6 +78,8 @@ class Route implements \Serializable
     }
 
     /**
+     * @return string
+     *
      * @internal since Symfony 4.3
      * @final since Symfony 4.3
      */
@@ -135,7 +137,7 @@ class Route implements \Serializable
     public function setPath($pattern)
     {
         if (false !== strpbrk($pattern, '?<')) {
-            $pattern = preg_replace_callback('#\{(\w++)(<.*?>)?(\?[^\}]*+)?\}#', function ($m) {
+            $pattern = preg_replace_callback('#\{(!?\w++)(<.*?>)?(\?[^\}]*+)?\}#', function ($m) {
                 if (isset($m[3][0])) {
                     $this->setDefault($m[1], '?' !== $m[3] ? substr($m[3], 1) : null);
                 }
@@ -267,8 +269,6 @@ class Route implements \Serializable
      *
      * This method implements a fluent interface.
      *
-     * @param array $options The options
-     *
      * @return $this
      */
     public function setOptions(array $options)
@@ -285,8 +285,6 @@ class Route implements \Serializable
      *
      * This method implements a fluent interface.
      *
-     * @param array $options The options
-     *
      * @return $this
      */
     public function addOptions(array $options)
@@ -378,6 +376,10 @@ class Route implements \Serializable
      */
     public function addDefaults(array $defaults)
     {
+        if (isset($defaults['_locale']) && $this->isLocalized()) {
+            unset($defaults['_locale']);
+        }
+
         foreach ($defaults as $name => $default) {
             $this->defaults[$name] = $default;
         }
@@ -420,6 +422,10 @@ class Route implements \Serializable
      */
     public function setDefault($name, $default)
     {
+        if ('_locale' === $name && $this->isLocalized()) {
+            return $this;
+        }
+
         $this->defaults[$name] = $default;
         $this->compiled = null;
 
@@ -463,6 +469,10 @@ class Route implements \Serializable
      */
     public function addRequirements(array $requirements)
     {
+        if (isset($requirements['_locale']) && $this->isLocalized()) {
+            unset($requirements['_locale']);
+        }
+
         foreach ($requirements as $key => $regex) {
             $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
         }
@@ -505,6 +515,10 @@ class Route implements \Serializable
      */
     public function setRequirement($key, $regex)
     {
+        if ('_locale' === $key && $this->isLocalized()) {
+            return $this;
+        }
+
         $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
         $this->compiled = null;
 
@@ -559,7 +573,7 @@ class Route implements \Serializable
         return $this->compiled = $class::compile($this);
     }
 
-    private function sanitizeRequirement($key, $regex)
+    private function sanitizeRequirement(string $key, $regex)
     {
         if (!\is_string($regex)) {
             throw new \InvalidArgumentException(sprintf('Routing requirement for "%s" must be a string.', $key));
@@ -579,4 +593,9 @@ class Route implements \Serializable
 
         return $regex;
     }
+
+    private function isLocalized(): bool
+    {
+        return isset($this->defaults['_locale']) && isset($this->defaults['_canonical_route']) && ($this->requirements['_locale'] ?? null) === preg_quote($this->defaults['_locale'], RouteCompiler::REGEX_DELIMITER);
+    }
 }
diff --git a/vendor/symfony/routing/RouteCollection.php b/vendor/symfony/routing/RouteCollection.php
index 6c642300a96d3d3f30b751b3e3855f82ff55f978..6537bbae92cc1867265fc0b6850356b1bd566ec8 100644
--- a/vendor/symfony/routing/RouteCollection.php
+++ b/vendor/symfony/routing/RouteCollection.php
@@ -69,8 +69,7 @@ class RouteCollection implements \IteratorAggregate, \Countable
     /**
      * Adds a route.
      *
-     * @param string $name  The route name
-     * @param Route  $route A Route instance
+     * @param string $name The route name
      */
     public function add($name, Route $route)
     {
@@ -140,6 +139,10 @@ class RouteCollection implements \IteratorAggregate, \Countable
      */
     public function addPrefix($prefix, array $defaults = [], array $requirements = [])
     {
+        if (null === $prefix) {
+            @trigger_error(sprintf('Passing null as $prefix to %s is deprecated in Symfony 4.4 and will trigger a TypeError in 5.0.', __METHOD__), \E_USER_DEPRECATED);
+        }
+
         $prefix = trim(trim($prefix), '/');
 
         if ('' === $prefix) {
@@ -236,8 +239,6 @@ class RouteCollection implements \IteratorAggregate, \Countable
      * Adds options to all routes.
      *
      * An existing option value under the same name in a route will be overridden.
-     *
-     * @param array $options An array of options
      */
     public function addOptions(array $options)
     {
diff --git a/vendor/symfony/routing/RouteCollectionBuilder.php b/vendor/symfony/routing/RouteCollectionBuilder.php
index d1b1cdf5c8817b88aee52b6f6f51a7990f3d1167..92cf7e7938843666aa76f8067469b7cdc942a3b6 100644
--- a/vendor/symfony/routing/RouteCollectionBuilder.php
+++ b/vendor/symfony/routing/RouteCollectionBuilder.php
@@ -115,8 +115,7 @@ class RouteCollectionBuilder
     /**
      * Add a RouteCollectionBuilder.
      *
-     * @param string                 $prefix
-     * @param RouteCollectionBuilder $builder
+     * @param string $prefix
      */
     public function mount($prefix, self $builder)
     {
@@ -308,7 +307,9 @@ class RouteCollectionBuilder
             } else {
                 /* @var self $route */
                 $subCollection = $route->build();
-                $subCollection->addPrefix($this->prefix);
+                if (null !== $this->prefix) {
+                    $subCollection->addPrefix($this->prefix);
+                }
 
                 $routeCollection->addCollection($subCollection);
             }
diff --git a/vendor/symfony/routing/RouteCompiler.php b/vendor/symfony/routing/RouteCompiler.php
index cfea64276954fa4c24af3aa38d1875b09e19d545..fa63df4884e74a6dcfdbc316f74fbd015ea38c2e 100644
--- a/vendor/symfony/routing/RouteCompiler.php
+++ b/vendor/symfony/routing/RouteCompiler.php
@@ -61,6 +61,14 @@ class RouteCompiler implements RouteCompilerInterface
             $hostRegex = $result['regex'];
         }
 
+        $locale = $route->getDefault('_locale');
+        if (null !== $locale && null !== $route->getDefault('_canonical_route') && preg_quote($locale, self::REGEX_DELIMITER) === $route->getRequirement('_locale')) {
+            $requirements = $route->getRequirements();
+            unset($requirements['_locale']);
+            $route->setRequirements($requirements);
+            $route->setPath(str_replace('{_locale}', $locale, $route->getPath()));
+        }
+
         $path = $route->getPath();
 
         $result = self::compilePattern($route, $path, false);
@@ -92,7 +100,7 @@ class RouteCompiler implements RouteCompilerInterface
         );
     }
 
-    private static function compilePattern(Route $route, $pattern, $isHost)
+    private static function compilePattern(Route $route, string $pattern, bool $isHost): array
     {
         $tokens = [];
         $variables = [];
@@ -111,7 +119,7 @@ class RouteCompiler implements RouteCompilerInterface
 
         // Match all variables enclosed in "{}" and iterate over them. But we only want to match the innermost variable
         // in case of nested "{}", e.g. {foo{bar}}. This in ensured because \w does not match "{" or "}" itself.
-        preg_match_all('#\{(!)?(\w+)\}#', $pattern, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
+        preg_match_all('#\{(!)?(\w+)\}#', $pattern, $matches, \PREG_OFFSET_CAPTURE | \PREG_SET_ORDER);
         foreach ($matches as $match) {
             $important = $match[1][1] >= 0;
             $varName = $match[2][0];
@@ -139,7 +147,7 @@ class RouteCompiler implements RouteCompilerInterface
             }
 
             if (\strlen($varName) > self::VARIABLE_MAXIMUM_LENGTH) {
-                throw new \DomainException(sprintf('Variable name "%s" cannot be longer than %s characters in route pattern "%s". Please use a shorter name.', $varName, self::VARIABLE_MAXIMUM_LENGTH, $pattern));
+                throw new \DomainException(sprintf('Variable name "%s" cannot be longer than %d characters in route pattern "%s". Please use a shorter name.', $varName, self::VARIABLE_MAXIMUM_LENGTH, $pattern));
             }
 
             if ($isSeparator && $precedingText !== $precedingChar) {
@@ -199,7 +207,7 @@ class RouteCompiler implements RouteCompilerInterface
         }
 
         // find the first optional token
-        $firstOptional = PHP_INT_MAX;
+        $firstOptional = \PHP_INT_MAX;
         if (!$isHost) {
             for ($i = \count($tokens) - 1; $i >= 0; --$i) {
                 $token = $tokens[$i];
diff --git a/vendor/symfony/routing/Router.php b/vendor/symfony/routing/Router.php
index 5f8d9ffb159dd3555833928a3cd588e2d3323ae3..8bc6f21af4ae96ae05f918ef251ec12d455dbd65 100644
--- a/vendor/symfony/routing/Router.php
+++ b/vendor/symfony/routing/Router.php
@@ -97,12 +97,10 @@ class Router implements RouterInterface, RequestMatcherInterface
      */
     private $expressionLanguageProviders = [];
 
+    private static $cache = [];
+
     /**
-     * @param LoaderInterface $loader   A LoaderInterface instance
-     * @param mixed           $resource The main resource to load
-     * @param array           $options  An array of options
-     * @param RequestContext  $context  The context
-     * @param LoggerInterface $logger   A logger instance
+     * @param mixed $resource The main resource to load
      */
     public function __construct(LoaderInterface $loader, $resource, array $options = [], RequestContext $context = null, LoggerInterface $logger = null, string $defaultLocale = null)
     {
@@ -129,8 +127,6 @@ class Router implements RouterInterface, RequestMatcherInterface
      *   * strict_requirements:    Configure strict requirement checking for generators
      *                             implementing ConfigurableRequirementsInterface (default is true)
      *
-     * @param array $options An array of options
-     *
      * @throws \InvalidArgumentException When unsupported option is provided
      */
     public function setOptions(array $options)
@@ -289,7 +285,7 @@ class Router implements RouterInterface, RequestMatcherInterface
             return $this->matcher;
         }
 
-        $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && (UrlMatcher::class === $this->options['matcher_base_class'] || RedirectableUrlMatcher::class === $this->options['matcher_base_class']);
+        $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && (UrlMatcher::class === $this->options['matcher_base_class'] || RedirectableUrlMatcher::class === $this->options['matcher_base_class']) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true);
 
         if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) {
             $routes = $this->getRouteCollection();
@@ -325,7 +321,7 @@ class Router implements RouterInterface, RequestMatcherInterface
         );
 
         if ($compiled) {
-            return $this->matcher = new $this->options['matcher_class'](require $cache->getPath(), $this->context);
+            return $this->matcher = new $this->options['matcher_class'](self::getCompiledRoutes($cache->getPath()), $this->context);
         }
 
         if (!class_exists($this->options['matcher_cache_class'], false)) {
@@ -346,7 +342,7 @@ class Router implements RouterInterface, RequestMatcherInterface
             return $this->generator;
         }
 
-        $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && UrlGenerator::class === $this->options['generator_base_class'];
+        $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && UrlGenerator::class === $this->options['generator_base_class'] && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true);
 
         if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) {
             $routes = $this->getRouteCollection();
@@ -369,7 +365,7 @@ class Router implements RouterInterface, RequestMatcherInterface
             );
 
             if ($compiled) {
-                $this->generator = new $this->options['generator_class'](require $cache->getPath(), $this->context, $this->logger);
+                $this->generator = new $this->options['generator_class'](self::getCompiledRoutes($cache->getPath()), $this->context, $this->logger, $this->defaultLocale);
             } else {
                 if (!class_exists($this->options['generator_cache_class'], false)) {
                     require_once $cache->getPath();
@@ -396,8 +392,8 @@ class Router implements RouterInterface, RequestMatcherInterface
      */
     protected function getGeneratorDumperInstance()
     {
-        // For BC, fallback to PhpGeneratorDumper if the UrlGenerator and UrlGeneratorDumper are not consistent with each other
-        if (is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) !== is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true)) {
+        // For BC, fallback to PhpGeneratorDumper (which is the old default value) if the old UrlGenerator is used with the new default CompiledUrlGeneratorDumper
+        if (!is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true)) {
             return new PhpGeneratorDumper($this->getRouteCollection());
         }
 
@@ -409,8 +405,8 @@ class Router implements RouterInterface, RequestMatcherInterface
      */
     protected function getMatcherDumperInstance()
     {
-        // For BC, fallback to PhpMatcherDumper if the UrlMatcher and UrlMatcherDumper are not consistent with each other
-        if (is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) !== is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true)) {
+        // For BC, fallback to PhpMatcherDumper (which is the old default value) if the old UrlMatcher is used with the new default CompiledUrlMatcherDumper
+        if (!is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true)) {
             return new PhpMatcherDumper($this->getRouteCollection());
         }
 
@@ -420,10 +416,8 @@ class Router implements RouterInterface, RequestMatcherInterface
     /**
      * Provides the ConfigCache factory implementation, falling back to a
      * default implementation if necessary.
-     *
-     * @return ConfigCacheFactoryInterface
      */
-    private function getConfigCacheFactory()
+    private function getConfigCacheFactory(): ConfigCacheFactoryInterface
     {
         if (null === $this->configCacheFactory) {
             $this->configCacheFactory = new ConfigCacheFactory($this->options['debug']);
@@ -432,14 +426,31 @@ class Router implements RouterInterface, RequestMatcherInterface
         return $this->configCacheFactory;
     }
 
-    private function checkDeprecatedOption($key)
+    private function checkDeprecatedOption(string $key)
     {
         switch ($key) {
             case 'generator_base_class':
             case 'generator_cache_class':
             case 'matcher_base_class':
             case 'matcher_cache_class':
-                @trigger_error(sprintf('Option "%s" given to router %s is deprecated since Symfony 4.3.', $key, static::class), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Option "%s" given to router %s is deprecated since Symfony 4.3.', $key, static::class), \E_USER_DEPRECATED);
+        }
+    }
+
+    private static function getCompiledRoutes(string $path): array
+    {
+        if ([] === self::$cache && \function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN) && (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) || filter_var(ini_get('opcache.enable_cli'), \FILTER_VALIDATE_BOOLEAN))) {
+            self::$cache = null;
+        }
+
+        if (null === self::$cache) {
+            return require $path;
         }
+
+        if (isset(self::$cache[$path])) {
+            return self::$cache[$path];
+        }
+
+        return self::$cache[$path] = require $path;
     }
 }
diff --git a/vendor/symfony/routing/Tests/Annotation/RouteTest.php b/vendor/symfony/routing/Tests/Annotation/RouteTest.php
deleted file mode 100644
index 58c59dcbbfa151e3de4236cfdccf336a11d7c4d9..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Annotation/RouteTest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Annotation;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Annotation\Route;
-
-class RouteTest extends TestCase
-{
-    public function testInvalidRouteParameter()
-    {
-        $this->expectException('BadMethodCallException');
-        $route = new Route(['foo' => 'bar']);
-    }
-
-    public function testTryingToSetLocalesDirectly()
-    {
-        $this->expectException('BadMethodCallException');
-        $route = new Route(['locales' => ['nl' => 'bar']]);
-    }
-
-    /**
-     * @dataProvider getValidParameters
-     */
-    public function testRouteParameters($parameter, $value, $getter)
-    {
-        $route = new Route([$parameter => $value]);
-        $this->assertEquals($route->$getter(), $value);
-    }
-
-    public function getValidParameters()
-    {
-        return [
-            ['value', '/Blog', 'getPath'],
-            ['requirements', ['locale' => 'en'], 'getRequirements'],
-            ['options', ['compiler_class' => 'RouteCompiler'], 'getOptions'],
-            ['name', 'blog_index', 'getName'],
-            ['defaults', ['_controller' => 'MyBlogBundle:Blog:index'], 'getDefaults'],
-            ['schemes', ['https'], 'getSchemes'],
-            ['methods', ['GET', 'POST'], 'getMethods'],
-            ['host', '{locale}.example.com', 'getHost'],
-            ['condition', 'context.getMethod() == "GET"', 'getCondition'],
-            ['value', ['nl' => '/hier', 'en' => '/here'], 'getLocalizedPaths'],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/CompiledRouteTest.php b/vendor/symfony/routing/Tests/CompiledRouteTest.php
deleted file mode 100644
index 9c9f4f286203f42141567496310ca19a12909cc1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/CompiledRouteTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\CompiledRoute;
-
-class CompiledRouteTest extends TestCase
-{
-    public function testAccessors()
-    {
-        $compiled = new CompiledRoute('prefix', 'regex', ['tokens'], [], null, [], [], ['variables']);
-        $this->assertEquals('prefix', $compiled->getStaticPrefix(), '__construct() takes a static prefix as its second argument');
-        $this->assertEquals('regex', $compiled->getRegex(), '__construct() takes a regexp as its third argument');
-        $this->assertEquals(['tokens'], $compiled->getTokens(), '__construct() takes an array of tokens as its fourth argument');
-        $this->assertEquals(['variables'], $compiled->getVariables(), '__construct() takes an array of variables as its ninth argument');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/DependencyInjection/RoutingResolverPassTest.php b/vendor/symfony/routing/Tests/DependencyInjection/RoutingResolverPassTest.php
deleted file mode 100644
index 30c7516e59711d2485fa529f4d4197673677316d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/DependencyInjection/RoutingResolverPassTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\Routing\DependencyInjection\RoutingResolverPass;
-
-class RoutingResolverPassTest extends TestCase
-{
-    public function testProcess()
-    {
-        $container = new ContainerBuilder();
-        $container->register('routing.resolver', LoaderResolver::class);
-        $container->register('loader1')->addTag('routing.loader');
-        $container->register('loader2')->addTag('routing.loader');
-
-        (new RoutingResolverPass())->process($container);
-
-        $this->assertEquals(
-            [['addLoader', [new Reference('loader1')]], ['addLoader', [new Reference('loader2')]]],
-            $container->getDefinition('routing.resolver')->getMethodCalls()
-        );
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/AbstractClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/AbstractClass.php
deleted file mode 100644
index bd7ea962c144c9bc10d884a83bf7c3e0562782df..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/AbstractClass.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-abstract class AbstractClass
-{
-    abstract public function abstractRouteAction();
-
-    public function routeAction($arg1, $arg2 = 'defaultValue2', $arg3 = 'defaultValue3')
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BarClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BarClass.php
deleted file mode 100644
index a3882773c4d29ce5dc63cd2ae521020d18f341c3..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BarClass.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class BarClass
-{
-    public function routeAction($arg1, $arg2 = 'defaultValue2', $arg3 = 'defaultValue3')
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BazClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BazClass.php
deleted file mode 100644
index 471968b574398072d58a4b774db1e4c4ef187c25..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BazClass.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class BazClass
-{
-    public function __invoke()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/EncodingClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/EncodingClass.php
deleted file mode 100644
index dac72e3ddcfca1f9c842b0008074f81ccdb4a286..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/EncodingClass.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class EncodingClass
-{
-    public function routeÀction()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooClass.php
deleted file mode 100644
index 320dc350037ae3ae93d11efffec092919f1c5152..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooClass.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class FooClass
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooTrait.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooTrait.php
deleted file mode 100644
index ee8f4b071a368c8752ce1618d3b30f6f8fe309df..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooTrait.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-trait FooTrait
-{
-    public function doBar()
-    {
-        $baz = self::class;
-        if (true) {
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/AbstractClassController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/AbstractClassController.php
deleted file mode 100644
index 50576bcf1027e7dede4ac3a69148bdce413ec9d1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/AbstractClassController.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-abstract class AbstractClassController
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ActionPathController.php
deleted file mode 100644
index b96c4d658e740d741f8a97da739c31b448381d27..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ActionPathController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class ActionPathController
-{
-    /**
-     * @Route("/path", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/DefaultValueController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/DefaultValueController.php
deleted file mode 100644
index f7e38c290d2e788a8a7e7fccd6f138f231c300b2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/DefaultValueController.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class DefaultValueController
-{
-    /**
-     * @Route("/{default}/path", name="action")
-     */
-    public function action($default = 'value')
-    {
-    }
-
-    /**
-     * @Route("/hello/{name<\w+>}", name="hello_without_default")
-     * @Route("/hello/{name<\w+>?Symfony}", name="hello_with_default")
-     */
-    public function hello(string $name = 'World')
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ExplicitLocalizedActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ExplicitLocalizedActionPathController.php
deleted file mode 100644
index e832c6b37740a4fa50865446dc8fca5d4e69dd0f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ExplicitLocalizedActionPathController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class ExplicitLocalizedActionPathController
-{
-    /**
-     * @Route(path={"en": "/path", "nl": "/pad"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/GlobalDefaultsClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/GlobalDefaultsClass.php
deleted file mode 100644
index a4acb310c2a80691bb782a516a474dc3ab214cfd..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/GlobalDefaultsClass.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/defaults", locale="g_locale", format="g_format")
- */
-class GlobalDefaultsClass
-{
-    /**
-     * @Route("/specific-locale", name="specific_locale", locale="s_locale")
-     */
-    public function locale()
-    {
-    }
-
-    /**
-     * @Route("/specific-format", name="specific_format", format="s_format")
-     */
-    public function format()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableController.php
deleted file mode 100644
index c70793a81d7a83af934fcea12d458e4bc7d8627a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/here", name="lol", methods={"GET", "POST"}, schemes={"https"})
- */
-class InvokableController
-{
-    public function __invoke()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableLocalizedController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableLocalizedController.php
deleted file mode 100644
index d9633b9f384422e45f2f83dad8fc884861e3f6c3..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableLocalizedController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/hier", "en": "/here"}, name="action")
- */
-class InvokableLocalizedController
-{
-    public function __invoke()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedActionPathController.php
deleted file mode 100644
index be6a35669029ef3b42c12c34d6f5c74c0c5fe25d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedActionPathController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class LocalizedActionPathController
-{
-    /**
-     * @Route(path={"en": "/path", "nl": "/pad"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedMethodActionControllers.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedMethodActionControllers.php
deleted file mode 100644
index cadf3d1b1e304e9ac8a10ce3a93492bce59f5faf..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedMethodActionControllers.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"en": "/the/path", "nl": "/het/pad"})
- */
-class LocalizedMethodActionControllers
-{
-    /**
-     * @Route(name="post", methods={"POST"})
-     */
-    public function post()
-    {
-    }
-
-    /**
-     * @Route(name="put", methods={"PUT"})
-     */
-    public function put()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixLocalizedActionController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixLocalizedActionController.php
deleted file mode 100644
index 68f51b4821b103c24ba48b281ca3133f0b819f6f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixLocalizedActionController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/nl", "en": "/en"})
- */
-class LocalizedPrefixLocalizedActionController
-{
-    /**
-     * @Route(path={"nl": "/actie", "en": "/action"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingLocaleActionController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingLocaleActionController.php
deleted file mode 100644
index a06e44e8492b3951a237164ba54c207a9c6f9358..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingLocaleActionController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/nl"})
- */
-class LocalizedPrefixMissingLocaleActionController
-{
-    /**
-     * @Route(path={"nl": "/actie", "en": "/action"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingRouteLocaleActionController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingRouteLocaleActionController.php
deleted file mode 100644
index 8c9d96bcd410c744744dce39cce97df8cc371875..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingRouteLocaleActionController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/nl", "en": "/en"})
- */
-class LocalizedPrefixMissingRouteLocaleActionController
-{
-    /**
-     * @Route(path={"nl": "/actie"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixWithRouteWithoutLocale.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixWithRouteWithoutLocale.php
deleted file mode 100644
index 91dceb3319864e4d50f76d4cc3c47dbf365d72aa..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixWithRouteWithoutLocale.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"en": "/en", "nl": "/nl"})
- */
-class LocalizedPrefixWithRouteWithoutLocale
-{
-    /**
-     * @Route("/suffix", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MethodActionControllers.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MethodActionControllers.php
deleted file mode 100644
index 9350f3a914d8c283418a8c886fed2b0ef4d1d25a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MethodActionControllers.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/the/path")
- */
-class MethodActionControllers
-{
-    /**
-     * @Route(name="post", methods={"POST"})
-     */
-    public function post()
-    {
-    }
-
-    /**
-     * @Route(name="put", methods={"PUT"})
-     */
-    public function put()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MissingRouteNameController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MissingRouteNameController.php
deleted file mode 100644
index 7a4afb1e7347a59ac5ae14bbde606d5df7a1aa74..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MissingRouteNameController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class MissingRouteNameController
-{
-    /**
-     * @Route("/path")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/NothingButNameController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/NothingButNameController.php
deleted file mode 100644
index 5aa1b07c77c177a9ba65af3b2b582b4c4c056644..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/NothingButNameController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class NothingButNameController
-{
-    /**
-     * @Route(name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionLocalizedRouteController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionLocalizedRouteController.php
deleted file mode 100644
index 0b07d63df6ce53786689a20fe5f37c48ff96642c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionLocalizedRouteController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/prefix")
- */
-class PrefixedActionLocalizedRouteController
-{
-    /**
-     * @Route(path={"en": "/path", "nl": "/pad"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionPathController.php
deleted file mode 100644
index 04c1d044b29c7d8e57a0ff1820993bdc7aea27f9..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionPathController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/prefix", host="frankdejonge.nl", condition="lol=fun")
- */
-class PrefixedActionPathController
-{
-    /**
-     * @Route("/path", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RequirementsWithoutPlaceholderNameController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RequirementsWithoutPlaceholderNameController.php
deleted file mode 100644
index 301f9691d138b7be7cdd0ad4fbf5430ef10fdc58..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RequirementsWithoutPlaceholderNameController.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/", requirements={"foo", "\d+"})
- */
-class RequirementsWithoutPlaceholderNameController
-{
-    /**
-     * @Route("/{foo}", name="foo", requirements={"foo", "\d+"})
-     */
-    public function foo()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RouteWithPrefixController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RouteWithPrefixController.php
deleted file mode 100644
index a98a527ad34a392a2c12baa5d28d4086995d8233..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RouteWithPrefixController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/prefix")
- */
-class RouteWithPrefixController
-{
-    /**
-     * @Route("/path", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/Utf8ActionControllers.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/Utf8ActionControllers.php
deleted file mode 100644
index ea5505f779efb0e76def7ef66723c1427dda0eea..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/Utf8ActionControllers.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/test", utf8=true)
- */
-class Utf8ActionControllers
-{
-    /**
-     * @Route(name="one")
-     */
-    public function one()
-    {
-    }
-
-    /**
-     * @Route(name="two", utf8=false)
-     */
-    public function two()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/CustomCompiledRoute.php b/vendor/symfony/routing/Tests/Fixtures/CustomCompiledRoute.php
deleted file mode 100644
index 0f6e198c923d98ab724bf9db875be908e96f4265..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/CustomCompiledRoute.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Routing\CompiledRoute;
-
-class CustomCompiledRoute extends CompiledRoute
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/CustomRouteCompiler.php b/vendor/symfony/routing/Tests/Fixtures/CustomRouteCompiler.php
deleted file mode 100644
index 22b942d7bc871be44339393416d9e0a6415088b9..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/CustomRouteCompiler.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCompiler;
-
-class CustomRouteCompiler extends RouteCompiler
-{
-    /**
-     * {@inheritdoc}
-     */
-    public static function compile(Route $route)
-    {
-        return new CustomCompiledRoute('', '', [], []);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/CustomXmlFileLoader.php b/vendor/symfony/routing/Tests/Fixtures/CustomXmlFileLoader.php
deleted file mode 100644
index b7a02b60b0ae1ab9822a3ef6e700fbefe40de6e8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/CustomXmlFileLoader.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Config\Util\XmlUtils;
-use Symfony\Component\Routing\Loader\XmlFileLoader;
-
-/**
- * XmlFileLoader with schema validation turned off.
- */
-class CustomXmlFileLoader extends XmlFileLoader
-{
-    protected function loadFile($file)
-    {
-        return XmlUtils::loadFile($file, function () { return true; });
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php b/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php
deleted file mode 100644
index de87895649491fbbb686baa9aeafaf75b5611791..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\OtherAnnotatedClasses;
-
-trait AnonymousClassInTrait
-{
-    public function test()
-    {
-        return new class() {
-            public function foo()
-            {
-            }
-        };
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/NoStartTagClass.php b/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/NoStartTagClass.php
deleted file mode 100644
index 8900d34e59c806372d2b0b3f2df8d498594fc726..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/NoStartTagClass.php
+++ /dev/null
@@ -1,3 +0,0 @@
-class NoStartTagClass
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php b/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php
deleted file mode 100644
index 729c9b4d07b38c385a1af04589c457e9aec77eb8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\OtherAnnotatedClasses;
-
-class VariadicClass
-{
-    public function routeAction(...$params)
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php b/vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php
deleted file mode 100644
index 79ae1cce54ca9290e62c278ca80368a1451755ce..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [
-            '_controller' => 'Some controller reference...',
-            'path' => $path,
-            'scheme' => $scheme,
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/annotated.php b/vendor/symfony/routing/Tests/Fixtures/annotated.php
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/bad_format.yml b/vendor/symfony/routing/Tests/Fixtures/bad_format.yml
deleted file mode 100644
index 8ba50e2e4281619d4c5671c7799a19f62b995c8b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/bad_format.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-blog_show:
-	path:     /blog/{slug}
-	defaults: { _controller: "MyBundle:Blog:show" }
diff --git a/vendor/symfony/routing/Tests/Fixtures/bar.xml b/vendor/symfony/routing/Tests/Fixtures/bar.xml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.xml b/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.xml
deleted file mode 100644
index 5c62914f90d2e24d1722f9cb40b114b4ead9b9fe..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="routing.xml">
-        <default key="_controller">FrameworkBundle:Template:template</default>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.yml b/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.yml
deleted file mode 100644
index 4240b74dc6d8ff49d8a7c4b2b42f058239839636..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-_static:
-    resource: routing.yml
-    defaults:
-        _controller: FrameworkBundle:Template:template
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.xml b/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.xml
deleted file mode 100644
index 8f52c4ec1479e36067672dd91465e2e0c6054081..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="routing.xml" controller="FrameworkBundle:Template:template" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.yml b/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.yml
deleted file mode 100644
index 1a71c62b275eb0cdc0a9d3cb7096272c9a6ba3db..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-_static:
-    resource: routing.yml
-    controller: FrameworkBundle:Template:template
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.xml
deleted file mode 100644
index e092500fbd675a9ca796f6f5d25dc242fe484def..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="routing.xml" controller="FrameworkBundle:Template:template">
-        <default key="_controller">AppBundle:Blog:index</default>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.yml b/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.yml
deleted file mode 100644
index db1ab3cbedd6942e9a15fe310c8446ab16b77f27..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-_static:
-    resource: routing.yml
-    controller: FrameworkBundle:Template:template
-    defaults:
-        _controller: AppBundle:Homepage:show
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.xml
deleted file mode 100644
index f665ddbbcb1a960ab205565fc8af6a150dfe0ae4..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="app_blog" path="/blog" controller="AppBundle:Homepage:show">
-        <default key="_controller">AppBundle:Blog:index</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.yml b/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.yml
deleted file mode 100644
index 00a2c0e9767893872d5b9f32e5c11fadf5e7b2bc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-app_blog:
-    path: /blog
-    controller: AppBundle:Homepage:show
-    defaults:
-        _controller: AppBundle:Blog:index
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/routing.xml b/vendor/symfony/routing/Tests/Fixtures/controller/routing.xml
deleted file mode 100644
index f35e3e0a87b3e70b44d666aec2b3fee77bb9bcf1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/routing.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="app_homepage" path="/" controller="AppBundle:Homepage:show" />
-
-    <route id="app_blog" path="/blog">
-        <default key="_controller">AppBundle:Blog:list</default>
-    </route>
-
-    <route id="app_logout" path="/logout" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/routing.yml b/vendor/symfony/routing/Tests/Fixtures/controller/routing.yml
deleted file mode 100644
index cb71ec3b75b791269bfc3cf3b95c9c833f0c743c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/routing.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-app_homepage:
-    path: /
-    controller: AppBundle:Homepage:show
-
-app_blog:
-    path: /blog
-    defaults:
-        _controller: AppBundle:Blog:list
-
-app_logout:
-    path: /logout
diff --git a/vendor/symfony/routing/Tests/Fixtures/defaults.php b/vendor/symfony/routing/Tests/Fixtures/defaults.php
deleted file mode 100644
index 200b568b17a7adb495f54280bafb98b86b053f2e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/defaults.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes->add('defaults', '/defaults')
-        ->locale('en')
-        ->format('html')
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/defaults.xml b/vendor/symfony/routing/Tests/Fixtures/defaults.xml
deleted file mode 100644
index dfa9153a86b11a081b905fba8ace3643c0ef370e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/defaults.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="defaults" path="/defaults" locale="en" format="html" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/defaults.yml b/vendor/symfony/routing/Tests/Fixtures/defaults.yml
deleted file mode 100644
index a563ae084b7c26bf302acc4c1a21e98cb89ba049..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/defaults.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-defaults:
-  path: /defaults
-  locale: en
-  format: html
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes1.yml b/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes1.yml
deleted file mode 100644
index d078836625c6bd36aa1769e4b52b0fca7f575bc3..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes1.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-route1:
-    path: /route/1
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes2.yml b/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes2.yml
deleted file mode 100644
index 938fb2457e9a3c5492c170b85d0f3ce4ac99ce6a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes2.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-route2:
-    path: /route/2
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory/routes3.yml b/vendor/symfony/routing/Tests/Fixtures/directory/routes3.yml
deleted file mode 100644
index 088cfb4d4315eafca04b9c22c0b6349555bbe79f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory/routes3.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-route3:
-    path: /route/3
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory_import/import.yml b/vendor/symfony/routing/Tests/Fixtures/directory_import/import.yml
deleted file mode 100644
index af829e58c7ffdc785245f92bd9a98135eb7d442d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory_import/import.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-_directory:
-    resource: "../directory"
-    type: directory
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher0.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher0.php
deleted file mode 100644
index 550288cb1fdf07b0bc87460af16b624995e47f28..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher0.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-    ],
-    [ // $dynamicRoutes
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher1.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher1.php
deleted file mode 100644
index 7811f150a8ad71da7f0fa9929ef4754d4f540f20..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher1.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-        '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-        '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-        '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-        '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-        '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-        '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-        '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-        '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-        '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-        '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-        '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-        '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-        '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-            .'|(?:(?:[^./]*+\\.)++)(?'
-                .'|/foo/(baz|symfony)(*:47)'
-                .'|/bar(?'
-                    .'|/([^/]++)(*:70)'
-                    .'|head/([^/]++)(*:90)'
-                .')'
-                .'|/test/([^/]++)(?'
-                    .'|(*:115)'
-                .')'
-                .'|/([\']+)(*:131)'
-                .'|/a/(?'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:160)'
-                        .'|(*:168)'
-                    .')'
-                    .'|(.*)(*:181)'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:204)'
-                        .'|(*:212)'
-                    .')'
-                .')'
-                .'|/multi/hello(?:/([^/]++))?(*:248)'
-                .'|/([^/]++)/b/([^/]++)(?'
-                    .'|(*:279)'
-                    .'|(*:287)'
-                .')'
-                .'|/aba/([^/]++)(*:309)'
-            .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                .'|/route1(?'
-                    .'|3/([^/]++)(*:371)'
-                    .'|4/([^/]++)(*:389)'
-                .')'
-            .')|(?i:c\\.example\\.com)\\.(?'
-                .'|/route15/([^/]++)(*:441)'
-            .')|(?:(?:[^./]*+\\.)++)(?'
-                .'|/route16/([^/]++)(*:489)'
-                .'|/a/(?'
-                    .'|a\\.\\.\\.(*:510)'
-                    .'|b/(?'
-                        .'|([^/]++)(*:531)'
-                        .'|c/([^/]++)(*:549)'
-                    .')'
-                .')'
-            .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-        70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-        90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-        115 => [
-            [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-            [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-            [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-        ],
-        131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-        160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-        168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-        181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-        204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-        212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-        248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-        279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-        287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-        309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-        371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-        389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-        441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-        489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-        510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-        531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-        549 => [
-            [['_route' => 'c'], ['var'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher10.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher10.php
deleted file mode 100644
index c1822190edea85c1389c50497727d97227f8bcaa..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher10.php
+++ /dev/null
@@ -1,2774 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/c(?'
-                    .'|f(?'
-                        .'|cd20/([^/]++)/([^/]++)/([^/]++)/cfcd20(*:54)'
-                        .'|e(?'
-                            .'|cdb/([^/]++)/([^/]++)/([^/]++)/cfecdb(*:102)'
-                            .'|e39/([^/]++)/([^/]++)/([^/]++)/cfee39(*:147)'
-                        .')'
-                        .'|a086/([^/]++)/([^/]++)/([^/]++)/cfa086(*:194)'
-                        .'|004f/([^/]++)/([^/]++)/([^/]++)/cf004f(*:240)'
-                    .')'
-                    .'|4(?'
-                        .'|ca42/([^/]++)/([^/]++)/([^/]++)/c4ca42(*:291)'
-                        .'|5147/([^/]++)/([^/]++)/([^/]++)/c45147(*:337)'
-                        .'|1000/([^/]++)/([^/]++)/([^/]++)/c41000(*:383)'
-                    .')'
-                    .'|8(?'
-                        .'|1e72/([^/]++)/([^/]++)/([^/]++)/c81e72(*:434)'
-                        .'|ffe9/([^/]++)/([^/]++)/([^/]++)/c8ffe9(*:480)'
-                        .'|6a7e/([^/]++)/([^/]++)/([^/]++)/c86a7e(*:526)'
-                    .')'
-                    .'|9(?'
-                        .'|f0f8/([^/]++)/([^/]++)/([^/]++)/c9f0f8(*:577)'
-                        .'|e107/([^/]++)/([^/]++)/([^/]++)/c9e107(*:623)'
-                    .')'
-                    .'|2(?'
-                        .'|0(?'
-                            .'|ad4/([^/]++)/([^/]++)/([^/]++)/c20ad4(*:677)'
-                            .'|3d8/([^/]++)/([^/]++)/([^/]++)/c203d8(*:722)'
-                        .')'
-                        .'|4cd7/([^/]++)/([^/]++)/([^/]++)/c24cd7(*:769)'
-                    .')'
-                    .'|5(?'
-                        .'|1ce4/([^/]++)/([^/]++)/([^/]++)/c51ce4(*:820)'
-                        .'|2f1b/([^/]++)/([^/]++)/([^/]++)/c52f1b(*:866)'
-                        .'|ff25/([^/]++)/([^/]++)/([^/]++)/c5ff25(*:912)'
-                    .')'
-                    .'|7(?'
-                        .'|4d97/([^/]++)/([^/]++)/([^/]++)/c74d97(*:963)'
-                        .'|e124/([^/]++)/([^/]++)/([^/]++)/c7e124(*:1009)'
-                    .')'
-                    .'|16a53/([^/]++)/([^/]++)/([^/]++)/c16a53(*:1058)'
-                    .'|0(?'
-                        .'|c7c7/([^/]++)/([^/]++)/([^/]++)/c0c7c7(*:1109)'
-                        .'|e190/([^/]++)/([^/]++)/([^/]++)/c0e190(*:1156)'
-                        .'|42f4/([^/]++)/([^/]++)/([^/]++)/c042f4(*:1203)'
-                        .'|58f5/([^/]++)/([^/]++)/([^/]++)/c058f5(*:1250)'
-                    .')'
-                    .'|e(?'
-                        .'|debb/([^/]++)/([^/]++)/([^/]++)/cedebb(*:1302)'
-                        .'|e631/([^/]++)/([^/]++)/([^/]++)/cee631(*:1349)'
-                    .')'
-                    .'|a(?'
-                        .'|46c1/([^/]++)/([^/]++)/([^/]++)/ca46c1(*:1401)'
-                        .'|f1a3/([^/]++)/([^/]++)/([^/]++)/caf1a3(*:1448)'
-                    .')'
-                    .'|b70ab/([^/]++)/([^/]++)/([^/]++)/cb70ab(*:1497)'
-                    .'|d0069/([^/]++)/([^/]++)/([^/]++)/cd0069(*:1545)'
-                    .'|3(?'
-                        .'|e878/([^/]++)/([^/]++)/([^/]++)/c3e878(*:1596)'
-                        .'|c59e/([^/]++)/([^/]++)/([^/]++)/c3c59e(*:1643)'
-                    .')'
-                .')'
-                .'|/e(?'
-                    .'|c(?'
-                        .'|cbc8/([^/]++)/([^/]++)/([^/]++)/eccbc8(*:1701)'
-                        .'|8(?'
-                            .'|956/([^/]++)/([^/]++)/([^/]++)/ec8956(*:1751)'
-                            .'|ce6/([^/]++)/([^/]++)/([^/]++)/ec8ce6(*:1797)'
-                        .')'
-                        .'|5dec/([^/]++)/([^/]++)/([^/]++)/ec5dec(*:1845)'
-                    .')'
-                    .'|4(?'
-                        .'|da3b/([^/]++)/([^/]++)/([^/]++)/e4da3b(*:1897)'
-                        .'|a622/([^/]++)/([^/]++)/([^/]++)/e4a622(*:1944)'
-                        .'|6de7/([^/]++)/([^/]++)/([^/]++)/e46de7(*:1991)'
-                        .'|4fea/([^/]++)/([^/]++)/([^/]++)/e44fea(*:2038)'
-                    .')'
-                    .'|3(?'
-                        .'|6985/([^/]++)/([^/]++)/([^/]++)/e36985(*:2090)'
-                        .'|796a/([^/]++)/([^/]++)/([^/]++)/e3796a(*:2137)'
-                    .')'
-                    .'|a(?'
-                        .'|5d2f/([^/]++)/([^/]++)/([^/]++)/ea5d2f(*:2189)'
-                        .'|e27d/([^/]++)/([^/]++)/([^/]++)/eae27d(*:2236)'
-                    .')'
-                    .'|2(?'
-                        .'|c(?'
-                            .'|420/([^/]++)/([^/]++)/([^/]++)/e2c420(*:2291)'
-                            .'|0be/([^/]++)/([^/]++)/([^/]++)/e2c0be(*:2337)'
-                        .')'
-                        .'|ef52/([^/]++)/([^/]++)/([^/]++)/e2ef52(*:2385)'
-                    .')'
-                    .'|d(?'
-                        .'|3d2c/([^/]++)/([^/]++)/([^/]++)/ed3d2c(*:2437)'
-                        .'|a80a/([^/]++)/([^/]++)/([^/]++)/eda80a(*:2484)'
-                        .'|dea8/([^/]++)/([^/]++)/([^/]++)/eddea8(*:2531)'
-                    .')'
-                    .'|b(?'
-                        .'|16(?'
-                            .'|0d/([^/]++)/([^/]++)/([^/]++)/eb160d(*:2586)'
-                            .'|37/([^/]++)/([^/]++)/([^/]++)/eb1637(*:2631)'
-                        .')'
-                        .'|a0dc/([^/]++)/([^/]++)/([^/]++)/eba0dc(*:2679)'
-                    .')'
-                    .'|0(?'
-                        .'|0da0/([^/]++)/([^/]++)/([^/]++)/e00da0(*:2731)'
-                        .'|c641/([^/]++)/([^/]++)/([^/]++)/e0c641(*:2778)'
-                    .')'
-                    .'|e(?'
-                        .'|cca5/([^/]++)/([^/]++)/([^/]++)/eecca5(*:2830)'
-                        .'|d5af/([^/]++)/([^/]++)/([^/]++)/eed5af(*:2877)'
-                    .')'
-                    .'|96ed4/([^/]++)/([^/]++)/([^/]++)/e96ed4(*:2926)'
-                    .'|1(?'
-                        .'|6542/([^/]++)/([^/]++)/([^/]++)/e16542(*:2977)'
-                        .'|e32e/([^/]++)/([^/]++)/([^/]++)/e1e32e(*:3024)'
-                    .')'
-                    .'|56954/([^/]++)/([^/]++)/([^/]++)/e56954(*:3073)'
-                    .'|f(?'
-                        .'|0d39/([^/]++)/([^/]++)/([^/]++)/ef0d39(*:3124)'
-                        .'|e937/([^/]++)/([^/]++)/([^/]++)/efe937(*:3171)'
-                        .'|575e/([^/]++)/([^/]++)/([^/]++)/ef575e(*:3218)'
-                    .')'
-                    .'|7b24b/([^/]++)/([^/]++)/([^/]++)/e7b24b(*:3267)'
-                    .'|836d8/([^/]++)/([^/]++)/([^/]++)/e836d8(*:3315)'
-                .')'
-                .'|/a(?'
-                    .'|8(?'
-                        .'|7ff6/([^/]++)/([^/]++)/([^/]++)/a87ff6(*:3372)'
-                        .'|baa5/([^/]++)/([^/]++)/([^/]++)/a8baa5(*:3419)'
-                        .'|f15e/([^/]++)/([^/]++)/([^/]++)/a8f15e(*:3466)'
-                        .'|c88a/([^/]++)/([^/]++)/([^/]++)/a8c88a(*:3513)'
-                        .'|abb4/([^/]++)/([^/]++)/([^/]++)/a8abb4(*:3560)'
-                    .')'
-                    .'|a(?'
-                        .'|b323/([^/]++)/([^/]++)/([^/]++)/aab323(*:3612)'
-                        .'|942a/([^/]++)/([^/]++)/([^/]++)/aa942a(*:3659)'
-                    .')'
-                    .'|5(?'
-                        .'|bfc9/([^/]++)/([^/]++)/([^/]++)/a5bfc9(*:3711)'
-                        .'|771b/([^/]++)/([^/]++)/([^/]++)/a5771b(*:3758)'
-                        .'|e001/([^/]++)/([^/]++)/([^/]++)/a5e001(*:3805)'
-                        .'|97e5/([^/]++)/([^/]++)/([^/]++)/a597e5(*:3852)'
-                        .'|16a8/([^/]++)/([^/]++)/([^/]++)/a516a8(*:3899)'
-                    .')'
-                    .'|1d0c6/([^/]++)/([^/]++)/([^/]++)/a1d0c6(*:3948)'
-                    .'|6(?'
-                        .'|84ec/([^/]++)/([^/]++)/([^/]++)/a684ec(*:3999)'
-                        .'|6658/([^/]++)/([^/]++)/([^/]++)/a66658(*:4046)'
-                    .')'
-                    .'|3(?'
-                        .'|f390/([^/]++)/([^/]++)/([^/]++)/a3f390(*:4098)'
-                        .'|c65c/([^/]++)/([^/]++)/([^/]++)/a3c65c(*:4145)'
-                    .')'
-                    .'|d(?'
-                        .'|61ab/([^/]++)/([^/]++)/([^/]++)/ad61ab(*:4197)'
-                        .'|13a2/([^/]++)/([^/]++)/([^/]++)/ad13a2(*:4244)'
-                        .'|972f/([^/]++)/([^/]++)/([^/]++)/ad972f(*:4291)'
-                    .')'
-                    .'|c(?'
-                        .'|627a/([^/]++)/([^/]++)/([^/]++)/ac627a(*:4343)'
-                        .'|1dd2/([^/]++)/([^/]++)/([^/]++)/ac1dd2(*:4390)'
-                    .')'
-                    .'|9(?'
-                        .'|7da6/([^/]++)/([^/]++)/([^/]++)/a97da6(*:4442)'
-                        .'|6b65/([^/]++)/([^/]++)/([^/]++)/a96b65(*:4489)'
-                    .')'
-                    .'|0(?'
-                        .'|a080/([^/]++)/([^/]++)/([^/]++)/a0a080(*:4541)'
-                        .'|2ffd/([^/]++)/([^/]++)/([^/]++)/a02ffd(*:4588)'
-                        .'|1a03/([^/]++)/([^/]++)/([^/]++)/a01a03(*:4635)'
-                    .')'
-                    .'|4(?'
-                        .'|a042/([^/]++)/([^/]++)/([^/]++)/a4a042(*:4687)'
-                        .'|f236/([^/]++)/([^/]++)/([^/]++)/a4f236(*:4734)'
-                        .'|9e94/([^/]++)/([^/]++)/([^/]++)/a49e94(*:4781)'
-                    .')'
-                    .'|2557a/([^/]++)/([^/]++)/([^/]++)/a2557a(*:4830)'
-                    .'|b817c/([^/]++)/([^/]++)/([^/]++)/ab817c(*:4878)'
-                .')'
-                .'|/1(?'
-                    .'|6(?'
-                        .'|7909/([^/]++)/([^/]++)/([^/]++)/167909(*:4935)'
-                        .'|a5cd/([^/]++)/([^/]++)/([^/]++)/16a5cd(*:4982)'
-                        .'|51cf/([^/]++)/([^/]++)/([^/]++)/1651cf(*:5029)'
-                    .')'
-                    .'|f(?'
-                        .'|0e3d/([^/]++)/([^/]++)/([^/]++)/1f0e3d(*:5081)'
-                        .'|f(?'
-                            .'|1de/([^/]++)/([^/]++)/([^/]++)/1ff1de(*:5131)'
-                            .'|8a7/([^/]++)/([^/]++)/([^/]++)/1ff8a7(*:5177)'
-                        .')'
-                    .')'
-                    .'|8(?'
-                        .'|2be0/([^/]++)/([^/]++)/([^/]++)/182be0(*:5230)'
-                        .'|d804/([^/]++)/([^/]++)/([^/]++)/18d804(*:5277)'
-                        .'|9977/([^/]++)/([^/]++)/([^/]++)/189977(*:5324)'
-                    .')'
-                    .'|c(?'
-                        .'|383c/([^/]++)/([^/]++)/([^/]++)/1c383c(*:5376)'
-                        .'|9ac0/([^/]++)/([^/]++)/([^/]++)/1c9ac0(*:5423)'
-                    .')'
-                    .'|9(?'
-                        .'|ca14/([^/]++)/([^/]++)/([^/]++)/19ca14(*:5475)'
-                        .'|f3cd/([^/]++)/([^/]++)/([^/]++)/19f3cd(*:5522)'
-                    .')'
-                    .'|7(?'
-                        .'|e621/([^/]++)/([^/]++)/([^/]++)/17e621(*:5574)'
-                        .'|0000/([^/]++)/([^/]++)/([^/]++)/170000(*:5621)'
-                        .'|d63b/([^/]++)/([^/]++)/([^/]++)/17d63b(*:5668)'
-                    .')'
-                    .'|4(?'
-                        .'|bfa6/([^/]++)/([^/]++)/([^/]++)/14bfa6(*:5720)'
-                        .'|0f69/([^/]++)/([^/]++)/([^/]++)/140f69(*:5767)'
-                        .'|9e96/([^/]++)/([^/]++)/([^/]++)/149e96(*:5814)'
-                        .'|2949/([^/]++)/([^/]++)/([^/]++)/142949(*:5861)'
-                    .')'
-                    .'|a(?'
-                        .'|fa34/([^/]++)/([^/]++)/([^/]++)/1afa34(*:5913)'
-                        .'|5b1e/([^/]++)/([^/]++)/([^/]++)/1a5b1e(*:5960)'
-                    .')'
-                    .'|3(?'
-                        .'|8(?'
-                            .'|597/([^/]++)/([^/]++)/([^/]++)/138597(*:6015)'
-                            .'|bb0/([^/]++)/([^/]++)/([^/]++)/138bb0(*:6061)'
-                        .')'
-                        .'|f(?'
-                            .'|e9d/([^/]++)/([^/]++)/([^/]++)/13fe9d(*:6112)'
-                            .'|989/([^/]++)/([^/]++)/([^/]++)/13f989(*:6158)'
-                            .'|3cf/([^/]++)/([^/]++)/([^/]++)/13f3cf(*:6204)'
-                        .')'
-                    .')'
-                    .'|d7f7a/([^/]++)/([^/]++)/([^/]++)/1d7f7a(*:6254)'
-                    .'|5(?'
-                        .'|34b7/([^/]++)/([^/]++)/([^/]++)/1534b7(*:6305)'
-                        .'|8f30/([^/]++)/([^/]++)/([^/]++)/158f30(*:6352)'
-                        .'|4384/([^/]++)/([^/]++)/([^/]++)/154384(*:6399)'
-                        .'|d4e8/([^/]++)/([^/]++)/([^/]++)/15d4e8(*:6446)'
-                    .')'
-                    .'|1(?'
-                        .'|5f89/([^/]++)/([^/]++)/([^/]++)/115f89(*:6498)'
-                        .'|b984/([^/]++)/([^/]++)/([^/]++)/11b984(*:6545)'
-                    .')'
-                    .'|068c6/([^/]++)/([^/]++)/([^/]++)/1068c6(*:6594)'
-                    .'|be3bc/([^/]++)/([^/]++)/([^/]++)/1be3bc(*:6642)'
-                .')'
-                .'|/8(?'
-                    .'|f(?'
-                        .'|1(?'
-                            .'|4e4/([^/]++)/([^/]++)/([^/]++)/8f14e4(*:6702)'
-                            .'|21c/([^/]++)/([^/]++)/([^/]++)/8f121c(*:6748)'
-                        .')'
-                        .'|8551/([^/]++)/([^/]++)/([^/]++)/8f8551(*:6796)'
-                        .'|5329/([^/]++)/([^/]++)/([^/]++)/8f5329(*:6843)'
-                        .'|e009/([^/]++)/([^/]++)/([^/]++)/8fe009(*:6890)'
-                    .')'
-                    .'|e(?'
-                        .'|296a/([^/]++)/([^/]++)/([^/]++)/8e296a(*:6942)'
-                        .'|98d8/([^/]++)/([^/]++)/([^/]++)/8e98d8(*:6989)'
-                        .'|fb10/([^/]++)/([^/]++)/([^/]++)/8efb10(*:7036)'
-                        .'|6b42/([^/]++)/([^/]++)/([^/]++)/8e6b42(*:7083)'
-                    .')'
-                    .'|61398/([^/]++)/([^/]++)/([^/]++)/861398(*:7132)'
-                    .'|1(?'
-                        .'|2b4b/([^/]++)/([^/]++)/([^/]++)/812b4b(*:7183)'
-                        .'|9f46/([^/]++)/([^/]++)/([^/]++)/819f46(*:7230)'
-                        .'|6b11/([^/]++)/([^/]++)/([^/]++)/816b11(*:7277)'
-                    .')'
-                    .'|d(?'
-                        .'|5e95/([^/]++)/([^/]++)/([^/]++)/8d5e95(*:7329)'
-                        .'|3bba/([^/]++)/([^/]++)/([^/]++)/8d3bba(*:7376)'
-                        .'|d48d/([^/]++)/([^/]++)/([^/]++)/8dd48d(*:7423)'
-                        .'|7d8e/([^/]++)/([^/]++)/([^/]++)/8d7d8e(*:7470)'
-                    .')'
-                    .'|2(?'
-                        .'|aa4b/([^/]++)/([^/]++)/([^/]++)/82aa4b(*:7522)'
-                        .'|1(?'
-                            .'|612/([^/]++)/([^/]++)/([^/]++)/821612(*:7572)'
-                            .'|fa7/([^/]++)/([^/]++)/([^/]++)/821fa7(*:7618)'
-                        .')'
-                        .'|cec9/([^/]++)/([^/]++)/([^/]++)/82cec9(*:7666)'
-                    .')'
-                    .'|5(?'
-                        .'|d8ce/([^/]++)/([^/]++)/([^/]++)/85d8ce(*:7718)'
-                        .'|4d(?'
-                            .'|6f/([^/]++)/([^/]++)/([^/]++)/854d6f(*:7768)'
-                            .'|9f/([^/]++)/([^/]++)/([^/]++)/854d9f(*:7813)'
-                        .')'
-                    .')'
-                    .'|4d9ee/([^/]++)/([^/]++)/([^/]++)/84d9ee(*:7863)'
-                    .'|c(?'
-                        .'|19f5/([^/]++)/([^/]++)/([^/]++)/8c19f5(*:7914)'
-                        .'|b22b/([^/]++)/([^/]++)/([^/]++)/8cb22b(*:7961)'
-                    .')'
-                    .'|39ab4/([^/]++)/([^/]++)/([^/]++)/839ab4(*:8010)'
-                    .'|9f0fd/([^/]++)/([^/]++)/([^/]++)/89f0fd(*:8058)'
-                    .'|bf121/([^/]++)/([^/]++)/([^/]++)/8bf121(*:8106)'
-                    .'|77a9b/([^/]++)/([^/]++)/([^/]++)/877a9b(*:8154)'
-                .')'
-                .'|/4(?'
-                    .'|5(?'
-                        .'|c48c/([^/]++)/([^/]++)/([^/]++)/45c48c(*:8211)'
-                        .'|fbc6/([^/]++)/([^/]++)/([^/]++)/45fbc6(*:8258)'
-                    .')'
-                    .'|e732c/([^/]++)/([^/]++)/([^/]++)/4e732c(*:8307)'
-                    .'|4f683/([^/]++)/([^/]++)/([^/]++)/44f683(*:8355)'
-                    .'|3(?'
-                        .'|ec51/([^/]++)/([^/]++)/([^/]++)/43ec51(*:8406)'
-                        .'|2aca/([^/]++)/([^/]++)/([^/]++)/432aca(*:8453)'
-                    .')'
-                    .'|c5(?'
-                        .'|6ff/([^/]++)/([^/]++)/([^/]++)/4c56ff(*:8505)'
-                        .'|bde/([^/]++)/([^/]++)/([^/]++)/4c5bde(*:8551)'
-                    .')'
-                    .'|2(?'
-                        .'|a0e1/([^/]++)/([^/]++)/([^/]++)/42a0e1(*:8603)'
-                        .'|e7aa/([^/]++)/([^/]++)/([^/]++)/42e7aa(*:8650)'
-                        .'|998c/([^/]++)/([^/]++)/([^/]++)/42998c(*:8697)'
-                        .'|8fca/([^/]++)/([^/]++)/([^/]++)/428fca(*:8744)'
-                    .')'
-                    .'|7(?'
-                        .'|d1e9/([^/]++)/([^/]++)/([^/]++)/47d1e9(*:8796)'
-                        .'|34ba/([^/]++)/([^/]++)/([^/]++)/4734ba(*:8843)'
-                    .')'
-                    .'|6ba9f/([^/]++)/([^/]++)/([^/]++)/46ba9f(*:8892)'
-                    .'|8aedb/([^/]++)/([^/]++)/([^/]++)/48aedb(*:8940)'
-                    .'|9(?'
-                        .'|182f/([^/]++)/([^/]++)/([^/]++)/49182f(*:8991)'
-                        .'|6e05/([^/]++)/([^/]++)/([^/]++)/496e05(*:9038)'
-                        .'|ae49/([^/]++)/([^/]++)/([^/]++)/49ae49(*:9085)'
-                    .')'
-                    .'|0008b/([^/]++)/([^/]++)/([^/]++)/40008b(*:9134)'
-                    .'|1(?'
-                        .'|f1f1/([^/]++)/([^/]++)/([^/]++)/41f1f1(*:9185)'
-                        .'|ae36/([^/]++)/([^/]++)/([^/]++)/41ae36(*:9232)'
-                    .')'
-                    .'|f(?'
-                        .'|6ffe/([^/]++)/([^/]++)/([^/]++)/4f6ffe(*:9284)'
-                        .'|4adc/([^/]++)/([^/]++)/([^/]++)/4f4adc(*:9331)'
-                    .')'
-                .')'
-                .'|/d(?'
-                    .'|3(?'
-                        .'|d944/([^/]++)/([^/]++)/([^/]++)/d3d944(*:9389)'
-                        .'|9577/([^/]++)/([^/]++)/([^/]++)/d39577(*:9436)'
-                        .'|4ab1/([^/]++)/([^/]++)/([^/]++)/d34ab1(*:9483)'
-                    .')'
-                    .'|6(?'
-                        .'|7d8a/([^/]++)/([^/]++)/([^/]++)/d67d8a(*:9535)'
-                        .'|4592/([^/]++)/([^/]++)/([^/]++)/d64592(*:9582)'
-                        .'|baf6/([^/]++)/([^/]++)/([^/]++)/d6baf6(*:9629)'
-                        .'|1e4b/([^/]++)/([^/]++)/([^/]++)/d61e4b(*:9676)'
-                    .')'
-                    .'|9(?'
-                        .'|d4f4/([^/]++)/([^/]++)/([^/]++)/d9d4f4(*:9728)'
-                        .'|6409/([^/]++)/([^/]++)/([^/]++)/d96409(*:9775)'
-                        .'|47bf/([^/]++)/([^/]++)/([^/]++)/d947bf(*:9822)'
-                        .'|fc5b/([^/]++)/([^/]++)/([^/]++)/d9fc5b(*:9869)'
-                    .')'
-                    .'|8(?'
-                        .'|2c8d/([^/]++)/([^/]++)/([^/]++)/d82c8d(*:9921)'
-                        .'|1f9c/([^/]++)/([^/]++)/([^/]++)/d81f9c(*:9968)'
-                    .')'
-                    .'|2(?'
-                        .'|ddea/([^/]++)/([^/]++)/([^/]++)/d2ddea(*:10020)'
-                        .'|96c1/([^/]++)/([^/]++)/([^/]++)/d296c1(*:10068)'
-                    .')'
-                    .'|0(?'
-                        .'|9bf4/([^/]++)/([^/]++)/([^/]++)/d09bf4(*:10121)'
-                        .'|7e70/([^/]++)/([^/]++)/([^/]++)/d07e70(*:10169)'
-                    .')'
-                    .'|1(?'
-                        .'|f(?'
-                            .'|e17/([^/]++)/([^/]++)/([^/]++)/d1fe17(*:10225)'
-                            .'|491/([^/]++)/([^/]++)/([^/]++)/d1f491(*:10272)'
-                            .'|255/([^/]++)/([^/]++)/([^/]++)/d1f255(*:10319)'
-                        .')'
-                        .'|c38a/([^/]++)/([^/]++)/([^/]++)/d1c38a(*:10368)'
-                        .'|8f65/([^/]++)/([^/]++)/([^/]++)/d18f65(*:10416)'
-                    .')'
-                    .'|a4fb5/([^/]++)/([^/]++)/([^/]++)/da4fb5(*:10466)'
-                    .'|b8e1a/([^/]++)/([^/]++)/([^/]++)/db8e1a(*:10515)'
-                    .'|709f3/([^/]++)/([^/]++)/([^/]++)/d709f3(*:10564)'
-                    .'|c(?'
-                        .'|912a/([^/]++)/([^/]++)/([^/]++)/dc912a(*:10616)'
-                        .'|6a64/([^/]++)/([^/]++)/([^/]++)/dc6a64(*:10664)'
-                    .')'
-                    .'|db306/([^/]++)/([^/]++)/([^/]++)/ddb306(*:10714)'
-                .')'
-                .'|/6(?'
-                    .'|5(?'
-                        .'|12bd/([^/]++)/([^/]++)/([^/]++)/6512bd(*:10772)'
-                        .'|b9ee/([^/]++)/([^/]++)/([^/]++)/65b9ee(*:10820)'
-                        .'|ded5/([^/]++)/([^/]++)/([^/]++)/65ded5(*:10868)'
-                    .')'
-                    .'|f(?'
-                        .'|4922/([^/]++)/([^/]++)/([^/]++)/6f4922(*:10921)'
-                        .'|3ef7/([^/]++)/([^/]++)/([^/]++)/6f3ef7(*:10969)'
-                        .'|aa80/([^/]++)/([^/]++)/([^/]++)/6faa80(*:11017)'
-                    .')'
-                    .'|e(?'
-                        .'|a(?'
-                            .'|9ab/([^/]++)/([^/]++)/([^/]++)/6ea9ab(*:11073)'
-                            .'|2ef/([^/]++)/([^/]++)/([^/]++)/6ea2ef(*:11120)'
-                        .')'
-                        .'|cbdd/([^/]++)/([^/]++)/([^/]++)/6ecbdd(*:11169)'
-                    .')'
-                    .'|3(?'
-                        .'|64d3/([^/]++)/([^/]++)/([^/]++)/6364d3(*:11222)'
-                        .'|dc7e/([^/]++)/([^/]++)/([^/]++)/63dc7e(*:11270)'
-                        .'|923f/([^/]++)/([^/]++)/([^/]++)/63923f(*:11318)'
-                    .')'
-                    .'|c(?'
-                        .'|8349/([^/]++)/([^/]++)/([^/]++)/6c8349(*:11371)'
-                        .'|4b76/([^/]++)/([^/]++)/([^/]++)/6c4b76(*:11419)'
-                        .'|dd60/([^/]++)/([^/]++)/([^/]++)/6cdd60(*:11467)'
-                        .'|9882/([^/]++)/([^/]++)/([^/]++)/6c9882(*:11515)'
-                        .'|524f/([^/]++)/([^/]++)/([^/]++)/6c524f(*:11563)'
-                    .')'
-                    .'|7(?'
-                        .'|c6a1/([^/]++)/([^/]++)/([^/]++)/67c6a1(*:11616)'
-                        .'|f7fb/([^/]++)/([^/]++)/([^/]++)/67f7fb(*:11664)'
-                    .')'
-                    .'|42e92/([^/]++)/([^/]++)/([^/]++)/642e92(*:11714)'
-                    .'|6(?'
-                        .'|f041/([^/]++)/([^/]++)/([^/]++)/66f041(*:11766)'
-                        .'|808e/([^/]++)/([^/]++)/([^/]++)/66808e(*:11814)'
-                        .'|3682/([^/]++)/([^/]++)/([^/]++)/663682(*:11862)'
-                    .')'
-                    .'|8(?'
-                        .'|d30a/([^/]++)/([^/]++)/([^/]++)/68d30a(*:11915)'
-                        .'|8396/([^/]++)/([^/]++)/([^/]++)/688396(*:11963)'
-                        .'|5545/([^/]++)/([^/]++)/([^/]++)/685545(*:12011)'
-                        .'|ce19/([^/]++)/([^/]++)/([^/]++)/68ce19(*:12059)'
-                    .')'
-                    .'|9(?'
-                        .'|74ce/([^/]++)/([^/]++)/([^/]++)/6974ce(*:12112)'
-                        .'|8d51/([^/]++)/([^/]++)/([^/]++)/698d51(*:12160)'
-                        .'|adc1/([^/]++)/([^/]++)/([^/]++)/69adc1(*:12208)'
-                        .'|cb3e/([^/]++)/([^/]++)/([^/]++)/69cb3e(*:12256)'
-                    .')'
-                    .'|da(?'
-                        .'|900/([^/]++)/([^/]++)/([^/]++)/6da900(*:12309)'
-                        .'|37d/([^/]++)/([^/]++)/([^/]++)/6da37d(*:12356)'
-                    .')'
-                    .'|21bf6/([^/]++)/([^/]++)/([^/]++)/621bf6(*:12406)'
-                    .'|a9aed/([^/]++)/([^/]++)/([^/]++)/6a9aed(*:12455)'
-                .')'
-                .'|/9(?'
-                    .'|b(?'
-                        .'|f31c/([^/]++)/([^/]++)/([^/]++)/9bf31c(*:12513)'
-                        .'|8619/([^/]++)/([^/]++)/([^/]++)/9b8619(*:12561)'
-                        .'|04d1/([^/]++)/([^/]++)/([^/]++)/9b04d1(*:12609)'
-                        .'|e40c/([^/]++)/([^/]++)/([^/]++)/9be40c(*:12657)'
-                        .'|70e8/([^/]++)/([^/]++)/([^/]++)/9b70e8(*:12705)'
-                    .')'
-                    .'|8(?'
-                        .'|f137/([^/]++)/([^/]++)/([^/]++)/98f137(*:12758)'
-                        .'|dce8/([^/]++)/([^/]++)/([^/]++)/98dce8(*:12806)'
-                        .'|72ed/([^/]++)/([^/]++)/([^/]++)/9872ed(*:12854)'
-                        .'|b297/([^/]++)/([^/]++)/([^/]++)/98b297(*:12902)'
-                    .')'
-                    .'|a(?'
-                        .'|1158/([^/]++)/([^/]++)/([^/]++)/9a1158(*:12955)'
-                        .'|9687/([^/]++)/([^/]++)/([^/]++)/9a9687(*:13003)'
-                    .')'
-                    .'|f(?'
-                        .'|6140/([^/]++)/([^/]++)/([^/]++)/9f6140(*:13056)'
-                        .'|c3d7/([^/]++)/([^/]++)/([^/]++)/9fc3d7(*:13104)'
-                        .'|d818/([^/]++)/([^/]++)/([^/]++)/9fd818(*:13152)'
-                    .')'
-                    .'|7(?'
-                        .'|78d5/([^/]++)/([^/]++)/([^/]++)/9778d5(*:13205)'
-                        .'|6652/([^/]++)/([^/]++)/([^/]++)/976652(*:13253)'
-                        .'|9d47/([^/]++)/([^/]++)/([^/]++)/979d47(*:13301)'
-                    .')'
-                    .'|3db85/([^/]++)/([^/]++)/([^/]++)/93db85(*:13351)'
-                    .'|2c(?'
-                        .'|c22/([^/]++)/([^/]++)/([^/]++)/92cc22(*:13403)'
-                        .'|8c9/([^/]++)/([^/]++)/([^/]++)/92c8c9(*:13450)'
-                    .')'
-                    .'|03ce9/([^/]++)/([^/]++)/([^/]++)/903ce9(*:13500)'
-                    .'|6da2f/([^/]++)/([^/]++)/([^/]++)/96da2f(*:13549)'
-                    .'|d(?'
-                        .'|cb88/([^/]++)/([^/]++)/([^/]++)/9dcb88(*:13601)'
-                        .'|fcd5/([^/]++)/([^/]++)/([^/]++)/9dfcd5(*:13649)'
-                        .'|e6d1/([^/]++)/([^/]++)/([^/]++)/9de6d1(*:13697)'
-                    .')'
-                    .'|c(?'
-                        .'|fdf1/([^/]++)/([^/]++)/([^/]++)/9cfdf1(*:13750)'
-                        .'|838d/([^/]++)/([^/]++)/([^/]++)/9c838d(*:13798)'
-                    .')'
-                    .'|18(?'
-                        .'|890/([^/]++)/([^/]++)/([^/]++)/918890(*:13851)'
-                        .'|317/([^/]++)/([^/]++)/([^/]++)/918317(*:13898)'
-                    .')'
-                    .'|4(?'
-                        .'|f6d7/([^/]++)/([^/]++)/([^/]++)/94f6d7(*:13951)'
-                        .'|1e1a/([^/]++)/([^/]++)/([^/]++)/941e1a(*:13999)'
-                        .'|31c8/([^/]++)/([^/]++)/([^/]++)/9431c8(*:14047)'
-                        .'|61cc/([^/]++)/([^/]++)/([^/]++)/9461cc(*:14095)'
-                    .')'
-                    .'|50a41/([^/]++)/([^/]++)/([^/]++)/950a41(*:14145)'
-                .')'
-                .'|/7(?'
-                    .'|0(?'
-                        .'|efdf/([^/]++)/([^/]++)/([^/]++)/70efdf(*:14203)'
-                        .'|5f21/([^/]++)/([^/]++)/([^/]++)/705f21(*:14251)'
-                        .'|c639/([^/]++)/([^/]++)/([^/]++)/70c639(*:14299)'
-                    .')'
-                    .'|2b32a/([^/]++)/([^/]++)/([^/]++)/72b32a(*:14349)'
-                    .'|f(?'
-                        .'|39f8/([^/]++)/([^/]++)/([^/]++)/7f39f8(*:14401)'
-                        .'|6ffa/([^/]++)/([^/]++)/([^/]++)/7f6ffa(*:14449)'
-                        .'|1(?'
-                            .'|de2/([^/]++)/([^/]++)/([^/]++)/7f1de2(*:14500)'
-                            .'|00b/([^/]++)/([^/]++)/([^/]++)/7f100b(*:14547)'
-                        .')'
-                        .'|e1f8/([^/]++)/([^/]++)/([^/]++)/7fe1f8(*:14596)'
-                    .')'
-                    .'|3(?'
-                        .'|5b90/([^/]++)/([^/]++)/([^/]++)/735b90(*:14649)'
-                        .'|278a/([^/]++)/([^/]++)/([^/]++)/73278a(*:14697)'
-                        .'|80ad/([^/]++)/([^/]++)/([^/]++)/7380ad(*:14745)'
-                    .')'
-                    .'|cbbc4/([^/]++)/([^/]++)/([^/]++)/7cbbc4(*:14795)'
-                    .'|6(?'
-                        .'|4796/([^/]++)/([^/]++)/([^/]++)/764796(*:14847)'
-                        .'|dc61/([^/]++)/([^/]++)/([^/]++)/76dc61(*:14895)'
-                    .')'
-                    .'|e(?'
-                        .'|f605/([^/]++)/([^/]++)/([^/]++)/7ef605(*:14948)'
-                        .'|7757/([^/]++)/([^/]++)/([^/]++)/7e7757(*:14996)'
-                        .'|a(?'
-                            .'|be3/([^/]++)/([^/]++)/([^/]++)/7eabe3(*:15047)'
-                            .'|cb5/([^/]++)/([^/]++)/([^/]++)/7eacb5(*:15094)'
-                        .')'
-                    .')'
-                    .'|5(?'
-                        .'|7b50/([^/]++)/([^/]++)/([^/]++)/757b50(*:15148)'
-                        .'|8874/([^/]++)/([^/]++)/([^/]++)/758874(*:15196)'
-                        .'|fc09/([^/]++)/([^/]++)/([^/]++)/75fc09(*:15244)'
-                    .')'
-                    .'|4(?'
-                        .'|db12/([^/]++)/([^/]++)/([^/]++)/74db12(*:15297)'
-                        .'|071a/([^/]++)/([^/]++)/([^/]++)/74071a(*:15345)'
-                    .')'
-                    .'|a614f/([^/]++)/([^/]++)/([^/]++)/7a614f(*:15395)'
-                    .'|d04bb/([^/]++)/([^/]++)/([^/]++)/7d04bb(*:15444)'
-                .')'
-                .'|/3(?'
-                    .'|c(?'
-                        .'|59dc/([^/]++)/([^/]++)/([^/]++)/3c59dc(*:15502)'
-                        .'|ec07/([^/]++)/([^/]++)/([^/]++)/3cec07(*:15550)'
-                        .'|7781/([^/]++)/([^/]++)/([^/]++)/3c7781(*:15598)'
-                        .'|f166/([^/]++)/([^/]++)/([^/]++)/3cf166(*:15646)'
-                    .')'
-                    .'|7(?'
-                        .'|693c/([^/]++)/([^/]++)/([^/]++)/37693c(*:15699)'
-                        .'|a749/([^/]++)/([^/]++)/([^/]++)/37a749(*:15747)'
-                        .'|bc2f/([^/]++)/([^/]++)/([^/]++)/37bc2f(*:15795)'
-                        .'|1bce/([^/]++)/([^/]++)/([^/]++)/371bce(*:15843)'
-                    .')'
-                    .'|3(?'
-                        .'|e75f/([^/]++)/([^/]++)/([^/]++)/33e75f(*:15896)'
-                        .'|5f53/([^/]++)/([^/]++)/([^/]++)/335f53(*:15944)'
-                    .')'
-                    .'|4(?'
-                        .'|1(?'
-                            .'|73c/([^/]++)/([^/]++)/([^/]++)/34173c(*:16000)'
-                            .'|6a7/([^/]++)/([^/]++)/([^/]++)/3416a7(*:16047)'
-                        .')'
-                        .'|ed06/([^/]++)/([^/]++)/([^/]++)/34ed06(*:16096)'
-                    .')'
-                    .'|2(?'
-                        .'|95c7/([^/]++)/([^/]++)/([^/]++)/3295c7(*:16149)'
-                        .'|bb90/([^/]++)/([^/]++)/([^/]++)/32bb90(*:16197)'
-                        .'|0722/([^/]++)/([^/]++)/([^/]++)/320722(*:16245)'
-                    .')'
-                    .'|5(?'
-                        .'|f4a8/([^/]++)/([^/]++)/([^/]++)/35f4a8(*:16298)'
-                        .'|7a6f/([^/]++)/([^/]++)/([^/]++)/357a6f(*:16346)'
-                        .'|2fe2/([^/]++)/([^/]++)/([^/]++)/352fe2(*:16394)'
-                        .'|0510/([^/]++)/([^/]++)/([^/]++)/350510(*:16442)'
-                    .')'
-                    .'|ef815/([^/]++)/([^/]++)/([^/]++)/3ef815(*:16492)'
-                    .'|8(?'
-                        .'|b3ef/([^/]++)/([^/]++)/([^/]++)/38b3ef(*:16544)'
-                        .'|af86/([^/]++)/([^/]++)/([^/]++)/38af86(*:16592)'
-                        .'|db3a/([^/]++)/([^/]++)/([^/]++)/38db3a(*:16640)'
-                    .')'
-                    .'|d(?'
-                        .'|ef18/([^/]++)/([^/]++)/([^/]++)/3def18(*:16693)'
-                        .'|d48a/([^/]++)/([^/]++)/([^/]++)/3dd48a(*:16741)'
-                    .')'
-                    .'|9(?'
-                        .'|88c7/([^/]++)/([^/]++)/([^/]++)/3988c7(*:16794)'
-                        .'|0597/([^/]++)/([^/]++)/([^/]++)/390597(*:16842)'
-                        .'|461a/([^/]++)/([^/]++)/([^/]++)/39461a(*:16890)'
-                    .')'
-                    .'|6(?'
-                        .'|3663/([^/]++)/([^/]++)/([^/]++)/363663(*:16943)'
-                        .'|44a6/([^/]++)/([^/]++)/([^/]++)/3644a6(*:16991)'
-                        .'|660e/([^/]++)/([^/]++)/([^/]++)/36660e(*:17039)'
-                    .')'
-                    .'|1(?'
-                        .'|fefc/([^/]++)/([^/]++)/([^/]++)/31fefc(*:17092)'
-                        .'|0dcb/([^/]++)/([^/]++)/([^/]++)/310dcb(*:17140)'
-                    .')'
-                    .'|b8a61/([^/]++)/([^/]++)/([^/]++)/3b8a61(*:17190)'
-                    .'|fe94a/([^/]++)/([^/]++)/([^/]++)/3fe94a(*:17239)'
-                    .'|ad7c2/([^/]++)/([^/]++)/([^/]++)/3ad7c2(*:17288)'
-                .')'
-                .'|/b(?'
-                    .'|6(?'
-                        .'|d767/([^/]++)/([^/]++)/([^/]++)/b6d767(*:17346)'
-                        .'|f047/([^/]++)/([^/]++)/([^/]++)/b6f047(*:17394)'
-                    .')'
-                    .'|53(?'
-                        .'|b3a/([^/]++)/([^/]++)/([^/]++)/b53b3a(*:17447)'
-                        .'|4ba/([^/]++)/([^/]++)/([^/]++)/b534ba(*:17494)'
-                    .')'
-                    .'|3(?'
-                        .'|e3e3/([^/]++)/([^/]++)/([^/]++)/b3e3e3(*:17547)'
-                        .'|967a/([^/]++)/([^/]++)/([^/]++)/b3967a(*:17595)'
-                    .')'
-                    .'|7(?'
-                        .'|3ce3/([^/]++)/([^/]++)/([^/]++)/b73ce3(*:17648)'
-                        .'|b16e/([^/]++)/([^/]++)/([^/]++)/b7b16e(*:17696)'
-                    .')'
-                    .'|d(?'
-                        .'|4c9a/([^/]++)/([^/]++)/([^/]++)/bd4c9a(*:17749)'
-                        .'|686f/([^/]++)/([^/]++)/([^/]++)/bd686f(*:17797)'
-                    .')'
-                    .'|f8229/([^/]++)/([^/]++)/([^/]++)/bf8229(*:17847)'
-                    .'|1(?'
-                        .'|d10e/([^/]++)/([^/]++)/([^/]++)/b1d10e(*:17899)'
-                        .'|a59b/([^/]++)/([^/]++)/([^/]++)/b1a59b(*:17947)'
-                    .')'
-                    .'|c(?'
-                        .'|be33/([^/]++)/([^/]++)/([^/]++)/bcbe33(*:18000)'
-                        .'|6dc4/([^/]++)/([^/]++)/([^/]++)/bc6dc4(*:18048)'
-                        .'|a82e/([^/]++)/([^/]++)/([^/]++)/bca82e(*:18096)'
-                    .')'
-                    .'|e(?'
-                        .'|83ab/([^/]++)/([^/]++)/([^/]++)/be83ab(*:18149)'
-                        .'|ed13/([^/]++)/([^/]++)/([^/]++)/beed13(*:18197)'
-                    .')'
-                    .'|2eb73/([^/]++)/([^/]++)/([^/]++)/b2eb73(*:18247)'
-                    .'|83aac/([^/]++)/([^/]++)/([^/]++)/b83aac(*:18296)'
-                    .'|ac916/([^/]++)/([^/]++)/([^/]++)/bac916(*:18345)'
-                    .'|b(?'
-                        .'|f94b/([^/]++)/([^/]++)/([^/]++)/bbf94b(*:18397)'
-                        .'|cbff/([^/]++)/([^/]++)/([^/]++)/bbcbff(*:18445)'
-                    .')'
-                    .'|9228e/([^/]++)/([^/]++)/([^/]++)/b9228e(*:18495)'
-                .')'
-                .'|/0(?'
-                    .'|2(?'
-                        .'|e74f/([^/]++)/([^/]++)/([^/]++)/02e74f(*:18553)'
-                        .'|522a/([^/]++)/([^/]++)/([^/]++)/02522a(*:18601)'
-                        .'|66e3/([^/]++)/([^/]++)/([^/]++)/0266e3(*:18649)'
-                    .')'
-                    .'|9(?'
-                        .'|3f65/([^/]++)/([^/]++)/([^/]++)/093f65(*:18702)'
-                        .'|1d58/([^/]++)/([^/]++)/([^/]++)/091d58(*:18750)'
-                    .')'
-                    .'|7(?'
-                        .'|2b03/([^/]++)/([^/]++)/([^/]++)/072b03(*:18803)'
-                        .'|e1cd/([^/]++)/([^/]++)/([^/]++)/07e1cd(*:18851)'
-                        .'|7(?'
-                            .'|7d5/([^/]++)/([^/]++)/([^/]++)/0777d5(*:18902)'
-                            .'|e29/([^/]++)/([^/]++)/([^/]++)/077e29(*:18949)'
-                        .')'
-                        .'|cdfd/([^/]++)/([^/]++)/([^/]++)/07cdfd(*:18998)'
-                    .')'
-                    .'|3(?'
-                        .'|afdb/([^/]++)/([^/]++)/([^/]++)/03afdb(*:19051)'
-                        .'|36dc/([^/]++)/([^/]++)/([^/]++)/0336dc(*:19099)'
-                        .'|c6b0/([^/]++)/([^/]++)/([^/]++)/03c6b0(*:19147)'
-                        .'|53ab/([^/]++)/([^/]++)/([^/]++)/0353ab(*:19195)'
-                    .')'
-                    .'|6(?'
-                        .'|9059/([^/]++)/([^/]++)/([^/]++)/069059(*:19248)'
-                        .'|4096/([^/]++)/([^/]++)/([^/]++)/064096(*:19296)'
-                        .'|0ad9/([^/]++)/([^/]++)/([^/]++)/060ad9(*:19344)'
-                        .'|138b/([^/]++)/([^/]++)/([^/]++)/06138b(*:19392)'
-                        .'|eb61/([^/]++)/([^/]++)/([^/]++)/06eb61(*:19440)'
-                    .')'
-                    .'|1(?'
-                        .'|3(?'
-                            .'|d40/([^/]++)/([^/]++)/([^/]++)/013d40(*:19496)'
-                            .'|86b/([^/]++)/([^/]++)/([^/]++)/01386b(*:19543)'
-                        .')'
-                        .'|161a/([^/]++)/([^/]++)/([^/]++)/01161a(*:19592)'
-                        .'|9d38/([^/]++)/([^/]++)/([^/]++)/019d38(*:19640)'
-                    .')'
-                    .'|f(?'
-                        .'|28b5/([^/]++)/([^/]++)/([^/]++)/0f28b5(*:19693)'
-                        .'|49c8/([^/]++)/([^/]++)/([^/]++)/0f49c8(*:19741)'
-                    .')'
-                    .'|a(?'
-                        .'|09c8/([^/]++)/([^/]++)/([^/]++)/0a09c8(*:19794)'
-                        .'|a188/([^/]++)/([^/]++)/([^/]++)/0aa188(*:19842)'
-                    .')'
-                    .'|0(?'
-                        .'|6f52/([^/]++)/([^/]++)/([^/]++)/006f52(*:19895)'
-                        .'|4114/([^/]++)/([^/]++)/([^/]++)/004114(*:19943)'
-                        .'|ec53/([^/]++)/([^/]++)/([^/]++)/00ec53(*:19991)'
-                    .')'
-                    .'|4(?'
-                        .'|5117/([^/]++)/([^/]++)/([^/]++)/045117(*:20044)'
-                        .'|0259/([^/]++)/([^/]++)/([^/]++)/040259(*:20092)'
-                    .')'
-                    .'|84b6f/([^/]++)/([^/]++)/([^/]++)/084b6f(*:20142)'
-                    .'|e(?'
-                        .'|6597/([^/]++)/([^/]++)/([^/]++)/0e6597(*:20194)'
-                        .'|0193/([^/]++)/([^/]++)/([^/]++)/0e0193(*:20242)'
-                    .')'
-                    .'|bb4ae/([^/]++)/([^/]++)/([^/]++)/0bb4ae(*:20292)'
-                    .'|5(?'
-                        .'|049e/([^/]++)/([^/]++)/([^/]++)/05049e(*:20344)'
-                        .'|84ce/([^/]++)/([^/]++)/([^/]++)/0584ce(*:20392)'
-                        .'|f971/([^/]++)/([^/]++)/([^/]++)/05f971(*:20440)'
-                    .')'
-                    .'|c74b7/([^/]++)/([^/]++)/([^/]++)/0c74b7(*:20490)'
-                    .'|d(?'
-                        .'|0fd7/([^/]++)/([^/]++)/([^/]++)/0d0fd7(*:20542)'
-                        .'|eb1c/([^/]++)/([^/]++)/([^/]++)/0deb1c(*:20590)'
-                    .')'
-                .')'
-                .'|/f(?'
-                    .'|7(?'
-                        .'|1(?'
-                            .'|771/([^/]++)/([^/]++)/([^/]++)/f71771(*:20652)'
-                            .'|849/([^/]++)/([^/]++)/([^/]++)/f71849(*:20699)'
-                        .')'
-                        .'|e6c8/([^/]++)/([^/]++)/([^/]++)/f7e6c8(*:20748)'
-                        .'|6640/([^/]++)/([^/]++)/([^/]++)/f76640(*:20796)'
-                        .'|3b76/([^/]++)/([^/]++)/([^/]++)/f73b76(*:20844)'
-                        .'|4909/([^/]++)/([^/]++)/([^/]++)/f74909(*:20892)'
-                        .'|70b6/([^/]++)/([^/]++)/([^/]++)/f770b6(*:20940)'
-                    .')'
-                    .'|4(?'
-                        .'|57c5/([^/]++)/([^/]++)/([^/]++)/f457c5(*:20993)'
-                        .'|b9ec/([^/]++)/([^/]++)/([^/]++)/f4b9ec(*:21041)'
-                        .'|f6dc/([^/]++)/([^/]++)/([^/]++)/f4f6dc(*:21089)'
-                    .')'
-                    .'|c(?'
-                        .'|490c/([^/]++)/([^/]++)/([^/]++)/fc490c(*:21142)'
-                        .'|2213/([^/]++)/([^/]++)/([^/]++)/fc2213(*:21190)'
-                        .'|cb60/([^/]++)/([^/]++)/([^/]++)/fccb60(*:21238)'
-                    .')'
-                    .'|b(?'
-                        .'|d793/([^/]++)/([^/]++)/([^/]++)/fbd793(*:21291)'
-                        .'|7b9f/([^/]++)/([^/]++)/([^/]++)/fb7b9f(*:21339)'
-                    .')'
-                    .'|0(?'
-                        .'|33ab/([^/]++)/([^/]++)/([^/]++)/f033ab(*:21392)'
-                        .'|935e/([^/]++)/([^/]++)/([^/]++)/f0935e(*:21440)'
-                    .')'
-                    .'|e(?'
-                        .'|9fc2/([^/]++)/([^/]++)/([^/]++)/fe9fc2(*:21493)'
-                        .'|131d/([^/]++)/([^/]++)/([^/]++)/fe131d(*:21541)'
-                        .'|73f6/([^/]++)/([^/]++)/([^/]++)/fe73f6(*:21589)'
-                    .')'
-                    .'|8(?'
-                        .'|9913/([^/]++)/([^/]++)/([^/]++)/f89913(*:21642)'
-                        .'|c1f2/([^/]++)/([^/]++)/([^/]++)/f8c1f2(*:21690)'
-                        .'|5454/([^/]++)/([^/]++)/([^/]++)/f85454(*:21738)'
-                    .')'
-                    .'|2(?'
-                        .'|2170/([^/]++)/([^/]++)/([^/]++)/f22170(*:21791)'
-                        .'|fc99/([^/]++)/([^/]++)/([^/]++)/f2fc99(*:21839)'
-                    .')'
-                    .'|a(?'
-                        .'|7cdf/([^/]++)/([^/]++)/([^/]++)/fa7cdf(*:21892)'
-                        .'|a9af/([^/]++)/([^/]++)/([^/]++)/faa9af(*:21940)'
-                    .')'
-                    .'|340f1/([^/]++)/([^/]++)/([^/]++)/f340f1(*:21990)'
-                    .'|9(?'
-                        .'|0f2a/([^/]++)/([^/]++)/([^/]++)/f90f2a(*:22042)'
-                        .'|b902/([^/]++)/([^/]++)/([^/]++)/f9b902(*:22090)'
-                    .')'
-                    .'|fd52f/([^/]++)/([^/]++)/([^/]++)/ffd52f(*:22140)'
-                    .'|61d69/([^/]++)/([^/]++)/([^/]++)/f61d69(*:22189)'
-                    .'|5f859/([^/]++)/([^/]++)/([^/]++)/f5f859(*:22238)'
-                    .'|1b6f2/([^/]++)/([^/]++)/([^/]++)/f1b6f2(*:22287)'
-                .')'
-                .'|/2(?'
-                    .'|8(?'
-                        .'|3802/([^/]++)/([^/]++)/([^/]++)/283802(*:22345)'
-                        .'|dd2c/([^/]++)/([^/]++)/([^/]++)/28dd2c(*:22393)'
-                        .'|9dff/([^/]++)/([^/]++)/([^/]++)/289dff(*:22441)'
-                        .'|f0b8/([^/]++)/([^/]++)/([^/]++)/28f0b8(*:22489)'
-                    .')'
-                    .'|a(?'
-                        .'|38a4/([^/]++)/([^/]++)/([^/]++)/2a38a4(*:22542)'
-                        .'|79ea/([^/]++)/([^/]++)/([^/]++)/2a79ea(*:22590)'
-                    .')'
-                    .'|6(?'
-                        .'|657d/([^/]++)/([^/]++)/([^/]++)/26657d(*:22643)'
-                        .'|e359/([^/]++)/([^/]++)/([^/]++)/26e359(*:22691)'
-                        .'|3373/([^/]++)/([^/]++)/([^/]++)/263373(*:22739)'
-                    .')'
-                    .'|7(?'
-                        .'|23d0/([^/]++)/([^/]++)/([^/]++)/2723d0(*:22792)'
-                        .'|4ad4/([^/]++)/([^/]++)/([^/]++)/274ad4(*:22840)'
-                    .')'
-                    .'|b(?'
-                        .'|4492/([^/]++)/([^/]++)/([^/]++)/2b4492(*:22893)'
-                        .'|24d4/([^/]++)/([^/]++)/([^/]++)/2b24d4(*:22941)'
-                    .')'
-                    .'|0(?'
-                        .'|2cb9/([^/]++)/([^/]++)/([^/]++)/202cb9(*:22994)'
-                        .'|f075/([^/]++)/([^/]++)/([^/]++)/20f075(*:23042)'
-                        .'|50e0/([^/]++)/([^/]++)/([^/]++)/2050e0(*:23090)'
-                    .')'
-                    .'|f(?'
-                        .'|2b26/([^/]++)/([^/]++)/([^/]++)/2f2b26(*:23143)'
-                        .'|5570/([^/]++)/([^/]++)/([^/]++)/2f5570(*:23191)'
-                    .')'
-                    .'|4(?'
-                        .'|b16f/([^/]++)/([^/]++)/([^/]++)/24b16f(*:23244)'
-                        .'|8e84/([^/]++)/([^/]++)/([^/]++)/248e84(*:23292)'
-                        .'|21fc/([^/]++)/([^/]++)/([^/]++)/2421fc(*:23340)'
-                    .')'
-                    .'|5(?'
-                        .'|b282/([^/]++)/([^/]++)/([^/]++)/25b282(*:23393)'
-                        .'|0cf8/([^/]++)/([^/]++)/([^/]++)/250cf8(*:23441)'
-                        .'|ddc0/([^/]++)/([^/]++)/([^/]++)/25ddc0(*:23489)'
-                    .')'
-                    .'|18a0a/([^/]++)/([^/]++)/([^/]++)/218a0a(*:23539)'
-                .')'
-                .'|/5(?'
-                    .'|4229a/([^/]++)/([^/]++)/([^/]++)/54229a(*:23594)'
-                    .'|f(?'
-                        .'|93f9/([^/]++)/([^/]++)/([^/]++)/5f93f9(*:23646)'
-                        .'|d0b3/([^/]++)/([^/]++)/([^/]++)/5fd0b3(*:23694)'
-                    .')'
-                    .'|ef(?'
-                        .'|0(?'
-                            .'|59/([^/]++)/([^/]++)/([^/]++)/5ef059(*:23750)'
-                            .'|b4/([^/]++)/([^/]++)/([^/]++)/5ef0b4(*:23796)'
-                        .')'
-                        .'|698/([^/]++)/([^/]++)/([^/]++)/5ef698(*:23844)'
-                    .')'
-                    .'|8(?'
-                        .'|78a7/([^/]++)/([^/]++)/([^/]++)/5878a7(*:23897)'
-                        .'|a2fc/([^/]++)/([^/]++)/([^/]++)/58a2fc(*:23945)'
-                        .'|238e/([^/]++)/([^/]++)/([^/]++)/58238e(*:23993)'
-                    .')'
-                    .'|7(?'
-                        .'|aeee/([^/]++)/([^/]++)/([^/]++)/57aeee(*:24046)'
-                        .'|7(?'
-                            .'|ef1/([^/]++)/([^/]++)/([^/]++)/577ef1(*:24097)'
-                            .'|bcc/([^/]++)/([^/]++)/([^/]++)/577bcc(*:24144)'
-                        .')'
-                        .'|37c6/([^/]++)/([^/]++)/([^/]++)/5737c6(*:24193)'
-                    .')'
-                    .'|3(?'
-                        .'|9fd5/([^/]++)/([^/]++)/([^/]++)/539fd5(*:24246)'
-                        .'|c3bc/([^/]++)/([^/]++)/([^/]++)/53c3bc(*:24294)'
-                    .')'
-                    .'|5(?'
-                        .'|5d67/([^/]++)/([^/]++)/([^/]++)/555d67(*:24347)'
-                        .'|0a14/([^/]++)/([^/]++)/([^/]++)/550a14(*:24395)'
-                        .'|9cb9/([^/]++)/([^/]++)/([^/]++)/559cb9(*:24443)'
-                        .'|a7cf/([^/]++)/([^/]++)/([^/]++)/55a7cf(*:24491)'
-                    .')'
-                    .'|02e4a/([^/]++)/([^/]++)/([^/]++)/502e4a(*:24541)'
-                    .'|b8add/([^/]++)/([^/]++)/([^/]++)/5b8add(*:24590)'
-                    .'|2720e/([^/]++)/([^/]++)/([^/]++)/52720e(*:24639)'
-                    .'|a4b25/([^/]++)/([^/]++)/([^/]++)/5a4b25(*:24688)'
-                    .'|1d92b/([^/]++)/([^/]++)/([^/]++)/51d92b(*:24737)'
-                    .'|98b3e/([^/]++)/([^/]++)/([^/]++)/598b3e(*:24786)'
-                .')'
-            .')/?$}sD',
-        24786 => '{^(?'
-                .'|/5(?'
-                    .'|b69b9/([^/]++)/([^/]++)/([^/]++)/5b69b9(*:24837)'
-                    .'|9(?'
-                        .'|b90e/([^/]++)/([^/]++)/([^/]++)/59b90e(*:24889)'
-                        .'|c330/([^/]++)/([^/]++)/([^/]++)/59c330(*:24937)'
-                    .')'
-                    .'|3(?'
-                        .'|fde9/([^/]++)/([^/]++)/([^/]++)/53fde9(*:24990)'
-                        .'|e3a7/([^/]++)/([^/]++)/([^/]++)/53e3a7(*:25038)'
-                    .')'
-                    .'|e(?'
-                        .'|a164/([^/]++)/([^/]++)/([^/]++)/5ea164(*:25091)'
-                        .'|3881/([^/]++)/([^/]++)/([^/]++)/5e3881(*:25139)'
-                        .'|9f92/([^/]++)/([^/]++)/([^/]++)/5e9f92(*:25187)'
-                        .'|c91a/([^/]++)/([^/]++)/([^/]++)/5ec91a(*:25235)'
-                    .')'
-                    .'|7(?'
-                        .'|3703/([^/]++)/([^/]++)/([^/]++)/573703(*:25288)'
-                        .'|51ec/([^/]++)/([^/]++)/([^/]++)/5751ec(*:25336)'
-                        .'|05e1/([^/]++)/([^/]++)/([^/]++)/5705e1(*:25384)'
-                    .')'
-                    .'|8(?'
-                        .'|ae74/([^/]++)/([^/]++)/([^/]++)/58ae74(*:25437)'
-                        .'|d4d1/([^/]++)/([^/]++)/([^/]++)/58d4d1(*:25485)'
-                        .'|07a6/([^/]++)/([^/]++)/([^/]++)/5807a6(*:25533)'
-                        .'|e4d4/([^/]++)/([^/]++)/([^/]++)/58e4d4(*:25581)'
-                    .')'
-                    .'|d(?'
-                        .'|44ee/([^/]++)/([^/]++)/([^/]++)/5d44ee(*:25634)'
-                        .'|d9db/([^/]++)/([^/]++)/([^/]++)/5dd9db(*:25682)'
-                    .')'
-                    .'|5(?'
-                        .'|b37c/([^/]++)/([^/]++)/([^/]++)/55b37c(*:25735)'
-                        .'|743c/([^/]++)/([^/]++)/([^/]++)/55743c(*:25783)'
-                        .'|6f39/([^/]++)/([^/]++)/([^/]++)/556f39(*:25831)'
-                    .')'
-                    .'|c(?'
-                        .'|0492/([^/]++)/([^/]++)/([^/]++)/5c0492(*:25884)'
-                        .'|572e/([^/]++)/([^/]++)/([^/]++)/5c572e(*:25932)'
-                        .'|9362/([^/]++)/([^/]++)/([^/]++)/5c9362(*:25980)'
-                    .')'
-                    .'|4(?'
-                        .'|8731/([^/]++)/([^/]++)/([^/]++)/548731(*:26033)'
-                        .'|a367/([^/]++)/([^/]++)/([^/]++)/54a367(*:26081)'
-                    .')'
-                    .'|0(?'
-                        .'|0e75/([^/]++)/([^/]++)/([^/]++)/500e75(*:26134)'
-                        .'|c3d7/([^/]++)/([^/]++)/([^/]++)/50c3d7(*:26182)'
-                    .')'
-                    .'|f(?'
-                        .'|2c22/([^/]++)/([^/]++)/([^/]++)/5f2c22(*:26235)'
-                        .'|0f5e/([^/]++)/([^/]++)/([^/]++)/5f0f5e(*:26283)'
-                    .')'
-                    .'|1ef18/([^/]++)/([^/]++)/([^/]++)/51ef18(*:26333)'
-                .')'
-                .'|/b(?'
-                    .'|5(?'
-                        .'|b41f/([^/]++)/([^/]++)/([^/]++)/b5b41f(*:26391)'
-                        .'|dc4e/([^/]++)/([^/]++)/([^/]++)/b5dc4e(*:26439)'
-                        .'|6a18/([^/]++)/([^/]++)/([^/]++)/b56a18(*:26487)'
-                        .'|5ec2/([^/]++)/([^/]++)/([^/]++)/b55ec2(*:26535)'
-                    .')'
-                    .'|337e8/([^/]++)/([^/]++)/([^/]++)/b337e8(*:26585)'
-                    .'|a(?'
-                        .'|2fd3/([^/]++)/([^/]++)/([^/]++)/ba2fd3(*:26637)'
-                        .'|3866/([^/]++)/([^/]++)/([^/]++)/ba3866(*:26685)'
-                    .')'
-                    .'|2(?'
-                        .'|eeb7/([^/]++)/([^/]++)/([^/]++)/b2eeb7(*:26738)'
-                        .'|f627/([^/]++)/([^/]++)/([^/]++)/b2f627(*:26786)'
-                    .')'
-                    .'|7(?'
-                        .'|3dfe/([^/]++)/([^/]++)/([^/]++)/b73dfe(*:26839)'
-                        .'|bb35/([^/]++)/([^/]++)/([^/]++)/b7bb35(*:26887)'
-                        .'|ee6f/([^/]++)/([^/]++)/([^/]++)/b7ee6f(*:26935)'
-                        .'|892f/([^/]++)/([^/]++)/([^/]++)/b7892f(*:26983)'
-                        .'|0683/([^/]++)/([^/]++)/([^/]++)/b70683(*:27031)'
-                    .')'
-                    .'|4(?'
-                        .'|288d/([^/]++)/([^/]++)/([^/]++)/b4288d(*:27084)'
-                        .'|a528/([^/]++)/([^/]++)/([^/]++)/b4a528(*:27132)'
-                    .')'
-                    .'|e(?'
-                        .'|3159/([^/]++)/([^/]++)/([^/]++)/be3159(*:27185)'
-                        .'|b22f/([^/]++)/([^/]++)/([^/]++)/beb22f(*:27233)'
-                        .'|a595/([^/]++)/([^/]++)/([^/]++)/bea595(*:27281)'
-                    .')'
-                    .'|1(?'
-                        .'|eec3/([^/]++)/([^/]++)/([^/]++)/b1eec3(*:27334)'
-                        .'|37fd/([^/]++)/([^/]++)/([^/]++)/b137fd(*:27382)'
-                    .')'
-                    .'|0(?'
-                        .'|56eb/([^/]++)/([^/]++)/([^/]++)/b056eb(*:27435)'
-                        .'|b183/([^/]++)/([^/]++)/([^/]++)/b0b183(*:27483)'
-                    .')'
-                    .'|f6276/([^/]++)/([^/]++)/([^/]++)/bf6276(*:27533)'
-                    .'|6(?'
-                        .'|edc1/([^/]++)/([^/]++)/([^/]++)/b6edc1(*:27585)'
-                        .'|a108/([^/]++)/([^/]++)/([^/]++)/b6a108(*:27633)'
-                    .')'
-                    .'|86e8d/([^/]++)/([^/]++)/([^/]++)/b86e8d(*:27683)'
-                .')'
-                .'|/2(?'
-                    .'|8(?'
-                        .'|5e19/([^/]++)/([^/]++)/([^/]++)/285e19(*:27741)'
-                        .'|2(?'
-                            .'|3f4/([^/]++)/([^/]++)/([^/]++)/2823f4(*:27792)'
-                            .'|67a/([^/]++)/([^/]++)/([^/]++)/28267a(*:27839)'
-                        .')'
-                        .'|8cc0/([^/]++)/([^/]++)/([^/]++)/288cc0(*:27888)'
-                        .'|7e03/([^/]++)/([^/]++)/([^/]++)/287e03(*:27936)'
-                    .')'
-                    .'|d(?'
-                        .'|6cc4/([^/]++)/([^/]++)/([^/]++)/2d6cc4(*:27989)'
-                        .'|ea61/([^/]++)/([^/]++)/([^/]++)/2dea61(*:28037)'
-                        .'|ace7/([^/]++)/([^/]++)/([^/]++)/2dace7(*:28085)'
-                    .')'
-                    .'|b(?'
-                        .'|8a61/([^/]++)/([^/]++)/([^/]++)/2b8a61(*:28138)'
-                        .'|b232/([^/]++)/([^/]++)/([^/]++)/2bb232(*:28186)'
-                        .'|a596/([^/]++)/([^/]++)/([^/]++)/2ba596(*:28234)'
-                        .'|cab9/([^/]++)/([^/]++)/([^/]++)/2bcab9(*:28282)'
-                    .')'
-                    .'|9(?'
-                        .'|8f95/([^/]++)/([^/]++)/([^/]++)/298f95(*:28335)'
-                        .'|1597/([^/]++)/([^/]++)/([^/]++)/291597(*:28383)'
-                    .')'
-                    .'|58be1/([^/]++)/([^/]++)/([^/]++)/258be1(*:28433)'
-                    .'|3(?'
-                        .'|3509/([^/]++)/([^/]++)/([^/]++)/233509(*:28485)'
-                        .'|ce18/([^/]++)/([^/]++)/([^/]++)/23ce18(*:28533)'
-                    .')'
-                    .'|6(?'
-                        .'|dd0d/([^/]++)/([^/]++)/([^/]++)/26dd0d(*:28586)'
-                        .'|408f/([^/]++)/([^/]++)/([^/]++)/26408f(*:28634)'
-                    .')'
-                    .'|f(?'
-                        .'|37d1/([^/]++)/([^/]++)/([^/]++)/2f37d1(*:28687)'
-                        .'|885d/([^/]++)/([^/]++)/([^/]++)/2f885d(*:28735)'
-                    .')'
-                    .'|2(?'
-                        .'|91d2/([^/]++)/([^/]++)/([^/]++)/2291d2(*:28788)'
-                        .'|ac3c/([^/]++)/([^/]++)/([^/]++)/22ac3c(*:28836)'
-                        .'|fb0c/([^/]++)/([^/]++)/([^/]++)/22fb0c(*:28884)'
-                    .')'
-                    .'|4(?'
-                        .'|6819/([^/]++)/([^/]++)/([^/]++)/246819(*:28937)'
-                        .'|896e/([^/]++)/([^/]++)/([^/]++)/24896e(*:28985)'
-                    .')'
-                    .'|a(?'
-                        .'|fe45/([^/]++)/([^/]++)/([^/]++)/2afe45(*:29038)'
-                        .'|084e/([^/]++)/([^/]++)/([^/]++)/2a084e(*:29086)'
-                        .'|9d12/([^/]++)/([^/]++)/([^/]++)/2a9d12(*:29134)'
-                        .'|b564/([^/]++)/([^/]++)/([^/]++)/2ab564(*:29182)'
-                    .')'
-                    .'|1(?'
-                        .'|7eed/([^/]++)/([^/]++)/([^/]++)/217eed(*:29235)'
-                        .'|0f76/([^/]++)/([^/]++)/([^/]++)/210f76(*:29283)'
-                    .')'
-                    .'|e65f2/([^/]++)/([^/]++)/([^/]++)/2e65f2(*:29333)'
-                    .'|ca65f/([^/]++)/([^/]++)/([^/]++)/2ca65f(*:29382)'
-                    .'|0aee3/([^/]++)/([^/]++)/([^/]++)/20aee3(*:29431)'
-                .')'
-                .'|/e(?'
-                    .'|8(?'
-                        .'|c065/([^/]++)/([^/]++)/([^/]++)/e8c065(*:29489)'
-                        .'|20a4/([^/]++)/([^/]++)/([^/]++)/e820a4(*:29537)'
-                    .')'
-                    .'|2(?'
-                        .'|230b/([^/]++)/([^/]++)/([^/]++)/e2230b(*:29590)'
-                        .'|a2dc/([^/]++)/([^/]++)/([^/]++)/e2a2dc(*:29638)'
-                        .'|05ee/([^/]++)/([^/]++)/([^/]++)/e205ee(*:29686)'
-                    .')'
-                    .'|b(?'
-                        .'|d962/([^/]++)/([^/]++)/([^/]++)/ebd962(*:29739)'
-                        .'|6fdc/([^/]++)/([^/]++)/([^/]++)/eb6fdc(*:29787)'
-                    .')'
-                    .'|d(?'
-                        .'|265b/([^/]++)/([^/]++)/([^/]++)/ed265b(*:29840)'
-                        .'|fbe1/([^/]++)/([^/]++)/([^/]++)/edfbe1(*:29888)'
-                        .'|e7e2/([^/]++)/([^/]++)/([^/]++)/ede7e2(*:29936)'
-                    .')'
-                    .'|6(?'
-                        .'|b4b2/([^/]++)/([^/]++)/([^/]++)/e6b4b2(*:29989)'
-                        .'|cb2a/([^/]++)/([^/]++)/([^/]++)/e6cb2a(*:30037)'
-                    .')'
-                    .'|5(?'
-                        .'|f6ad/([^/]++)/([^/]++)/([^/]++)/e5f6ad(*:30090)'
-                        .'|55eb/([^/]++)/([^/]++)/([^/]++)/e555eb(*:30138)'
-                        .'|841d/([^/]++)/([^/]++)/([^/]++)/e5841d(*:30186)'
-                        .'|7c6b/([^/]++)/([^/]++)/([^/]++)/e57c6b(*:30234)'
-                    .')'
-                    .'|aae33/([^/]++)/([^/]++)/([^/]++)/eaae33(*:30284)'
-                    .'|4(?'
-                        .'|bb4c/([^/]++)/([^/]++)/([^/]++)/e4bb4c(*:30336)'
-                        .'|9b8b/([^/]++)/([^/]++)/([^/]++)/e49b8b(*:30384)'
-                    .')'
-                    .'|7(?'
-                        .'|0611/([^/]++)/([^/]++)/([^/]++)/e70611(*:30437)'
-                        .'|f8a7/([^/]++)/([^/]++)/([^/]++)/e7f8a7(*:30485)'
-                        .'|44f9/([^/]++)/([^/]++)/([^/]++)/e744f9(*:30533)'
-                    .')'
-                    .'|9(?'
-                        .'|95f9/([^/]++)/([^/]++)/([^/]++)/e995f9(*:30586)'
-                        .'|4550/([^/]++)/([^/]++)/([^/]++)/e94550(*:30634)'
-                        .'|7ee2/([^/]++)/([^/]++)/([^/]++)/e97ee2(*:30682)'
-                    .')'
-                    .'|e(?'
-                        .'|fc9e/([^/]++)/([^/]++)/([^/]++)/eefc9e(*:30735)'
-                        .'|b69a/([^/]++)/([^/]++)/([^/]++)/eeb69a(*:30783)'
-                    .')'
-                    .'|0(?'
-                        .'|7413/([^/]++)/([^/]++)/([^/]++)/e07413(*:30836)'
-                        .'|cf1f/([^/]++)/([^/]++)/([^/]++)/e0cf1f(*:30884)'
-                        .'|ec45/([^/]++)/([^/]++)/([^/]++)/e0ec45(*:30932)'
-                    .')'
-                    .'|f4e3b/([^/]++)/([^/]++)/([^/]++)/ef4e3b(*:30982)'
-                    .'|c5aa0/([^/]++)/([^/]++)/([^/]++)/ec5aa0(*:31031)'
-                .')'
-                .'|/f(?'
-                    .'|f(?'
-                        .'|4d5f/([^/]++)/([^/]++)/([^/]++)/ff4d5f(*:31089)'
-                        .'|eabd/([^/]++)/([^/]++)/([^/]++)/ffeabd(*:31137)'
-                    .')'
-                    .'|3(?'
-                        .'|f27a/([^/]++)/([^/]++)/([^/]++)/f3f27a(*:31190)'
-                        .'|8762/([^/]++)/([^/]++)/([^/]++)/f38762(*:31238)'
-                    .')'
-                    .'|4(?'
-                        .'|be00/([^/]++)/([^/]++)/([^/]++)/f4be00(*:31291)'
-                        .'|5526/([^/]++)/([^/]++)/([^/]++)/f45526(*:31339)'
-                        .'|7d0a/([^/]++)/([^/]++)/([^/]++)/f47d0a(*:31387)'
-                    .')'
-                    .'|0(?'
-                        .'|e52b/([^/]++)/([^/]++)/([^/]++)/f0e52b(*:31440)'
-                        .'|adc8/([^/]++)/([^/]++)/([^/]++)/f0adc8(*:31488)'
-                    .')'
-                    .'|de926/([^/]++)/([^/]++)/([^/]++)/fde926(*:31538)'
-                    .'|5(?'
-                        .'|deae/([^/]++)/([^/]++)/([^/]++)/f5deae(*:31590)'
-                        .'|7a2f/([^/]++)/([^/]++)/([^/]++)/f57a2f(*:31638)'
-                    .')'
-                    .'|7(?'
-                        .'|6a89/([^/]++)/([^/]++)/([^/]++)/f76a89(*:31691)'
-                        .'|9921/([^/]++)/([^/]++)/([^/]++)/f79921(*:31739)'
-                        .'|e905/([^/]++)/([^/]++)/([^/]++)/f7e905(*:31787)'
-                    .')'
-                    .'|2(?'
-                        .'|9c21/([^/]++)/([^/]++)/([^/]++)/f29c21(*:31840)'
-                        .'|201f/([^/]++)/([^/]++)/([^/]++)/f2201f(*:31888)'
-                    .')'
-                    .'|a(?'
-                        .'|e0b2/([^/]++)/([^/]++)/([^/]++)/fae0b2(*:31941)'
-                        .'|14d4/([^/]++)/([^/]++)/([^/]++)/fa14d4(*:31989)'
-                        .'|3a3c/([^/]++)/([^/]++)/([^/]++)/fa3a3c(*:32037)'
-                        .'|83a1/([^/]++)/([^/]++)/([^/]++)/fa83a1(*:32085)'
-                    .')'
-                    .'|c(?'
-                        .'|cb3c/([^/]++)/([^/]++)/([^/]++)/fccb3c(*:32138)'
-                        .'|8001/([^/]++)/([^/]++)/([^/]++)/fc8001(*:32186)'
-                        .'|3cf4/([^/]++)/([^/]++)/([^/]++)/fc3cf4(*:32234)'
-                        .'|4930/([^/]++)/([^/]++)/([^/]++)/fc4930(*:32282)'
-                    .')'
-                    .'|64eac/([^/]++)/([^/]++)/([^/]++)/f64eac(*:32332)'
-                    .'|b8970/([^/]++)/([^/]++)/([^/]++)/fb8970(*:32381)'
-                    .'|1c159/([^/]++)/([^/]++)/([^/]++)/f1c159(*:32430)'
-                    .'|9(?'
-                        .'|028f/([^/]++)/([^/]++)/([^/]++)/f9028f(*:32482)'
-                        .'|a40a/([^/]++)/([^/]++)/([^/]++)/f9a40a(*:32530)'
-                    .')'
-                    .'|e(?'
-                        .'|8c15/([^/]++)/([^/]++)/([^/]++)/fe8c15(*:32583)'
-                        .'|c8d4/([^/]++)/([^/]++)/([^/]++)/fec8d4(*:32631)'
-                        .'|7ee8/([^/]++)/([^/]++)/([^/]++)/fe7ee8(*:32679)'
-                    .')'
-                .')'
-                .'|/3(?'
-                    .'|8(?'
-                        .'|9(?'
-                            .'|bc7/([^/]++)/([^/]++)/([^/]++)/389bc7(*:32741)'
-                            .'|13e/([^/]++)/([^/]++)/([^/]++)/38913e(*:32788)'
-                        .')'
-                        .'|71bd/([^/]++)/([^/]++)/([^/]++)/3871bd(*:32837)'
-                    .')'
-                    .'|d(?'
-                        .'|c487/([^/]++)/([^/]++)/([^/]++)/3dc487(*:32890)'
-                        .'|2d8c/([^/]++)/([^/]++)/([^/]++)/3d2d8c(*:32938)'
-                        .'|8e28/([^/]++)/([^/]++)/([^/]++)/3d8e28(*:32986)'
-                        .'|f1d4/([^/]++)/([^/]++)/([^/]++)/3df1d4(*:33034)'
-                    .')'
-                    .'|7f0e8/([^/]++)/([^/]++)/([^/]++)/37f0e8(*:33084)'
-                    .'|3(?'
-                        .'|e807/([^/]++)/([^/]++)/([^/]++)/33e807(*:33136)'
-                        .'|28bd/([^/]++)/([^/]++)/([^/]++)/3328bd(*:33184)'
-                    .')'
-                    .'|a(?'
-                        .'|0(?'
-                            .'|772/([^/]++)/([^/]++)/([^/]++)/3a0772(*:33240)'
-                            .'|66b/([^/]++)/([^/]++)/([^/]++)/3a066b(*:33287)'
-                        .')'
-                        .'|835d/([^/]++)/([^/]++)/([^/]++)/3a835d(*:33336)'
-                    .')'
-                    .'|0(?'
-                        .'|bb38/([^/]++)/([^/]++)/([^/]++)/30bb38(*:33389)'
-                        .'|3ed4/([^/]++)/([^/]++)/([^/]++)/303ed4(*:33437)'
-                        .'|ef30/([^/]++)/([^/]++)/([^/]++)/30ef30(*:33485)'
-                        .'|1ad0/([^/]++)/([^/]++)/([^/]++)/301ad0(*:33533)'
-                    .')'
-                    .'|4(?'
-                        .'|9389/([^/]++)/([^/]++)/([^/]++)/349389(*:33586)'
-                        .'|35c3/([^/]++)/([^/]++)/([^/]++)/3435c3(*:33634)'
-                    .')'
-                    .'|62(?'
-                        .'|1f1/([^/]++)/([^/]++)/([^/]++)/3621f1(*:33687)'
-                        .'|e80/([^/]++)/([^/]++)/([^/]++)/362e80(*:33734)'
-                    .')'
-                    .'|5(?'
-                        .'|cf86/([^/]++)/([^/]++)/([^/]++)/35cf86(*:33787)'
-                        .'|2407/([^/]++)/([^/]++)/([^/]++)/352407(*:33835)'
-                    .')'
-                    .'|2b30a/([^/]++)/([^/]++)/([^/]++)/32b30a(*:33885)'
-                    .'|1839b/([^/]++)/([^/]++)/([^/]++)/31839b(*:33934)'
-                    .'|b(?'
-                        .'|5dca/([^/]++)/([^/]++)/([^/]++)/3b5dca(*:33986)'
-                        .'|3dba/([^/]++)/([^/]++)/([^/]++)/3b3dba(*:34034)'
-                    .')'
-                    .'|e89eb/([^/]++)/([^/]++)/([^/]++)/3e89eb(*:34084)'
-                    .'|cef96/([^/]++)/([^/]++)/([^/]++)/3cef96(*:34133)'
-                .')'
-                .'|/0(?'
-                    .'|8(?'
-                        .'|7408/([^/]++)/([^/]++)/([^/]++)/087408(*:34191)'
-                        .'|b255/([^/]++)/([^/]++)/([^/]++)/08b255(*:34239)'
-                        .'|c543/([^/]++)/([^/]++)/([^/]++)/08c543(*:34287)'
-                        .'|d986/([^/]++)/([^/]++)/([^/]++)/08d986(*:34335)'
-                        .'|419b/([^/]++)/([^/]++)/([^/]++)/08419b(*:34383)'
-                    .')'
-                    .'|7(?'
-                        .'|563a/([^/]++)/([^/]++)/([^/]++)/07563a(*:34436)'
-                        .'|6a0c/([^/]++)/([^/]++)/([^/]++)/076a0c(*:34484)'
-                        .'|a96b/([^/]++)/([^/]++)/([^/]++)/07a96b(*:34532)'
-                        .'|c580/([^/]++)/([^/]++)/([^/]++)/07c580(*:34580)'
-                        .'|8719/([^/]++)/([^/]++)/([^/]++)/078719(*:34628)'
-                    .')'
-                    .'|f(?'
-                        .'|cbc6/([^/]++)/([^/]++)/([^/]++)/0fcbc6(*:34681)'
-                        .'|9661/([^/]++)/([^/]++)/([^/]++)/0f9661(*:34729)'
-                        .'|f(?'
-                            .'|39b/([^/]++)/([^/]++)/([^/]++)/0ff39b(*:34780)'
-                            .'|803/([^/]++)/([^/]++)/([^/]++)/0ff803(*:34827)'
-                        .')'
-                        .'|840b/([^/]++)/([^/]++)/([^/]++)/0f840b(*:34876)'
-                    .')'
-                    .'|1(?'
-                        .'|f78b/([^/]++)/([^/]++)/([^/]++)/01f78b(*:34929)'
-                        .'|3a00/([^/]++)/([^/]++)/([^/]++)/013a00(*:34977)'
-                        .'|8825/([^/]++)/([^/]++)/([^/]++)/018825(*:35025)'
-                    .')'
-                    .'|6(?'
-                        .'|9(?'
-                            .'|d3b/([^/]++)/([^/]++)/([^/]++)/069d3b(*:35081)'
-                            .'|97f/([^/]++)/([^/]++)/([^/]++)/06997f(*:35128)'
-                        .')'
-                        .'|1412/([^/]++)/([^/]++)/([^/]++)/061412(*:35177)'
-                    .')'
-                    .'|4(?'
-                        .'|ecb1/([^/]++)/([^/]++)/([^/]++)/04ecb1(*:35230)'
-                        .'|3c3d/([^/]++)/([^/]++)/([^/]++)/043c3d(*:35278)'
-                    .')'
-                    .'|0ac8e/([^/]++)/([^/]++)/([^/]++)/00ac8e(*:35328)'
-                    .'|5(?'
-                        .'|1e4e/([^/]++)/([^/]++)/([^/]++)/051e4e(*:35380)'
-                        .'|37fb/([^/]++)/([^/]++)/([^/]++)/0537fb(*:35428)'
-                    .')'
-                    .'|d(?'
-                        .'|7de1/([^/]++)/([^/]++)/([^/]++)/0d7de1(*:35481)'
-                        .'|3180/([^/]++)/([^/]++)/([^/]++)/0d3180(*:35529)'
-                        .'|0871/([^/]++)/([^/]++)/([^/]++)/0d0871(*:35577)'
-                    .')'
-                    .'|cb929/([^/]++)/([^/]++)/([^/]++)/0cb929(*:35627)'
-                    .'|2(?'
-                        .'|a32a/([^/]++)/([^/]++)/([^/]++)/02a32a(*:35679)'
-                        .'|4d7f/([^/]++)/([^/]++)/([^/]++)/024d7f(*:35727)'
-                    .')'
-                    .'|efe32/([^/]++)/([^/]++)/([^/]++)/0efe32(*:35777)'
-                    .'|a113e/([^/]++)/([^/]++)/([^/]++)/0a113e(*:35826)'
-                    .'|b8aff/([^/]++)/([^/]++)/([^/]++)/0b8aff(*:35875)'
-                .')'
-                .'|/a(?'
-                    .'|7(?'
-                        .'|6088/([^/]++)/([^/]++)/([^/]++)/a76088(*:35933)'
-                        .'|aeed/([^/]++)/([^/]++)/([^/]++)/a7aeed(*:35981)'
-                        .'|33fa/([^/]++)/([^/]++)/([^/]++)/a733fa(*:36029)'
-                    .')'
-                    .'|9a(?'
-                        .'|665/([^/]++)/([^/]++)/([^/]++)/a9a665(*:36082)'
-                        .'|1d5/([^/]++)/([^/]++)/([^/]++)/a9a1d5(*:36129)'
-                    .')'
-                    .'|8(?'
-                        .'|6c45/([^/]++)/([^/]++)/([^/]++)/a86c45(*:36182)'
-                        .'|849b/([^/]++)/([^/]++)/([^/]++)/a8849b(*:36230)'
-                        .'|e(?'
-                            .'|864/([^/]++)/([^/]++)/([^/]++)/a8e864(*:36281)'
-                            .'|cba/([^/]++)/([^/]++)/([^/]++)/a8ecba(*:36328)'
-                        .')'
-                    .')'
-                    .'|c(?'
-                        .'|c3e0/([^/]++)/([^/]++)/([^/]++)/acc3e0(*:36382)'
-                        .'|f4b8/([^/]++)/([^/]++)/([^/]++)/acf4b8(*:36430)'
-                    .')'
-                    .'|b(?'
-                        .'|d815/([^/]++)/([^/]++)/([^/]++)/abd815(*:36483)'
-                        .'|233b/([^/]++)/([^/]++)/([^/]++)/ab233b(*:36531)'
-                        .'|a3b6/([^/]++)/([^/]++)/([^/]++)/aba3b6(*:36579)'
-                        .'|88b1/([^/]++)/([^/]++)/([^/]++)/ab88b1(*:36627)'
-                    .')'
-                    .'|5(?'
-                        .'|3240/([^/]++)/([^/]++)/([^/]++)/a53240(*:36680)'
-                        .'|cdd4/([^/]++)/([^/]++)/([^/]++)/a5cdd4(*:36728)'
-                    .')'
-                    .'|f(?'
-                        .'|d(?'
-                            .'|483/([^/]++)/([^/]++)/([^/]++)/afd483(*:36784)'
-                            .'|a33/([^/]++)/([^/]++)/([^/]++)/afda33(*:36831)'
-                        .')'
-                        .'|f162/([^/]++)/([^/]++)/([^/]++)/aff162(*:36880)'
-                    .')'
-                    .'|e(?'
-                        .'|0eb3/([^/]++)/([^/]++)/([^/]++)/ae0eb3(*:36933)'
-                        .'|b313/([^/]++)/([^/]++)/([^/]++)/aeb313(*:36981)'
-                    .')'
-                    .'|1(?'
-                        .'|d33d/([^/]++)/([^/]++)/([^/]++)/a1d33d(*:37034)'
-                        .'|140a/([^/]++)/([^/]++)/([^/]++)/a1140a(*:37082)'
-                    .')'
-                    .'|ddfa9/([^/]++)/([^/]++)/([^/]++)/addfa9(*:37132)'
-                    .'|6(?'
-                        .'|7f09/([^/]++)/([^/]++)/([^/]++)/a67f09(*:37184)'
-                        .'|4c94/([^/]++)/([^/]++)/([^/]++)/a64c94(*:37232)'
-                    .')'
-                    .'|a169b/([^/]++)/([^/]++)/([^/]++)/aa169b(*:37282)'
-                    .'|4300b/([^/]++)/([^/]++)/([^/]++)/a4300b(*:37331)'
-                    .'|3d68b/([^/]++)/([^/]++)/([^/]++)/a3d68b(*:37380)'
-                .')'
-                .'|/1(?'
-                    .'|0(?'
-                        .'|a(?'
-                            .'|7cd/([^/]++)/([^/]++)/([^/]++)/10a7cd(*:37441)'
-                            .'|5ab/([^/]++)/([^/]++)/([^/]++)/10a5ab(*:37488)'
-                        .')'
-                        .'|9a0c/([^/]++)/([^/]++)/([^/]++)/109a0c(*:37537)'
-                    .')'
-                    .'|3f320/([^/]++)/([^/]++)/([^/]++)/13f320(*:37587)'
-                    .'|6(?'
-                        .'|c222/([^/]++)/([^/]++)/([^/]++)/16c222(*:37639)'
-                        .'|8908/([^/]++)/([^/]++)/([^/]++)/168908(*:37687)'
-                    .')'
-                    .'|5(?'
-                        .'|de21/([^/]++)/([^/]++)/([^/]++)/15de21(*:37740)'
-                        .'|95af/([^/]++)/([^/]++)/([^/]++)/1595af(*:37788)'
-                    .')'
-                    .'|1(?'
-                        .'|b921/([^/]++)/([^/]++)/([^/]++)/11b921(*:37841)'
-                        .'|4193/([^/]++)/([^/]++)/([^/]++)/114193(*:37889)'
-                    .')'
-                    .'|bb91f/([^/]++)/([^/]++)/([^/]++)/1bb91f(*:37939)'
-                    .'|7(?'
-                        .'|28ef/([^/]++)/([^/]++)/([^/]++)/1728ef(*:37991)'
-                        .'|c276/([^/]++)/([^/]++)/([^/]++)/17c276(*:38039)'
-                        .'|0c94/([^/]++)/([^/]++)/([^/]++)/170c94(*:38087)'
-                    .')'
-                    .'|85(?'
-                        .'|c29/([^/]++)/([^/]++)/([^/]++)/185c29(*:38140)'
-                        .'|e65/([^/]++)/([^/]++)/([^/]++)/185e65(*:38187)'
-                    .')'
-                    .'|9(?'
-                        .'|2fc0/([^/]++)/([^/]++)/([^/]++)/192fc0(*:38240)'
-                        .'|b(?'
-                            .'|c91/([^/]++)/([^/]++)/([^/]++)/19bc91(*:38291)'
-                            .'|650/([^/]++)/([^/]++)/([^/]++)/19b650(*:38338)'
-                        .')'
-                        .'|05ae/([^/]++)/([^/]++)/([^/]++)/1905ae(*:38387)'
-                    .')'
-                    .'|e(?'
-                        .'|cfb4/([^/]++)/([^/]++)/([^/]++)/1ecfb4(*:38440)'
-                        .'|fa39/([^/]++)/([^/]++)/([^/]++)/1efa39(*:38488)'
-                        .'|056d/([^/]++)/([^/]++)/([^/]++)/1e056d(*:38536)'
-                    .')'
-                    .'|aa48f/([^/]++)/([^/]++)/([^/]++)/1aa48f(*:38586)'
-                    .'|f(?'
-                        .'|c214/([^/]++)/([^/]++)/([^/]++)/1fc214(*:38638)'
-                        .'|5089/([^/]++)/([^/]++)/([^/]++)/1f5089(*:38686)'
-                        .'|4477/([^/]++)/([^/]++)/([^/]++)/1f4477(*:38734)'
-                    .')'
-                    .'|c(?'
-                        .'|c363/([^/]++)/([^/]++)/([^/]++)/1cc363(*:38787)'
-                        .'|1d4d/([^/]++)/([^/]++)/([^/]++)/1c1d4d(*:38835)'
-                        .'|e927/([^/]++)/([^/]++)/([^/]++)/1ce927(*:38883)'
-                    .')'
-                .')'
-                .'|/6(?'
-                    .'|3(?'
-                        .'|538f/([^/]++)/([^/]++)/([^/]++)/63538f(*:38942)'
-                        .'|2cee/([^/]++)/([^/]++)/([^/]++)/632cee(*:38990)'
-                        .'|95eb/([^/]++)/([^/]++)/([^/]++)/6395eb(*:39038)'
-                    .')'
-                    .'|9(?'
-                        .'|421f/([^/]++)/([^/]++)/([^/]++)/69421f(*:39091)'
-                        .'|2f93/([^/]++)/([^/]++)/([^/]++)/692f93(*:39139)'
-                    .')'
-                    .'|5658f/([^/]++)/([^/]++)/([^/]++)/65658f(*:39189)'
-                    .'|4(?'
-                        .'|7bba/([^/]++)/([^/]++)/([^/]++)/647bba(*:39241)'
-                        .'|223c/([^/]++)/([^/]++)/([^/]++)/64223c(*:39289)'
-                    .')'
-                    .'|e(?'
-                        .'|2713/([^/]++)/([^/]++)/([^/]++)/6e2713(*:39342)'
-                        .'|0721/([^/]++)/([^/]++)/([^/]++)/6e0721(*:39390)'
-                        .'|7b33/([^/]++)/([^/]++)/([^/]++)/6e7b33(*:39438)'
-                    .')'
-                    .'|0(?'
-                        .'|5ff7/([^/]++)/([^/]++)/([^/]++)/605ff7(*:39491)'
-                        .'|8159/([^/]++)/([^/]++)/([^/]++)/608159(*:39539)'
-                    .')'
-                    .'|a(?'
-                        .'|ca97/([^/]++)/([^/]++)/([^/]++)/6aca97(*:39592)'
-                        .'|10bb/([^/]++)/([^/]++)/([^/]++)/6a10bb(*:39640)'
-                        .'|ab12/([^/]++)/([^/]++)/([^/]++)/6aab12(*:39688)'
-                    .')'
-                    .'|7(?'
-                        .'|66aa/([^/]++)/([^/]++)/([^/]++)/6766aa(*:39741)'
-                        .'|e103/([^/]++)/([^/]++)/([^/]++)/67e103(*:39789)'
-                        .'|d(?'
-                            .'|96d/([^/]++)/([^/]++)/([^/]++)/67d96d(*:39840)'
-                            .'|16d/([^/]++)/([^/]++)/([^/]++)/67d16d(*:39887)'
-                        .')'
-                        .'|0e8a/([^/]++)/([^/]++)/([^/]++)/670e8a(*:39936)'
-                        .'|7e09/([^/]++)/([^/]++)/([^/]++)/677e09(*:39984)'
-                    .')'
-                    .'|8(?'
-                        .'|264b/([^/]++)/([^/]++)/([^/]++)/68264b(*:40037)'
-                        .'|053a/([^/]++)/([^/]++)/([^/]++)/68053a(*:40085)'
-                    .')'
-                    .'|c(?'
-                        .'|2979/([^/]++)/([^/]++)/([^/]++)/6c2979(*:40138)'
-                        .'|d67d/([^/]++)/([^/]++)/([^/]++)/6cd67d(*:40186)'
-                        .'|3cf7/([^/]++)/([^/]++)/([^/]++)/6c3cf7(*:40234)'
-                        .'|fe0e/([^/]++)/([^/]++)/([^/]++)/6cfe0e(*:40282)'
-                    .')'
-                    .'|bc24f/([^/]++)/([^/]++)/([^/]++)/6bc24f(*:40332)'
-                    .'|f2268/([^/]++)/([^/]++)/([^/]++)/6f2268(*:40381)'
-                    .'|1b4a6/([^/]++)/([^/]++)/([^/]++)/61b4a6(*:40430)'
-                    .'|21461/([^/]++)/([^/]++)/([^/]++)/621461(*:40479)'
-                    .'|d0f84/([^/]++)/([^/]++)/([^/]++)/6d0f84(*:40528)'
-                    .'|60229/([^/]++)/([^/]++)/([^/]++)/660229(*:40577)'
-                .')'
-                .'|/c(?'
-                    .'|f(?'
-                        .'|6735/([^/]++)/([^/]++)/([^/]++)/cf6735(*:40635)'
-                        .'|bce4/([^/]++)/([^/]++)/([^/]++)/cfbce4(*:40683)'
-                    .')'
-                    .'|3(?'
-                        .'|99(?'
-                            .'|86/([^/]++)/([^/]++)/([^/]++)/c39986(*:40739)'
-                            .'|2e/([^/]++)/([^/]++)/([^/]++)/c3992e(*:40785)'
-                        .')'
-                        .'|61bc/([^/]++)/([^/]++)/([^/]++)/c361bc(*:40834)'
-                        .'|2d9b/([^/]++)/([^/]++)/([^/]++)/c32d9b(*:40882)'
-                    .')'
-                    .'|75b6f/([^/]++)/([^/]++)/([^/]++)/c75b6f(*:40932)'
-                    .'|c(?'
-                        .'|b(?'
-                            .'|1d4/([^/]++)/([^/]++)/([^/]++)/ccb1d4(*:40987)'
-                            .'|098/([^/]++)/([^/]++)/([^/]++)/ccb098(*:41034)'
-                        .')'
-                        .'|c0aa/([^/]++)/([^/]++)/([^/]++)/ccc0aa(*:41083)'
-                        .'|1aa4/([^/]++)/([^/]++)/([^/]++)/cc1aa4(*:41131)'
-                    .')'
-                    .'|b(?'
-                        .'|cb58/([^/]++)/([^/]++)/([^/]++)/cbcb58(*:41184)'
-                        .'|b6a3/([^/]++)/([^/]++)/([^/]++)/cbb6a3(*:41232)'
-                    .')'
-                    .'|9892a/([^/]++)/([^/]++)/([^/]++)/c9892a(*:41282)'
-                    .'|6e19e/([^/]++)/([^/]++)/([^/]++)/c6e19e(*:41331)'
-                    .'|dc0d6/([^/]++)/([^/]++)/([^/]++)/cdc0d6(*:41380)'
-                    .'|5ab0b/([^/]++)/([^/]++)/([^/]++)/c5ab0b(*:41429)'
-                    .'|a(?'
-                        .'|9c26/([^/]++)/([^/]++)/([^/]++)/ca9c26(*:41481)'
-                        .'|8155/([^/]++)/([^/]++)/([^/]++)/ca8155(*:41529)'
-                        .'|7591/([^/]++)/([^/]++)/([^/]++)/ca7591(*:41577)'
-                    .')'
-                    .'|0(?'
-                        .'|6d06/([^/]++)/([^/]++)/([^/]++)/c06d06(*:41630)'
-                        .'|f168/([^/]++)/([^/]++)/([^/]++)/c0f168(*:41678)'
-                    .')'
-                    .'|8(?'
-                        .'|ed21/([^/]++)/([^/]++)/([^/]++)/c8ed21(*:41731)'
-                        .'|fbbc/([^/]++)/([^/]++)/([^/]++)/c8fbbc(*:41779)'
-                        .'|c41c/([^/]++)/([^/]++)/([^/]++)/c8c41c(*:41827)'
-                    .')'
-                    .'|15da1/([^/]++)/([^/]++)/([^/]++)/c15da1(*:41877)'
-                    .'|2(?'
-                        .'|626d/([^/]++)/([^/]++)/([^/]++)/c2626d(*:41929)'
-                        .'|aee8/([^/]++)/([^/]++)/([^/]++)/c2aee8(*:41977)'
-                        .'|2abf/([^/]++)/([^/]++)/([^/]++)/c22abf(*:42025)'
-                    .')'
-                    .'|e78d1/([^/]++)/([^/]++)/([^/]++)/ce78d1(*:42075)'
-                    .'|4(?'
-                        .'|015b/([^/]++)/([^/]++)/([^/]++)/c4015b(*:42127)'
-                        .'|b31c/([^/]++)/([^/]++)/([^/]++)/c4b31c(*:42175)'
-                    .')'
-                .')'
-                .'|/8(?'
-                    .'|5(?'
-                        .'|422a/([^/]++)/([^/]++)/([^/]++)/85422a(*:42234)'
-                        .'|1ddf/([^/]++)/([^/]++)/([^/]++)/851ddf(*:42282)'
-                        .'|fc37/([^/]++)/([^/]++)/([^/]++)/85fc37(*:42330)'
-                    .')'
-                    .'|1(?'
-                        .'|4481/([^/]++)/([^/]++)/([^/]++)/814481(*:42383)'
-                        .'|e74d/([^/]++)/([^/]++)/([^/]++)/81e74d(*:42431)'
-                    .')'
-                    .'|d(?'
-                        .'|3(?'
-                            .'|420/([^/]++)/([^/]++)/([^/]++)/8d3420(*:42487)'
-                            .'|17b/([^/]++)/([^/]++)/([^/]++)/8d317b(*:42534)'
-                        .')'
-                        .'|f707/([^/]++)/([^/]++)/([^/]++)/8df707(*:42583)'
-                        .'|6dc3/([^/]++)/([^/]++)/([^/]++)/8d6dc3(*:42631)'
-                    .')'
-                    .'|e(?'
-                        .'|efcf/([^/]++)/([^/]++)/([^/]++)/8eefcf(*:42684)'
-                        .'|bda5/([^/]++)/([^/]++)/([^/]++)/8ebda5(*:42732)'
-                        .'|82ab/([^/]++)/([^/]++)/([^/]++)/8e82ab(*:42780)'
-                    .')'
-                    .'|b(?'
-                        .'|16eb/([^/]++)/([^/]++)/([^/]++)/8b16eb(*:42833)'
-                        .'|6dd7/([^/]++)/([^/]++)/([^/]++)/8b6dd7(*:42881)'
-                        .'|5040/([^/]++)/([^/]++)/([^/]++)/8b5040(*:42929)'
-                    .')'
-                    .'|c(?'
-                        .'|7bbb/([^/]++)/([^/]++)/([^/]++)/8c7bbb(*:42982)'
-                        .'|6744/([^/]++)/([^/]++)/([^/]++)/8c6744(*:43030)'
-                        .'|235f/([^/]++)/([^/]++)/([^/]++)/8c235f(*:43078)'
-                    .')'
-                    .'|8(?'
-                        .'|4d24/([^/]++)/([^/]++)/([^/]++)/884d24(*:43131)'
-                        .'|ae63/([^/]++)/([^/]++)/([^/]++)/88ae63(*:43179)'
-                    .')'
-                    .'|7(?'
-                        .'|5715/([^/]++)/([^/]++)/([^/]++)/875715(*:43232)'
-                        .'|2488/([^/]++)/([^/]++)/([^/]++)/872488(*:43280)'
-                    .')'
-                    .'|4(?'
-                        .'|1172/([^/]++)/([^/]++)/([^/]++)/841172(*:43333)'
-                        .'|6c26/([^/]++)/([^/]++)/([^/]++)/846c26(*:43381)'
-                        .'|f7e6/([^/]++)/([^/]++)/([^/]++)/84f7e6(*:43429)'
-                        .'|7cc5/([^/]++)/([^/]++)/([^/]++)/847cc5(*:43477)'
-                    .')'
-                    .'|f(?'
-                        .'|ecb2/([^/]++)/([^/]++)/([^/]++)/8fecb2(*:43530)'
-                        .'|7d80/([^/]++)/([^/]++)/([^/]++)/8f7d80(*:43578)'
-                        .'|468c/([^/]++)/([^/]++)/([^/]++)/8f468c(*:43626)'
-                    .')'
-                    .'|a0e11/([^/]++)/([^/]++)/([^/]++)/8a0e11(*:43676)'
-                    .'|2(?'
-                        .'|f2b3/([^/]++)/([^/]++)/([^/]++)/82f2b3(*:43728)'
-                        .'|489c/([^/]++)/([^/]++)/([^/]++)/82489c(*:43776)'
-                    .')'
-                    .'|6(?'
-                        .'|b122/([^/]++)/([^/]++)/([^/]++)/86b122(*:43829)'
-                        .'|0320/([^/]++)/([^/]++)/([^/]++)/860320(*:43877)'
-                    .')'
-                    .'|9(?'
-                        .'|2c91/([^/]++)/([^/]++)/([^/]++)/892c91(*:43930)'
-                        .'|fcd0/([^/]++)/([^/]++)/([^/]++)/89fcd0(*:43978)'
-                    .')'
-                    .'|065d0/([^/]++)/([^/]++)/([^/]++)/8065d0(*:44028)'
-                .')'
-                .'|/d(?'
-                    .'|6(?'
-                        .'|4a34/([^/]++)/([^/]++)/([^/]++)/d64a34(*:44086)'
-                        .'|c651/([^/]++)/([^/]++)/([^/]++)/d6c651(*:44134)'
-                    .')'
-                    .'|f(?'
-                        .'|877f/([^/]++)/([^/]++)/([^/]++)/df877f(*:44187)'
-                        .'|263d/([^/]++)/([^/]++)/([^/]++)/df263d(*:44235)'
-                        .'|7f28/([^/]++)/([^/]++)/([^/]++)/df7f28(*:44283)'
-                        .'|6d23/([^/]++)/([^/]++)/([^/]++)/df6d23(*:44331)'
-                    .')'
-                    .'|b(?'
-                        .'|85e2/([^/]++)/([^/]++)/([^/]++)/db85e2(*:44384)'
-                        .'|e272/([^/]++)/([^/]++)/([^/]++)/dbe272(*:44432)'
-                    .')'
-                    .'|d(?'
-                        .'|45(?'
-                            .'|85/([^/]++)/([^/]++)/([^/]++)/dd4585(*:44488)'
-                            .'|04/([^/]++)/([^/]++)/([^/]++)/dd4504(*:44534)'
-                        .')'
-                        .'|8eb9/([^/]++)/([^/]++)/([^/]++)/dd8eb9(*:44583)'
-                    .')'
-                    .'|a(?'
-                        .'|ca41/([^/]++)/([^/]++)/([^/]++)/daca41(*:44636)'
-                        .'|8ce5/([^/]++)/([^/]++)/([^/]++)/da8ce5(*:44684)'
-                        .'|0d11/([^/]++)/([^/]++)/([^/]++)/da0d11(*:44732)'
-                    .')'
-                    .'|4(?'
-                        .'|90d7/([^/]++)/([^/]++)/([^/]++)/d490d7(*:44785)'
-                        .'|c2e4/([^/]++)/([^/]++)/([^/]++)/d4c2e4(*:44833)'
-                    .')'
-                    .'|8(?'
-                        .'|6ea6/([^/]++)/([^/]++)/([^/]++)/d86ea6(*:44886)'
-                        .'|40cc/([^/]++)/([^/]++)/([^/]++)/d840cc(*:44934)'
-                    .')'
-                    .'|c(?'
-                        .'|82d6/([^/]++)/([^/]++)/([^/]++)/dc82d6(*:44987)'
-                        .'|6a70/([^/]++)/([^/]++)/([^/]++)/dc6a70(*:45035)'
-                        .'|5689/([^/]++)/([^/]++)/([^/]++)/dc5689(*:45083)'
-                    .')'
-                    .'|7(?'
-                        .'|a728/([^/]++)/([^/]++)/([^/]++)/d7a728(*:45136)'
-                        .'|0732/([^/]++)/([^/]++)/([^/]++)/d70732(*:45184)'
-                        .'|9aac/([^/]++)/([^/]++)/([^/]++)/d79aac(*:45232)'
-                    .')'
-                    .'|14220/([^/]++)/([^/]++)/([^/]++)/d14220(*:45282)'
-                    .'|5(?'
-                        .'|cfea/([^/]++)/([^/]++)/([^/]++)/d5cfea(*:45334)'
-                        .'|8072/([^/]++)/([^/]++)/([^/]++)/d58072(*:45382)'
-                        .'|54f7/([^/]++)/([^/]++)/([^/]++)/d554f7(*:45430)'
-                        .'|16b1/([^/]++)/([^/]++)/([^/]++)/d516b1(*:45478)'
-                        .'|6b9f/([^/]++)/([^/]++)/([^/]++)/d56b9f(*:45526)'
-                    .')'
-                    .'|045c5/([^/]++)/([^/]++)/([^/]++)/d045c5(*:45576)'
-                    .'|2(?'
-                        .'|ed45/([^/]++)/([^/]++)/([^/]++)/d2ed45(*:45628)'
-                        .'|40e3/([^/]++)/([^/]++)/([^/]++)/d240e3(*:45676)'
-                    .')'
-                    .'|93ed5/([^/]++)/([^/]++)/([^/]++)/d93ed5(*:45726)'
-                .')'
-                .'|/7(?'
-                    .'|b(?'
-                        .'|cdf7/([^/]++)/([^/]++)/([^/]++)/7bcdf7(*:45784)'
-                        .'|13b2/([^/]++)/([^/]++)/([^/]++)/7b13b2(*:45832)'
-                    .')'
-                    .'|dcd34/([^/]++)/([^/]++)/([^/]++)/7dcd34(*:45882)'
-                    .'|f(?'
-                        .'|24d2/([^/]++)/([^/]++)/([^/]++)/7f24d2(*:45934)'
-                        .'|5d04/([^/]++)/([^/]++)/([^/]++)/7f5d04(*:45982)'
-                        .'|1171/([^/]++)/([^/]++)/([^/]++)/7f1171(*:46030)'
-                        .'|a732/([^/]++)/([^/]++)/([^/]++)/7fa732(*:46078)'
-                    .')'
-                    .'|6(?'
-                        .'|6ebc/([^/]++)/([^/]++)/([^/]++)/766ebc(*:46131)'
-                        .'|34ea/([^/]++)/([^/]++)/([^/]++)/7634ea(*:46179)'
-                    .')'
-                    .'|750ca/([^/]++)/([^/]++)/([^/]++)/7750ca(*:46229)'
-                    .'|1(?'
-                        .'|a(?'
-                            .'|3cb/([^/]++)/([^/]++)/([^/]++)/71a3cb(*:46284)'
-                            .'|d16/([^/]++)/([^/]++)/([^/]++)/71ad16(*:46331)'
-                        .')'
-                        .'|43d7/([^/]++)/([^/]++)/([^/]++)/7143d7(*:46380)'
-                    .')'
-                    .'|88d98/([^/]++)/([^/]++)/([^/]++)/788d98(*:46430)'
-                    .'|2(?'
-                        .'|da7f/([^/]++)/([^/]++)/([^/]++)/72da7f(*:46482)'
-                        .'|50eb/([^/]++)/([^/]++)/([^/]++)/7250eb(*:46530)'
-                    .')'
-                    .'|c(?'
-                        .'|590f/([^/]++)/([^/]++)/([^/]++)/7c590f(*:46583)'
-                        .'|e328/([^/]++)/([^/]++)/([^/]++)/7ce328(*:46631)'
-                    .')'
-                    .'|a5392/([^/]++)/([^/]++)/([^/]++)/7a5392(*:46681)'
-                    .'|95c7a/([^/]++)/([^/]++)/([^/]++)/795c7a(*:46730)'
-                    .'|504ad/([^/]++)/([^/]++)/([^/]++)/7504ad(*:46779)'
-                    .'|04afe/([^/]++)/([^/]++)/([^/]++)/704afe(*:46828)'
-                    .'|4bba2/([^/]++)/([^/]++)/([^/]++)/74bba2(*:46877)'
-                .')'
-                .'|/9(?'
-                    .'|b(?'
-                        .'|72e3/([^/]++)/([^/]++)/([^/]++)/9b72e3(*:46935)'
-                        .'|698e/([^/]++)/([^/]++)/([^/]++)/9b698e(*:46983)'
-                    .')'
-                    .'|7e852/([^/]++)/([^/]++)/([^/]++)/97e852(*:47033)'
-                    .'|4c7bb/([^/]++)/([^/]++)/([^/]++)/94c7bb(*:47082)'
-                    .'|9(?'
-                        .'|c5e0/([^/]++)/([^/]++)/([^/]++)/99c5e0(*:47134)'
-                        .'|6a7f/([^/]++)/([^/]++)/([^/]++)/996a7f(*:47182)'
-                        .'|bcfc/([^/]++)/([^/]++)/([^/]++)/99bcfc(*:47230)'
-                        .'|0827/([^/]++)/([^/]++)/([^/]++)/990827(*:47278)'
-                    .')'
-                    .'|a(?'
-                        .'|d6aa/([^/]++)/([^/]++)/([^/]++)/9ad6aa(*:47331)'
-                        .'|b0d8/([^/]++)/([^/]++)/([^/]++)/9ab0d8(*:47379)'
-                    .')'
-                    .'|c(?'
-                        .'|f81d/([^/]++)/([^/]++)/([^/]++)/9cf81d(*:47432)'
-                        .'|c138/([^/]++)/([^/]++)/([^/]++)/9cc138(*:47480)'
-                        .'|82c7/([^/]++)/([^/]++)/([^/]++)/9c82c7(*:47528)'
-                        .'|0180/([^/]++)/([^/]++)/([^/]++)/9c0180(*:47576)'
-                    .')'
-                    .'|f(?'
-                        .'|396f/([^/]++)/([^/]++)/([^/]++)/9f396f(*:47629)'
-                        .'|e859/([^/]++)/([^/]++)/([^/]++)/9fe859(*:47677)'
-                        .'|53d8/([^/]++)/([^/]++)/([^/]++)/9f53d8(*:47725)'
-                    .')'
-                    .'|12d2b/([^/]++)/([^/]++)/([^/]++)/912d2b(*:47775)'
-                    .'|59a55/([^/]++)/([^/]++)/([^/]++)/959a55(*:47824)'
-                    .'|6(?'
-                        .'|ea64/([^/]++)/([^/]++)/([^/]++)/96ea64(*:47876)'
-                        .'|b9bf/([^/]++)/([^/]++)/([^/]++)/96b9bf(*:47924)'
-                    .')'
-                    .'|e3cfc/([^/]++)/([^/]++)/([^/]++)/9e3cfc(*:47974)'
-                    .'|2(?'
-                        .'|fb0c/([^/]++)/([^/]++)/([^/]++)/92fb0c(*:48026)'
-                        .'|262b/([^/]++)/([^/]++)/([^/]++)/92262b(*:48074)'
-                        .'|32fe/([^/]++)/([^/]++)/([^/]++)/9232fe(*:48122)'
-                        .'|977a/([^/]++)/([^/]++)/([^/]++)/92977a(*:48170)'
-                    .')'
-                    .'|8d6f5/([^/]++)/([^/]++)/([^/]++)/98d6f5(*:48220)'
-                    .'|0794e/([^/]++)/([^/]++)/([^/]++)/90794e(*:48269)'
-                    .'|34815/([^/]++)/([^/]++)/([^/]++)/934815(*:48318)'
-                .')'
-                .'|/4(?'
-                    .'|e(?'
-                        .'|4b5f/([^/]++)/([^/]++)/([^/]++)/4e4b5f(*:48376)'
-                        .'|a06f/([^/]++)/([^/]++)/([^/]++)/4ea06f(*:48424)'
-                        .'|0(?'
-                            .'|928/([^/]++)/([^/]++)/([^/]++)/4e0928(*:48475)'
-                            .'|cb6/([^/]++)/([^/]++)/([^/]++)/4e0cb6(*:48522)'
-                        .')'
-                    .')'
-                    .'|6922a/([^/]++)/([^/]++)/([^/]++)/46922a(*:48573)'
-                    .'|4(?'
-                        .'|c4c1/([^/]++)/([^/]++)/([^/]++)/44c4c1(*:48625)'
-                        .'|3cb0/([^/]++)/([^/]++)/([^/]++)/443cb0(*:48673)'
-                    .')'
-                    .'|8ab2f/([^/]++)/([^/]++)/([^/]++)/48ab2f(*:48723)'
-                    .'|5(?'
-                        .'|645a/([^/]++)/([^/]++)/([^/]++)/45645a(*:48775)'
-                        .'|58db/([^/]++)/([^/]++)/([^/]++)/4558db(*:48823)'
-                    .')'
-                    .'|2e77b/([^/]++)/([^/]++)/([^/]++)/42e77b(*:48873)'
-                    .'|c27ce/([^/]++)/([^/]++)/([^/]++)/4c27ce(*:48922)'
-                    .'|f(?'
-                        .'|fce0/([^/]++)/([^/]++)/([^/]++)/4ffce0(*:48974)'
-                        .'|ac9b/([^/]++)/([^/]++)/([^/]++)/4fac9b(*:49022)'
-                    .')'
-                    .'|a47d2/([^/]++)/([^/]++)/([^/]++)/4a47d2(*:49072)'
-                    .'|70e7a/([^/]++)/([^/]++)/([^/]++)/470e7a(*:49121)'
-                    .'|b(?'
-                        .'|0(?'
-                            .'|4a6/([^/]++)/([^/]++)/([^/]++)/4b04a6(*:49176)'
-                            .'|a59/([^/]++)/([^/]++)/([^/]++)/4b0a59(*:49223)'
-                            .'|250/([^/]++)/([^/]++)/([^/]++)/4b0250(*:49270)'
-                        .')'
-                        .'|6538/([^/]++)/([^/]++)/([^/]++)/4b6538(*:49319)'
-                    .')'
-                    .'|3(?'
-                        .'|f(?'
-                            .'|a7f/([^/]++)/([^/]++)/([^/]++)/43fa7f(*:49375)'
-                            .'|eae/([^/]++)/([^/]++)/([^/]++)/43feae(*:49422)'
-                        .')'
-                        .'|0c36/([^/]++)/([^/]++)/([^/]++)/430c36(*:49471)'
-                        .'|7d7d/([^/]++)/([^/]++)/([^/]++)/437d7d(*:49519)'
-                        .'|1135/([^/]++)/([^/]++)/([^/]++)/431135(*:49567)'
-                    .')'
-                    .'|d(?'
-                        .'|5b99/([^/]++)/([^/]++)/([^/]++)/4d5b99(*:49620)'
-                        .'|aa3d/([^/]++)/([^/]++)/([^/]++)/4daa3d(*:49668)'
-                    .')'
-                    .'|9c9ad/([^/]++)/([^/]++)/([^/]++)/49c9ad(*:49718)'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        54 => [[['_route' => '_0'], ['a', 'b', 'c'], null, null, false, false, null]],
-        102 => [[['_route' => '_190'], ['a', 'b', 'c'], null, null, false, false, null]],
-        147 => [[['_route' => '_478'], ['a', 'b', 'c'], null, null, false, false, null]],
-        194 => [[['_route' => '_259'], ['a', 'b', 'c'], null, null, false, false, null]],
-        240 => [[['_route' => '_368'], ['a', 'b', 'c'], null, null, false, false, null]],
-        291 => [[['_route' => '_1'], ['a', 'b', 'c'], null, null, false, false, null]],
-        337 => [[['_route' => '_116'], ['a', 'b', 'c'], null, null, false, false, null]],
-        383 => [[['_route' => '_490'], ['a', 'b', 'c'], null, null, false, false, null]],
-        434 => [[['_route' => '_2'], ['a', 'b', 'c'], null, null, false, false, null]],
-        480 => [[['_route' => '_124'], ['a', 'b', 'c'], null, null, false, false, null]],
-        526 => [[['_route' => '_389'], ['a', 'b', 'c'], null, null, false, false, null]],
-        577 => [[['_route' => '_8'], ['a', 'b', 'c'], null, null, false, false, null]],
-        623 => [[['_route' => '_104'], ['a', 'b', 'c'], null, null, false, false, null]],
-        677 => [[['_route' => '_12'], ['a', 'b', 'c'], null, null, false, false, null]],
-        722 => [[['_route' => '_442'], ['a', 'b', 'c'], null, null, false, false, null]],
-        769 => [[['_route' => '_253'], ['a', 'b', 'c'], null, null, false, false, null]],
-        820 => [[['_route' => '_13'], ['a', 'b', 'c'], null, null, false, false, null]],
-        866 => [[['_route' => '_254'], ['a', 'b', 'c'], null, null, false, false, null]],
-        912 => [[['_route' => '_347'], ['a', 'b', 'c'], null, null, false, false, null]],
-        963 => [[['_route' => '_16'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1009 => [[['_route' => '_87'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1058 => [[['_route' => '_31'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1109 => [[['_route' => '_50'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1156 => [[['_route' => '_219'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1203 => [[['_route' => '_332'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1250 => [[['_route' => '_359'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1302 => [[['_route' => '_183'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1349 => [[['_route' => '_500'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1401 => [[['_route' => '_214'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1448 => [[['_route' => '_321'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1497 => [[['_route' => '_243'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1545 => [[['_route' => '_328'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1596 => [[['_route' => '_362'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1643 => [[['_route' => '_488'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1701 => [[['_route' => '_3'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1751 => [[['_route' => '_102'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1797 => [[['_route' => '_220'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1845 => [[['_route' => '_127'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1897 => [[['_route' => '_5'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1944 => [[['_route' => '_242'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1991 => [[['_route' => '_397'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2038 => [[['_route' => '_454'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2090 => [[['_route' => '_34'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2137 => [[['_route' => '_281'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2189 => [[['_route' => '_64'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2236 => [[['_route' => '_205'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2291 => [[['_route' => '_71'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2337 => [[['_route' => '_203'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2385 => [[['_route' => '_97'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2437 => [[['_route' => '_98'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2484 => [[['_route' => '_267'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2531 => [[['_route' => '_309'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2586 => [[['_route' => '_117'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2631 => [[['_route' => '_211'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2679 => [[['_route' => '_484'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2731 => [[['_route' => '_139'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2778 => [[['_route' => '_421'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2830 => [[['_route' => '_185'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2877 => [[['_route' => '_439'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2926 => [[['_route' => '_218'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2977 => [[['_route' => '_233'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3024 => [[['_route' => '_483'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3073 => [[['_route' => '_265'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3124 => [[['_route' => '_299'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3171 => [[['_route' => '_351'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3218 => [[['_route' => '_472'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3267 => [[['_route' => '_360'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3315 => [[['_route' => '_466'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3372 => [[['_route' => '_4'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3419 => [[['_route' => '_142'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3466 => [[['_route' => '_151'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3513 => [[['_route' => '_308'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3560 => [[['_route' => '_440'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3612 => [[['_route' => '_14'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3659 => [[['_route' => '_358'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3711 => [[['_route' => '_37'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3758 => [[['_route' => '_38'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3805 => [[['_route' => '_146'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3852 => [[['_route' => '_194'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3899 => [[['_route' => '_487'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3948 => [[['_route' => '_42'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3999 => [[['_route' => '_54'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4046 => [[['_route' => '_326'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4098 => [[['_route' => '_68'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4145 => [[['_route' => '_108'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4197 => [[['_route' => '_74'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4244 => [[['_route' => '_315'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4291 => [[['_route' => '_374'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4343 => [[['_route' => '_99'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4390 => [[['_route' => '_238'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4442 => [[['_route' => '_107'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4489 => [[['_route' => '_409'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4541 => [[['_route' => '_122'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4588 => [[['_route' => '_379'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4635 => [[['_route' => '_390'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4687 => [[['_route' => '_171'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4734 => [[['_route' => '_260'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4781 => [[['_route' => '_434'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4830 => [[['_route' => '_189'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4878 => [[['_route' => '_467'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4935 => [[['_route' => '_6'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4982 => [[['_route' => '_286'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5029 => [[['_route' => '_438'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5081 => [[['_route' => '_19'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5131 => [[['_route' => '_24'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5177 => [[['_route' => '_172'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5230 => [[['_route' => '_33'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5277 => [[['_route' => '_400'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5324 => [[['_route' => '_427'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5376 => [[['_route' => '_35'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5423 => [[['_route' => '_156'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5475 => [[['_route' => '_36'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5522 => [[['_route' => '_251'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5574 => [[['_route' => '_43'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5621 => [[['_route' => '_292'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5668 => [[['_route' => '_411'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5720 => [[['_route' => '_69'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5767 => [[['_route' => '_159'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5814 => [[['_route' => '_170'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5861 => [[['_route' => '_376'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5913 => [[['_route' => '_131'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5960 => [[['_route' => '_446'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6015 => [[['_route' => '_140'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6061 => [[['_route' => '_353'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6112 => [[['_route' => '_224'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6158 => [[['_route' => '_346'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6204 => [[['_route' => '_443'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6254 => [[['_route' => '_154'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6305 => [[['_route' => '_212'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6352 => [[['_route' => '_313'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6399 => [[['_route' => '_395'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6446 => [[['_route' => '_441'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6498 => [[['_route' => '_223'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6545 => [[['_route' => '_303'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6594 => [[['_route' => '_410'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6642 => [[['_route' => '_494'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6702 => [[['_route' => '_7'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6748 => [[['_route' => '_268'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6796 => [[['_route' => '_178'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6843 => [[['_route' => '_179'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6890 => [[['_route' => '_416'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6942 => [[['_route' => '_25'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6989 => [[['_route' => '_307'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7036 => [[['_route' => '_387'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7083 => [[['_route' => '_471'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7132 => [[['_route' => '_90'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7183 => [[['_route' => '_95'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7230 => [[['_route' => '_338'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7277 => [[['_route' => '_401'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7329 => [[['_route' => '_147'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7376 => [[['_route' => '_319'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7423 => [[['_route' => '_354'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7470 => [[['_route' => '_428'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7522 => [[['_route' => '_162'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7572 => [[['_route' => '_175'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7618 => [[['_route' => '_455'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7666 => [[['_route' => '_355'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7718 => [[['_route' => '_197'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7768 => [[['_route' => '_202'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7813 => [[['_route' => '_489'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7863 => [[['_route' => '_199'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7914 => [[['_route' => '_263'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7961 => [[['_route' => '_406'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8010 => [[['_route' => '_289'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8058 => [[['_route' => '_325'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8106 => [[['_route' => '_378'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8154 => [[['_route' => '_468'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8211 => [[['_route' => '_9'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8258 => [[['_route' => '_216'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8307 => [[['_route' => '_26'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8355 => [[['_route' => '_62'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8406 => [[['_route' => '_81'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8453 => [[['_route' => '_318'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8505 => [[['_route' => '_121'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8551 => [[['_route' => '_182'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8603 => [[['_route' => '_136'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8650 => [[['_route' => '_415'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8697 => [[['_route' => '_457'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8744 => [[['_route' => '_463'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8796 => [[['_route' => '_148'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8843 => [[['_route' => '_273'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8892 => [[['_route' => '_284'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8940 => [[['_route' => '_288'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8991 => [[['_route' => '_295'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9038 => [[['_route' => '_305'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9085 => [[['_route' => '_453'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9134 => [[['_route' => '_340'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9185 => [[['_route' => '_371'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9232 => [[['_route' => '_417'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9284 => [[['_route' => '_382'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9331 => [[['_route' => '_404'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9389 => [[['_route' => '_10'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9436 => [[['_route' => '_279'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9483 => [[['_route' => '_377'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9535 => [[['_route' => '_39'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9582 => [[['_route' => '_40'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9629 => [[['_route' => '_264'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9676 => [[['_route' => '_449'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9728 => [[['_route' => '_46'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9775 => [[['_route' => '_257'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9822 => [[['_route' => '_274'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9869 => [[['_route' => '_388'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9921 => [[['_route' => '_53'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9968 => [[['_route' => '_345'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10020 => [[['_route' => '_73'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10068 => [[['_route' => '_296'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10121 => [[['_route' => '_75'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10169 => [[['_route' => '_458'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10225 => [[['_route' => '_79'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10272 => [[['_route' => '_129'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10319 => [[['_route' => '_418'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10368 => [[['_route' => '_225'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10416 => [[['_route' => '_479'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10466 => [[['_route' => '_120'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10515 => [[['_route' => '_276'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10564 => [[['_route' => '_370'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10616 => [[['_route' => '_385'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10664 => [[['_route' => '_469'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10714 => [[['_route' => '_435'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10772 => [[['_route' => '_11'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10820 => [[['_route' => '_105'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10868 => [[['_route' => '_132'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10921 => [[['_route' => '_18'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10969 => [[['_route' => '_210'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11017 => [[['_route' => '_329'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11073 => [[['_route' => '_29'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11120 => [[['_route' => '_480'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11169 => [[['_route' => '_426'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11222 => [[['_route' => '_32'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11270 => [[['_route' => '_217'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11318 => [[['_route' => '_275'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11371 => [[['_route' => '_45'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11419 => [[['_route' => '_157'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11467 => [[['_route' => '_184'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11515 => [[['_route' => '_250'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11563 => [[['_route' => '_356'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11616 => [[['_route' => '_47'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11664 => [[['_route' => '_445'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11714 => [[['_route' => '_48'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11766 => [[['_route' => '_58'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11814 => [[['_route' => '_414'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11862 => [[['_route' => '_431'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11915 => [[['_route' => '_84'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11963 => [[['_route' => '_294'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12011 => [[['_route' => '_336'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12059 => [[['_route' => '_465'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12112 => [[['_route' => '_103'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12160 => [[['_route' => '_111'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12208 => [[['_route' => '_207'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12256 => [[['_route' => '_402'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12309 => [[['_route' => '_230'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12356 => [[['_route' => '_331'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12406 => [[['_route' => '_248'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12455 => [[['_route' => '_282'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12513 => [[['_route' => '_15'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12561 => [[['_route' => '_130'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12609 => [[['_route' => '_231'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12657 => [[['_route' => '_365'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12705 => [[['_route' => '_448'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12758 => [[['_route' => '_20'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12806 => [[['_route' => '_93'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12854 => [[['_route' => '_186'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12902 => [[['_route' => '_460'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12955 => [[['_route' => '_52'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13003 => [[['_route' => '_447'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13056 => [[['_route' => '_56'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13104 => [[['_route' => '_133'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13152 => [[['_route' => '_297'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13205 => [[['_route' => '_82'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13253 => [[['_route' => '_165'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13301 => [[['_route' => '_213'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13351 => [[['_route' => '_86'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13403 => [[['_route' => '_92'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13450 => [[['_route' => '_280'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13500 => [[['_route' => '_143'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13549 => [[['_route' => '_177'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13601 => [[['_route' => '_188'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13649 => [[['_route' => '_311'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13697 => [[['_route' => '_350'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13750 => [[['_route' => '_226'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13798 => [[['_route' => '_291'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13851 => [[['_route' => '_244'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13898 => [[['_route' => '_287'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13951 => [[['_route' => '_300'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13999 => [[['_route' => '_451'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14047 => [[['_route' => '_452'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14095 => [[['_route' => '_481'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14145 => [[['_route' => '_312'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14203 => [[['_route' => '_17'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14251 => [[['_route' => '_227'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14299 => [[['_route' => '_393'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14349 => [[['_route' => '_57'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14401 => [[['_route' => '_61'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14449 => [[['_route' => '_112'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14500 => [[['_route' => '_135'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14547 => [[['_route' => '_271'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14596 => [[['_route' => '_459'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14649 => [[['_route' => '_67'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14697 => [[['_route' => '_113'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14745 => [[['_route' => '_497'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14795 => [[['_route' => '_70'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14847 => [[['_route' => '_89'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14895 => [[['_route' => '_128'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14948 => [[['_route' => '_150'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14996 => [[['_route' => '_166'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15047 => [[['_route' => '_206'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15094 => [[['_route' => '_419'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15148 => [[['_route' => '_201'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15196 => [[['_route' => '_314'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15244 => [[['_route' => '_429'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15297 => [[['_route' => '_228'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15345 => [[['_route' => '_477'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15395 => [[['_route' => '_272'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15444 => [[['_route' => '_486'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15502 => [[['_route' => '_21'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15550 => [[['_route' => '_247'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15598 => [[['_route' => '_424'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15646 => [[['_route' => '_499'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15699 => [[['_route' => '_23'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15747 => [[['_route' => '_152'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15795 => [[['_route' => '_304'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15843 => [[['_route' => '_352'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15896 => [[['_route' => '_28'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15944 => [[['_route' => '_240'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16000 => [[['_route' => '_30'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16047 => [[['_route' => '_41'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16096 => [[['_route' => '_301'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16149 => [[['_route' => '_66'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16197 => [[['_route' => '_72'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16245 => [[['_route' => '_320'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16298 => [[['_route' => '_78'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16346 => [[['_route' => '_337'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16394 => [[['_route' => '_399'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16442 => [[['_route' => '_495'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16492 => [[['_route' => '_85'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16544 => [[['_route' => '_101'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16592 => [[['_route' => '_176'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16640 => [[['_route' => '_246'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16693 => [[['_route' => '_125'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16741 => [[['_route' => '_341'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16794 => [[['_route' => '_137'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16842 => [[['_route' => '_270'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16890 => [[['_route' => '_386'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16943 => [[['_route' => '_169'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16991 => [[['_route' => '_200'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17039 => [[['_route' => '_262'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17092 => [[['_route' => '_187'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17140 => [[['_route' => '_333'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17190 => [[['_route' => '_215'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17239 => [[['_route' => '_316'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17288 => [[['_route' => '_343'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17346 => [[['_route' => '_22'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17394 => [[['_route' => '_420'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17447 => [[['_route' => '_55'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17494 => [[['_route' => '_496'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17547 => [[['_route' => '_153'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17595 => [[['_route' => '_344'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17648 => [[['_route' => '_160'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17696 => [[['_route' => '_398'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17749 => [[['_route' => '_161'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17797 => [[['_route' => '_193'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17847 => [[['_route' => '_174'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17899 => [[['_route' => '_209'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17947 => [[['_route' => '_261'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18000 => [[['_route' => '_222'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18048 => [[['_route' => '_323'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18096 => [[['_route' => '_380'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18149 => [[['_route' => '_232'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18197 => [[['_route' => '_383'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18247 => [[['_route' => '_306'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18296 => [[['_route' => '_327'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18345 => [[['_route' => '_364'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18397 => [[['_route' => '_403'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18445 => [[['_route' => '_405'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18495 => [[['_route' => '_412'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18553 => [[['_route' => '_27'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18601 => [[['_route' => '_134'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18649 => [[['_route' => '_245'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18702 => [[['_route' => '_59'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18750 => [[['_route' => '_208'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18803 => [[['_route' => '_60'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18851 => [[['_route' => '_119'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18902 => [[['_route' => '_163'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18949 => [[['_route' => '_249'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18998 => [[['_route' => '_278'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19051 => [[['_route' => '_63'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19099 => [[['_route' => '_195'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19147 => [[['_route' => '_252'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19195 => [[['_route' => '_461'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19248 => [[['_route' => '_126'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19296 => [[['_route' => '_158'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19344 => [[['_route' => '_221'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19392 => [[['_route' => '_269'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19440 => [[['_route' => '_310'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19496 => [[['_route' => '_138'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19543 => [[['_route' => '_348'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19592 => [[['_route' => '_236'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19640 => [[['_route' => '_433'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19693 => [[['_route' => '_141'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19741 => [[['_route' => '_283'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19794 => [[['_route' => '_144'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19842 => [[['_route' => '_191'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19895 => [[['_route' => '_168'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19943 => [[['_route' => '_363'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19991 => [[['_route' => '_381'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20044 => [[['_route' => '_180'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20092 => [[['_route' => '_339'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20142 => [[['_route' => '_196'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20194 => [[['_route' => '_198'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20242 => [[['_route' => '_285'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20292 => [[['_route' => '_349'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20344 => [[['_route' => '_367'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20392 => [[['_route' => '_384'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20440 => [[['_route' => '_498'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20490 => [[['_route' => '_369'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20542 => [[['_route' => '_408'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20590 => [[['_route' => '_413'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20652 => [[['_route' => '_44'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20699 => [[['_route' => '_256'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20748 => [[['_route' => '_173'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20796 => [[['_route' => '_266'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20844 => [[['_route' => '_392'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20892 => [[['_route' => '_430'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20940 => [[['_route' => '_482'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20993 => [[['_route' => '_49'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21041 => [[['_route' => '_94'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21089 => [[['_route' => '_407'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21142 => [[['_route' => '_65'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21190 => [[['_route' => '_181'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21238 => [[['_route' => '_437'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21291 => [[['_route' => '_76'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21339 => [[['_route' => '_357'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21392 => [[['_route' => '_80'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21440 => [[['_route' => '_106'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21493 => [[['_route' => '_83'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21541 => [[['_route' => '_255'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21589 => [[['_route' => '_330'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21642 => [[['_route' => '_100'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21690 => [[['_route' => '_396'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21738 => [[['_route' => '_422'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21791 => [[['_route' => '_149'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21839 => [[['_route' => '_324'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21892 => [[['_route' => '_164'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21940 => [[['_route' => '_423'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21990 => [[['_route' => '_241'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22042 => [[['_route' => '_290'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22090 => [[['_route' => '_335'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22140 => [[['_route' => '_373'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22189 => [[['_route' => '_375'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22238 => [[['_route' => '_450'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22287 => [[['_route' => '_464'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22345 => [[['_route' => '_51'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22393 => [[['_route' => '_77'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22441 => [[['_route' => '_234'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22489 => [[['_route' => '_394'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22542 => [[['_route' => '_88'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22590 => [[['_route' => '_155'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22643 => [[['_route' => '_96'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22691 => [[['_route' => '_298'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22739 => [[['_route' => '_470'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22792 => [[['_route' => '_109'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22840 => [[['_route' => '_204'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22893 => [[['_route' => '_115'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22941 => [[['_route' => '_145'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22994 => [[['_route' => '_123'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23042 => [[['_route' => '_277'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23090 => [[['_route' => '_473'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23143 => [[['_route' => '_334'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23191 => [[['_route' => '_493'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23244 => [[['_route' => '_372'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23292 => [[['_route' => '_432'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23340 => [[['_route' => '_436'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23393 => [[['_route' => '_425'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23441 => [[['_route' => '_456'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23489 => [[['_route' => '_474'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23539 => [[['_route' => '_485'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23594 => [[['_route' => '_91'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23646 => [[['_route' => '_110'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23694 => [[['_route' => '_114'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23750 => [[['_route' => '_118'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23796 => [[['_route' => '_475'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23844 => [[['_route' => '_366'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23897 => [[['_route' => '_167'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23945 => [[['_route' => '_192'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23993 => [[['_route' => '_342'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24046 => [[['_route' => '_229'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24097 => [[['_route' => '_235'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24144 => [[['_route' => '_302'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24193 => [[['_route' => '_322'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24246 => [[['_route' => '_237'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24294 => [[['_route' => '_293'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24347 => [[['_route' => '_239'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24395 => [[['_route' => '_444'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24443 => [[['_route' => '_491'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24491 => [[['_route' => '_492'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24541 => [[['_route' => '_258'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24590 => [[['_route' => '_317'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24639 => [[['_route' => '_361'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24688 => [[['_route' => '_391'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24737 => [[['_route' => '_462'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24786 => [[['_route' => '_476'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24837 => [[['_route' => '_501'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24889 => [[['_route' => '_514'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24937 => [[['_route' => '_731'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24990 => [[['_route' => '_522'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25038 => [[['_route' => '_693'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25091 => [[['_route' => '_537'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25139 => [[['_route' => '_554'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25187 => [[['_route' => '_645'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25235 => [[['_route' => '_862'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25288 => [[['_route' => '_539'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25336 => [[['_route' => '_729'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25384 => [[['_route' => '_897'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25437 => [[['_route' => '_561'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25485 => [[['_route' => '_615'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25533 => [[['_route' => '_764'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25581 => [[['_route' => '_948'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25634 => [[['_route' => '_617'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25682 => [[['_route' => '_671'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25735 => [[['_route' => '_649'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25783 => [[['_route' => '_651'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25831 => [[['_route' => '_684'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25884 => [[['_route' => '_669'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25932 => [[['_route' => '_743'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25980 => [[['_route' => '_962'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26033 => [[['_route' => '_694'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26081 => [[['_route' => '_985'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26134 => [[['_route' => '_707'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26182 => [[['_route' => '_718'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26235 => [[['_route' => '_720'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26283 => [[['_route' => '_745'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26333 => [[['_route' => '_874'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26391 => [[['_route' => '_502'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26439 => [[['_route' => '_667'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26487 => [[['_route' => '_911'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26535 => [[['_route' => '_942'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26585 => [[['_route' => '_504'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26637 => [[['_route' => '_524'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26685 => [[['_route' => '_732'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26738 => [[['_route' => '_596'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26786 => [[['_route' => '_601'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26839 => [[['_route' => '_620'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26887 => [[['_route' => '_631'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26935 => [[['_route' => '_771'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26983 => [[['_route' => '_937'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27031 => [[['_route' => '_999'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27084 => [[['_route' => '_657'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27132 => [[['_route' => '_701'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27185 => [[['_route' => '_662'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27233 => [[['_route' => '_797'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27281 => [[['_route' => '_924'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27334 => [[['_route' => '_702'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27382 => [[['_route' => '_750'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27435 => [[['_route' => '_749'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27483 => [[['_route' => '_837'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27533 => [[['_route' => '_758'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27585 => [[['_route' => '_810'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27633 => [[['_route' => '_902'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27683 => [[['_route' => '_845'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27741 => [[['_route' => '_503'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27792 => [[['_route' => '_756'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27839 => [[['_route' => '_799'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27888 => [[['_route' => '_769'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27936 => [[['_route' => '_981'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27989 => [[['_route' => '_507'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28037 => [[['_route' => '_672'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28085 => [[['_route' => '_790'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28138 => [[['_route' => '_515'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28186 => [[['_route' => '_523'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28234 => [[['_route' => '_957'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28282 => [[['_route' => '_995'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28335 => [[['_route' => '_532'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28383 => [[['_route' => '_642'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28433 => [[['_route' => '_579'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28485 => [[['_route' => '_625'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28533 => [[['_route' => '_916'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28586 => [[['_route' => '_633'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28634 => [[['_route' => '_656'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28687 => [[['_route' => '_658'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28735 => [[['_route' => '_943'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28788 => [[['_route' => '_664'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28836 => [[['_route' => '_852'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28884 => [[['_route' => '_870'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28937 => [[['_route' => '_683'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28985 => [[['_route' => '_915'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29038 => [[['_route' => '_719'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29086 => [[['_route' => '_859'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29134 => [[['_route' => '_912'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29182 => [[['_route' => '_978'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29235 => [[['_route' => '_738'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29283 => [[['_route' => '_883'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29333 => [[['_route' => '_741'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29382 => [[['_route' => '_760'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29431 => [[['_route' => '_895'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29489 => [[['_route' => '_505'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29537 => [[['_route' => '_935'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29590 => [[['_route' => '_509'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29638 => [[['_route' => '_820'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29686 => [[['_route' => '_910'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29739 => [[['_route' => '_518'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29787 => [[['_route' => '_618'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29840 => [[['_route' => '_546'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29888 => [[['_route' => '_740'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29936 => [[['_route' => '_867'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29989 => [[['_route' => '_572'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30037 => [[['_route' => '_952'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30090 => [[['_route' => '_573'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30138 => [[['_route' => '_692'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30186 => [[['_route' => '_700'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30234 => [[['_route' => '_772'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30284 => [[['_route' => '_653'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30336 => [[['_route' => '_695'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30384 => [[['_route' => '_748'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30437 => [[['_route' => '_710'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30485 => [[['_route' => '_716'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30533 => [[['_route' => '_969'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30586 => [[['_route' => '_734'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30634 => [[['_route' => '_742'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30682 => [[['_route' => '_844'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30735 => [[['_route' => '_763'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30783 => [[['_route' => '_965'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30836 => [[['_route' => '_778'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30884 => [[['_route' => '_813'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30932 => [[['_route' => '_831'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30982 => [[['_route' => '_955'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31031 => [[['_route' => '_997'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31089 => [[['_route' => '_506'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31137 => [[['_route' => '_575'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31190 => [[['_route' => '_516'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31238 => [[['_route' => '_553'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31291 => [[['_route' => '_528'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31339 => [[['_route' => '_847'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31387 => [[['_route' => '_904'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31440 => [[['_route' => '_574'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31488 => [[['_route' => '_818'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31538 => [[['_route' => '_577'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31590 => [[['_route' => '_584'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31638 => [[['_route' => '_905'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31691 => [[['_route' => '_612'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31739 => [[['_route' => '_688'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31787 => [[['_route' => '_854'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31840 => [[['_route' => '_613'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31888 => [[['_route' => '_767'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31941 => [[['_route' => '_666'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31989 => [[['_route' => '_759'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32037 => [[['_route' => '_827'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32085 => [[['_route' => '_840'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32138 => [[['_route' => '_680'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32186 => [[['_route' => '_784'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32234 => [[['_route' => '_842'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32282 => [[['_route' => '_860'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32332 => [[['_route' => '_704'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32381 => [[['_route' => '_727'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32430 => [[['_route' => '_777'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32482 => [[['_route' => '_838'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32530 => [[['_route' => '_861'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32583 => [[['_route' => '_849'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32631 => [[['_route' => '_982'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32679 => [[['_route' => '_986'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32741 => [[['_route' => '_508'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32788 => [[['_route' => '_517'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32837 => [[['_route' => '_622'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32890 => [[['_route' => '_513'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32938 => [[['_route' => '_655'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32986 => [[['_route' => '_843'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33034 => [[['_route' => '_939'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33084 => [[['_route' => '_529'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33136 => [[['_route' => '_535'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33184 => [[['_route' => '_685'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33240 => [[['_route' => '_559'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33287 => [[['_route' => '_661'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33336 => [[['_route' => '_768'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33389 => [[['_route' => '_589'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33437 => [[['_route' => '_647'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33485 => [[['_route' => '_652'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33533 => [[['_route' => '_834'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33586 => [[['_route' => '_591'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33634 => [[['_route' => '_599'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33687 => [[['_route' => '_787'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33734 => [[['_route' => '_848'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33787 => [[['_route' => '_796'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33835 => [[['_route' => '_877'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33885 => [[['_route' => '_809'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33934 => [[['_route' => '_817'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33986 => [[['_route' => '_819'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34034 => [[['_route' => '_865'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34084 => [[['_route' => '_919'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34133 => [[['_route' => '_949'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34191 => [[['_route' => '_510'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34239 => [[['_route' => '_590'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34287 => [[['_route' => '_597'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34335 => [[['_route' => '_682'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34383 => [[['_route' => '_723'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34436 => [[['_route' => '_521'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34484 => [[['_route' => '_594'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34532 => [[['_route' => '_689'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34580 => [[['_route' => '_713'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34628 => [[['_route' => '_889'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34681 => [[['_route' => '_531'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34729 => [[['_route' => '_639'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34780 => [[['_route' => '_646'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34827 => [[['_route' => '_659'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34876 => [[['_route' => '_959'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34929 => [[['_route' => '_550'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34977 => [[['_route' => '_833'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35025 => [[['_route' => '_899'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35081 => [[['_route' => '_580'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35128 => [[['_route' => '_762'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35177 => [[['_route' => '_896'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35230 => [[['_route' => '_595'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35278 => [[['_route' => '_933'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35328 => [[['_route' => '_610'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35380 => [[['_route' => '_629'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35428 => [[['_route' => '_744'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35481 => [[['_route' => '_674'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35529 => [[['_route' => '_726'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35577 => [[['_route' => '_929'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35627 => [[['_route' => '_696'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35679 => [[['_route' => '_841'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35727 => [[['_route' => '_890'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35777 => [[['_route' => '_885'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35826 => [[['_route' => '_888'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35875 => [[['_route' => '_996'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35933 => [[['_route' => '_511'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35981 => [[['_route' => '_576'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36029 => [[['_route' => '_623'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36082 => [[['_route' => '_560'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36129 => [[['_route' => '_585'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36182 => [[['_route' => '_570'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36230 => [[['_route' => '_578'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36281 => [[['_route' => '_780'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36328 => [[['_route' => '_808'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36382 => [[['_route' => '_593'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36430 => [[['_route' => '_900'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36483 => [[['_route' => '_632'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36531 => [[['_route' => '_654'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36579 => [[['_route' => '_721'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36627 => [[['_route' => '_836'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36680 => [[['_route' => '_637'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36728 => [[['_route' => '_737'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36784 => [[['_route' => '_699'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36831 => [[['_route' => '_822'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36880 => [[['_route' => '_853'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36933 => [[['_route' => '_708'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36981 => [[['_route' => '_871'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37034 => [[['_route' => '_752'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37082 => [[['_route' => '_989'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37132 => [[['_route' => '_855'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37184 => [[['_route' => '_858'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37232 => [[['_route' => '_898'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37282 => [[['_route' => '_903'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37331 => [[['_route' => '_909'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37380 => [[['_route' => '_950'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37441 => [[['_route' => '_512'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37488 => [[['_route' => '_691'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37537 => [[['_route' => '_686'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37587 => [[['_route' => '_527'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37639 => [[['_route' => '_541'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37687 => [[['_route' => '_956'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37740 => [[['_route' => '_555'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37788 => [[['_route' => '_681'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37841 => [[['_route' => '_556'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37889 => [[['_route' => '_802'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37939 => [[['_route' => '_558'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37991 => [[['_route' => '_564'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38039 => [[['_route' => '_670'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38087 => [[['_route' => '_884'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38140 => [[['_route' => '_627'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38187 => [[['_route' => '_746'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38240 => [[['_route' => '_668'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38291 => [[['_route' => '_712'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38338 => [[['_route' => '_863'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38387 => [[['_route' => '_801'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38440 => [[['_route' => '_709'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38488 => [[['_route' => '_850'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38536 => [[['_route' => '_918'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38586 => [[['_route' => '_803'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38638 => [[['_route' => '_864'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38686 => [[['_route' => '_880'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38734 => [[['_route' => '_927'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38787 => [[['_route' => '_930'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38835 => [[['_route' => '_951'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38883 => [[['_route' => '_963'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38942 => [[['_route' => '_519'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38990 => [[['_route' => '_823'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39038 => [[['_route' => '_954'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39091 => [[['_route' => '_525'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39139 => [[['_route' => '_991'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39189 => [[['_route' => '_536'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39241 => [[['_route' => '_545'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39289 => [[['_route' => '_944'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39342 => [[['_route' => '_557'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39390 => [[['_route' => '_783'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39438 => [[['_route' => '_807'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39491 => [[['_route' => '_586'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39539 => [[['_route' => '_711'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39592 => [[['_route' => '_598'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39640 => [[['_route' => '_635'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39688 => [[['_route' => '_983'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39741 => [[['_route' => '_634'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39789 => [[['_route' => '_641'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39840 => [[['_route' => '_779'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39887 => [[['_route' => '_876'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39936 => [[['_route' => '_811'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39984 => [[['_route' => '_824'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40037 => [[['_route' => '_660'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40085 => [[['_route' => '_789'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40138 => [[['_route' => '_733'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40186 => [[['_route' => '_735'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40234 => [[['_route' => '_882'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40282 => [[['_route' => '_967'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40332 => [[['_route' => '_736'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40381 => [[['_route' => '_753'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40430 => [[['_route' => '_786'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40479 => [[['_route' => '_907'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40528 => [[['_route' => '_920'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40577 => [[['_route' => '_971'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40635 => [[['_route' => '_520'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40683 => [[['_route' => '_891'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40739 => [[['_route' => '_534'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40785 => [[['_route' => '_602'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40834 => [[['_route' => '_605'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40882 => [[['_route' => '_979'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40932 => [[['_route' => '_547'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40987 => [[['_route' => '_549'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41034 => [[['_route' => '_755'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41083 => [[['_route' => '_922'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41131 => [[['_route' => '_977'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41184 => [[['_route' => '_565'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41232 => [[['_route' => '_926'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41282 => [[['_route' => '_571'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41331 => [[['_route' => '_581'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41380 => [[['_route' => '_619'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41429 => [[['_route' => '_636'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41481 => [[['_route' => '_679'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41529 => [[['_route' => '_866'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41577 => [[['_route' => '_973'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41630 => [[['_route' => '_690'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41678 => [[['_route' => '_775'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41731 => [[['_route' => '_722'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41779 => [[['_route' => '_906'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41827 => [[['_route' => '_946'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41877 => [[['_route' => '_788'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41929 => [[['_route' => '_828'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41977 => [[['_route' => '_892'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42025 => [[['_route' => '_972'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42075 => [[['_route' => '_829'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42127 => [[['_route' => '_923'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42175 => [[['_route' => '_947'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42234 => [[['_route' => '_526'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42282 => [[['_route' => '_614'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42330 => [[['_route' => '_621'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42383 => [[['_route' => '_543'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42431 => [[['_route' => '_812'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42487 => [[['_route' => '_548'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42534 => [[['_route' => '_747'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42583 => [[['_route' => '_715'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42631 => [[['_route' => '_940'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42684 => [[['_route' => '_563'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42732 => [[['_route' => '_611'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42780 => [[['_route' => '_830'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42833 => [[['_route' => '_569'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42881 => [[['_route' => '_908'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42929 => [[['_route' => '_913'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42982 => [[['_route' => '_644'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43030 => [[['_route' => '_776'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43078 => [[['_route' => '_856'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43131 => [[['_route' => '_650'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43179 => [[['_route' => '_761'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43232 => [[['_route' => '_663'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43280 => [[['_route' => '_754'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43333 => [[['_route' => '_665'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43381 => [[['_route' => '_805'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43429 => [[['_route' => '_846'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43477 => [[['_route' => '_857'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43530 => [[['_route' => '_675'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43578 => [[['_route' => '_839'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43626 => [[['_route' => '_968'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43676 => [[['_route' => '_697'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43728 => [[['_route' => '_725'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43776 => [[['_route' => '_794'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43829 => [[['_route' => '_773'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43877 => [[['_route' => '_992'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43930 => [[['_route' => '_901'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43978 => [[['_route' => '_970'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44028 => [[['_route' => '_964'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44086 => [[['_route' => '_530'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44134 => [[['_route' => '_703'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44187 => [[['_route' => '_533'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44235 => [[['_route' => '_739'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44283 => [[['_route' => '_791'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44331 => [[['_route' => '_987'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44384 => [[['_route' => '_566'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44432 => [[['_route' => '_592'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44488 => [[['_route' => '_568'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44534 => [[['_route' => '_868'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44583 => [[['_route' => '_878'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44636 => [[['_route' => '_588'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44684 => [[['_route' => '_793'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44732 => [[['_route' => '_917'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44785 => [[['_route' => '_600'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44833 => [[['_route' => '_728'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44886 => [[['_route' => '_603'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44934 => [[['_route' => '_765'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44987 => [[['_route' => '_607'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45035 => [[['_route' => '_676'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45083 => [[['_route' => '_804'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45136 => [[['_route' => '_609'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45184 => [[['_route' => '_961'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45232 => [[['_route' => '_980'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45282 => [[['_route' => '_714'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45334 => [[['_route' => '_730'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45382 => [[['_route' => '_806'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45430 => [[['_route' => '_825'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45478 => [[['_route' => '_879'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45526 => [[['_route' => '_893'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45576 => [[['_route' => '_928'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45628 => [[['_route' => '_932'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45676 => [[['_route' => '_958'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45726 => [[['_route' => '_984'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45784 => [[['_route' => '_538'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45832 => [[['_route' => '_993'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45882 => [[['_route' => '_542'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45934 => [[['_route' => '_551'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45982 => [[['_route' => '_687'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46030 => [[['_route' => '_724'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46078 => [[['_route' => '_925'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46131 => [[['_route' => '_587'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46179 => [[['_route' => '_914'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46229 => [[['_route' => '_616'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46284 => [[['_route' => '_677'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46331 => [[['_route' => '_815'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46380 => [[['_route' => '_781'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46430 => [[['_route' => '_717'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46482 => [[['_route' => '_782'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46530 => [[['_route' => '_832'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46583 => [[['_route' => '_795'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46631 => [[['_route' => '_887'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46681 => [[['_route' => '_800'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46730 => [[['_route' => '_826'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46779 => [[['_route' => '_881'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46828 => [[['_route' => '_886'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46877 => [[['_route' => '_938'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46935 => [[['_route' => '_540'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46983 => [[['_route' => '_643'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47033 => [[['_route' => '_544'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47082 => [[['_route' => '_552'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47134 => [[['_route' => '_567'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47182 => [[['_route' => '_608'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47230 => [[['_route' => '_698'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47278 => [[['_route' => '_988'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47331 => [[['_route' => '_583'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47379 => [[['_route' => '_998'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47432 => [[['_route' => '_604'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47480 => [[['_route' => '_630'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47528 => [[['_route' => '_706'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47576 => [[['_route' => '_976'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47629 => [[['_route' => '_673'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47677 => [[['_route' => '_678'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47725 => [[['_route' => '_931'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47775 => [[['_route' => '_751'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47824 => [[['_route' => '_766'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47876 => [[['_route' => '_792'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47924 => [[['_route' => '_814'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47974 => [[['_route' => '_798'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48026 => [[['_route' => '_851'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48074 => [[['_route' => '_941'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48122 => [[['_route' => '_953'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48170 => [[['_route' => '_975'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48220 => [[['_route' => '_873'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48269 => [[['_route' => '_936'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48318 => [[['_route' => '_994'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48376 => [[['_route' => '_562'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48424 => [[['_route' => '_770'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48475 => [[['_route' => '_774'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48522 => [[['_route' => '_966'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48573 => [[['_route' => '_582'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48625 => [[['_route' => '_606'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48673 => [[['_route' => '_648'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48723 => [[['_route' => '_624'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48775 => [[['_route' => '_626'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48823 => [[['_route' => '_821'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48873 => [[['_route' => '_628'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48922 => [[['_route' => '_638'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48974 => [[['_route' => '_640'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49022 => [[['_route' => '_990'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49072 => [[['_route' => '_705'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49121 => [[['_route' => '_757'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49176 => [[['_route' => '_785'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49223 => [[['_route' => '_875'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49270 => [[['_route' => '_894'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49319 => [[['_route' => '_945'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49375 => [[['_route' => '_816'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49422 => [[['_route' => '_872'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49471 => [[['_route' => '_921'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49519 => [[['_route' => '_960'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49567 => [[['_route' => '_974'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49620 => [[['_route' => '_835'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49668 => [[['_route' => '_934'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49718 => [
-            [['_route' => '_869'], ['a', 'b', 'c'], null, null, false, false, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher11.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher11.php
deleted file mode 100644
index dc0e5f5545eb099e6e1a6d082097dad19923dc00..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher11.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/(en|fr)/(?'
-                    .'|admin/post(?'
-                        .'|(*:32)'
-                        .'|/(?'
-                            .'|new(*:46)'
-                            .'|(\\d+)(*:58)'
-                            .'|(\\d+)/edit(*:75)'
-                            .'|(\\d+)/delete(*:94)'
-                        .')'
-                    .')'
-                    .'|blog(?'
-                        .'|(*:110)'
-                        .'|/(?'
-                            .'|rss\\.xml(*:130)'
-                            .'|p(?'
-                                .'|age/([^/]++)(*:154)'
-                                .'|osts/([^/]++)(*:175)'
-                            .')'
-                            .'|comments/(\\d+)/new(*:202)'
-                            .'|search(*:216)'
-                        .')'
-                    .')'
-                    .'|log(?'
-                        .'|in(*:234)'
-                        .'|out(*:245)'
-                    .')'
-                .')'
-                .'|/(en|fr)?(*:264)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        32 => [[['_route' => 'a', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-        46 => [[['_route' => 'b', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        58 => [[['_route' => 'c', '_locale' => 'en'], ['_locale', 'id'], null, null, false, true, null]],
-        75 => [[['_route' => 'd', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-        94 => [[['_route' => 'e', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-        110 => [[['_route' => 'f', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-        130 => [[['_route' => 'g', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        154 => [[['_route' => 'h', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-        175 => [[['_route' => 'i', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-        202 => [[['_route' => 'j', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-        216 => [[['_route' => 'k', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        234 => [[['_route' => 'l', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        245 => [[['_route' => 'm', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        264 => [
-            [['_route' => 'n', '_locale' => 'en'], ['_locale'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher12.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher12.php
deleted file mode 100644
index a675d84a4327072fca31881d8f4104d4424261b8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher12.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/abc([^/]++)/(?'
-                    .'|1(?'
-                        .'|(*:27)'
-                        .'|0(?'
-                            .'|(*:38)'
-                            .'|0(*:46)'
-                        .')'
-                    .')'
-                    .'|2(?'
-                        .'|(*:59)'
-                        .'|0(?'
-                            .'|(*:70)'
-                            .'|0(*:78)'
-                        .')'
-                    .')'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        27 => [[['_route' => 'r1'], ['foo'], null, null, false, false, null]],
-        38 => [[['_route' => 'r10'], ['foo'], null, null, false, false, null]],
-        46 => [[['_route' => 'r100'], ['foo'], null, null, false, false, null]],
-        59 => [[['_route' => 'r2'], ['foo'], null, null, false, false, null]],
-        70 => [[['_route' => 'r20'], ['foo'], null, null, false, false, null]],
-        78 => [
-            [['_route' => 'r200'], ['foo'], null, null, false, false, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher13.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher13.php
deleted file mode 100644
index 63252943df31c9077851b22d1664753a7828b74e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher13.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-            .'|(?i:([^\\.]++)\\.exampple\\.com)\\.(?'
-                .'|/abc([^/]++)(?'
-                    .'|(*:56)'
-                .')'
-            .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        56 => [
-            [['_route' => 'r1'], ['foo', 'foo'], null, null, false, true, null],
-            [['_route' => 'r2'], ['foo', 'foo'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher2.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher2.php
deleted file mode 100644
index 13629954a8d1206808cd785751b068ad9933fd68..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher2.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-        '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-        '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-        '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-        '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-        '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-        '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-        '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-        '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-        '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-        '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-        '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-        '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-        '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-        '/secure' => [[['_route' => 'secure'], null, null, ['https' => 0], false, false, null]],
-        '/nonsecure' => [[['_route' => 'nonsecure'], null, null, ['http' => 0], false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-            .'|(?:(?:[^./]*+\\.)++)(?'
-                .'|/foo/(baz|symfony)(*:47)'
-                .'|/bar(?'
-                    .'|/([^/]++)(*:70)'
-                    .'|head/([^/]++)(*:90)'
-                .')'
-                .'|/test/([^/]++)(?'
-                    .'|(*:115)'
-                .')'
-                .'|/([\']+)(*:131)'
-                .'|/a/(?'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:160)'
-                        .'|(*:168)'
-                    .')'
-                    .'|(.*)(*:181)'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:204)'
-                        .'|(*:212)'
-                    .')'
-                .')'
-                .'|/multi/hello(?:/([^/]++))?(*:248)'
-                .'|/([^/]++)/b/([^/]++)(?'
-                    .'|(*:279)'
-                    .'|(*:287)'
-                .')'
-                .'|/aba/([^/]++)(*:309)'
-            .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                .'|/route1(?'
-                    .'|3/([^/]++)(*:371)'
-                    .'|4/([^/]++)(*:389)'
-                .')'
-            .')|(?i:c\\.example\\.com)\\.(?'
-                .'|/route15/([^/]++)(*:441)'
-            .')|(?:(?:[^./]*+\\.)++)(?'
-                .'|/route16/([^/]++)(*:489)'
-                .'|/a/(?'
-                    .'|a\\.\\.\\.(*:510)'
-                    .'|b/(?'
-                        .'|([^/]++)(*:531)'
-                        .'|c/([^/]++)(*:549)'
-                    .')'
-                .')'
-            .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-        70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-        90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-        115 => [
-            [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-            [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-            [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-        ],
-        131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-        160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-        168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-        181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-        204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-        212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-        248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-        279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-        287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-        309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-        371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-        389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-        441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-        489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-        510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-        531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-        549 => [
-            [['_route' => 'c'], ['var'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher3.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher3.php
deleted file mode 100644
index 4fe52b3c83ca6d85b5baa7e4cccf6c99c1cd623b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher3.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/rootprefix/test' => [[['_route' => 'static'], null, null, null, false, false, null]],
-        '/with-condition' => [[['_route' => 'with-condition'], null, null, null, false, false, -1]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/rootprefix/([^/]++)(*:27)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        27 => [
-            [['_route' => 'dynamic'], ['var'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    static function ($condition, $context, $request) { // $checkCondition
-        switch ($condition) {
-            case -1: return ($context->getMethod() == "GET");
-        }
-    },
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher4.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher4.php
deleted file mode 100644
index d0a354a93e63551ceb4ecc28be3073a9cf26d1dd..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher4.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/just_head' => [[['_route' => 'just_head'], null, ['HEAD' => 0], null, false, false, null]],
-        '/head_and_get' => [[['_route' => 'head_and_get'], null, ['HEAD' => 0, 'GET' => 1], null, false, false, null]],
-        '/get_and_head' => [[['_route' => 'get_and_head'], null, ['GET' => 0, 'HEAD' => 1], null, false, false, null]],
-        '/post_and_head' => [[['_route' => 'post_and_head'], null, ['POST' => 0, 'HEAD' => 1], null, false, false, null]],
-        '/put_and_post' => [
-            [['_route' => 'put_and_post'], null, ['PUT' => 0, 'POST' => 1], null, false, false, null],
-            [['_route' => 'put_and_get_and_head'], null, ['PUT' => 0, 'GET' => 1, 'HEAD' => 2], null, false, false, null],
-        ],
-    ],
-    [ // $regexpList
-    ],
-    [ // $dynamicRoutes
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher5.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher5.php
deleted file mode 100644
index 35c650978e1aedc8dd496264b8e487b1f5548f66..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher5.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/a/11' => [[['_route' => 'a_first'], null, null, null, false, false, null]],
-        '/a/22' => [[['_route' => 'a_second'], null, null, null, false, false, null]],
-        '/a/333' => [[['_route' => 'a_third'], null, null, null, false, false, null]],
-        '/a/44' => [[['_route' => 'a_fourth'], null, null, null, true, false, null]],
-        '/a/55' => [[['_route' => 'a_fifth'], null, null, null, true, false, null]],
-        '/a/66' => [[['_route' => 'a_sixth'], null, null, null, true, false, null]],
-        '/nested/group/a' => [[['_route' => 'nested_a'], null, null, null, true, false, null]],
-        '/nested/group/b' => [[['_route' => 'nested_b'], null, null, null, true, false, null]],
-        '/nested/group/c' => [[['_route' => 'nested_c'], null, null, null, true, false, null]],
-        '/slashed/group' => [[['_route' => 'slashed_a'], null, null, null, true, false, null]],
-        '/slashed/group/b' => [[['_route' => 'slashed_b'], null, null, null, true, false, null]],
-        '/slashed/group/c' => [[['_route' => 'slashed_c'], null, null, null, true, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/([^/]++)(*:16)'
-                .'|/nested/([^/]++)(*:39)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        16 => [[['_route' => 'a_wildcard'], ['param'], null, null, false, true, null]],
-        39 => [
-            [['_route' => 'nested_wildcard'], ['param'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher6.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher6.php
deleted file mode 100644
index 571e288a8f954d0f056f6feb00e3f78dfab772a8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher6.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-        '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-        '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-        '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-        '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-        '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-        '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-        '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:46)'
-                    .'|get\\-method/([^/]++)(*:73)'
-                    .'|head\\-method/([^/]++)(*:101)'
-                    .'|post\\-method/([^/]++)(*:130)'
-                .')'
-                .'|/not\\-trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:183)'
-                    .'|get\\-method/([^/]++)(*:211)'
-                    .'|head\\-method/([^/]++)(*:240)'
-                    .'|post\\-method/([^/]++)(*:269)'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-        73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-        101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-        130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-        183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-        211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-        240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-        269 => [
-            [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher7.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher7.php
deleted file mode 100644
index 571e288a8f954d0f056f6feb00e3f78dfab772a8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher7.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-        '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-        '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-        '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-        '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-        '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-        '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-        '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:46)'
-                    .'|get\\-method/([^/]++)(*:73)'
-                    .'|head\\-method/([^/]++)(*:101)'
-                    .'|post\\-method/([^/]++)(*:130)'
-                .')'
-                .'|/not\\-trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:183)'
-                    .'|get\\-method/([^/]++)(*:211)'
-                    .'|head\\-method/([^/]++)(*:240)'
-                    .'|post\\-method/([^/]++)(*:269)'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-        73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-        101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-        130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-        183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-        211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-        240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-        269 => [
-            [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher8.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher8.php
deleted file mode 100644
index 461789590ef0c538d96e85a7ea0c4962362fced7..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher8.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/(a)(*:11)'
-            .')/?$}sD',
-        11 => '{^(?'
-                .'|/(.)(*:22)'
-            .')/?$}sDu',
-        22 => '{^(?'
-                .'|/(.)(*:33)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        11 => [[['_route' => 'a'], ['a'], null, null, false, true, null]],
-        22 => [[['_route' => 'b'], ['a'], null, null, false, true, null]],
-        33 => [
-            [['_route' => 'c'], ['a'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher9.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher9.php
deleted file mode 100644
index da1c8a706fd00ef576e7f8afa8731e55a9f9ee53..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher9.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-        '/' => [
-            [['_route' => 'a'], '#^(?P<d>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-            [['_route' => 'c'], '#^(?P<e>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-            [['_route' => 'b'], 'd.c.b.a', null, null, false, false, null],
-        ],
-    ],
-    [ // $regexpList
-    ],
-    [ // $dynamicRoutes
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher0.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher0.php
deleted file mode 100644
index df09938d61b585953de5d9f020de76c4f70e0b45..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher0.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher1.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher1.php
deleted file mode 100644
index 1d88511a28ec2365a21c8d28ad8e983223b0cb04..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher1.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->staticRoutes = [
-            '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-            '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-            '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-            '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-            '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-            '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-            '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-            '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-            '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-            '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-            '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-            '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-            '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                .'|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/foo/(baz|symfony)(*:47)'
-                    .'|/bar(?'
-                        .'|/([^/]++)(*:70)'
-                        .'|head/([^/]++)(*:90)'
-                    .')'
-                    .'|/test/([^/]++)(?'
-                        .'|(*:115)'
-                    .')'
-                    .'|/([\']+)(*:131)'
-                    .'|/a/(?'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:160)'
-                            .'|(*:168)'
-                        .')'
-                        .'|(.*)(*:181)'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:204)'
-                            .'|(*:212)'
-                        .')'
-                    .')'
-                    .'|/multi/hello(?:/([^/]++))?(*:248)'
-                    .'|/([^/]++)/b/([^/]++)(?'
-                        .'|(*:279)'
-                        .'|(*:287)'
-                    .')'
-                    .'|/aba/([^/]++)(*:309)'
-                .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                    .'|/route1(?'
-                        .'|3/([^/]++)(*:371)'
-                        .'|4/([^/]++)(*:389)'
-                    .')'
-                .')|(?i:c\\.example\\.com)\\.(?'
-                    .'|/route15/([^/]++)(*:441)'
-                .')|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/route16/([^/]++)(*:489)'
-                    .'|/a/(?'
-                        .'|a\\.\\.\\.(*:510)'
-                        .'|b/(?'
-                            .'|([^/]++)(*:531)'
-                            .'|c/([^/]++)(*:549)'
-                        .')'
-                    .')'
-                .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-            70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-            90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-            115 => [
-                [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-                [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-                [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-            ],
-            131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-            160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-            168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-            181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-            204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-            212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-            248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-            279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-            287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-            309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-            371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-            389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-            441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-            489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-            510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-            531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-            549 => [
-                [['_route' => 'c'], ['var'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher10.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher10.php
deleted file mode 100644
index 232030cc48d048012b257cc685e44b266749b56c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher10.php
+++ /dev/null
@@ -1,2779 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/c(?'
-                        .'|f(?'
-                            .'|cd20/([^/]++)/([^/]++)/([^/]++)/cfcd20(*:54)'
-                            .'|e(?'
-                                .'|cdb/([^/]++)/([^/]++)/([^/]++)/cfecdb(*:102)'
-                                .'|e39/([^/]++)/([^/]++)/([^/]++)/cfee39(*:147)'
-                            .')'
-                            .'|a086/([^/]++)/([^/]++)/([^/]++)/cfa086(*:194)'
-                            .'|004f/([^/]++)/([^/]++)/([^/]++)/cf004f(*:240)'
-                        .')'
-                        .'|4(?'
-                            .'|ca42/([^/]++)/([^/]++)/([^/]++)/c4ca42(*:291)'
-                            .'|5147/([^/]++)/([^/]++)/([^/]++)/c45147(*:337)'
-                            .'|1000/([^/]++)/([^/]++)/([^/]++)/c41000(*:383)'
-                        .')'
-                        .'|8(?'
-                            .'|1e72/([^/]++)/([^/]++)/([^/]++)/c81e72(*:434)'
-                            .'|ffe9/([^/]++)/([^/]++)/([^/]++)/c8ffe9(*:480)'
-                            .'|6a7e/([^/]++)/([^/]++)/([^/]++)/c86a7e(*:526)'
-                        .')'
-                        .'|9(?'
-                            .'|f0f8/([^/]++)/([^/]++)/([^/]++)/c9f0f8(*:577)'
-                            .'|e107/([^/]++)/([^/]++)/([^/]++)/c9e107(*:623)'
-                        .')'
-                        .'|2(?'
-                            .'|0(?'
-                                .'|ad4/([^/]++)/([^/]++)/([^/]++)/c20ad4(*:677)'
-                                .'|3d8/([^/]++)/([^/]++)/([^/]++)/c203d8(*:722)'
-                            .')'
-                            .'|4cd7/([^/]++)/([^/]++)/([^/]++)/c24cd7(*:769)'
-                        .')'
-                        .'|5(?'
-                            .'|1ce4/([^/]++)/([^/]++)/([^/]++)/c51ce4(*:820)'
-                            .'|2f1b/([^/]++)/([^/]++)/([^/]++)/c52f1b(*:866)'
-                            .'|ff25/([^/]++)/([^/]++)/([^/]++)/c5ff25(*:912)'
-                        .')'
-                        .'|7(?'
-                            .'|4d97/([^/]++)/([^/]++)/([^/]++)/c74d97(*:963)'
-                            .'|e124/([^/]++)/([^/]++)/([^/]++)/c7e124(*:1009)'
-                        .')'
-                        .'|16a53/([^/]++)/([^/]++)/([^/]++)/c16a53(*:1058)'
-                        .'|0(?'
-                            .'|c7c7/([^/]++)/([^/]++)/([^/]++)/c0c7c7(*:1109)'
-                            .'|e190/([^/]++)/([^/]++)/([^/]++)/c0e190(*:1156)'
-                            .'|42f4/([^/]++)/([^/]++)/([^/]++)/c042f4(*:1203)'
-                            .'|58f5/([^/]++)/([^/]++)/([^/]++)/c058f5(*:1250)'
-                        .')'
-                        .'|e(?'
-                            .'|debb/([^/]++)/([^/]++)/([^/]++)/cedebb(*:1302)'
-                            .'|e631/([^/]++)/([^/]++)/([^/]++)/cee631(*:1349)'
-                        .')'
-                        .'|a(?'
-                            .'|46c1/([^/]++)/([^/]++)/([^/]++)/ca46c1(*:1401)'
-                            .'|f1a3/([^/]++)/([^/]++)/([^/]++)/caf1a3(*:1448)'
-                        .')'
-                        .'|b70ab/([^/]++)/([^/]++)/([^/]++)/cb70ab(*:1497)'
-                        .'|d0069/([^/]++)/([^/]++)/([^/]++)/cd0069(*:1545)'
-                        .'|3(?'
-                            .'|e878/([^/]++)/([^/]++)/([^/]++)/c3e878(*:1596)'
-                            .'|c59e/([^/]++)/([^/]++)/([^/]++)/c3c59e(*:1643)'
-                        .')'
-                    .')'
-                    .'|/e(?'
-                        .'|c(?'
-                            .'|cbc8/([^/]++)/([^/]++)/([^/]++)/eccbc8(*:1701)'
-                            .'|8(?'
-                                .'|956/([^/]++)/([^/]++)/([^/]++)/ec8956(*:1751)'
-                                .'|ce6/([^/]++)/([^/]++)/([^/]++)/ec8ce6(*:1797)'
-                            .')'
-                            .'|5dec/([^/]++)/([^/]++)/([^/]++)/ec5dec(*:1845)'
-                        .')'
-                        .'|4(?'
-                            .'|da3b/([^/]++)/([^/]++)/([^/]++)/e4da3b(*:1897)'
-                            .'|a622/([^/]++)/([^/]++)/([^/]++)/e4a622(*:1944)'
-                            .'|6de7/([^/]++)/([^/]++)/([^/]++)/e46de7(*:1991)'
-                            .'|4fea/([^/]++)/([^/]++)/([^/]++)/e44fea(*:2038)'
-                        .')'
-                        .'|3(?'
-                            .'|6985/([^/]++)/([^/]++)/([^/]++)/e36985(*:2090)'
-                            .'|796a/([^/]++)/([^/]++)/([^/]++)/e3796a(*:2137)'
-                        .')'
-                        .'|a(?'
-                            .'|5d2f/([^/]++)/([^/]++)/([^/]++)/ea5d2f(*:2189)'
-                            .'|e27d/([^/]++)/([^/]++)/([^/]++)/eae27d(*:2236)'
-                        .')'
-                        .'|2(?'
-                            .'|c(?'
-                                .'|420/([^/]++)/([^/]++)/([^/]++)/e2c420(*:2291)'
-                                .'|0be/([^/]++)/([^/]++)/([^/]++)/e2c0be(*:2337)'
-                            .')'
-                            .'|ef52/([^/]++)/([^/]++)/([^/]++)/e2ef52(*:2385)'
-                        .')'
-                        .'|d(?'
-                            .'|3d2c/([^/]++)/([^/]++)/([^/]++)/ed3d2c(*:2437)'
-                            .'|a80a/([^/]++)/([^/]++)/([^/]++)/eda80a(*:2484)'
-                            .'|dea8/([^/]++)/([^/]++)/([^/]++)/eddea8(*:2531)'
-                        .')'
-                        .'|b(?'
-                            .'|16(?'
-                                .'|0d/([^/]++)/([^/]++)/([^/]++)/eb160d(*:2586)'
-                                .'|37/([^/]++)/([^/]++)/([^/]++)/eb1637(*:2631)'
-                            .')'
-                            .'|a0dc/([^/]++)/([^/]++)/([^/]++)/eba0dc(*:2679)'
-                        .')'
-                        .'|0(?'
-                            .'|0da0/([^/]++)/([^/]++)/([^/]++)/e00da0(*:2731)'
-                            .'|c641/([^/]++)/([^/]++)/([^/]++)/e0c641(*:2778)'
-                        .')'
-                        .'|e(?'
-                            .'|cca5/([^/]++)/([^/]++)/([^/]++)/eecca5(*:2830)'
-                            .'|d5af/([^/]++)/([^/]++)/([^/]++)/eed5af(*:2877)'
-                        .')'
-                        .'|96ed4/([^/]++)/([^/]++)/([^/]++)/e96ed4(*:2926)'
-                        .'|1(?'
-                            .'|6542/([^/]++)/([^/]++)/([^/]++)/e16542(*:2977)'
-                            .'|e32e/([^/]++)/([^/]++)/([^/]++)/e1e32e(*:3024)'
-                        .')'
-                        .'|56954/([^/]++)/([^/]++)/([^/]++)/e56954(*:3073)'
-                        .'|f(?'
-                            .'|0d39/([^/]++)/([^/]++)/([^/]++)/ef0d39(*:3124)'
-                            .'|e937/([^/]++)/([^/]++)/([^/]++)/efe937(*:3171)'
-                            .'|575e/([^/]++)/([^/]++)/([^/]++)/ef575e(*:3218)'
-                        .')'
-                        .'|7b24b/([^/]++)/([^/]++)/([^/]++)/e7b24b(*:3267)'
-                        .'|836d8/([^/]++)/([^/]++)/([^/]++)/e836d8(*:3315)'
-                    .')'
-                    .'|/a(?'
-                        .'|8(?'
-                            .'|7ff6/([^/]++)/([^/]++)/([^/]++)/a87ff6(*:3372)'
-                            .'|baa5/([^/]++)/([^/]++)/([^/]++)/a8baa5(*:3419)'
-                            .'|f15e/([^/]++)/([^/]++)/([^/]++)/a8f15e(*:3466)'
-                            .'|c88a/([^/]++)/([^/]++)/([^/]++)/a8c88a(*:3513)'
-                            .'|abb4/([^/]++)/([^/]++)/([^/]++)/a8abb4(*:3560)'
-                        .')'
-                        .'|a(?'
-                            .'|b323/([^/]++)/([^/]++)/([^/]++)/aab323(*:3612)'
-                            .'|942a/([^/]++)/([^/]++)/([^/]++)/aa942a(*:3659)'
-                        .')'
-                        .'|5(?'
-                            .'|bfc9/([^/]++)/([^/]++)/([^/]++)/a5bfc9(*:3711)'
-                            .'|771b/([^/]++)/([^/]++)/([^/]++)/a5771b(*:3758)'
-                            .'|e001/([^/]++)/([^/]++)/([^/]++)/a5e001(*:3805)'
-                            .'|97e5/([^/]++)/([^/]++)/([^/]++)/a597e5(*:3852)'
-                            .'|16a8/([^/]++)/([^/]++)/([^/]++)/a516a8(*:3899)'
-                        .')'
-                        .'|1d0c6/([^/]++)/([^/]++)/([^/]++)/a1d0c6(*:3948)'
-                        .'|6(?'
-                            .'|84ec/([^/]++)/([^/]++)/([^/]++)/a684ec(*:3999)'
-                            .'|6658/([^/]++)/([^/]++)/([^/]++)/a66658(*:4046)'
-                        .')'
-                        .'|3(?'
-                            .'|f390/([^/]++)/([^/]++)/([^/]++)/a3f390(*:4098)'
-                            .'|c65c/([^/]++)/([^/]++)/([^/]++)/a3c65c(*:4145)'
-                        .')'
-                        .'|d(?'
-                            .'|61ab/([^/]++)/([^/]++)/([^/]++)/ad61ab(*:4197)'
-                            .'|13a2/([^/]++)/([^/]++)/([^/]++)/ad13a2(*:4244)'
-                            .'|972f/([^/]++)/([^/]++)/([^/]++)/ad972f(*:4291)'
-                        .')'
-                        .'|c(?'
-                            .'|627a/([^/]++)/([^/]++)/([^/]++)/ac627a(*:4343)'
-                            .'|1dd2/([^/]++)/([^/]++)/([^/]++)/ac1dd2(*:4390)'
-                        .')'
-                        .'|9(?'
-                            .'|7da6/([^/]++)/([^/]++)/([^/]++)/a97da6(*:4442)'
-                            .'|6b65/([^/]++)/([^/]++)/([^/]++)/a96b65(*:4489)'
-                        .')'
-                        .'|0(?'
-                            .'|a080/([^/]++)/([^/]++)/([^/]++)/a0a080(*:4541)'
-                            .'|2ffd/([^/]++)/([^/]++)/([^/]++)/a02ffd(*:4588)'
-                            .'|1a03/([^/]++)/([^/]++)/([^/]++)/a01a03(*:4635)'
-                        .')'
-                        .'|4(?'
-                            .'|a042/([^/]++)/([^/]++)/([^/]++)/a4a042(*:4687)'
-                            .'|f236/([^/]++)/([^/]++)/([^/]++)/a4f236(*:4734)'
-                            .'|9e94/([^/]++)/([^/]++)/([^/]++)/a49e94(*:4781)'
-                        .')'
-                        .'|2557a/([^/]++)/([^/]++)/([^/]++)/a2557a(*:4830)'
-                        .'|b817c/([^/]++)/([^/]++)/([^/]++)/ab817c(*:4878)'
-                    .')'
-                    .'|/1(?'
-                        .'|6(?'
-                            .'|7909/([^/]++)/([^/]++)/([^/]++)/167909(*:4935)'
-                            .'|a5cd/([^/]++)/([^/]++)/([^/]++)/16a5cd(*:4982)'
-                            .'|51cf/([^/]++)/([^/]++)/([^/]++)/1651cf(*:5029)'
-                        .')'
-                        .'|f(?'
-                            .'|0e3d/([^/]++)/([^/]++)/([^/]++)/1f0e3d(*:5081)'
-                            .'|f(?'
-                                .'|1de/([^/]++)/([^/]++)/([^/]++)/1ff1de(*:5131)'
-                                .'|8a7/([^/]++)/([^/]++)/([^/]++)/1ff8a7(*:5177)'
-                            .')'
-                        .')'
-                        .'|8(?'
-                            .'|2be0/([^/]++)/([^/]++)/([^/]++)/182be0(*:5230)'
-                            .'|d804/([^/]++)/([^/]++)/([^/]++)/18d804(*:5277)'
-                            .'|9977/([^/]++)/([^/]++)/([^/]++)/189977(*:5324)'
-                        .')'
-                        .'|c(?'
-                            .'|383c/([^/]++)/([^/]++)/([^/]++)/1c383c(*:5376)'
-                            .'|9ac0/([^/]++)/([^/]++)/([^/]++)/1c9ac0(*:5423)'
-                        .')'
-                        .'|9(?'
-                            .'|ca14/([^/]++)/([^/]++)/([^/]++)/19ca14(*:5475)'
-                            .'|f3cd/([^/]++)/([^/]++)/([^/]++)/19f3cd(*:5522)'
-                        .')'
-                        .'|7(?'
-                            .'|e621/([^/]++)/([^/]++)/([^/]++)/17e621(*:5574)'
-                            .'|0000/([^/]++)/([^/]++)/([^/]++)/170000(*:5621)'
-                            .'|d63b/([^/]++)/([^/]++)/([^/]++)/17d63b(*:5668)'
-                        .')'
-                        .'|4(?'
-                            .'|bfa6/([^/]++)/([^/]++)/([^/]++)/14bfa6(*:5720)'
-                            .'|0f69/([^/]++)/([^/]++)/([^/]++)/140f69(*:5767)'
-                            .'|9e96/([^/]++)/([^/]++)/([^/]++)/149e96(*:5814)'
-                            .'|2949/([^/]++)/([^/]++)/([^/]++)/142949(*:5861)'
-                        .')'
-                        .'|a(?'
-                            .'|fa34/([^/]++)/([^/]++)/([^/]++)/1afa34(*:5913)'
-                            .'|5b1e/([^/]++)/([^/]++)/([^/]++)/1a5b1e(*:5960)'
-                        .')'
-                        .'|3(?'
-                            .'|8(?'
-                                .'|597/([^/]++)/([^/]++)/([^/]++)/138597(*:6015)'
-                                .'|bb0/([^/]++)/([^/]++)/([^/]++)/138bb0(*:6061)'
-                            .')'
-                            .'|f(?'
-                                .'|e9d/([^/]++)/([^/]++)/([^/]++)/13fe9d(*:6112)'
-                                .'|989/([^/]++)/([^/]++)/([^/]++)/13f989(*:6158)'
-                                .'|3cf/([^/]++)/([^/]++)/([^/]++)/13f3cf(*:6204)'
-                            .')'
-                        .')'
-                        .'|d7f7a/([^/]++)/([^/]++)/([^/]++)/1d7f7a(*:6254)'
-                        .'|5(?'
-                            .'|34b7/([^/]++)/([^/]++)/([^/]++)/1534b7(*:6305)'
-                            .'|8f30/([^/]++)/([^/]++)/([^/]++)/158f30(*:6352)'
-                            .'|4384/([^/]++)/([^/]++)/([^/]++)/154384(*:6399)'
-                            .'|d4e8/([^/]++)/([^/]++)/([^/]++)/15d4e8(*:6446)'
-                        .')'
-                        .'|1(?'
-                            .'|5f89/([^/]++)/([^/]++)/([^/]++)/115f89(*:6498)'
-                            .'|b984/([^/]++)/([^/]++)/([^/]++)/11b984(*:6545)'
-                        .')'
-                        .'|068c6/([^/]++)/([^/]++)/([^/]++)/1068c6(*:6594)'
-                        .'|be3bc/([^/]++)/([^/]++)/([^/]++)/1be3bc(*:6642)'
-                    .')'
-                    .'|/8(?'
-                        .'|f(?'
-                            .'|1(?'
-                                .'|4e4/([^/]++)/([^/]++)/([^/]++)/8f14e4(*:6702)'
-                                .'|21c/([^/]++)/([^/]++)/([^/]++)/8f121c(*:6748)'
-                            .')'
-                            .'|8551/([^/]++)/([^/]++)/([^/]++)/8f8551(*:6796)'
-                            .'|5329/([^/]++)/([^/]++)/([^/]++)/8f5329(*:6843)'
-                            .'|e009/([^/]++)/([^/]++)/([^/]++)/8fe009(*:6890)'
-                        .')'
-                        .'|e(?'
-                            .'|296a/([^/]++)/([^/]++)/([^/]++)/8e296a(*:6942)'
-                            .'|98d8/([^/]++)/([^/]++)/([^/]++)/8e98d8(*:6989)'
-                            .'|fb10/([^/]++)/([^/]++)/([^/]++)/8efb10(*:7036)'
-                            .'|6b42/([^/]++)/([^/]++)/([^/]++)/8e6b42(*:7083)'
-                        .')'
-                        .'|61398/([^/]++)/([^/]++)/([^/]++)/861398(*:7132)'
-                        .'|1(?'
-                            .'|2b4b/([^/]++)/([^/]++)/([^/]++)/812b4b(*:7183)'
-                            .'|9f46/([^/]++)/([^/]++)/([^/]++)/819f46(*:7230)'
-                            .'|6b11/([^/]++)/([^/]++)/([^/]++)/816b11(*:7277)'
-                        .')'
-                        .'|d(?'
-                            .'|5e95/([^/]++)/([^/]++)/([^/]++)/8d5e95(*:7329)'
-                            .'|3bba/([^/]++)/([^/]++)/([^/]++)/8d3bba(*:7376)'
-                            .'|d48d/([^/]++)/([^/]++)/([^/]++)/8dd48d(*:7423)'
-                            .'|7d8e/([^/]++)/([^/]++)/([^/]++)/8d7d8e(*:7470)'
-                        .')'
-                        .'|2(?'
-                            .'|aa4b/([^/]++)/([^/]++)/([^/]++)/82aa4b(*:7522)'
-                            .'|1(?'
-                                .'|612/([^/]++)/([^/]++)/([^/]++)/821612(*:7572)'
-                                .'|fa7/([^/]++)/([^/]++)/([^/]++)/821fa7(*:7618)'
-                            .')'
-                            .'|cec9/([^/]++)/([^/]++)/([^/]++)/82cec9(*:7666)'
-                        .')'
-                        .'|5(?'
-                            .'|d8ce/([^/]++)/([^/]++)/([^/]++)/85d8ce(*:7718)'
-                            .'|4d(?'
-                                .'|6f/([^/]++)/([^/]++)/([^/]++)/854d6f(*:7768)'
-                                .'|9f/([^/]++)/([^/]++)/([^/]++)/854d9f(*:7813)'
-                            .')'
-                        .')'
-                        .'|4d9ee/([^/]++)/([^/]++)/([^/]++)/84d9ee(*:7863)'
-                        .'|c(?'
-                            .'|19f5/([^/]++)/([^/]++)/([^/]++)/8c19f5(*:7914)'
-                            .'|b22b/([^/]++)/([^/]++)/([^/]++)/8cb22b(*:7961)'
-                        .')'
-                        .'|39ab4/([^/]++)/([^/]++)/([^/]++)/839ab4(*:8010)'
-                        .'|9f0fd/([^/]++)/([^/]++)/([^/]++)/89f0fd(*:8058)'
-                        .'|bf121/([^/]++)/([^/]++)/([^/]++)/8bf121(*:8106)'
-                        .'|77a9b/([^/]++)/([^/]++)/([^/]++)/877a9b(*:8154)'
-                    .')'
-                    .'|/4(?'
-                        .'|5(?'
-                            .'|c48c/([^/]++)/([^/]++)/([^/]++)/45c48c(*:8211)'
-                            .'|fbc6/([^/]++)/([^/]++)/([^/]++)/45fbc6(*:8258)'
-                        .')'
-                        .'|e732c/([^/]++)/([^/]++)/([^/]++)/4e732c(*:8307)'
-                        .'|4f683/([^/]++)/([^/]++)/([^/]++)/44f683(*:8355)'
-                        .'|3(?'
-                            .'|ec51/([^/]++)/([^/]++)/([^/]++)/43ec51(*:8406)'
-                            .'|2aca/([^/]++)/([^/]++)/([^/]++)/432aca(*:8453)'
-                        .')'
-                        .'|c5(?'
-                            .'|6ff/([^/]++)/([^/]++)/([^/]++)/4c56ff(*:8505)'
-                            .'|bde/([^/]++)/([^/]++)/([^/]++)/4c5bde(*:8551)'
-                        .')'
-                        .'|2(?'
-                            .'|a0e1/([^/]++)/([^/]++)/([^/]++)/42a0e1(*:8603)'
-                            .'|e7aa/([^/]++)/([^/]++)/([^/]++)/42e7aa(*:8650)'
-                            .'|998c/([^/]++)/([^/]++)/([^/]++)/42998c(*:8697)'
-                            .'|8fca/([^/]++)/([^/]++)/([^/]++)/428fca(*:8744)'
-                        .')'
-                        .'|7(?'
-                            .'|d1e9/([^/]++)/([^/]++)/([^/]++)/47d1e9(*:8796)'
-                            .'|34ba/([^/]++)/([^/]++)/([^/]++)/4734ba(*:8843)'
-                        .')'
-                        .'|6ba9f/([^/]++)/([^/]++)/([^/]++)/46ba9f(*:8892)'
-                        .'|8aedb/([^/]++)/([^/]++)/([^/]++)/48aedb(*:8940)'
-                        .'|9(?'
-                            .'|182f/([^/]++)/([^/]++)/([^/]++)/49182f(*:8991)'
-                            .'|6e05/([^/]++)/([^/]++)/([^/]++)/496e05(*:9038)'
-                            .'|ae49/([^/]++)/([^/]++)/([^/]++)/49ae49(*:9085)'
-                        .')'
-                        .'|0008b/([^/]++)/([^/]++)/([^/]++)/40008b(*:9134)'
-                        .'|1(?'
-                            .'|f1f1/([^/]++)/([^/]++)/([^/]++)/41f1f1(*:9185)'
-                            .'|ae36/([^/]++)/([^/]++)/([^/]++)/41ae36(*:9232)'
-                        .')'
-                        .'|f(?'
-                            .'|6ffe/([^/]++)/([^/]++)/([^/]++)/4f6ffe(*:9284)'
-                            .'|4adc/([^/]++)/([^/]++)/([^/]++)/4f4adc(*:9331)'
-                        .')'
-                    .')'
-                    .'|/d(?'
-                        .'|3(?'
-                            .'|d944/([^/]++)/([^/]++)/([^/]++)/d3d944(*:9389)'
-                            .'|9577/([^/]++)/([^/]++)/([^/]++)/d39577(*:9436)'
-                            .'|4ab1/([^/]++)/([^/]++)/([^/]++)/d34ab1(*:9483)'
-                        .')'
-                        .'|6(?'
-                            .'|7d8a/([^/]++)/([^/]++)/([^/]++)/d67d8a(*:9535)'
-                            .'|4592/([^/]++)/([^/]++)/([^/]++)/d64592(*:9582)'
-                            .'|baf6/([^/]++)/([^/]++)/([^/]++)/d6baf6(*:9629)'
-                            .'|1e4b/([^/]++)/([^/]++)/([^/]++)/d61e4b(*:9676)'
-                        .')'
-                        .'|9(?'
-                            .'|d4f4/([^/]++)/([^/]++)/([^/]++)/d9d4f4(*:9728)'
-                            .'|6409/([^/]++)/([^/]++)/([^/]++)/d96409(*:9775)'
-                            .'|47bf/([^/]++)/([^/]++)/([^/]++)/d947bf(*:9822)'
-                            .'|fc5b/([^/]++)/([^/]++)/([^/]++)/d9fc5b(*:9869)'
-                        .')'
-                        .'|8(?'
-                            .'|2c8d/([^/]++)/([^/]++)/([^/]++)/d82c8d(*:9921)'
-                            .'|1f9c/([^/]++)/([^/]++)/([^/]++)/d81f9c(*:9968)'
-                        .')'
-                        .'|2(?'
-                            .'|ddea/([^/]++)/([^/]++)/([^/]++)/d2ddea(*:10020)'
-                            .'|96c1/([^/]++)/([^/]++)/([^/]++)/d296c1(*:10068)'
-                        .')'
-                        .'|0(?'
-                            .'|9bf4/([^/]++)/([^/]++)/([^/]++)/d09bf4(*:10121)'
-                            .'|7e70/([^/]++)/([^/]++)/([^/]++)/d07e70(*:10169)'
-                        .')'
-                        .'|1(?'
-                            .'|f(?'
-                                .'|e17/([^/]++)/([^/]++)/([^/]++)/d1fe17(*:10225)'
-                                .'|491/([^/]++)/([^/]++)/([^/]++)/d1f491(*:10272)'
-                                .'|255/([^/]++)/([^/]++)/([^/]++)/d1f255(*:10319)'
-                            .')'
-                            .'|c38a/([^/]++)/([^/]++)/([^/]++)/d1c38a(*:10368)'
-                            .'|8f65/([^/]++)/([^/]++)/([^/]++)/d18f65(*:10416)'
-                        .')'
-                        .'|a4fb5/([^/]++)/([^/]++)/([^/]++)/da4fb5(*:10466)'
-                        .'|b8e1a/([^/]++)/([^/]++)/([^/]++)/db8e1a(*:10515)'
-                        .'|709f3/([^/]++)/([^/]++)/([^/]++)/d709f3(*:10564)'
-                        .'|c(?'
-                            .'|912a/([^/]++)/([^/]++)/([^/]++)/dc912a(*:10616)'
-                            .'|6a64/([^/]++)/([^/]++)/([^/]++)/dc6a64(*:10664)'
-                        .')'
-                        .'|db306/([^/]++)/([^/]++)/([^/]++)/ddb306(*:10714)'
-                    .')'
-                    .'|/6(?'
-                        .'|5(?'
-                            .'|12bd/([^/]++)/([^/]++)/([^/]++)/6512bd(*:10772)'
-                            .'|b9ee/([^/]++)/([^/]++)/([^/]++)/65b9ee(*:10820)'
-                            .'|ded5/([^/]++)/([^/]++)/([^/]++)/65ded5(*:10868)'
-                        .')'
-                        .'|f(?'
-                            .'|4922/([^/]++)/([^/]++)/([^/]++)/6f4922(*:10921)'
-                            .'|3ef7/([^/]++)/([^/]++)/([^/]++)/6f3ef7(*:10969)'
-                            .'|aa80/([^/]++)/([^/]++)/([^/]++)/6faa80(*:11017)'
-                        .')'
-                        .'|e(?'
-                            .'|a(?'
-                                .'|9ab/([^/]++)/([^/]++)/([^/]++)/6ea9ab(*:11073)'
-                                .'|2ef/([^/]++)/([^/]++)/([^/]++)/6ea2ef(*:11120)'
-                            .')'
-                            .'|cbdd/([^/]++)/([^/]++)/([^/]++)/6ecbdd(*:11169)'
-                        .')'
-                        .'|3(?'
-                            .'|64d3/([^/]++)/([^/]++)/([^/]++)/6364d3(*:11222)'
-                            .'|dc7e/([^/]++)/([^/]++)/([^/]++)/63dc7e(*:11270)'
-                            .'|923f/([^/]++)/([^/]++)/([^/]++)/63923f(*:11318)'
-                        .')'
-                        .'|c(?'
-                            .'|8349/([^/]++)/([^/]++)/([^/]++)/6c8349(*:11371)'
-                            .'|4b76/([^/]++)/([^/]++)/([^/]++)/6c4b76(*:11419)'
-                            .'|dd60/([^/]++)/([^/]++)/([^/]++)/6cdd60(*:11467)'
-                            .'|9882/([^/]++)/([^/]++)/([^/]++)/6c9882(*:11515)'
-                            .'|524f/([^/]++)/([^/]++)/([^/]++)/6c524f(*:11563)'
-                        .')'
-                        .'|7(?'
-                            .'|c6a1/([^/]++)/([^/]++)/([^/]++)/67c6a1(*:11616)'
-                            .'|f7fb/([^/]++)/([^/]++)/([^/]++)/67f7fb(*:11664)'
-                        .')'
-                        .'|42e92/([^/]++)/([^/]++)/([^/]++)/642e92(*:11714)'
-                        .'|6(?'
-                            .'|f041/([^/]++)/([^/]++)/([^/]++)/66f041(*:11766)'
-                            .'|808e/([^/]++)/([^/]++)/([^/]++)/66808e(*:11814)'
-                            .'|3682/([^/]++)/([^/]++)/([^/]++)/663682(*:11862)'
-                        .')'
-                        .'|8(?'
-                            .'|d30a/([^/]++)/([^/]++)/([^/]++)/68d30a(*:11915)'
-                            .'|8396/([^/]++)/([^/]++)/([^/]++)/688396(*:11963)'
-                            .'|5545/([^/]++)/([^/]++)/([^/]++)/685545(*:12011)'
-                            .'|ce19/([^/]++)/([^/]++)/([^/]++)/68ce19(*:12059)'
-                        .')'
-                        .'|9(?'
-                            .'|74ce/([^/]++)/([^/]++)/([^/]++)/6974ce(*:12112)'
-                            .'|8d51/([^/]++)/([^/]++)/([^/]++)/698d51(*:12160)'
-                            .'|adc1/([^/]++)/([^/]++)/([^/]++)/69adc1(*:12208)'
-                            .'|cb3e/([^/]++)/([^/]++)/([^/]++)/69cb3e(*:12256)'
-                        .')'
-                        .'|da(?'
-                            .'|900/([^/]++)/([^/]++)/([^/]++)/6da900(*:12309)'
-                            .'|37d/([^/]++)/([^/]++)/([^/]++)/6da37d(*:12356)'
-                        .')'
-                        .'|21bf6/([^/]++)/([^/]++)/([^/]++)/621bf6(*:12406)'
-                        .'|a9aed/([^/]++)/([^/]++)/([^/]++)/6a9aed(*:12455)'
-                    .')'
-                    .'|/9(?'
-                        .'|b(?'
-                            .'|f31c/([^/]++)/([^/]++)/([^/]++)/9bf31c(*:12513)'
-                            .'|8619/([^/]++)/([^/]++)/([^/]++)/9b8619(*:12561)'
-                            .'|04d1/([^/]++)/([^/]++)/([^/]++)/9b04d1(*:12609)'
-                            .'|e40c/([^/]++)/([^/]++)/([^/]++)/9be40c(*:12657)'
-                            .'|70e8/([^/]++)/([^/]++)/([^/]++)/9b70e8(*:12705)'
-                        .')'
-                        .'|8(?'
-                            .'|f137/([^/]++)/([^/]++)/([^/]++)/98f137(*:12758)'
-                            .'|dce8/([^/]++)/([^/]++)/([^/]++)/98dce8(*:12806)'
-                            .'|72ed/([^/]++)/([^/]++)/([^/]++)/9872ed(*:12854)'
-                            .'|b297/([^/]++)/([^/]++)/([^/]++)/98b297(*:12902)'
-                        .')'
-                        .'|a(?'
-                            .'|1158/([^/]++)/([^/]++)/([^/]++)/9a1158(*:12955)'
-                            .'|9687/([^/]++)/([^/]++)/([^/]++)/9a9687(*:13003)'
-                        .')'
-                        .'|f(?'
-                            .'|6140/([^/]++)/([^/]++)/([^/]++)/9f6140(*:13056)'
-                            .'|c3d7/([^/]++)/([^/]++)/([^/]++)/9fc3d7(*:13104)'
-                            .'|d818/([^/]++)/([^/]++)/([^/]++)/9fd818(*:13152)'
-                        .')'
-                        .'|7(?'
-                            .'|78d5/([^/]++)/([^/]++)/([^/]++)/9778d5(*:13205)'
-                            .'|6652/([^/]++)/([^/]++)/([^/]++)/976652(*:13253)'
-                            .'|9d47/([^/]++)/([^/]++)/([^/]++)/979d47(*:13301)'
-                        .')'
-                        .'|3db85/([^/]++)/([^/]++)/([^/]++)/93db85(*:13351)'
-                        .'|2c(?'
-                            .'|c22/([^/]++)/([^/]++)/([^/]++)/92cc22(*:13403)'
-                            .'|8c9/([^/]++)/([^/]++)/([^/]++)/92c8c9(*:13450)'
-                        .')'
-                        .'|03ce9/([^/]++)/([^/]++)/([^/]++)/903ce9(*:13500)'
-                        .'|6da2f/([^/]++)/([^/]++)/([^/]++)/96da2f(*:13549)'
-                        .'|d(?'
-                            .'|cb88/([^/]++)/([^/]++)/([^/]++)/9dcb88(*:13601)'
-                            .'|fcd5/([^/]++)/([^/]++)/([^/]++)/9dfcd5(*:13649)'
-                            .'|e6d1/([^/]++)/([^/]++)/([^/]++)/9de6d1(*:13697)'
-                        .')'
-                        .'|c(?'
-                            .'|fdf1/([^/]++)/([^/]++)/([^/]++)/9cfdf1(*:13750)'
-                            .'|838d/([^/]++)/([^/]++)/([^/]++)/9c838d(*:13798)'
-                        .')'
-                        .'|18(?'
-                            .'|890/([^/]++)/([^/]++)/([^/]++)/918890(*:13851)'
-                            .'|317/([^/]++)/([^/]++)/([^/]++)/918317(*:13898)'
-                        .')'
-                        .'|4(?'
-                            .'|f6d7/([^/]++)/([^/]++)/([^/]++)/94f6d7(*:13951)'
-                            .'|1e1a/([^/]++)/([^/]++)/([^/]++)/941e1a(*:13999)'
-                            .'|31c8/([^/]++)/([^/]++)/([^/]++)/9431c8(*:14047)'
-                            .'|61cc/([^/]++)/([^/]++)/([^/]++)/9461cc(*:14095)'
-                        .')'
-                        .'|50a41/([^/]++)/([^/]++)/([^/]++)/950a41(*:14145)'
-                    .')'
-                    .'|/7(?'
-                        .'|0(?'
-                            .'|efdf/([^/]++)/([^/]++)/([^/]++)/70efdf(*:14203)'
-                            .'|5f21/([^/]++)/([^/]++)/([^/]++)/705f21(*:14251)'
-                            .'|c639/([^/]++)/([^/]++)/([^/]++)/70c639(*:14299)'
-                        .')'
-                        .'|2b32a/([^/]++)/([^/]++)/([^/]++)/72b32a(*:14349)'
-                        .'|f(?'
-                            .'|39f8/([^/]++)/([^/]++)/([^/]++)/7f39f8(*:14401)'
-                            .'|6ffa/([^/]++)/([^/]++)/([^/]++)/7f6ffa(*:14449)'
-                            .'|1(?'
-                                .'|de2/([^/]++)/([^/]++)/([^/]++)/7f1de2(*:14500)'
-                                .'|00b/([^/]++)/([^/]++)/([^/]++)/7f100b(*:14547)'
-                            .')'
-                            .'|e1f8/([^/]++)/([^/]++)/([^/]++)/7fe1f8(*:14596)'
-                        .')'
-                        .'|3(?'
-                            .'|5b90/([^/]++)/([^/]++)/([^/]++)/735b90(*:14649)'
-                            .'|278a/([^/]++)/([^/]++)/([^/]++)/73278a(*:14697)'
-                            .'|80ad/([^/]++)/([^/]++)/([^/]++)/7380ad(*:14745)'
-                        .')'
-                        .'|cbbc4/([^/]++)/([^/]++)/([^/]++)/7cbbc4(*:14795)'
-                        .'|6(?'
-                            .'|4796/([^/]++)/([^/]++)/([^/]++)/764796(*:14847)'
-                            .'|dc61/([^/]++)/([^/]++)/([^/]++)/76dc61(*:14895)'
-                        .')'
-                        .'|e(?'
-                            .'|f605/([^/]++)/([^/]++)/([^/]++)/7ef605(*:14948)'
-                            .'|7757/([^/]++)/([^/]++)/([^/]++)/7e7757(*:14996)'
-                            .'|a(?'
-                                .'|be3/([^/]++)/([^/]++)/([^/]++)/7eabe3(*:15047)'
-                                .'|cb5/([^/]++)/([^/]++)/([^/]++)/7eacb5(*:15094)'
-                            .')'
-                        .')'
-                        .'|5(?'
-                            .'|7b50/([^/]++)/([^/]++)/([^/]++)/757b50(*:15148)'
-                            .'|8874/([^/]++)/([^/]++)/([^/]++)/758874(*:15196)'
-                            .'|fc09/([^/]++)/([^/]++)/([^/]++)/75fc09(*:15244)'
-                        .')'
-                        .'|4(?'
-                            .'|db12/([^/]++)/([^/]++)/([^/]++)/74db12(*:15297)'
-                            .'|071a/([^/]++)/([^/]++)/([^/]++)/74071a(*:15345)'
-                        .')'
-                        .'|a614f/([^/]++)/([^/]++)/([^/]++)/7a614f(*:15395)'
-                        .'|d04bb/([^/]++)/([^/]++)/([^/]++)/7d04bb(*:15444)'
-                    .')'
-                    .'|/3(?'
-                        .'|c(?'
-                            .'|59dc/([^/]++)/([^/]++)/([^/]++)/3c59dc(*:15502)'
-                            .'|ec07/([^/]++)/([^/]++)/([^/]++)/3cec07(*:15550)'
-                            .'|7781/([^/]++)/([^/]++)/([^/]++)/3c7781(*:15598)'
-                            .'|f166/([^/]++)/([^/]++)/([^/]++)/3cf166(*:15646)'
-                        .')'
-                        .'|7(?'
-                            .'|693c/([^/]++)/([^/]++)/([^/]++)/37693c(*:15699)'
-                            .'|a749/([^/]++)/([^/]++)/([^/]++)/37a749(*:15747)'
-                            .'|bc2f/([^/]++)/([^/]++)/([^/]++)/37bc2f(*:15795)'
-                            .'|1bce/([^/]++)/([^/]++)/([^/]++)/371bce(*:15843)'
-                        .')'
-                        .'|3(?'
-                            .'|e75f/([^/]++)/([^/]++)/([^/]++)/33e75f(*:15896)'
-                            .'|5f53/([^/]++)/([^/]++)/([^/]++)/335f53(*:15944)'
-                        .')'
-                        .'|4(?'
-                            .'|1(?'
-                                .'|73c/([^/]++)/([^/]++)/([^/]++)/34173c(*:16000)'
-                                .'|6a7/([^/]++)/([^/]++)/([^/]++)/3416a7(*:16047)'
-                            .')'
-                            .'|ed06/([^/]++)/([^/]++)/([^/]++)/34ed06(*:16096)'
-                        .')'
-                        .'|2(?'
-                            .'|95c7/([^/]++)/([^/]++)/([^/]++)/3295c7(*:16149)'
-                            .'|bb90/([^/]++)/([^/]++)/([^/]++)/32bb90(*:16197)'
-                            .'|0722/([^/]++)/([^/]++)/([^/]++)/320722(*:16245)'
-                        .')'
-                        .'|5(?'
-                            .'|f4a8/([^/]++)/([^/]++)/([^/]++)/35f4a8(*:16298)'
-                            .'|7a6f/([^/]++)/([^/]++)/([^/]++)/357a6f(*:16346)'
-                            .'|2fe2/([^/]++)/([^/]++)/([^/]++)/352fe2(*:16394)'
-                            .'|0510/([^/]++)/([^/]++)/([^/]++)/350510(*:16442)'
-                        .')'
-                        .'|ef815/([^/]++)/([^/]++)/([^/]++)/3ef815(*:16492)'
-                        .'|8(?'
-                            .'|b3ef/([^/]++)/([^/]++)/([^/]++)/38b3ef(*:16544)'
-                            .'|af86/([^/]++)/([^/]++)/([^/]++)/38af86(*:16592)'
-                            .'|db3a/([^/]++)/([^/]++)/([^/]++)/38db3a(*:16640)'
-                        .')'
-                        .'|d(?'
-                            .'|ef18/([^/]++)/([^/]++)/([^/]++)/3def18(*:16693)'
-                            .'|d48a/([^/]++)/([^/]++)/([^/]++)/3dd48a(*:16741)'
-                        .')'
-                        .'|9(?'
-                            .'|88c7/([^/]++)/([^/]++)/([^/]++)/3988c7(*:16794)'
-                            .'|0597/([^/]++)/([^/]++)/([^/]++)/390597(*:16842)'
-                            .'|461a/([^/]++)/([^/]++)/([^/]++)/39461a(*:16890)'
-                        .')'
-                        .'|6(?'
-                            .'|3663/([^/]++)/([^/]++)/([^/]++)/363663(*:16943)'
-                            .'|44a6/([^/]++)/([^/]++)/([^/]++)/3644a6(*:16991)'
-                            .'|660e/([^/]++)/([^/]++)/([^/]++)/36660e(*:17039)'
-                        .')'
-                        .'|1(?'
-                            .'|fefc/([^/]++)/([^/]++)/([^/]++)/31fefc(*:17092)'
-                            .'|0dcb/([^/]++)/([^/]++)/([^/]++)/310dcb(*:17140)'
-                        .')'
-                        .'|b8a61/([^/]++)/([^/]++)/([^/]++)/3b8a61(*:17190)'
-                        .'|fe94a/([^/]++)/([^/]++)/([^/]++)/3fe94a(*:17239)'
-                        .'|ad7c2/([^/]++)/([^/]++)/([^/]++)/3ad7c2(*:17288)'
-                    .')'
-                    .'|/b(?'
-                        .'|6(?'
-                            .'|d767/([^/]++)/([^/]++)/([^/]++)/b6d767(*:17346)'
-                            .'|f047/([^/]++)/([^/]++)/([^/]++)/b6f047(*:17394)'
-                        .')'
-                        .'|53(?'
-                            .'|b3a/([^/]++)/([^/]++)/([^/]++)/b53b3a(*:17447)'
-                            .'|4ba/([^/]++)/([^/]++)/([^/]++)/b534ba(*:17494)'
-                        .')'
-                        .'|3(?'
-                            .'|e3e3/([^/]++)/([^/]++)/([^/]++)/b3e3e3(*:17547)'
-                            .'|967a/([^/]++)/([^/]++)/([^/]++)/b3967a(*:17595)'
-                        .')'
-                        .'|7(?'
-                            .'|3ce3/([^/]++)/([^/]++)/([^/]++)/b73ce3(*:17648)'
-                            .'|b16e/([^/]++)/([^/]++)/([^/]++)/b7b16e(*:17696)'
-                        .')'
-                        .'|d(?'
-                            .'|4c9a/([^/]++)/([^/]++)/([^/]++)/bd4c9a(*:17749)'
-                            .'|686f/([^/]++)/([^/]++)/([^/]++)/bd686f(*:17797)'
-                        .')'
-                        .'|f8229/([^/]++)/([^/]++)/([^/]++)/bf8229(*:17847)'
-                        .'|1(?'
-                            .'|d10e/([^/]++)/([^/]++)/([^/]++)/b1d10e(*:17899)'
-                            .'|a59b/([^/]++)/([^/]++)/([^/]++)/b1a59b(*:17947)'
-                        .')'
-                        .'|c(?'
-                            .'|be33/([^/]++)/([^/]++)/([^/]++)/bcbe33(*:18000)'
-                            .'|6dc4/([^/]++)/([^/]++)/([^/]++)/bc6dc4(*:18048)'
-                            .'|a82e/([^/]++)/([^/]++)/([^/]++)/bca82e(*:18096)'
-                        .')'
-                        .'|e(?'
-                            .'|83ab/([^/]++)/([^/]++)/([^/]++)/be83ab(*:18149)'
-                            .'|ed13/([^/]++)/([^/]++)/([^/]++)/beed13(*:18197)'
-                        .')'
-                        .'|2eb73/([^/]++)/([^/]++)/([^/]++)/b2eb73(*:18247)'
-                        .'|83aac/([^/]++)/([^/]++)/([^/]++)/b83aac(*:18296)'
-                        .'|ac916/([^/]++)/([^/]++)/([^/]++)/bac916(*:18345)'
-                        .'|b(?'
-                            .'|f94b/([^/]++)/([^/]++)/([^/]++)/bbf94b(*:18397)'
-                            .'|cbff/([^/]++)/([^/]++)/([^/]++)/bbcbff(*:18445)'
-                        .')'
-                        .'|9228e/([^/]++)/([^/]++)/([^/]++)/b9228e(*:18495)'
-                    .')'
-                    .'|/0(?'
-                        .'|2(?'
-                            .'|e74f/([^/]++)/([^/]++)/([^/]++)/02e74f(*:18553)'
-                            .'|522a/([^/]++)/([^/]++)/([^/]++)/02522a(*:18601)'
-                            .'|66e3/([^/]++)/([^/]++)/([^/]++)/0266e3(*:18649)'
-                        .')'
-                        .'|9(?'
-                            .'|3f65/([^/]++)/([^/]++)/([^/]++)/093f65(*:18702)'
-                            .'|1d58/([^/]++)/([^/]++)/([^/]++)/091d58(*:18750)'
-                        .')'
-                        .'|7(?'
-                            .'|2b03/([^/]++)/([^/]++)/([^/]++)/072b03(*:18803)'
-                            .'|e1cd/([^/]++)/([^/]++)/([^/]++)/07e1cd(*:18851)'
-                            .'|7(?'
-                                .'|7d5/([^/]++)/([^/]++)/([^/]++)/0777d5(*:18902)'
-                                .'|e29/([^/]++)/([^/]++)/([^/]++)/077e29(*:18949)'
-                            .')'
-                            .'|cdfd/([^/]++)/([^/]++)/([^/]++)/07cdfd(*:18998)'
-                        .')'
-                        .'|3(?'
-                            .'|afdb/([^/]++)/([^/]++)/([^/]++)/03afdb(*:19051)'
-                            .'|36dc/([^/]++)/([^/]++)/([^/]++)/0336dc(*:19099)'
-                            .'|c6b0/([^/]++)/([^/]++)/([^/]++)/03c6b0(*:19147)'
-                            .'|53ab/([^/]++)/([^/]++)/([^/]++)/0353ab(*:19195)'
-                        .')'
-                        .'|6(?'
-                            .'|9059/([^/]++)/([^/]++)/([^/]++)/069059(*:19248)'
-                            .'|4096/([^/]++)/([^/]++)/([^/]++)/064096(*:19296)'
-                            .'|0ad9/([^/]++)/([^/]++)/([^/]++)/060ad9(*:19344)'
-                            .'|138b/([^/]++)/([^/]++)/([^/]++)/06138b(*:19392)'
-                            .'|eb61/([^/]++)/([^/]++)/([^/]++)/06eb61(*:19440)'
-                        .')'
-                        .'|1(?'
-                            .'|3(?'
-                                .'|d40/([^/]++)/([^/]++)/([^/]++)/013d40(*:19496)'
-                                .'|86b/([^/]++)/([^/]++)/([^/]++)/01386b(*:19543)'
-                            .')'
-                            .'|161a/([^/]++)/([^/]++)/([^/]++)/01161a(*:19592)'
-                            .'|9d38/([^/]++)/([^/]++)/([^/]++)/019d38(*:19640)'
-                        .')'
-                        .'|f(?'
-                            .'|28b5/([^/]++)/([^/]++)/([^/]++)/0f28b5(*:19693)'
-                            .'|49c8/([^/]++)/([^/]++)/([^/]++)/0f49c8(*:19741)'
-                        .')'
-                        .'|a(?'
-                            .'|09c8/([^/]++)/([^/]++)/([^/]++)/0a09c8(*:19794)'
-                            .'|a188/([^/]++)/([^/]++)/([^/]++)/0aa188(*:19842)'
-                        .')'
-                        .'|0(?'
-                            .'|6f52/([^/]++)/([^/]++)/([^/]++)/006f52(*:19895)'
-                            .'|4114/([^/]++)/([^/]++)/([^/]++)/004114(*:19943)'
-                            .'|ec53/([^/]++)/([^/]++)/([^/]++)/00ec53(*:19991)'
-                        .')'
-                        .'|4(?'
-                            .'|5117/([^/]++)/([^/]++)/([^/]++)/045117(*:20044)'
-                            .'|0259/([^/]++)/([^/]++)/([^/]++)/040259(*:20092)'
-                        .')'
-                        .'|84b6f/([^/]++)/([^/]++)/([^/]++)/084b6f(*:20142)'
-                        .'|e(?'
-                            .'|6597/([^/]++)/([^/]++)/([^/]++)/0e6597(*:20194)'
-                            .'|0193/([^/]++)/([^/]++)/([^/]++)/0e0193(*:20242)'
-                        .')'
-                        .'|bb4ae/([^/]++)/([^/]++)/([^/]++)/0bb4ae(*:20292)'
-                        .'|5(?'
-                            .'|049e/([^/]++)/([^/]++)/([^/]++)/05049e(*:20344)'
-                            .'|84ce/([^/]++)/([^/]++)/([^/]++)/0584ce(*:20392)'
-                            .'|f971/([^/]++)/([^/]++)/([^/]++)/05f971(*:20440)'
-                        .')'
-                        .'|c74b7/([^/]++)/([^/]++)/([^/]++)/0c74b7(*:20490)'
-                        .'|d(?'
-                            .'|0fd7/([^/]++)/([^/]++)/([^/]++)/0d0fd7(*:20542)'
-                            .'|eb1c/([^/]++)/([^/]++)/([^/]++)/0deb1c(*:20590)'
-                        .')'
-                    .')'
-                    .'|/f(?'
-                        .'|7(?'
-                            .'|1(?'
-                                .'|771/([^/]++)/([^/]++)/([^/]++)/f71771(*:20652)'
-                                .'|849/([^/]++)/([^/]++)/([^/]++)/f71849(*:20699)'
-                            .')'
-                            .'|e6c8/([^/]++)/([^/]++)/([^/]++)/f7e6c8(*:20748)'
-                            .'|6640/([^/]++)/([^/]++)/([^/]++)/f76640(*:20796)'
-                            .'|3b76/([^/]++)/([^/]++)/([^/]++)/f73b76(*:20844)'
-                            .'|4909/([^/]++)/([^/]++)/([^/]++)/f74909(*:20892)'
-                            .'|70b6/([^/]++)/([^/]++)/([^/]++)/f770b6(*:20940)'
-                        .')'
-                        .'|4(?'
-                            .'|57c5/([^/]++)/([^/]++)/([^/]++)/f457c5(*:20993)'
-                            .'|b9ec/([^/]++)/([^/]++)/([^/]++)/f4b9ec(*:21041)'
-                            .'|f6dc/([^/]++)/([^/]++)/([^/]++)/f4f6dc(*:21089)'
-                        .')'
-                        .'|c(?'
-                            .'|490c/([^/]++)/([^/]++)/([^/]++)/fc490c(*:21142)'
-                            .'|2213/([^/]++)/([^/]++)/([^/]++)/fc2213(*:21190)'
-                            .'|cb60/([^/]++)/([^/]++)/([^/]++)/fccb60(*:21238)'
-                        .')'
-                        .'|b(?'
-                            .'|d793/([^/]++)/([^/]++)/([^/]++)/fbd793(*:21291)'
-                            .'|7b9f/([^/]++)/([^/]++)/([^/]++)/fb7b9f(*:21339)'
-                        .')'
-                        .'|0(?'
-                            .'|33ab/([^/]++)/([^/]++)/([^/]++)/f033ab(*:21392)'
-                            .'|935e/([^/]++)/([^/]++)/([^/]++)/f0935e(*:21440)'
-                        .')'
-                        .'|e(?'
-                            .'|9fc2/([^/]++)/([^/]++)/([^/]++)/fe9fc2(*:21493)'
-                            .'|131d/([^/]++)/([^/]++)/([^/]++)/fe131d(*:21541)'
-                            .'|73f6/([^/]++)/([^/]++)/([^/]++)/fe73f6(*:21589)'
-                        .')'
-                        .'|8(?'
-                            .'|9913/([^/]++)/([^/]++)/([^/]++)/f89913(*:21642)'
-                            .'|c1f2/([^/]++)/([^/]++)/([^/]++)/f8c1f2(*:21690)'
-                            .'|5454/([^/]++)/([^/]++)/([^/]++)/f85454(*:21738)'
-                        .')'
-                        .'|2(?'
-                            .'|2170/([^/]++)/([^/]++)/([^/]++)/f22170(*:21791)'
-                            .'|fc99/([^/]++)/([^/]++)/([^/]++)/f2fc99(*:21839)'
-                        .')'
-                        .'|a(?'
-                            .'|7cdf/([^/]++)/([^/]++)/([^/]++)/fa7cdf(*:21892)'
-                            .'|a9af/([^/]++)/([^/]++)/([^/]++)/faa9af(*:21940)'
-                        .')'
-                        .'|340f1/([^/]++)/([^/]++)/([^/]++)/f340f1(*:21990)'
-                        .'|9(?'
-                            .'|0f2a/([^/]++)/([^/]++)/([^/]++)/f90f2a(*:22042)'
-                            .'|b902/([^/]++)/([^/]++)/([^/]++)/f9b902(*:22090)'
-                        .')'
-                        .'|fd52f/([^/]++)/([^/]++)/([^/]++)/ffd52f(*:22140)'
-                        .'|61d69/([^/]++)/([^/]++)/([^/]++)/f61d69(*:22189)'
-                        .'|5f859/([^/]++)/([^/]++)/([^/]++)/f5f859(*:22238)'
-                        .'|1b6f2/([^/]++)/([^/]++)/([^/]++)/f1b6f2(*:22287)'
-                    .')'
-                    .'|/2(?'
-                        .'|8(?'
-                            .'|3802/([^/]++)/([^/]++)/([^/]++)/283802(*:22345)'
-                            .'|dd2c/([^/]++)/([^/]++)/([^/]++)/28dd2c(*:22393)'
-                            .'|9dff/([^/]++)/([^/]++)/([^/]++)/289dff(*:22441)'
-                            .'|f0b8/([^/]++)/([^/]++)/([^/]++)/28f0b8(*:22489)'
-                        .')'
-                        .'|a(?'
-                            .'|38a4/([^/]++)/([^/]++)/([^/]++)/2a38a4(*:22542)'
-                            .'|79ea/([^/]++)/([^/]++)/([^/]++)/2a79ea(*:22590)'
-                        .')'
-                        .'|6(?'
-                            .'|657d/([^/]++)/([^/]++)/([^/]++)/26657d(*:22643)'
-                            .'|e359/([^/]++)/([^/]++)/([^/]++)/26e359(*:22691)'
-                            .'|3373/([^/]++)/([^/]++)/([^/]++)/263373(*:22739)'
-                        .')'
-                        .'|7(?'
-                            .'|23d0/([^/]++)/([^/]++)/([^/]++)/2723d0(*:22792)'
-                            .'|4ad4/([^/]++)/([^/]++)/([^/]++)/274ad4(*:22840)'
-                        .')'
-                        .'|b(?'
-                            .'|4492/([^/]++)/([^/]++)/([^/]++)/2b4492(*:22893)'
-                            .'|24d4/([^/]++)/([^/]++)/([^/]++)/2b24d4(*:22941)'
-                        .')'
-                        .'|0(?'
-                            .'|2cb9/([^/]++)/([^/]++)/([^/]++)/202cb9(*:22994)'
-                            .'|f075/([^/]++)/([^/]++)/([^/]++)/20f075(*:23042)'
-                            .'|50e0/([^/]++)/([^/]++)/([^/]++)/2050e0(*:23090)'
-                        .')'
-                        .'|f(?'
-                            .'|2b26/([^/]++)/([^/]++)/([^/]++)/2f2b26(*:23143)'
-                            .'|5570/([^/]++)/([^/]++)/([^/]++)/2f5570(*:23191)'
-                        .')'
-                        .'|4(?'
-                            .'|b16f/([^/]++)/([^/]++)/([^/]++)/24b16f(*:23244)'
-                            .'|8e84/([^/]++)/([^/]++)/([^/]++)/248e84(*:23292)'
-                            .'|21fc/([^/]++)/([^/]++)/([^/]++)/2421fc(*:23340)'
-                        .')'
-                        .'|5(?'
-                            .'|b282/([^/]++)/([^/]++)/([^/]++)/25b282(*:23393)'
-                            .'|0cf8/([^/]++)/([^/]++)/([^/]++)/250cf8(*:23441)'
-                            .'|ddc0/([^/]++)/([^/]++)/([^/]++)/25ddc0(*:23489)'
-                        .')'
-                        .'|18a0a/([^/]++)/([^/]++)/([^/]++)/218a0a(*:23539)'
-                    .')'
-                    .'|/5(?'
-                        .'|4229a/([^/]++)/([^/]++)/([^/]++)/54229a(*:23594)'
-                        .'|f(?'
-                            .'|93f9/([^/]++)/([^/]++)/([^/]++)/5f93f9(*:23646)'
-                            .'|d0b3/([^/]++)/([^/]++)/([^/]++)/5fd0b3(*:23694)'
-                        .')'
-                        .'|ef(?'
-                            .'|0(?'
-                                .'|59/([^/]++)/([^/]++)/([^/]++)/5ef059(*:23750)'
-                                .'|b4/([^/]++)/([^/]++)/([^/]++)/5ef0b4(*:23796)'
-                            .')'
-                            .'|698/([^/]++)/([^/]++)/([^/]++)/5ef698(*:23844)'
-                        .')'
-                        .'|8(?'
-                            .'|78a7/([^/]++)/([^/]++)/([^/]++)/5878a7(*:23897)'
-                            .'|a2fc/([^/]++)/([^/]++)/([^/]++)/58a2fc(*:23945)'
-                            .'|238e/([^/]++)/([^/]++)/([^/]++)/58238e(*:23993)'
-                        .')'
-                        .'|7(?'
-                            .'|aeee/([^/]++)/([^/]++)/([^/]++)/57aeee(*:24046)'
-                            .'|7(?'
-                                .'|ef1/([^/]++)/([^/]++)/([^/]++)/577ef1(*:24097)'
-                                .'|bcc/([^/]++)/([^/]++)/([^/]++)/577bcc(*:24144)'
-                            .')'
-                            .'|37c6/([^/]++)/([^/]++)/([^/]++)/5737c6(*:24193)'
-                        .')'
-                        .'|3(?'
-                            .'|9fd5/([^/]++)/([^/]++)/([^/]++)/539fd5(*:24246)'
-                            .'|c3bc/([^/]++)/([^/]++)/([^/]++)/53c3bc(*:24294)'
-                        .')'
-                        .'|5(?'
-                            .'|5d67/([^/]++)/([^/]++)/([^/]++)/555d67(*:24347)'
-                            .'|0a14/([^/]++)/([^/]++)/([^/]++)/550a14(*:24395)'
-                            .'|9cb9/([^/]++)/([^/]++)/([^/]++)/559cb9(*:24443)'
-                            .'|a7cf/([^/]++)/([^/]++)/([^/]++)/55a7cf(*:24491)'
-                        .')'
-                        .'|02e4a/([^/]++)/([^/]++)/([^/]++)/502e4a(*:24541)'
-                        .'|b8add/([^/]++)/([^/]++)/([^/]++)/5b8add(*:24590)'
-                        .'|2720e/([^/]++)/([^/]++)/([^/]++)/52720e(*:24639)'
-                        .'|a4b25/([^/]++)/([^/]++)/([^/]++)/5a4b25(*:24688)'
-                        .'|1d92b/([^/]++)/([^/]++)/([^/]++)/51d92b(*:24737)'
-                        .'|98b3e/([^/]++)/([^/]++)/([^/]++)/598b3e(*:24786)'
-                    .')'
-                .')/?$}sD',
-            24786 => '{^(?'
-                    .'|/5(?'
-                        .'|b69b9/([^/]++)/([^/]++)/([^/]++)/5b69b9(*:24837)'
-                        .'|9(?'
-                            .'|b90e/([^/]++)/([^/]++)/([^/]++)/59b90e(*:24889)'
-                            .'|c330/([^/]++)/([^/]++)/([^/]++)/59c330(*:24937)'
-                        .')'
-                        .'|3(?'
-                            .'|fde9/([^/]++)/([^/]++)/([^/]++)/53fde9(*:24990)'
-                            .'|e3a7/([^/]++)/([^/]++)/([^/]++)/53e3a7(*:25038)'
-                        .')'
-                        .'|e(?'
-                            .'|a164/([^/]++)/([^/]++)/([^/]++)/5ea164(*:25091)'
-                            .'|3881/([^/]++)/([^/]++)/([^/]++)/5e3881(*:25139)'
-                            .'|9f92/([^/]++)/([^/]++)/([^/]++)/5e9f92(*:25187)'
-                            .'|c91a/([^/]++)/([^/]++)/([^/]++)/5ec91a(*:25235)'
-                        .')'
-                        .'|7(?'
-                            .'|3703/([^/]++)/([^/]++)/([^/]++)/573703(*:25288)'
-                            .'|51ec/([^/]++)/([^/]++)/([^/]++)/5751ec(*:25336)'
-                            .'|05e1/([^/]++)/([^/]++)/([^/]++)/5705e1(*:25384)'
-                        .')'
-                        .'|8(?'
-                            .'|ae74/([^/]++)/([^/]++)/([^/]++)/58ae74(*:25437)'
-                            .'|d4d1/([^/]++)/([^/]++)/([^/]++)/58d4d1(*:25485)'
-                            .'|07a6/([^/]++)/([^/]++)/([^/]++)/5807a6(*:25533)'
-                            .'|e4d4/([^/]++)/([^/]++)/([^/]++)/58e4d4(*:25581)'
-                        .')'
-                        .'|d(?'
-                            .'|44ee/([^/]++)/([^/]++)/([^/]++)/5d44ee(*:25634)'
-                            .'|d9db/([^/]++)/([^/]++)/([^/]++)/5dd9db(*:25682)'
-                        .')'
-                        .'|5(?'
-                            .'|b37c/([^/]++)/([^/]++)/([^/]++)/55b37c(*:25735)'
-                            .'|743c/([^/]++)/([^/]++)/([^/]++)/55743c(*:25783)'
-                            .'|6f39/([^/]++)/([^/]++)/([^/]++)/556f39(*:25831)'
-                        .')'
-                        .'|c(?'
-                            .'|0492/([^/]++)/([^/]++)/([^/]++)/5c0492(*:25884)'
-                            .'|572e/([^/]++)/([^/]++)/([^/]++)/5c572e(*:25932)'
-                            .'|9362/([^/]++)/([^/]++)/([^/]++)/5c9362(*:25980)'
-                        .')'
-                        .'|4(?'
-                            .'|8731/([^/]++)/([^/]++)/([^/]++)/548731(*:26033)'
-                            .'|a367/([^/]++)/([^/]++)/([^/]++)/54a367(*:26081)'
-                        .')'
-                        .'|0(?'
-                            .'|0e75/([^/]++)/([^/]++)/([^/]++)/500e75(*:26134)'
-                            .'|c3d7/([^/]++)/([^/]++)/([^/]++)/50c3d7(*:26182)'
-                        .')'
-                        .'|f(?'
-                            .'|2c22/([^/]++)/([^/]++)/([^/]++)/5f2c22(*:26235)'
-                            .'|0f5e/([^/]++)/([^/]++)/([^/]++)/5f0f5e(*:26283)'
-                        .')'
-                        .'|1ef18/([^/]++)/([^/]++)/([^/]++)/51ef18(*:26333)'
-                    .')'
-                    .'|/b(?'
-                        .'|5(?'
-                            .'|b41f/([^/]++)/([^/]++)/([^/]++)/b5b41f(*:26391)'
-                            .'|dc4e/([^/]++)/([^/]++)/([^/]++)/b5dc4e(*:26439)'
-                            .'|6a18/([^/]++)/([^/]++)/([^/]++)/b56a18(*:26487)'
-                            .'|5ec2/([^/]++)/([^/]++)/([^/]++)/b55ec2(*:26535)'
-                        .')'
-                        .'|337e8/([^/]++)/([^/]++)/([^/]++)/b337e8(*:26585)'
-                        .'|a(?'
-                            .'|2fd3/([^/]++)/([^/]++)/([^/]++)/ba2fd3(*:26637)'
-                            .'|3866/([^/]++)/([^/]++)/([^/]++)/ba3866(*:26685)'
-                        .')'
-                        .'|2(?'
-                            .'|eeb7/([^/]++)/([^/]++)/([^/]++)/b2eeb7(*:26738)'
-                            .'|f627/([^/]++)/([^/]++)/([^/]++)/b2f627(*:26786)'
-                        .')'
-                        .'|7(?'
-                            .'|3dfe/([^/]++)/([^/]++)/([^/]++)/b73dfe(*:26839)'
-                            .'|bb35/([^/]++)/([^/]++)/([^/]++)/b7bb35(*:26887)'
-                            .'|ee6f/([^/]++)/([^/]++)/([^/]++)/b7ee6f(*:26935)'
-                            .'|892f/([^/]++)/([^/]++)/([^/]++)/b7892f(*:26983)'
-                            .'|0683/([^/]++)/([^/]++)/([^/]++)/b70683(*:27031)'
-                        .')'
-                        .'|4(?'
-                            .'|288d/([^/]++)/([^/]++)/([^/]++)/b4288d(*:27084)'
-                            .'|a528/([^/]++)/([^/]++)/([^/]++)/b4a528(*:27132)'
-                        .')'
-                        .'|e(?'
-                            .'|3159/([^/]++)/([^/]++)/([^/]++)/be3159(*:27185)'
-                            .'|b22f/([^/]++)/([^/]++)/([^/]++)/beb22f(*:27233)'
-                            .'|a595/([^/]++)/([^/]++)/([^/]++)/bea595(*:27281)'
-                        .')'
-                        .'|1(?'
-                            .'|eec3/([^/]++)/([^/]++)/([^/]++)/b1eec3(*:27334)'
-                            .'|37fd/([^/]++)/([^/]++)/([^/]++)/b137fd(*:27382)'
-                        .')'
-                        .'|0(?'
-                            .'|56eb/([^/]++)/([^/]++)/([^/]++)/b056eb(*:27435)'
-                            .'|b183/([^/]++)/([^/]++)/([^/]++)/b0b183(*:27483)'
-                        .')'
-                        .'|f6276/([^/]++)/([^/]++)/([^/]++)/bf6276(*:27533)'
-                        .'|6(?'
-                            .'|edc1/([^/]++)/([^/]++)/([^/]++)/b6edc1(*:27585)'
-                            .'|a108/([^/]++)/([^/]++)/([^/]++)/b6a108(*:27633)'
-                        .')'
-                        .'|86e8d/([^/]++)/([^/]++)/([^/]++)/b86e8d(*:27683)'
-                    .')'
-                    .'|/2(?'
-                        .'|8(?'
-                            .'|5e19/([^/]++)/([^/]++)/([^/]++)/285e19(*:27741)'
-                            .'|2(?'
-                                .'|3f4/([^/]++)/([^/]++)/([^/]++)/2823f4(*:27792)'
-                                .'|67a/([^/]++)/([^/]++)/([^/]++)/28267a(*:27839)'
-                            .')'
-                            .'|8cc0/([^/]++)/([^/]++)/([^/]++)/288cc0(*:27888)'
-                            .'|7e03/([^/]++)/([^/]++)/([^/]++)/287e03(*:27936)'
-                        .')'
-                        .'|d(?'
-                            .'|6cc4/([^/]++)/([^/]++)/([^/]++)/2d6cc4(*:27989)'
-                            .'|ea61/([^/]++)/([^/]++)/([^/]++)/2dea61(*:28037)'
-                            .'|ace7/([^/]++)/([^/]++)/([^/]++)/2dace7(*:28085)'
-                        .')'
-                        .'|b(?'
-                            .'|8a61/([^/]++)/([^/]++)/([^/]++)/2b8a61(*:28138)'
-                            .'|b232/([^/]++)/([^/]++)/([^/]++)/2bb232(*:28186)'
-                            .'|a596/([^/]++)/([^/]++)/([^/]++)/2ba596(*:28234)'
-                            .'|cab9/([^/]++)/([^/]++)/([^/]++)/2bcab9(*:28282)'
-                        .')'
-                        .'|9(?'
-                            .'|8f95/([^/]++)/([^/]++)/([^/]++)/298f95(*:28335)'
-                            .'|1597/([^/]++)/([^/]++)/([^/]++)/291597(*:28383)'
-                        .')'
-                        .'|58be1/([^/]++)/([^/]++)/([^/]++)/258be1(*:28433)'
-                        .'|3(?'
-                            .'|3509/([^/]++)/([^/]++)/([^/]++)/233509(*:28485)'
-                            .'|ce18/([^/]++)/([^/]++)/([^/]++)/23ce18(*:28533)'
-                        .')'
-                        .'|6(?'
-                            .'|dd0d/([^/]++)/([^/]++)/([^/]++)/26dd0d(*:28586)'
-                            .'|408f/([^/]++)/([^/]++)/([^/]++)/26408f(*:28634)'
-                        .')'
-                        .'|f(?'
-                            .'|37d1/([^/]++)/([^/]++)/([^/]++)/2f37d1(*:28687)'
-                            .'|885d/([^/]++)/([^/]++)/([^/]++)/2f885d(*:28735)'
-                        .')'
-                        .'|2(?'
-                            .'|91d2/([^/]++)/([^/]++)/([^/]++)/2291d2(*:28788)'
-                            .'|ac3c/([^/]++)/([^/]++)/([^/]++)/22ac3c(*:28836)'
-                            .'|fb0c/([^/]++)/([^/]++)/([^/]++)/22fb0c(*:28884)'
-                        .')'
-                        .'|4(?'
-                            .'|6819/([^/]++)/([^/]++)/([^/]++)/246819(*:28937)'
-                            .'|896e/([^/]++)/([^/]++)/([^/]++)/24896e(*:28985)'
-                        .')'
-                        .'|a(?'
-                            .'|fe45/([^/]++)/([^/]++)/([^/]++)/2afe45(*:29038)'
-                            .'|084e/([^/]++)/([^/]++)/([^/]++)/2a084e(*:29086)'
-                            .'|9d12/([^/]++)/([^/]++)/([^/]++)/2a9d12(*:29134)'
-                            .'|b564/([^/]++)/([^/]++)/([^/]++)/2ab564(*:29182)'
-                        .')'
-                        .'|1(?'
-                            .'|7eed/([^/]++)/([^/]++)/([^/]++)/217eed(*:29235)'
-                            .'|0f76/([^/]++)/([^/]++)/([^/]++)/210f76(*:29283)'
-                        .')'
-                        .'|e65f2/([^/]++)/([^/]++)/([^/]++)/2e65f2(*:29333)'
-                        .'|ca65f/([^/]++)/([^/]++)/([^/]++)/2ca65f(*:29382)'
-                        .'|0aee3/([^/]++)/([^/]++)/([^/]++)/20aee3(*:29431)'
-                    .')'
-                    .'|/e(?'
-                        .'|8(?'
-                            .'|c065/([^/]++)/([^/]++)/([^/]++)/e8c065(*:29489)'
-                            .'|20a4/([^/]++)/([^/]++)/([^/]++)/e820a4(*:29537)'
-                        .')'
-                        .'|2(?'
-                            .'|230b/([^/]++)/([^/]++)/([^/]++)/e2230b(*:29590)'
-                            .'|a2dc/([^/]++)/([^/]++)/([^/]++)/e2a2dc(*:29638)'
-                            .'|05ee/([^/]++)/([^/]++)/([^/]++)/e205ee(*:29686)'
-                        .')'
-                        .'|b(?'
-                            .'|d962/([^/]++)/([^/]++)/([^/]++)/ebd962(*:29739)'
-                            .'|6fdc/([^/]++)/([^/]++)/([^/]++)/eb6fdc(*:29787)'
-                        .')'
-                        .'|d(?'
-                            .'|265b/([^/]++)/([^/]++)/([^/]++)/ed265b(*:29840)'
-                            .'|fbe1/([^/]++)/([^/]++)/([^/]++)/edfbe1(*:29888)'
-                            .'|e7e2/([^/]++)/([^/]++)/([^/]++)/ede7e2(*:29936)'
-                        .')'
-                        .'|6(?'
-                            .'|b4b2/([^/]++)/([^/]++)/([^/]++)/e6b4b2(*:29989)'
-                            .'|cb2a/([^/]++)/([^/]++)/([^/]++)/e6cb2a(*:30037)'
-                        .')'
-                        .'|5(?'
-                            .'|f6ad/([^/]++)/([^/]++)/([^/]++)/e5f6ad(*:30090)'
-                            .'|55eb/([^/]++)/([^/]++)/([^/]++)/e555eb(*:30138)'
-                            .'|841d/([^/]++)/([^/]++)/([^/]++)/e5841d(*:30186)'
-                            .'|7c6b/([^/]++)/([^/]++)/([^/]++)/e57c6b(*:30234)'
-                        .')'
-                        .'|aae33/([^/]++)/([^/]++)/([^/]++)/eaae33(*:30284)'
-                        .'|4(?'
-                            .'|bb4c/([^/]++)/([^/]++)/([^/]++)/e4bb4c(*:30336)'
-                            .'|9b8b/([^/]++)/([^/]++)/([^/]++)/e49b8b(*:30384)'
-                        .')'
-                        .'|7(?'
-                            .'|0611/([^/]++)/([^/]++)/([^/]++)/e70611(*:30437)'
-                            .'|f8a7/([^/]++)/([^/]++)/([^/]++)/e7f8a7(*:30485)'
-                            .'|44f9/([^/]++)/([^/]++)/([^/]++)/e744f9(*:30533)'
-                        .')'
-                        .'|9(?'
-                            .'|95f9/([^/]++)/([^/]++)/([^/]++)/e995f9(*:30586)'
-                            .'|4550/([^/]++)/([^/]++)/([^/]++)/e94550(*:30634)'
-                            .'|7ee2/([^/]++)/([^/]++)/([^/]++)/e97ee2(*:30682)'
-                        .')'
-                        .'|e(?'
-                            .'|fc9e/([^/]++)/([^/]++)/([^/]++)/eefc9e(*:30735)'
-                            .'|b69a/([^/]++)/([^/]++)/([^/]++)/eeb69a(*:30783)'
-                        .')'
-                        .'|0(?'
-                            .'|7413/([^/]++)/([^/]++)/([^/]++)/e07413(*:30836)'
-                            .'|cf1f/([^/]++)/([^/]++)/([^/]++)/e0cf1f(*:30884)'
-                            .'|ec45/([^/]++)/([^/]++)/([^/]++)/e0ec45(*:30932)'
-                        .')'
-                        .'|f4e3b/([^/]++)/([^/]++)/([^/]++)/ef4e3b(*:30982)'
-                        .'|c5aa0/([^/]++)/([^/]++)/([^/]++)/ec5aa0(*:31031)'
-                    .')'
-                    .'|/f(?'
-                        .'|f(?'
-                            .'|4d5f/([^/]++)/([^/]++)/([^/]++)/ff4d5f(*:31089)'
-                            .'|eabd/([^/]++)/([^/]++)/([^/]++)/ffeabd(*:31137)'
-                        .')'
-                        .'|3(?'
-                            .'|f27a/([^/]++)/([^/]++)/([^/]++)/f3f27a(*:31190)'
-                            .'|8762/([^/]++)/([^/]++)/([^/]++)/f38762(*:31238)'
-                        .')'
-                        .'|4(?'
-                            .'|be00/([^/]++)/([^/]++)/([^/]++)/f4be00(*:31291)'
-                            .'|5526/([^/]++)/([^/]++)/([^/]++)/f45526(*:31339)'
-                            .'|7d0a/([^/]++)/([^/]++)/([^/]++)/f47d0a(*:31387)'
-                        .')'
-                        .'|0(?'
-                            .'|e52b/([^/]++)/([^/]++)/([^/]++)/f0e52b(*:31440)'
-                            .'|adc8/([^/]++)/([^/]++)/([^/]++)/f0adc8(*:31488)'
-                        .')'
-                        .'|de926/([^/]++)/([^/]++)/([^/]++)/fde926(*:31538)'
-                        .'|5(?'
-                            .'|deae/([^/]++)/([^/]++)/([^/]++)/f5deae(*:31590)'
-                            .'|7a2f/([^/]++)/([^/]++)/([^/]++)/f57a2f(*:31638)'
-                        .')'
-                        .'|7(?'
-                            .'|6a89/([^/]++)/([^/]++)/([^/]++)/f76a89(*:31691)'
-                            .'|9921/([^/]++)/([^/]++)/([^/]++)/f79921(*:31739)'
-                            .'|e905/([^/]++)/([^/]++)/([^/]++)/f7e905(*:31787)'
-                        .')'
-                        .'|2(?'
-                            .'|9c21/([^/]++)/([^/]++)/([^/]++)/f29c21(*:31840)'
-                            .'|201f/([^/]++)/([^/]++)/([^/]++)/f2201f(*:31888)'
-                        .')'
-                        .'|a(?'
-                            .'|e0b2/([^/]++)/([^/]++)/([^/]++)/fae0b2(*:31941)'
-                            .'|14d4/([^/]++)/([^/]++)/([^/]++)/fa14d4(*:31989)'
-                            .'|3a3c/([^/]++)/([^/]++)/([^/]++)/fa3a3c(*:32037)'
-                            .'|83a1/([^/]++)/([^/]++)/([^/]++)/fa83a1(*:32085)'
-                        .')'
-                        .'|c(?'
-                            .'|cb3c/([^/]++)/([^/]++)/([^/]++)/fccb3c(*:32138)'
-                            .'|8001/([^/]++)/([^/]++)/([^/]++)/fc8001(*:32186)'
-                            .'|3cf4/([^/]++)/([^/]++)/([^/]++)/fc3cf4(*:32234)'
-                            .'|4930/([^/]++)/([^/]++)/([^/]++)/fc4930(*:32282)'
-                        .')'
-                        .'|64eac/([^/]++)/([^/]++)/([^/]++)/f64eac(*:32332)'
-                        .'|b8970/([^/]++)/([^/]++)/([^/]++)/fb8970(*:32381)'
-                        .'|1c159/([^/]++)/([^/]++)/([^/]++)/f1c159(*:32430)'
-                        .'|9(?'
-                            .'|028f/([^/]++)/([^/]++)/([^/]++)/f9028f(*:32482)'
-                            .'|a40a/([^/]++)/([^/]++)/([^/]++)/f9a40a(*:32530)'
-                        .')'
-                        .'|e(?'
-                            .'|8c15/([^/]++)/([^/]++)/([^/]++)/fe8c15(*:32583)'
-                            .'|c8d4/([^/]++)/([^/]++)/([^/]++)/fec8d4(*:32631)'
-                            .'|7ee8/([^/]++)/([^/]++)/([^/]++)/fe7ee8(*:32679)'
-                        .')'
-                    .')'
-                    .'|/3(?'
-                        .'|8(?'
-                            .'|9(?'
-                                .'|bc7/([^/]++)/([^/]++)/([^/]++)/389bc7(*:32741)'
-                                .'|13e/([^/]++)/([^/]++)/([^/]++)/38913e(*:32788)'
-                            .')'
-                            .'|71bd/([^/]++)/([^/]++)/([^/]++)/3871bd(*:32837)'
-                        .')'
-                        .'|d(?'
-                            .'|c487/([^/]++)/([^/]++)/([^/]++)/3dc487(*:32890)'
-                            .'|2d8c/([^/]++)/([^/]++)/([^/]++)/3d2d8c(*:32938)'
-                            .'|8e28/([^/]++)/([^/]++)/([^/]++)/3d8e28(*:32986)'
-                            .'|f1d4/([^/]++)/([^/]++)/([^/]++)/3df1d4(*:33034)'
-                        .')'
-                        .'|7f0e8/([^/]++)/([^/]++)/([^/]++)/37f0e8(*:33084)'
-                        .'|3(?'
-                            .'|e807/([^/]++)/([^/]++)/([^/]++)/33e807(*:33136)'
-                            .'|28bd/([^/]++)/([^/]++)/([^/]++)/3328bd(*:33184)'
-                        .')'
-                        .'|a(?'
-                            .'|0(?'
-                                .'|772/([^/]++)/([^/]++)/([^/]++)/3a0772(*:33240)'
-                                .'|66b/([^/]++)/([^/]++)/([^/]++)/3a066b(*:33287)'
-                            .')'
-                            .'|835d/([^/]++)/([^/]++)/([^/]++)/3a835d(*:33336)'
-                        .')'
-                        .'|0(?'
-                            .'|bb38/([^/]++)/([^/]++)/([^/]++)/30bb38(*:33389)'
-                            .'|3ed4/([^/]++)/([^/]++)/([^/]++)/303ed4(*:33437)'
-                            .'|ef30/([^/]++)/([^/]++)/([^/]++)/30ef30(*:33485)'
-                            .'|1ad0/([^/]++)/([^/]++)/([^/]++)/301ad0(*:33533)'
-                        .')'
-                        .'|4(?'
-                            .'|9389/([^/]++)/([^/]++)/([^/]++)/349389(*:33586)'
-                            .'|35c3/([^/]++)/([^/]++)/([^/]++)/3435c3(*:33634)'
-                        .')'
-                        .'|62(?'
-                            .'|1f1/([^/]++)/([^/]++)/([^/]++)/3621f1(*:33687)'
-                            .'|e80/([^/]++)/([^/]++)/([^/]++)/362e80(*:33734)'
-                        .')'
-                        .'|5(?'
-                            .'|cf86/([^/]++)/([^/]++)/([^/]++)/35cf86(*:33787)'
-                            .'|2407/([^/]++)/([^/]++)/([^/]++)/352407(*:33835)'
-                        .')'
-                        .'|2b30a/([^/]++)/([^/]++)/([^/]++)/32b30a(*:33885)'
-                        .'|1839b/([^/]++)/([^/]++)/([^/]++)/31839b(*:33934)'
-                        .'|b(?'
-                            .'|5dca/([^/]++)/([^/]++)/([^/]++)/3b5dca(*:33986)'
-                            .'|3dba/([^/]++)/([^/]++)/([^/]++)/3b3dba(*:34034)'
-                        .')'
-                        .'|e89eb/([^/]++)/([^/]++)/([^/]++)/3e89eb(*:34084)'
-                        .'|cef96/([^/]++)/([^/]++)/([^/]++)/3cef96(*:34133)'
-                    .')'
-                    .'|/0(?'
-                        .'|8(?'
-                            .'|7408/([^/]++)/([^/]++)/([^/]++)/087408(*:34191)'
-                            .'|b255/([^/]++)/([^/]++)/([^/]++)/08b255(*:34239)'
-                            .'|c543/([^/]++)/([^/]++)/([^/]++)/08c543(*:34287)'
-                            .'|d986/([^/]++)/([^/]++)/([^/]++)/08d986(*:34335)'
-                            .'|419b/([^/]++)/([^/]++)/([^/]++)/08419b(*:34383)'
-                        .')'
-                        .'|7(?'
-                            .'|563a/([^/]++)/([^/]++)/([^/]++)/07563a(*:34436)'
-                            .'|6a0c/([^/]++)/([^/]++)/([^/]++)/076a0c(*:34484)'
-                            .'|a96b/([^/]++)/([^/]++)/([^/]++)/07a96b(*:34532)'
-                            .'|c580/([^/]++)/([^/]++)/([^/]++)/07c580(*:34580)'
-                            .'|8719/([^/]++)/([^/]++)/([^/]++)/078719(*:34628)'
-                        .')'
-                        .'|f(?'
-                            .'|cbc6/([^/]++)/([^/]++)/([^/]++)/0fcbc6(*:34681)'
-                            .'|9661/([^/]++)/([^/]++)/([^/]++)/0f9661(*:34729)'
-                            .'|f(?'
-                                .'|39b/([^/]++)/([^/]++)/([^/]++)/0ff39b(*:34780)'
-                                .'|803/([^/]++)/([^/]++)/([^/]++)/0ff803(*:34827)'
-                            .')'
-                            .'|840b/([^/]++)/([^/]++)/([^/]++)/0f840b(*:34876)'
-                        .')'
-                        .'|1(?'
-                            .'|f78b/([^/]++)/([^/]++)/([^/]++)/01f78b(*:34929)'
-                            .'|3a00/([^/]++)/([^/]++)/([^/]++)/013a00(*:34977)'
-                            .'|8825/([^/]++)/([^/]++)/([^/]++)/018825(*:35025)'
-                        .')'
-                        .'|6(?'
-                            .'|9(?'
-                                .'|d3b/([^/]++)/([^/]++)/([^/]++)/069d3b(*:35081)'
-                                .'|97f/([^/]++)/([^/]++)/([^/]++)/06997f(*:35128)'
-                            .')'
-                            .'|1412/([^/]++)/([^/]++)/([^/]++)/061412(*:35177)'
-                        .')'
-                        .'|4(?'
-                            .'|ecb1/([^/]++)/([^/]++)/([^/]++)/04ecb1(*:35230)'
-                            .'|3c3d/([^/]++)/([^/]++)/([^/]++)/043c3d(*:35278)'
-                        .')'
-                        .'|0ac8e/([^/]++)/([^/]++)/([^/]++)/00ac8e(*:35328)'
-                        .'|5(?'
-                            .'|1e4e/([^/]++)/([^/]++)/([^/]++)/051e4e(*:35380)'
-                            .'|37fb/([^/]++)/([^/]++)/([^/]++)/0537fb(*:35428)'
-                        .')'
-                        .'|d(?'
-                            .'|7de1/([^/]++)/([^/]++)/([^/]++)/0d7de1(*:35481)'
-                            .'|3180/([^/]++)/([^/]++)/([^/]++)/0d3180(*:35529)'
-                            .'|0871/([^/]++)/([^/]++)/([^/]++)/0d0871(*:35577)'
-                        .')'
-                        .'|cb929/([^/]++)/([^/]++)/([^/]++)/0cb929(*:35627)'
-                        .'|2(?'
-                            .'|a32a/([^/]++)/([^/]++)/([^/]++)/02a32a(*:35679)'
-                            .'|4d7f/([^/]++)/([^/]++)/([^/]++)/024d7f(*:35727)'
-                        .')'
-                        .'|efe32/([^/]++)/([^/]++)/([^/]++)/0efe32(*:35777)'
-                        .'|a113e/([^/]++)/([^/]++)/([^/]++)/0a113e(*:35826)'
-                        .'|b8aff/([^/]++)/([^/]++)/([^/]++)/0b8aff(*:35875)'
-                    .')'
-                    .'|/a(?'
-                        .'|7(?'
-                            .'|6088/([^/]++)/([^/]++)/([^/]++)/a76088(*:35933)'
-                            .'|aeed/([^/]++)/([^/]++)/([^/]++)/a7aeed(*:35981)'
-                            .'|33fa/([^/]++)/([^/]++)/([^/]++)/a733fa(*:36029)'
-                        .')'
-                        .'|9a(?'
-                            .'|665/([^/]++)/([^/]++)/([^/]++)/a9a665(*:36082)'
-                            .'|1d5/([^/]++)/([^/]++)/([^/]++)/a9a1d5(*:36129)'
-                        .')'
-                        .'|8(?'
-                            .'|6c45/([^/]++)/([^/]++)/([^/]++)/a86c45(*:36182)'
-                            .'|849b/([^/]++)/([^/]++)/([^/]++)/a8849b(*:36230)'
-                            .'|e(?'
-                                .'|864/([^/]++)/([^/]++)/([^/]++)/a8e864(*:36281)'
-                                .'|cba/([^/]++)/([^/]++)/([^/]++)/a8ecba(*:36328)'
-                            .')'
-                        .')'
-                        .'|c(?'
-                            .'|c3e0/([^/]++)/([^/]++)/([^/]++)/acc3e0(*:36382)'
-                            .'|f4b8/([^/]++)/([^/]++)/([^/]++)/acf4b8(*:36430)'
-                        .')'
-                        .'|b(?'
-                            .'|d815/([^/]++)/([^/]++)/([^/]++)/abd815(*:36483)'
-                            .'|233b/([^/]++)/([^/]++)/([^/]++)/ab233b(*:36531)'
-                            .'|a3b6/([^/]++)/([^/]++)/([^/]++)/aba3b6(*:36579)'
-                            .'|88b1/([^/]++)/([^/]++)/([^/]++)/ab88b1(*:36627)'
-                        .')'
-                        .'|5(?'
-                            .'|3240/([^/]++)/([^/]++)/([^/]++)/a53240(*:36680)'
-                            .'|cdd4/([^/]++)/([^/]++)/([^/]++)/a5cdd4(*:36728)'
-                        .')'
-                        .'|f(?'
-                            .'|d(?'
-                                .'|483/([^/]++)/([^/]++)/([^/]++)/afd483(*:36784)'
-                                .'|a33/([^/]++)/([^/]++)/([^/]++)/afda33(*:36831)'
-                            .')'
-                            .'|f162/([^/]++)/([^/]++)/([^/]++)/aff162(*:36880)'
-                        .')'
-                        .'|e(?'
-                            .'|0eb3/([^/]++)/([^/]++)/([^/]++)/ae0eb3(*:36933)'
-                            .'|b313/([^/]++)/([^/]++)/([^/]++)/aeb313(*:36981)'
-                        .')'
-                        .'|1(?'
-                            .'|d33d/([^/]++)/([^/]++)/([^/]++)/a1d33d(*:37034)'
-                            .'|140a/([^/]++)/([^/]++)/([^/]++)/a1140a(*:37082)'
-                        .')'
-                        .'|ddfa9/([^/]++)/([^/]++)/([^/]++)/addfa9(*:37132)'
-                        .'|6(?'
-                            .'|7f09/([^/]++)/([^/]++)/([^/]++)/a67f09(*:37184)'
-                            .'|4c94/([^/]++)/([^/]++)/([^/]++)/a64c94(*:37232)'
-                        .')'
-                        .'|a169b/([^/]++)/([^/]++)/([^/]++)/aa169b(*:37282)'
-                        .'|4300b/([^/]++)/([^/]++)/([^/]++)/a4300b(*:37331)'
-                        .'|3d68b/([^/]++)/([^/]++)/([^/]++)/a3d68b(*:37380)'
-                    .')'
-                    .'|/1(?'
-                        .'|0(?'
-                            .'|a(?'
-                                .'|7cd/([^/]++)/([^/]++)/([^/]++)/10a7cd(*:37441)'
-                                .'|5ab/([^/]++)/([^/]++)/([^/]++)/10a5ab(*:37488)'
-                            .')'
-                            .'|9a0c/([^/]++)/([^/]++)/([^/]++)/109a0c(*:37537)'
-                        .')'
-                        .'|3f320/([^/]++)/([^/]++)/([^/]++)/13f320(*:37587)'
-                        .'|6(?'
-                            .'|c222/([^/]++)/([^/]++)/([^/]++)/16c222(*:37639)'
-                            .'|8908/([^/]++)/([^/]++)/([^/]++)/168908(*:37687)'
-                        .')'
-                        .'|5(?'
-                            .'|de21/([^/]++)/([^/]++)/([^/]++)/15de21(*:37740)'
-                            .'|95af/([^/]++)/([^/]++)/([^/]++)/1595af(*:37788)'
-                        .')'
-                        .'|1(?'
-                            .'|b921/([^/]++)/([^/]++)/([^/]++)/11b921(*:37841)'
-                            .'|4193/([^/]++)/([^/]++)/([^/]++)/114193(*:37889)'
-                        .')'
-                        .'|bb91f/([^/]++)/([^/]++)/([^/]++)/1bb91f(*:37939)'
-                        .'|7(?'
-                            .'|28ef/([^/]++)/([^/]++)/([^/]++)/1728ef(*:37991)'
-                            .'|c276/([^/]++)/([^/]++)/([^/]++)/17c276(*:38039)'
-                            .'|0c94/([^/]++)/([^/]++)/([^/]++)/170c94(*:38087)'
-                        .')'
-                        .'|85(?'
-                            .'|c29/([^/]++)/([^/]++)/([^/]++)/185c29(*:38140)'
-                            .'|e65/([^/]++)/([^/]++)/([^/]++)/185e65(*:38187)'
-                        .')'
-                        .'|9(?'
-                            .'|2fc0/([^/]++)/([^/]++)/([^/]++)/192fc0(*:38240)'
-                            .'|b(?'
-                                .'|c91/([^/]++)/([^/]++)/([^/]++)/19bc91(*:38291)'
-                                .'|650/([^/]++)/([^/]++)/([^/]++)/19b650(*:38338)'
-                            .')'
-                            .'|05ae/([^/]++)/([^/]++)/([^/]++)/1905ae(*:38387)'
-                        .')'
-                        .'|e(?'
-                            .'|cfb4/([^/]++)/([^/]++)/([^/]++)/1ecfb4(*:38440)'
-                            .'|fa39/([^/]++)/([^/]++)/([^/]++)/1efa39(*:38488)'
-                            .'|056d/([^/]++)/([^/]++)/([^/]++)/1e056d(*:38536)'
-                        .')'
-                        .'|aa48f/([^/]++)/([^/]++)/([^/]++)/1aa48f(*:38586)'
-                        .'|f(?'
-                            .'|c214/([^/]++)/([^/]++)/([^/]++)/1fc214(*:38638)'
-                            .'|5089/([^/]++)/([^/]++)/([^/]++)/1f5089(*:38686)'
-                            .'|4477/([^/]++)/([^/]++)/([^/]++)/1f4477(*:38734)'
-                        .')'
-                        .'|c(?'
-                            .'|c363/([^/]++)/([^/]++)/([^/]++)/1cc363(*:38787)'
-                            .'|1d4d/([^/]++)/([^/]++)/([^/]++)/1c1d4d(*:38835)'
-                            .'|e927/([^/]++)/([^/]++)/([^/]++)/1ce927(*:38883)'
-                        .')'
-                    .')'
-                    .'|/6(?'
-                        .'|3(?'
-                            .'|538f/([^/]++)/([^/]++)/([^/]++)/63538f(*:38942)'
-                            .'|2cee/([^/]++)/([^/]++)/([^/]++)/632cee(*:38990)'
-                            .'|95eb/([^/]++)/([^/]++)/([^/]++)/6395eb(*:39038)'
-                        .')'
-                        .'|9(?'
-                            .'|421f/([^/]++)/([^/]++)/([^/]++)/69421f(*:39091)'
-                            .'|2f93/([^/]++)/([^/]++)/([^/]++)/692f93(*:39139)'
-                        .')'
-                        .'|5658f/([^/]++)/([^/]++)/([^/]++)/65658f(*:39189)'
-                        .'|4(?'
-                            .'|7bba/([^/]++)/([^/]++)/([^/]++)/647bba(*:39241)'
-                            .'|223c/([^/]++)/([^/]++)/([^/]++)/64223c(*:39289)'
-                        .')'
-                        .'|e(?'
-                            .'|2713/([^/]++)/([^/]++)/([^/]++)/6e2713(*:39342)'
-                            .'|0721/([^/]++)/([^/]++)/([^/]++)/6e0721(*:39390)'
-                            .'|7b33/([^/]++)/([^/]++)/([^/]++)/6e7b33(*:39438)'
-                        .')'
-                        .'|0(?'
-                            .'|5ff7/([^/]++)/([^/]++)/([^/]++)/605ff7(*:39491)'
-                            .'|8159/([^/]++)/([^/]++)/([^/]++)/608159(*:39539)'
-                        .')'
-                        .'|a(?'
-                            .'|ca97/([^/]++)/([^/]++)/([^/]++)/6aca97(*:39592)'
-                            .'|10bb/([^/]++)/([^/]++)/([^/]++)/6a10bb(*:39640)'
-                            .'|ab12/([^/]++)/([^/]++)/([^/]++)/6aab12(*:39688)'
-                        .')'
-                        .'|7(?'
-                            .'|66aa/([^/]++)/([^/]++)/([^/]++)/6766aa(*:39741)'
-                            .'|e103/([^/]++)/([^/]++)/([^/]++)/67e103(*:39789)'
-                            .'|d(?'
-                                .'|96d/([^/]++)/([^/]++)/([^/]++)/67d96d(*:39840)'
-                                .'|16d/([^/]++)/([^/]++)/([^/]++)/67d16d(*:39887)'
-                            .')'
-                            .'|0e8a/([^/]++)/([^/]++)/([^/]++)/670e8a(*:39936)'
-                            .'|7e09/([^/]++)/([^/]++)/([^/]++)/677e09(*:39984)'
-                        .')'
-                        .'|8(?'
-                            .'|264b/([^/]++)/([^/]++)/([^/]++)/68264b(*:40037)'
-                            .'|053a/([^/]++)/([^/]++)/([^/]++)/68053a(*:40085)'
-                        .')'
-                        .'|c(?'
-                            .'|2979/([^/]++)/([^/]++)/([^/]++)/6c2979(*:40138)'
-                            .'|d67d/([^/]++)/([^/]++)/([^/]++)/6cd67d(*:40186)'
-                            .'|3cf7/([^/]++)/([^/]++)/([^/]++)/6c3cf7(*:40234)'
-                            .'|fe0e/([^/]++)/([^/]++)/([^/]++)/6cfe0e(*:40282)'
-                        .')'
-                        .'|bc24f/([^/]++)/([^/]++)/([^/]++)/6bc24f(*:40332)'
-                        .'|f2268/([^/]++)/([^/]++)/([^/]++)/6f2268(*:40381)'
-                        .'|1b4a6/([^/]++)/([^/]++)/([^/]++)/61b4a6(*:40430)'
-                        .'|21461/([^/]++)/([^/]++)/([^/]++)/621461(*:40479)'
-                        .'|d0f84/([^/]++)/([^/]++)/([^/]++)/6d0f84(*:40528)'
-                        .'|60229/([^/]++)/([^/]++)/([^/]++)/660229(*:40577)'
-                    .')'
-                    .'|/c(?'
-                        .'|f(?'
-                            .'|6735/([^/]++)/([^/]++)/([^/]++)/cf6735(*:40635)'
-                            .'|bce4/([^/]++)/([^/]++)/([^/]++)/cfbce4(*:40683)'
-                        .')'
-                        .'|3(?'
-                            .'|99(?'
-                                .'|86/([^/]++)/([^/]++)/([^/]++)/c39986(*:40739)'
-                                .'|2e/([^/]++)/([^/]++)/([^/]++)/c3992e(*:40785)'
-                            .')'
-                            .'|61bc/([^/]++)/([^/]++)/([^/]++)/c361bc(*:40834)'
-                            .'|2d9b/([^/]++)/([^/]++)/([^/]++)/c32d9b(*:40882)'
-                        .')'
-                        .'|75b6f/([^/]++)/([^/]++)/([^/]++)/c75b6f(*:40932)'
-                        .'|c(?'
-                            .'|b(?'
-                                .'|1d4/([^/]++)/([^/]++)/([^/]++)/ccb1d4(*:40987)'
-                                .'|098/([^/]++)/([^/]++)/([^/]++)/ccb098(*:41034)'
-                            .')'
-                            .'|c0aa/([^/]++)/([^/]++)/([^/]++)/ccc0aa(*:41083)'
-                            .'|1aa4/([^/]++)/([^/]++)/([^/]++)/cc1aa4(*:41131)'
-                        .')'
-                        .'|b(?'
-                            .'|cb58/([^/]++)/([^/]++)/([^/]++)/cbcb58(*:41184)'
-                            .'|b6a3/([^/]++)/([^/]++)/([^/]++)/cbb6a3(*:41232)'
-                        .')'
-                        .'|9892a/([^/]++)/([^/]++)/([^/]++)/c9892a(*:41282)'
-                        .'|6e19e/([^/]++)/([^/]++)/([^/]++)/c6e19e(*:41331)'
-                        .'|dc0d6/([^/]++)/([^/]++)/([^/]++)/cdc0d6(*:41380)'
-                        .'|5ab0b/([^/]++)/([^/]++)/([^/]++)/c5ab0b(*:41429)'
-                        .'|a(?'
-                            .'|9c26/([^/]++)/([^/]++)/([^/]++)/ca9c26(*:41481)'
-                            .'|8155/([^/]++)/([^/]++)/([^/]++)/ca8155(*:41529)'
-                            .'|7591/([^/]++)/([^/]++)/([^/]++)/ca7591(*:41577)'
-                        .')'
-                        .'|0(?'
-                            .'|6d06/([^/]++)/([^/]++)/([^/]++)/c06d06(*:41630)'
-                            .'|f168/([^/]++)/([^/]++)/([^/]++)/c0f168(*:41678)'
-                        .')'
-                        .'|8(?'
-                            .'|ed21/([^/]++)/([^/]++)/([^/]++)/c8ed21(*:41731)'
-                            .'|fbbc/([^/]++)/([^/]++)/([^/]++)/c8fbbc(*:41779)'
-                            .'|c41c/([^/]++)/([^/]++)/([^/]++)/c8c41c(*:41827)'
-                        .')'
-                        .'|15da1/([^/]++)/([^/]++)/([^/]++)/c15da1(*:41877)'
-                        .'|2(?'
-                            .'|626d/([^/]++)/([^/]++)/([^/]++)/c2626d(*:41929)'
-                            .'|aee8/([^/]++)/([^/]++)/([^/]++)/c2aee8(*:41977)'
-                            .'|2abf/([^/]++)/([^/]++)/([^/]++)/c22abf(*:42025)'
-                        .')'
-                        .'|e78d1/([^/]++)/([^/]++)/([^/]++)/ce78d1(*:42075)'
-                        .'|4(?'
-                            .'|015b/([^/]++)/([^/]++)/([^/]++)/c4015b(*:42127)'
-                            .'|b31c/([^/]++)/([^/]++)/([^/]++)/c4b31c(*:42175)'
-                        .')'
-                    .')'
-                    .'|/8(?'
-                        .'|5(?'
-                            .'|422a/([^/]++)/([^/]++)/([^/]++)/85422a(*:42234)'
-                            .'|1ddf/([^/]++)/([^/]++)/([^/]++)/851ddf(*:42282)'
-                            .'|fc37/([^/]++)/([^/]++)/([^/]++)/85fc37(*:42330)'
-                        .')'
-                        .'|1(?'
-                            .'|4481/([^/]++)/([^/]++)/([^/]++)/814481(*:42383)'
-                            .'|e74d/([^/]++)/([^/]++)/([^/]++)/81e74d(*:42431)'
-                        .')'
-                        .'|d(?'
-                            .'|3(?'
-                                .'|420/([^/]++)/([^/]++)/([^/]++)/8d3420(*:42487)'
-                                .'|17b/([^/]++)/([^/]++)/([^/]++)/8d317b(*:42534)'
-                            .')'
-                            .'|f707/([^/]++)/([^/]++)/([^/]++)/8df707(*:42583)'
-                            .'|6dc3/([^/]++)/([^/]++)/([^/]++)/8d6dc3(*:42631)'
-                        .')'
-                        .'|e(?'
-                            .'|efcf/([^/]++)/([^/]++)/([^/]++)/8eefcf(*:42684)'
-                            .'|bda5/([^/]++)/([^/]++)/([^/]++)/8ebda5(*:42732)'
-                            .'|82ab/([^/]++)/([^/]++)/([^/]++)/8e82ab(*:42780)'
-                        .')'
-                        .'|b(?'
-                            .'|16eb/([^/]++)/([^/]++)/([^/]++)/8b16eb(*:42833)'
-                            .'|6dd7/([^/]++)/([^/]++)/([^/]++)/8b6dd7(*:42881)'
-                            .'|5040/([^/]++)/([^/]++)/([^/]++)/8b5040(*:42929)'
-                        .')'
-                        .'|c(?'
-                            .'|7bbb/([^/]++)/([^/]++)/([^/]++)/8c7bbb(*:42982)'
-                            .'|6744/([^/]++)/([^/]++)/([^/]++)/8c6744(*:43030)'
-                            .'|235f/([^/]++)/([^/]++)/([^/]++)/8c235f(*:43078)'
-                        .')'
-                        .'|8(?'
-                            .'|4d24/([^/]++)/([^/]++)/([^/]++)/884d24(*:43131)'
-                            .'|ae63/([^/]++)/([^/]++)/([^/]++)/88ae63(*:43179)'
-                        .')'
-                        .'|7(?'
-                            .'|5715/([^/]++)/([^/]++)/([^/]++)/875715(*:43232)'
-                            .'|2488/([^/]++)/([^/]++)/([^/]++)/872488(*:43280)'
-                        .')'
-                        .'|4(?'
-                            .'|1172/([^/]++)/([^/]++)/([^/]++)/841172(*:43333)'
-                            .'|6c26/([^/]++)/([^/]++)/([^/]++)/846c26(*:43381)'
-                            .'|f7e6/([^/]++)/([^/]++)/([^/]++)/84f7e6(*:43429)'
-                            .'|7cc5/([^/]++)/([^/]++)/([^/]++)/847cc5(*:43477)'
-                        .')'
-                        .'|f(?'
-                            .'|ecb2/([^/]++)/([^/]++)/([^/]++)/8fecb2(*:43530)'
-                            .'|7d80/([^/]++)/([^/]++)/([^/]++)/8f7d80(*:43578)'
-                            .'|468c/([^/]++)/([^/]++)/([^/]++)/8f468c(*:43626)'
-                        .')'
-                        .'|a0e11/([^/]++)/([^/]++)/([^/]++)/8a0e11(*:43676)'
-                        .'|2(?'
-                            .'|f2b3/([^/]++)/([^/]++)/([^/]++)/82f2b3(*:43728)'
-                            .'|489c/([^/]++)/([^/]++)/([^/]++)/82489c(*:43776)'
-                        .')'
-                        .'|6(?'
-                            .'|b122/([^/]++)/([^/]++)/([^/]++)/86b122(*:43829)'
-                            .'|0320/([^/]++)/([^/]++)/([^/]++)/860320(*:43877)'
-                        .')'
-                        .'|9(?'
-                            .'|2c91/([^/]++)/([^/]++)/([^/]++)/892c91(*:43930)'
-                            .'|fcd0/([^/]++)/([^/]++)/([^/]++)/89fcd0(*:43978)'
-                        .')'
-                        .'|065d0/([^/]++)/([^/]++)/([^/]++)/8065d0(*:44028)'
-                    .')'
-                    .'|/d(?'
-                        .'|6(?'
-                            .'|4a34/([^/]++)/([^/]++)/([^/]++)/d64a34(*:44086)'
-                            .'|c651/([^/]++)/([^/]++)/([^/]++)/d6c651(*:44134)'
-                        .')'
-                        .'|f(?'
-                            .'|877f/([^/]++)/([^/]++)/([^/]++)/df877f(*:44187)'
-                            .'|263d/([^/]++)/([^/]++)/([^/]++)/df263d(*:44235)'
-                            .'|7f28/([^/]++)/([^/]++)/([^/]++)/df7f28(*:44283)'
-                            .'|6d23/([^/]++)/([^/]++)/([^/]++)/df6d23(*:44331)'
-                        .')'
-                        .'|b(?'
-                            .'|85e2/([^/]++)/([^/]++)/([^/]++)/db85e2(*:44384)'
-                            .'|e272/([^/]++)/([^/]++)/([^/]++)/dbe272(*:44432)'
-                        .')'
-                        .'|d(?'
-                            .'|45(?'
-                                .'|85/([^/]++)/([^/]++)/([^/]++)/dd4585(*:44488)'
-                                .'|04/([^/]++)/([^/]++)/([^/]++)/dd4504(*:44534)'
-                            .')'
-                            .'|8eb9/([^/]++)/([^/]++)/([^/]++)/dd8eb9(*:44583)'
-                        .')'
-                        .'|a(?'
-                            .'|ca41/([^/]++)/([^/]++)/([^/]++)/daca41(*:44636)'
-                            .'|8ce5/([^/]++)/([^/]++)/([^/]++)/da8ce5(*:44684)'
-                            .'|0d11/([^/]++)/([^/]++)/([^/]++)/da0d11(*:44732)'
-                        .')'
-                        .'|4(?'
-                            .'|90d7/([^/]++)/([^/]++)/([^/]++)/d490d7(*:44785)'
-                            .'|c2e4/([^/]++)/([^/]++)/([^/]++)/d4c2e4(*:44833)'
-                        .')'
-                        .'|8(?'
-                            .'|6ea6/([^/]++)/([^/]++)/([^/]++)/d86ea6(*:44886)'
-                            .'|40cc/([^/]++)/([^/]++)/([^/]++)/d840cc(*:44934)'
-                        .')'
-                        .'|c(?'
-                            .'|82d6/([^/]++)/([^/]++)/([^/]++)/dc82d6(*:44987)'
-                            .'|6a70/([^/]++)/([^/]++)/([^/]++)/dc6a70(*:45035)'
-                            .'|5689/([^/]++)/([^/]++)/([^/]++)/dc5689(*:45083)'
-                        .')'
-                        .'|7(?'
-                            .'|a728/([^/]++)/([^/]++)/([^/]++)/d7a728(*:45136)'
-                            .'|0732/([^/]++)/([^/]++)/([^/]++)/d70732(*:45184)'
-                            .'|9aac/([^/]++)/([^/]++)/([^/]++)/d79aac(*:45232)'
-                        .')'
-                        .'|14220/([^/]++)/([^/]++)/([^/]++)/d14220(*:45282)'
-                        .'|5(?'
-                            .'|cfea/([^/]++)/([^/]++)/([^/]++)/d5cfea(*:45334)'
-                            .'|8072/([^/]++)/([^/]++)/([^/]++)/d58072(*:45382)'
-                            .'|54f7/([^/]++)/([^/]++)/([^/]++)/d554f7(*:45430)'
-                            .'|16b1/([^/]++)/([^/]++)/([^/]++)/d516b1(*:45478)'
-                            .'|6b9f/([^/]++)/([^/]++)/([^/]++)/d56b9f(*:45526)'
-                        .')'
-                        .'|045c5/([^/]++)/([^/]++)/([^/]++)/d045c5(*:45576)'
-                        .'|2(?'
-                            .'|ed45/([^/]++)/([^/]++)/([^/]++)/d2ed45(*:45628)'
-                            .'|40e3/([^/]++)/([^/]++)/([^/]++)/d240e3(*:45676)'
-                        .')'
-                        .'|93ed5/([^/]++)/([^/]++)/([^/]++)/d93ed5(*:45726)'
-                    .')'
-                    .'|/7(?'
-                        .'|b(?'
-                            .'|cdf7/([^/]++)/([^/]++)/([^/]++)/7bcdf7(*:45784)'
-                            .'|13b2/([^/]++)/([^/]++)/([^/]++)/7b13b2(*:45832)'
-                        .')'
-                        .'|dcd34/([^/]++)/([^/]++)/([^/]++)/7dcd34(*:45882)'
-                        .'|f(?'
-                            .'|24d2/([^/]++)/([^/]++)/([^/]++)/7f24d2(*:45934)'
-                            .'|5d04/([^/]++)/([^/]++)/([^/]++)/7f5d04(*:45982)'
-                            .'|1171/([^/]++)/([^/]++)/([^/]++)/7f1171(*:46030)'
-                            .'|a732/([^/]++)/([^/]++)/([^/]++)/7fa732(*:46078)'
-                        .')'
-                        .'|6(?'
-                            .'|6ebc/([^/]++)/([^/]++)/([^/]++)/766ebc(*:46131)'
-                            .'|34ea/([^/]++)/([^/]++)/([^/]++)/7634ea(*:46179)'
-                        .')'
-                        .'|750ca/([^/]++)/([^/]++)/([^/]++)/7750ca(*:46229)'
-                        .'|1(?'
-                            .'|a(?'
-                                .'|3cb/([^/]++)/([^/]++)/([^/]++)/71a3cb(*:46284)'
-                                .'|d16/([^/]++)/([^/]++)/([^/]++)/71ad16(*:46331)'
-                            .')'
-                            .'|43d7/([^/]++)/([^/]++)/([^/]++)/7143d7(*:46380)'
-                        .')'
-                        .'|88d98/([^/]++)/([^/]++)/([^/]++)/788d98(*:46430)'
-                        .'|2(?'
-                            .'|da7f/([^/]++)/([^/]++)/([^/]++)/72da7f(*:46482)'
-                            .'|50eb/([^/]++)/([^/]++)/([^/]++)/7250eb(*:46530)'
-                        .')'
-                        .'|c(?'
-                            .'|590f/([^/]++)/([^/]++)/([^/]++)/7c590f(*:46583)'
-                            .'|e328/([^/]++)/([^/]++)/([^/]++)/7ce328(*:46631)'
-                        .')'
-                        .'|a5392/([^/]++)/([^/]++)/([^/]++)/7a5392(*:46681)'
-                        .'|95c7a/([^/]++)/([^/]++)/([^/]++)/795c7a(*:46730)'
-                        .'|504ad/([^/]++)/([^/]++)/([^/]++)/7504ad(*:46779)'
-                        .'|04afe/([^/]++)/([^/]++)/([^/]++)/704afe(*:46828)'
-                        .'|4bba2/([^/]++)/([^/]++)/([^/]++)/74bba2(*:46877)'
-                    .')'
-                    .'|/9(?'
-                        .'|b(?'
-                            .'|72e3/([^/]++)/([^/]++)/([^/]++)/9b72e3(*:46935)'
-                            .'|698e/([^/]++)/([^/]++)/([^/]++)/9b698e(*:46983)'
-                        .')'
-                        .'|7e852/([^/]++)/([^/]++)/([^/]++)/97e852(*:47033)'
-                        .'|4c7bb/([^/]++)/([^/]++)/([^/]++)/94c7bb(*:47082)'
-                        .'|9(?'
-                            .'|c5e0/([^/]++)/([^/]++)/([^/]++)/99c5e0(*:47134)'
-                            .'|6a7f/([^/]++)/([^/]++)/([^/]++)/996a7f(*:47182)'
-                            .'|bcfc/([^/]++)/([^/]++)/([^/]++)/99bcfc(*:47230)'
-                            .'|0827/([^/]++)/([^/]++)/([^/]++)/990827(*:47278)'
-                        .')'
-                        .'|a(?'
-                            .'|d6aa/([^/]++)/([^/]++)/([^/]++)/9ad6aa(*:47331)'
-                            .'|b0d8/([^/]++)/([^/]++)/([^/]++)/9ab0d8(*:47379)'
-                        .')'
-                        .'|c(?'
-                            .'|f81d/([^/]++)/([^/]++)/([^/]++)/9cf81d(*:47432)'
-                            .'|c138/([^/]++)/([^/]++)/([^/]++)/9cc138(*:47480)'
-                            .'|82c7/([^/]++)/([^/]++)/([^/]++)/9c82c7(*:47528)'
-                            .'|0180/([^/]++)/([^/]++)/([^/]++)/9c0180(*:47576)'
-                        .')'
-                        .'|f(?'
-                            .'|396f/([^/]++)/([^/]++)/([^/]++)/9f396f(*:47629)'
-                            .'|e859/([^/]++)/([^/]++)/([^/]++)/9fe859(*:47677)'
-                            .'|53d8/([^/]++)/([^/]++)/([^/]++)/9f53d8(*:47725)'
-                        .')'
-                        .'|12d2b/([^/]++)/([^/]++)/([^/]++)/912d2b(*:47775)'
-                        .'|59a55/([^/]++)/([^/]++)/([^/]++)/959a55(*:47824)'
-                        .'|6(?'
-                            .'|ea64/([^/]++)/([^/]++)/([^/]++)/96ea64(*:47876)'
-                            .'|b9bf/([^/]++)/([^/]++)/([^/]++)/96b9bf(*:47924)'
-                        .')'
-                        .'|e3cfc/([^/]++)/([^/]++)/([^/]++)/9e3cfc(*:47974)'
-                        .'|2(?'
-                            .'|fb0c/([^/]++)/([^/]++)/([^/]++)/92fb0c(*:48026)'
-                            .'|262b/([^/]++)/([^/]++)/([^/]++)/92262b(*:48074)'
-                            .'|32fe/([^/]++)/([^/]++)/([^/]++)/9232fe(*:48122)'
-                            .'|977a/([^/]++)/([^/]++)/([^/]++)/92977a(*:48170)'
-                        .')'
-                        .'|8d6f5/([^/]++)/([^/]++)/([^/]++)/98d6f5(*:48220)'
-                        .'|0794e/([^/]++)/([^/]++)/([^/]++)/90794e(*:48269)'
-                        .'|34815/([^/]++)/([^/]++)/([^/]++)/934815(*:48318)'
-                    .')'
-                    .'|/4(?'
-                        .'|e(?'
-                            .'|4b5f/([^/]++)/([^/]++)/([^/]++)/4e4b5f(*:48376)'
-                            .'|a06f/([^/]++)/([^/]++)/([^/]++)/4ea06f(*:48424)'
-                            .'|0(?'
-                                .'|928/([^/]++)/([^/]++)/([^/]++)/4e0928(*:48475)'
-                                .'|cb6/([^/]++)/([^/]++)/([^/]++)/4e0cb6(*:48522)'
-                            .')'
-                        .')'
-                        .'|6922a/([^/]++)/([^/]++)/([^/]++)/46922a(*:48573)'
-                        .'|4(?'
-                            .'|c4c1/([^/]++)/([^/]++)/([^/]++)/44c4c1(*:48625)'
-                            .'|3cb0/([^/]++)/([^/]++)/([^/]++)/443cb0(*:48673)'
-                        .')'
-                        .'|8ab2f/([^/]++)/([^/]++)/([^/]++)/48ab2f(*:48723)'
-                        .'|5(?'
-                            .'|645a/([^/]++)/([^/]++)/([^/]++)/45645a(*:48775)'
-                            .'|58db/([^/]++)/([^/]++)/([^/]++)/4558db(*:48823)'
-                        .')'
-                        .'|2e77b/([^/]++)/([^/]++)/([^/]++)/42e77b(*:48873)'
-                        .'|c27ce/([^/]++)/([^/]++)/([^/]++)/4c27ce(*:48922)'
-                        .'|f(?'
-                            .'|fce0/([^/]++)/([^/]++)/([^/]++)/4ffce0(*:48974)'
-                            .'|ac9b/([^/]++)/([^/]++)/([^/]++)/4fac9b(*:49022)'
-                        .')'
-                        .'|a47d2/([^/]++)/([^/]++)/([^/]++)/4a47d2(*:49072)'
-                        .'|70e7a/([^/]++)/([^/]++)/([^/]++)/470e7a(*:49121)'
-                        .'|b(?'
-                            .'|0(?'
-                                .'|4a6/([^/]++)/([^/]++)/([^/]++)/4b04a6(*:49176)'
-                                .'|a59/([^/]++)/([^/]++)/([^/]++)/4b0a59(*:49223)'
-                                .'|250/([^/]++)/([^/]++)/([^/]++)/4b0250(*:49270)'
-                            .')'
-                            .'|6538/([^/]++)/([^/]++)/([^/]++)/4b6538(*:49319)'
-                        .')'
-                        .'|3(?'
-                            .'|f(?'
-                                .'|a7f/([^/]++)/([^/]++)/([^/]++)/43fa7f(*:49375)'
-                                .'|eae/([^/]++)/([^/]++)/([^/]++)/43feae(*:49422)'
-                            .')'
-                            .'|0c36/([^/]++)/([^/]++)/([^/]++)/430c36(*:49471)'
-                            .'|7d7d/([^/]++)/([^/]++)/([^/]++)/437d7d(*:49519)'
-                            .'|1135/([^/]++)/([^/]++)/([^/]++)/431135(*:49567)'
-                        .')'
-                        .'|d(?'
-                            .'|5b99/([^/]++)/([^/]++)/([^/]++)/4d5b99(*:49620)'
-                            .'|aa3d/([^/]++)/([^/]++)/([^/]++)/4daa3d(*:49668)'
-                        .')'
-                        .'|9c9ad/([^/]++)/([^/]++)/([^/]++)/49c9ad(*:49718)'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            54 => [[['_route' => '_0'], ['a', 'b', 'c'], null, null, false, false, null]],
-            102 => [[['_route' => '_190'], ['a', 'b', 'c'], null, null, false, false, null]],
-            147 => [[['_route' => '_478'], ['a', 'b', 'c'], null, null, false, false, null]],
-            194 => [[['_route' => '_259'], ['a', 'b', 'c'], null, null, false, false, null]],
-            240 => [[['_route' => '_368'], ['a', 'b', 'c'], null, null, false, false, null]],
-            291 => [[['_route' => '_1'], ['a', 'b', 'c'], null, null, false, false, null]],
-            337 => [[['_route' => '_116'], ['a', 'b', 'c'], null, null, false, false, null]],
-            383 => [[['_route' => '_490'], ['a', 'b', 'c'], null, null, false, false, null]],
-            434 => [[['_route' => '_2'], ['a', 'b', 'c'], null, null, false, false, null]],
-            480 => [[['_route' => '_124'], ['a', 'b', 'c'], null, null, false, false, null]],
-            526 => [[['_route' => '_389'], ['a', 'b', 'c'], null, null, false, false, null]],
-            577 => [[['_route' => '_8'], ['a', 'b', 'c'], null, null, false, false, null]],
-            623 => [[['_route' => '_104'], ['a', 'b', 'c'], null, null, false, false, null]],
-            677 => [[['_route' => '_12'], ['a', 'b', 'c'], null, null, false, false, null]],
-            722 => [[['_route' => '_442'], ['a', 'b', 'c'], null, null, false, false, null]],
-            769 => [[['_route' => '_253'], ['a', 'b', 'c'], null, null, false, false, null]],
-            820 => [[['_route' => '_13'], ['a', 'b', 'c'], null, null, false, false, null]],
-            866 => [[['_route' => '_254'], ['a', 'b', 'c'], null, null, false, false, null]],
-            912 => [[['_route' => '_347'], ['a', 'b', 'c'], null, null, false, false, null]],
-            963 => [[['_route' => '_16'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1009 => [[['_route' => '_87'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1058 => [[['_route' => '_31'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1109 => [[['_route' => '_50'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1156 => [[['_route' => '_219'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1203 => [[['_route' => '_332'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1250 => [[['_route' => '_359'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1302 => [[['_route' => '_183'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1349 => [[['_route' => '_500'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1401 => [[['_route' => '_214'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1448 => [[['_route' => '_321'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1497 => [[['_route' => '_243'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1545 => [[['_route' => '_328'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1596 => [[['_route' => '_362'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1643 => [[['_route' => '_488'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1701 => [[['_route' => '_3'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1751 => [[['_route' => '_102'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1797 => [[['_route' => '_220'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1845 => [[['_route' => '_127'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1897 => [[['_route' => '_5'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1944 => [[['_route' => '_242'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1991 => [[['_route' => '_397'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2038 => [[['_route' => '_454'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2090 => [[['_route' => '_34'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2137 => [[['_route' => '_281'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2189 => [[['_route' => '_64'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2236 => [[['_route' => '_205'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2291 => [[['_route' => '_71'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2337 => [[['_route' => '_203'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2385 => [[['_route' => '_97'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2437 => [[['_route' => '_98'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2484 => [[['_route' => '_267'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2531 => [[['_route' => '_309'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2586 => [[['_route' => '_117'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2631 => [[['_route' => '_211'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2679 => [[['_route' => '_484'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2731 => [[['_route' => '_139'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2778 => [[['_route' => '_421'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2830 => [[['_route' => '_185'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2877 => [[['_route' => '_439'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2926 => [[['_route' => '_218'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2977 => [[['_route' => '_233'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3024 => [[['_route' => '_483'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3073 => [[['_route' => '_265'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3124 => [[['_route' => '_299'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3171 => [[['_route' => '_351'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3218 => [[['_route' => '_472'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3267 => [[['_route' => '_360'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3315 => [[['_route' => '_466'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3372 => [[['_route' => '_4'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3419 => [[['_route' => '_142'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3466 => [[['_route' => '_151'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3513 => [[['_route' => '_308'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3560 => [[['_route' => '_440'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3612 => [[['_route' => '_14'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3659 => [[['_route' => '_358'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3711 => [[['_route' => '_37'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3758 => [[['_route' => '_38'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3805 => [[['_route' => '_146'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3852 => [[['_route' => '_194'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3899 => [[['_route' => '_487'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3948 => [[['_route' => '_42'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3999 => [[['_route' => '_54'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4046 => [[['_route' => '_326'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4098 => [[['_route' => '_68'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4145 => [[['_route' => '_108'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4197 => [[['_route' => '_74'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4244 => [[['_route' => '_315'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4291 => [[['_route' => '_374'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4343 => [[['_route' => '_99'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4390 => [[['_route' => '_238'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4442 => [[['_route' => '_107'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4489 => [[['_route' => '_409'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4541 => [[['_route' => '_122'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4588 => [[['_route' => '_379'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4635 => [[['_route' => '_390'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4687 => [[['_route' => '_171'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4734 => [[['_route' => '_260'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4781 => [[['_route' => '_434'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4830 => [[['_route' => '_189'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4878 => [[['_route' => '_467'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4935 => [[['_route' => '_6'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4982 => [[['_route' => '_286'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5029 => [[['_route' => '_438'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5081 => [[['_route' => '_19'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5131 => [[['_route' => '_24'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5177 => [[['_route' => '_172'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5230 => [[['_route' => '_33'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5277 => [[['_route' => '_400'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5324 => [[['_route' => '_427'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5376 => [[['_route' => '_35'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5423 => [[['_route' => '_156'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5475 => [[['_route' => '_36'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5522 => [[['_route' => '_251'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5574 => [[['_route' => '_43'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5621 => [[['_route' => '_292'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5668 => [[['_route' => '_411'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5720 => [[['_route' => '_69'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5767 => [[['_route' => '_159'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5814 => [[['_route' => '_170'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5861 => [[['_route' => '_376'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5913 => [[['_route' => '_131'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5960 => [[['_route' => '_446'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6015 => [[['_route' => '_140'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6061 => [[['_route' => '_353'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6112 => [[['_route' => '_224'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6158 => [[['_route' => '_346'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6204 => [[['_route' => '_443'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6254 => [[['_route' => '_154'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6305 => [[['_route' => '_212'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6352 => [[['_route' => '_313'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6399 => [[['_route' => '_395'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6446 => [[['_route' => '_441'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6498 => [[['_route' => '_223'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6545 => [[['_route' => '_303'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6594 => [[['_route' => '_410'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6642 => [[['_route' => '_494'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6702 => [[['_route' => '_7'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6748 => [[['_route' => '_268'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6796 => [[['_route' => '_178'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6843 => [[['_route' => '_179'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6890 => [[['_route' => '_416'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6942 => [[['_route' => '_25'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6989 => [[['_route' => '_307'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7036 => [[['_route' => '_387'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7083 => [[['_route' => '_471'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7132 => [[['_route' => '_90'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7183 => [[['_route' => '_95'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7230 => [[['_route' => '_338'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7277 => [[['_route' => '_401'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7329 => [[['_route' => '_147'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7376 => [[['_route' => '_319'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7423 => [[['_route' => '_354'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7470 => [[['_route' => '_428'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7522 => [[['_route' => '_162'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7572 => [[['_route' => '_175'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7618 => [[['_route' => '_455'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7666 => [[['_route' => '_355'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7718 => [[['_route' => '_197'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7768 => [[['_route' => '_202'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7813 => [[['_route' => '_489'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7863 => [[['_route' => '_199'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7914 => [[['_route' => '_263'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7961 => [[['_route' => '_406'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8010 => [[['_route' => '_289'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8058 => [[['_route' => '_325'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8106 => [[['_route' => '_378'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8154 => [[['_route' => '_468'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8211 => [[['_route' => '_9'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8258 => [[['_route' => '_216'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8307 => [[['_route' => '_26'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8355 => [[['_route' => '_62'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8406 => [[['_route' => '_81'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8453 => [[['_route' => '_318'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8505 => [[['_route' => '_121'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8551 => [[['_route' => '_182'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8603 => [[['_route' => '_136'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8650 => [[['_route' => '_415'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8697 => [[['_route' => '_457'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8744 => [[['_route' => '_463'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8796 => [[['_route' => '_148'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8843 => [[['_route' => '_273'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8892 => [[['_route' => '_284'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8940 => [[['_route' => '_288'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8991 => [[['_route' => '_295'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9038 => [[['_route' => '_305'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9085 => [[['_route' => '_453'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9134 => [[['_route' => '_340'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9185 => [[['_route' => '_371'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9232 => [[['_route' => '_417'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9284 => [[['_route' => '_382'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9331 => [[['_route' => '_404'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9389 => [[['_route' => '_10'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9436 => [[['_route' => '_279'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9483 => [[['_route' => '_377'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9535 => [[['_route' => '_39'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9582 => [[['_route' => '_40'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9629 => [[['_route' => '_264'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9676 => [[['_route' => '_449'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9728 => [[['_route' => '_46'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9775 => [[['_route' => '_257'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9822 => [[['_route' => '_274'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9869 => [[['_route' => '_388'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9921 => [[['_route' => '_53'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9968 => [[['_route' => '_345'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10020 => [[['_route' => '_73'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10068 => [[['_route' => '_296'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10121 => [[['_route' => '_75'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10169 => [[['_route' => '_458'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10225 => [[['_route' => '_79'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10272 => [[['_route' => '_129'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10319 => [[['_route' => '_418'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10368 => [[['_route' => '_225'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10416 => [[['_route' => '_479'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10466 => [[['_route' => '_120'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10515 => [[['_route' => '_276'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10564 => [[['_route' => '_370'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10616 => [[['_route' => '_385'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10664 => [[['_route' => '_469'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10714 => [[['_route' => '_435'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10772 => [[['_route' => '_11'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10820 => [[['_route' => '_105'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10868 => [[['_route' => '_132'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10921 => [[['_route' => '_18'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10969 => [[['_route' => '_210'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11017 => [[['_route' => '_329'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11073 => [[['_route' => '_29'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11120 => [[['_route' => '_480'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11169 => [[['_route' => '_426'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11222 => [[['_route' => '_32'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11270 => [[['_route' => '_217'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11318 => [[['_route' => '_275'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11371 => [[['_route' => '_45'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11419 => [[['_route' => '_157'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11467 => [[['_route' => '_184'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11515 => [[['_route' => '_250'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11563 => [[['_route' => '_356'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11616 => [[['_route' => '_47'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11664 => [[['_route' => '_445'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11714 => [[['_route' => '_48'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11766 => [[['_route' => '_58'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11814 => [[['_route' => '_414'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11862 => [[['_route' => '_431'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11915 => [[['_route' => '_84'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11963 => [[['_route' => '_294'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12011 => [[['_route' => '_336'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12059 => [[['_route' => '_465'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12112 => [[['_route' => '_103'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12160 => [[['_route' => '_111'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12208 => [[['_route' => '_207'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12256 => [[['_route' => '_402'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12309 => [[['_route' => '_230'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12356 => [[['_route' => '_331'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12406 => [[['_route' => '_248'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12455 => [[['_route' => '_282'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12513 => [[['_route' => '_15'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12561 => [[['_route' => '_130'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12609 => [[['_route' => '_231'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12657 => [[['_route' => '_365'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12705 => [[['_route' => '_448'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12758 => [[['_route' => '_20'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12806 => [[['_route' => '_93'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12854 => [[['_route' => '_186'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12902 => [[['_route' => '_460'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12955 => [[['_route' => '_52'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13003 => [[['_route' => '_447'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13056 => [[['_route' => '_56'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13104 => [[['_route' => '_133'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13152 => [[['_route' => '_297'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13205 => [[['_route' => '_82'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13253 => [[['_route' => '_165'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13301 => [[['_route' => '_213'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13351 => [[['_route' => '_86'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13403 => [[['_route' => '_92'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13450 => [[['_route' => '_280'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13500 => [[['_route' => '_143'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13549 => [[['_route' => '_177'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13601 => [[['_route' => '_188'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13649 => [[['_route' => '_311'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13697 => [[['_route' => '_350'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13750 => [[['_route' => '_226'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13798 => [[['_route' => '_291'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13851 => [[['_route' => '_244'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13898 => [[['_route' => '_287'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13951 => [[['_route' => '_300'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13999 => [[['_route' => '_451'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14047 => [[['_route' => '_452'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14095 => [[['_route' => '_481'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14145 => [[['_route' => '_312'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14203 => [[['_route' => '_17'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14251 => [[['_route' => '_227'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14299 => [[['_route' => '_393'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14349 => [[['_route' => '_57'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14401 => [[['_route' => '_61'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14449 => [[['_route' => '_112'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14500 => [[['_route' => '_135'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14547 => [[['_route' => '_271'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14596 => [[['_route' => '_459'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14649 => [[['_route' => '_67'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14697 => [[['_route' => '_113'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14745 => [[['_route' => '_497'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14795 => [[['_route' => '_70'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14847 => [[['_route' => '_89'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14895 => [[['_route' => '_128'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14948 => [[['_route' => '_150'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14996 => [[['_route' => '_166'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15047 => [[['_route' => '_206'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15094 => [[['_route' => '_419'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15148 => [[['_route' => '_201'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15196 => [[['_route' => '_314'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15244 => [[['_route' => '_429'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15297 => [[['_route' => '_228'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15345 => [[['_route' => '_477'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15395 => [[['_route' => '_272'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15444 => [[['_route' => '_486'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15502 => [[['_route' => '_21'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15550 => [[['_route' => '_247'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15598 => [[['_route' => '_424'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15646 => [[['_route' => '_499'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15699 => [[['_route' => '_23'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15747 => [[['_route' => '_152'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15795 => [[['_route' => '_304'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15843 => [[['_route' => '_352'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15896 => [[['_route' => '_28'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15944 => [[['_route' => '_240'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16000 => [[['_route' => '_30'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16047 => [[['_route' => '_41'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16096 => [[['_route' => '_301'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16149 => [[['_route' => '_66'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16197 => [[['_route' => '_72'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16245 => [[['_route' => '_320'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16298 => [[['_route' => '_78'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16346 => [[['_route' => '_337'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16394 => [[['_route' => '_399'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16442 => [[['_route' => '_495'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16492 => [[['_route' => '_85'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16544 => [[['_route' => '_101'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16592 => [[['_route' => '_176'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16640 => [[['_route' => '_246'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16693 => [[['_route' => '_125'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16741 => [[['_route' => '_341'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16794 => [[['_route' => '_137'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16842 => [[['_route' => '_270'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16890 => [[['_route' => '_386'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16943 => [[['_route' => '_169'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16991 => [[['_route' => '_200'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17039 => [[['_route' => '_262'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17092 => [[['_route' => '_187'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17140 => [[['_route' => '_333'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17190 => [[['_route' => '_215'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17239 => [[['_route' => '_316'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17288 => [[['_route' => '_343'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17346 => [[['_route' => '_22'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17394 => [[['_route' => '_420'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17447 => [[['_route' => '_55'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17494 => [[['_route' => '_496'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17547 => [[['_route' => '_153'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17595 => [[['_route' => '_344'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17648 => [[['_route' => '_160'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17696 => [[['_route' => '_398'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17749 => [[['_route' => '_161'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17797 => [[['_route' => '_193'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17847 => [[['_route' => '_174'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17899 => [[['_route' => '_209'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17947 => [[['_route' => '_261'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18000 => [[['_route' => '_222'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18048 => [[['_route' => '_323'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18096 => [[['_route' => '_380'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18149 => [[['_route' => '_232'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18197 => [[['_route' => '_383'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18247 => [[['_route' => '_306'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18296 => [[['_route' => '_327'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18345 => [[['_route' => '_364'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18397 => [[['_route' => '_403'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18445 => [[['_route' => '_405'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18495 => [[['_route' => '_412'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18553 => [[['_route' => '_27'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18601 => [[['_route' => '_134'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18649 => [[['_route' => '_245'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18702 => [[['_route' => '_59'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18750 => [[['_route' => '_208'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18803 => [[['_route' => '_60'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18851 => [[['_route' => '_119'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18902 => [[['_route' => '_163'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18949 => [[['_route' => '_249'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18998 => [[['_route' => '_278'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19051 => [[['_route' => '_63'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19099 => [[['_route' => '_195'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19147 => [[['_route' => '_252'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19195 => [[['_route' => '_461'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19248 => [[['_route' => '_126'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19296 => [[['_route' => '_158'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19344 => [[['_route' => '_221'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19392 => [[['_route' => '_269'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19440 => [[['_route' => '_310'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19496 => [[['_route' => '_138'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19543 => [[['_route' => '_348'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19592 => [[['_route' => '_236'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19640 => [[['_route' => '_433'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19693 => [[['_route' => '_141'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19741 => [[['_route' => '_283'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19794 => [[['_route' => '_144'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19842 => [[['_route' => '_191'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19895 => [[['_route' => '_168'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19943 => [[['_route' => '_363'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19991 => [[['_route' => '_381'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20044 => [[['_route' => '_180'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20092 => [[['_route' => '_339'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20142 => [[['_route' => '_196'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20194 => [[['_route' => '_198'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20242 => [[['_route' => '_285'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20292 => [[['_route' => '_349'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20344 => [[['_route' => '_367'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20392 => [[['_route' => '_384'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20440 => [[['_route' => '_498'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20490 => [[['_route' => '_369'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20542 => [[['_route' => '_408'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20590 => [[['_route' => '_413'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20652 => [[['_route' => '_44'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20699 => [[['_route' => '_256'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20748 => [[['_route' => '_173'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20796 => [[['_route' => '_266'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20844 => [[['_route' => '_392'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20892 => [[['_route' => '_430'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20940 => [[['_route' => '_482'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20993 => [[['_route' => '_49'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21041 => [[['_route' => '_94'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21089 => [[['_route' => '_407'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21142 => [[['_route' => '_65'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21190 => [[['_route' => '_181'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21238 => [[['_route' => '_437'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21291 => [[['_route' => '_76'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21339 => [[['_route' => '_357'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21392 => [[['_route' => '_80'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21440 => [[['_route' => '_106'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21493 => [[['_route' => '_83'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21541 => [[['_route' => '_255'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21589 => [[['_route' => '_330'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21642 => [[['_route' => '_100'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21690 => [[['_route' => '_396'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21738 => [[['_route' => '_422'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21791 => [[['_route' => '_149'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21839 => [[['_route' => '_324'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21892 => [[['_route' => '_164'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21940 => [[['_route' => '_423'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21990 => [[['_route' => '_241'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22042 => [[['_route' => '_290'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22090 => [[['_route' => '_335'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22140 => [[['_route' => '_373'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22189 => [[['_route' => '_375'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22238 => [[['_route' => '_450'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22287 => [[['_route' => '_464'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22345 => [[['_route' => '_51'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22393 => [[['_route' => '_77'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22441 => [[['_route' => '_234'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22489 => [[['_route' => '_394'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22542 => [[['_route' => '_88'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22590 => [[['_route' => '_155'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22643 => [[['_route' => '_96'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22691 => [[['_route' => '_298'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22739 => [[['_route' => '_470'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22792 => [[['_route' => '_109'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22840 => [[['_route' => '_204'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22893 => [[['_route' => '_115'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22941 => [[['_route' => '_145'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22994 => [[['_route' => '_123'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23042 => [[['_route' => '_277'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23090 => [[['_route' => '_473'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23143 => [[['_route' => '_334'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23191 => [[['_route' => '_493'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23244 => [[['_route' => '_372'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23292 => [[['_route' => '_432'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23340 => [[['_route' => '_436'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23393 => [[['_route' => '_425'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23441 => [[['_route' => '_456'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23489 => [[['_route' => '_474'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23539 => [[['_route' => '_485'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23594 => [[['_route' => '_91'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23646 => [[['_route' => '_110'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23694 => [[['_route' => '_114'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23750 => [[['_route' => '_118'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23796 => [[['_route' => '_475'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23844 => [[['_route' => '_366'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23897 => [[['_route' => '_167'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23945 => [[['_route' => '_192'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23993 => [[['_route' => '_342'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24046 => [[['_route' => '_229'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24097 => [[['_route' => '_235'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24144 => [[['_route' => '_302'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24193 => [[['_route' => '_322'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24246 => [[['_route' => '_237'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24294 => [[['_route' => '_293'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24347 => [[['_route' => '_239'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24395 => [[['_route' => '_444'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24443 => [[['_route' => '_491'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24491 => [[['_route' => '_492'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24541 => [[['_route' => '_258'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24590 => [[['_route' => '_317'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24639 => [[['_route' => '_361'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24688 => [[['_route' => '_391'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24737 => [[['_route' => '_462'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24786 => [[['_route' => '_476'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24837 => [[['_route' => '_501'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24889 => [[['_route' => '_514'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24937 => [[['_route' => '_731'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24990 => [[['_route' => '_522'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25038 => [[['_route' => '_693'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25091 => [[['_route' => '_537'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25139 => [[['_route' => '_554'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25187 => [[['_route' => '_645'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25235 => [[['_route' => '_862'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25288 => [[['_route' => '_539'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25336 => [[['_route' => '_729'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25384 => [[['_route' => '_897'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25437 => [[['_route' => '_561'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25485 => [[['_route' => '_615'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25533 => [[['_route' => '_764'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25581 => [[['_route' => '_948'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25634 => [[['_route' => '_617'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25682 => [[['_route' => '_671'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25735 => [[['_route' => '_649'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25783 => [[['_route' => '_651'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25831 => [[['_route' => '_684'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25884 => [[['_route' => '_669'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25932 => [[['_route' => '_743'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25980 => [[['_route' => '_962'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26033 => [[['_route' => '_694'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26081 => [[['_route' => '_985'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26134 => [[['_route' => '_707'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26182 => [[['_route' => '_718'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26235 => [[['_route' => '_720'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26283 => [[['_route' => '_745'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26333 => [[['_route' => '_874'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26391 => [[['_route' => '_502'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26439 => [[['_route' => '_667'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26487 => [[['_route' => '_911'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26535 => [[['_route' => '_942'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26585 => [[['_route' => '_504'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26637 => [[['_route' => '_524'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26685 => [[['_route' => '_732'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26738 => [[['_route' => '_596'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26786 => [[['_route' => '_601'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26839 => [[['_route' => '_620'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26887 => [[['_route' => '_631'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26935 => [[['_route' => '_771'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26983 => [[['_route' => '_937'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27031 => [[['_route' => '_999'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27084 => [[['_route' => '_657'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27132 => [[['_route' => '_701'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27185 => [[['_route' => '_662'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27233 => [[['_route' => '_797'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27281 => [[['_route' => '_924'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27334 => [[['_route' => '_702'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27382 => [[['_route' => '_750'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27435 => [[['_route' => '_749'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27483 => [[['_route' => '_837'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27533 => [[['_route' => '_758'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27585 => [[['_route' => '_810'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27633 => [[['_route' => '_902'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27683 => [[['_route' => '_845'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27741 => [[['_route' => '_503'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27792 => [[['_route' => '_756'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27839 => [[['_route' => '_799'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27888 => [[['_route' => '_769'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27936 => [[['_route' => '_981'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27989 => [[['_route' => '_507'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28037 => [[['_route' => '_672'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28085 => [[['_route' => '_790'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28138 => [[['_route' => '_515'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28186 => [[['_route' => '_523'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28234 => [[['_route' => '_957'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28282 => [[['_route' => '_995'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28335 => [[['_route' => '_532'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28383 => [[['_route' => '_642'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28433 => [[['_route' => '_579'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28485 => [[['_route' => '_625'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28533 => [[['_route' => '_916'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28586 => [[['_route' => '_633'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28634 => [[['_route' => '_656'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28687 => [[['_route' => '_658'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28735 => [[['_route' => '_943'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28788 => [[['_route' => '_664'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28836 => [[['_route' => '_852'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28884 => [[['_route' => '_870'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28937 => [[['_route' => '_683'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28985 => [[['_route' => '_915'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29038 => [[['_route' => '_719'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29086 => [[['_route' => '_859'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29134 => [[['_route' => '_912'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29182 => [[['_route' => '_978'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29235 => [[['_route' => '_738'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29283 => [[['_route' => '_883'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29333 => [[['_route' => '_741'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29382 => [[['_route' => '_760'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29431 => [[['_route' => '_895'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29489 => [[['_route' => '_505'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29537 => [[['_route' => '_935'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29590 => [[['_route' => '_509'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29638 => [[['_route' => '_820'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29686 => [[['_route' => '_910'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29739 => [[['_route' => '_518'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29787 => [[['_route' => '_618'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29840 => [[['_route' => '_546'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29888 => [[['_route' => '_740'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29936 => [[['_route' => '_867'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29989 => [[['_route' => '_572'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30037 => [[['_route' => '_952'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30090 => [[['_route' => '_573'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30138 => [[['_route' => '_692'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30186 => [[['_route' => '_700'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30234 => [[['_route' => '_772'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30284 => [[['_route' => '_653'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30336 => [[['_route' => '_695'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30384 => [[['_route' => '_748'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30437 => [[['_route' => '_710'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30485 => [[['_route' => '_716'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30533 => [[['_route' => '_969'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30586 => [[['_route' => '_734'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30634 => [[['_route' => '_742'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30682 => [[['_route' => '_844'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30735 => [[['_route' => '_763'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30783 => [[['_route' => '_965'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30836 => [[['_route' => '_778'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30884 => [[['_route' => '_813'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30932 => [[['_route' => '_831'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30982 => [[['_route' => '_955'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31031 => [[['_route' => '_997'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31089 => [[['_route' => '_506'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31137 => [[['_route' => '_575'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31190 => [[['_route' => '_516'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31238 => [[['_route' => '_553'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31291 => [[['_route' => '_528'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31339 => [[['_route' => '_847'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31387 => [[['_route' => '_904'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31440 => [[['_route' => '_574'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31488 => [[['_route' => '_818'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31538 => [[['_route' => '_577'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31590 => [[['_route' => '_584'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31638 => [[['_route' => '_905'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31691 => [[['_route' => '_612'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31739 => [[['_route' => '_688'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31787 => [[['_route' => '_854'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31840 => [[['_route' => '_613'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31888 => [[['_route' => '_767'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31941 => [[['_route' => '_666'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31989 => [[['_route' => '_759'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32037 => [[['_route' => '_827'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32085 => [[['_route' => '_840'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32138 => [[['_route' => '_680'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32186 => [[['_route' => '_784'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32234 => [[['_route' => '_842'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32282 => [[['_route' => '_860'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32332 => [[['_route' => '_704'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32381 => [[['_route' => '_727'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32430 => [[['_route' => '_777'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32482 => [[['_route' => '_838'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32530 => [[['_route' => '_861'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32583 => [[['_route' => '_849'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32631 => [[['_route' => '_982'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32679 => [[['_route' => '_986'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32741 => [[['_route' => '_508'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32788 => [[['_route' => '_517'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32837 => [[['_route' => '_622'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32890 => [[['_route' => '_513'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32938 => [[['_route' => '_655'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32986 => [[['_route' => '_843'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33034 => [[['_route' => '_939'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33084 => [[['_route' => '_529'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33136 => [[['_route' => '_535'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33184 => [[['_route' => '_685'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33240 => [[['_route' => '_559'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33287 => [[['_route' => '_661'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33336 => [[['_route' => '_768'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33389 => [[['_route' => '_589'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33437 => [[['_route' => '_647'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33485 => [[['_route' => '_652'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33533 => [[['_route' => '_834'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33586 => [[['_route' => '_591'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33634 => [[['_route' => '_599'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33687 => [[['_route' => '_787'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33734 => [[['_route' => '_848'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33787 => [[['_route' => '_796'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33835 => [[['_route' => '_877'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33885 => [[['_route' => '_809'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33934 => [[['_route' => '_817'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33986 => [[['_route' => '_819'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34034 => [[['_route' => '_865'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34084 => [[['_route' => '_919'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34133 => [[['_route' => '_949'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34191 => [[['_route' => '_510'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34239 => [[['_route' => '_590'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34287 => [[['_route' => '_597'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34335 => [[['_route' => '_682'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34383 => [[['_route' => '_723'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34436 => [[['_route' => '_521'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34484 => [[['_route' => '_594'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34532 => [[['_route' => '_689'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34580 => [[['_route' => '_713'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34628 => [[['_route' => '_889'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34681 => [[['_route' => '_531'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34729 => [[['_route' => '_639'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34780 => [[['_route' => '_646'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34827 => [[['_route' => '_659'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34876 => [[['_route' => '_959'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34929 => [[['_route' => '_550'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34977 => [[['_route' => '_833'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35025 => [[['_route' => '_899'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35081 => [[['_route' => '_580'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35128 => [[['_route' => '_762'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35177 => [[['_route' => '_896'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35230 => [[['_route' => '_595'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35278 => [[['_route' => '_933'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35328 => [[['_route' => '_610'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35380 => [[['_route' => '_629'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35428 => [[['_route' => '_744'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35481 => [[['_route' => '_674'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35529 => [[['_route' => '_726'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35577 => [[['_route' => '_929'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35627 => [[['_route' => '_696'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35679 => [[['_route' => '_841'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35727 => [[['_route' => '_890'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35777 => [[['_route' => '_885'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35826 => [[['_route' => '_888'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35875 => [[['_route' => '_996'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35933 => [[['_route' => '_511'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35981 => [[['_route' => '_576'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36029 => [[['_route' => '_623'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36082 => [[['_route' => '_560'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36129 => [[['_route' => '_585'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36182 => [[['_route' => '_570'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36230 => [[['_route' => '_578'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36281 => [[['_route' => '_780'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36328 => [[['_route' => '_808'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36382 => [[['_route' => '_593'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36430 => [[['_route' => '_900'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36483 => [[['_route' => '_632'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36531 => [[['_route' => '_654'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36579 => [[['_route' => '_721'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36627 => [[['_route' => '_836'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36680 => [[['_route' => '_637'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36728 => [[['_route' => '_737'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36784 => [[['_route' => '_699'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36831 => [[['_route' => '_822'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36880 => [[['_route' => '_853'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36933 => [[['_route' => '_708'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36981 => [[['_route' => '_871'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37034 => [[['_route' => '_752'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37082 => [[['_route' => '_989'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37132 => [[['_route' => '_855'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37184 => [[['_route' => '_858'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37232 => [[['_route' => '_898'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37282 => [[['_route' => '_903'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37331 => [[['_route' => '_909'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37380 => [[['_route' => '_950'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37441 => [[['_route' => '_512'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37488 => [[['_route' => '_691'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37537 => [[['_route' => '_686'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37587 => [[['_route' => '_527'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37639 => [[['_route' => '_541'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37687 => [[['_route' => '_956'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37740 => [[['_route' => '_555'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37788 => [[['_route' => '_681'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37841 => [[['_route' => '_556'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37889 => [[['_route' => '_802'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37939 => [[['_route' => '_558'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37991 => [[['_route' => '_564'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38039 => [[['_route' => '_670'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38087 => [[['_route' => '_884'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38140 => [[['_route' => '_627'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38187 => [[['_route' => '_746'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38240 => [[['_route' => '_668'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38291 => [[['_route' => '_712'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38338 => [[['_route' => '_863'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38387 => [[['_route' => '_801'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38440 => [[['_route' => '_709'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38488 => [[['_route' => '_850'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38536 => [[['_route' => '_918'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38586 => [[['_route' => '_803'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38638 => [[['_route' => '_864'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38686 => [[['_route' => '_880'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38734 => [[['_route' => '_927'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38787 => [[['_route' => '_930'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38835 => [[['_route' => '_951'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38883 => [[['_route' => '_963'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38942 => [[['_route' => '_519'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38990 => [[['_route' => '_823'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39038 => [[['_route' => '_954'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39091 => [[['_route' => '_525'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39139 => [[['_route' => '_991'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39189 => [[['_route' => '_536'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39241 => [[['_route' => '_545'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39289 => [[['_route' => '_944'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39342 => [[['_route' => '_557'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39390 => [[['_route' => '_783'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39438 => [[['_route' => '_807'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39491 => [[['_route' => '_586'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39539 => [[['_route' => '_711'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39592 => [[['_route' => '_598'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39640 => [[['_route' => '_635'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39688 => [[['_route' => '_983'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39741 => [[['_route' => '_634'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39789 => [[['_route' => '_641'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39840 => [[['_route' => '_779'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39887 => [[['_route' => '_876'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39936 => [[['_route' => '_811'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39984 => [[['_route' => '_824'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40037 => [[['_route' => '_660'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40085 => [[['_route' => '_789'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40138 => [[['_route' => '_733'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40186 => [[['_route' => '_735'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40234 => [[['_route' => '_882'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40282 => [[['_route' => '_967'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40332 => [[['_route' => '_736'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40381 => [[['_route' => '_753'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40430 => [[['_route' => '_786'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40479 => [[['_route' => '_907'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40528 => [[['_route' => '_920'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40577 => [[['_route' => '_971'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40635 => [[['_route' => '_520'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40683 => [[['_route' => '_891'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40739 => [[['_route' => '_534'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40785 => [[['_route' => '_602'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40834 => [[['_route' => '_605'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40882 => [[['_route' => '_979'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40932 => [[['_route' => '_547'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40987 => [[['_route' => '_549'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41034 => [[['_route' => '_755'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41083 => [[['_route' => '_922'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41131 => [[['_route' => '_977'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41184 => [[['_route' => '_565'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41232 => [[['_route' => '_926'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41282 => [[['_route' => '_571'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41331 => [[['_route' => '_581'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41380 => [[['_route' => '_619'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41429 => [[['_route' => '_636'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41481 => [[['_route' => '_679'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41529 => [[['_route' => '_866'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41577 => [[['_route' => '_973'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41630 => [[['_route' => '_690'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41678 => [[['_route' => '_775'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41731 => [[['_route' => '_722'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41779 => [[['_route' => '_906'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41827 => [[['_route' => '_946'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41877 => [[['_route' => '_788'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41929 => [[['_route' => '_828'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41977 => [[['_route' => '_892'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42025 => [[['_route' => '_972'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42075 => [[['_route' => '_829'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42127 => [[['_route' => '_923'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42175 => [[['_route' => '_947'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42234 => [[['_route' => '_526'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42282 => [[['_route' => '_614'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42330 => [[['_route' => '_621'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42383 => [[['_route' => '_543'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42431 => [[['_route' => '_812'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42487 => [[['_route' => '_548'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42534 => [[['_route' => '_747'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42583 => [[['_route' => '_715'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42631 => [[['_route' => '_940'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42684 => [[['_route' => '_563'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42732 => [[['_route' => '_611'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42780 => [[['_route' => '_830'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42833 => [[['_route' => '_569'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42881 => [[['_route' => '_908'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42929 => [[['_route' => '_913'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42982 => [[['_route' => '_644'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43030 => [[['_route' => '_776'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43078 => [[['_route' => '_856'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43131 => [[['_route' => '_650'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43179 => [[['_route' => '_761'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43232 => [[['_route' => '_663'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43280 => [[['_route' => '_754'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43333 => [[['_route' => '_665'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43381 => [[['_route' => '_805'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43429 => [[['_route' => '_846'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43477 => [[['_route' => '_857'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43530 => [[['_route' => '_675'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43578 => [[['_route' => '_839'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43626 => [[['_route' => '_968'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43676 => [[['_route' => '_697'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43728 => [[['_route' => '_725'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43776 => [[['_route' => '_794'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43829 => [[['_route' => '_773'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43877 => [[['_route' => '_992'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43930 => [[['_route' => '_901'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43978 => [[['_route' => '_970'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44028 => [[['_route' => '_964'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44086 => [[['_route' => '_530'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44134 => [[['_route' => '_703'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44187 => [[['_route' => '_533'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44235 => [[['_route' => '_739'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44283 => [[['_route' => '_791'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44331 => [[['_route' => '_987'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44384 => [[['_route' => '_566'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44432 => [[['_route' => '_592'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44488 => [[['_route' => '_568'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44534 => [[['_route' => '_868'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44583 => [[['_route' => '_878'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44636 => [[['_route' => '_588'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44684 => [[['_route' => '_793'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44732 => [[['_route' => '_917'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44785 => [[['_route' => '_600'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44833 => [[['_route' => '_728'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44886 => [[['_route' => '_603'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44934 => [[['_route' => '_765'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44987 => [[['_route' => '_607'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45035 => [[['_route' => '_676'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45083 => [[['_route' => '_804'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45136 => [[['_route' => '_609'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45184 => [[['_route' => '_961'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45232 => [[['_route' => '_980'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45282 => [[['_route' => '_714'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45334 => [[['_route' => '_730'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45382 => [[['_route' => '_806'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45430 => [[['_route' => '_825'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45478 => [[['_route' => '_879'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45526 => [[['_route' => '_893'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45576 => [[['_route' => '_928'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45628 => [[['_route' => '_932'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45676 => [[['_route' => '_958'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45726 => [[['_route' => '_984'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45784 => [[['_route' => '_538'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45832 => [[['_route' => '_993'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45882 => [[['_route' => '_542'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45934 => [[['_route' => '_551'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45982 => [[['_route' => '_687'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46030 => [[['_route' => '_724'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46078 => [[['_route' => '_925'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46131 => [[['_route' => '_587'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46179 => [[['_route' => '_914'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46229 => [[['_route' => '_616'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46284 => [[['_route' => '_677'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46331 => [[['_route' => '_815'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46380 => [[['_route' => '_781'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46430 => [[['_route' => '_717'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46482 => [[['_route' => '_782'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46530 => [[['_route' => '_832'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46583 => [[['_route' => '_795'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46631 => [[['_route' => '_887'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46681 => [[['_route' => '_800'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46730 => [[['_route' => '_826'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46779 => [[['_route' => '_881'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46828 => [[['_route' => '_886'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46877 => [[['_route' => '_938'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46935 => [[['_route' => '_540'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46983 => [[['_route' => '_643'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47033 => [[['_route' => '_544'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47082 => [[['_route' => '_552'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47134 => [[['_route' => '_567'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47182 => [[['_route' => '_608'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47230 => [[['_route' => '_698'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47278 => [[['_route' => '_988'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47331 => [[['_route' => '_583'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47379 => [[['_route' => '_998'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47432 => [[['_route' => '_604'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47480 => [[['_route' => '_630'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47528 => [[['_route' => '_706'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47576 => [[['_route' => '_976'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47629 => [[['_route' => '_673'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47677 => [[['_route' => '_678'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47725 => [[['_route' => '_931'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47775 => [[['_route' => '_751'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47824 => [[['_route' => '_766'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47876 => [[['_route' => '_792'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47924 => [[['_route' => '_814'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47974 => [[['_route' => '_798'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48026 => [[['_route' => '_851'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48074 => [[['_route' => '_941'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48122 => [[['_route' => '_953'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48170 => [[['_route' => '_975'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48220 => [[['_route' => '_873'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48269 => [[['_route' => '_936'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48318 => [[['_route' => '_994'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48376 => [[['_route' => '_562'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48424 => [[['_route' => '_770'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48475 => [[['_route' => '_774'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48522 => [[['_route' => '_966'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48573 => [[['_route' => '_582'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48625 => [[['_route' => '_606'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48673 => [[['_route' => '_648'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48723 => [[['_route' => '_624'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48775 => [[['_route' => '_626'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48823 => [[['_route' => '_821'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48873 => [[['_route' => '_628'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48922 => [[['_route' => '_638'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48974 => [[['_route' => '_640'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49022 => [[['_route' => '_990'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49072 => [[['_route' => '_705'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49121 => [[['_route' => '_757'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49176 => [[['_route' => '_785'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49223 => [[['_route' => '_875'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49270 => [[['_route' => '_894'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49319 => [[['_route' => '_945'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49375 => [[['_route' => '_816'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49422 => [[['_route' => '_872'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49471 => [[['_route' => '_921'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49519 => [[['_route' => '_960'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49567 => [[['_route' => '_974'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49620 => [[['_route' => '_835'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49668 => [[['_route' => '_934'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49718 => [
-                [['_route' => '_869'], ['a', 'b', 'c'], null, null, false, false, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher11.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher11.php
deleted file mode 100644
index c3929d6e63056997e29d40de0789e1b8b991353f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher11.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/(en|fr)/(?'
-                        .'|admin/post(?'
-                            .'|(*:32)'
-                            .'|/(?'
-                                .'|new(*:46)'
-                                .'|(\\d+)(*:58)'
-                                .'|(\\d+)/edit(*:75)'
-                                .'|(\\d+)/delete(*:94)'
-                            .')'
-                        .')'
-                        .'|blog(?'
-                            .'|(*:110)'
-                            .'|/(?'
-                                .'|rss\\.xml(*:130)'
-                                .'|p(?'
-                                    .'|age/([^/]++)(*:154)'
-                                    .'|osts/([^/]++)(*:175)'
-                                .')'
-                                .'|comments/(\\d+)/new(*:202)'
-                                .'|search(*:216)'
-                            .')'
-                        .')'
-                        .'|log(?'
-                            .'|in(*:234)'
-                            .'|out(*:245)'
-                        .')'
-                    .')'
-                    .'|/(en|fr)?(*:264)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            32 => [[['_route' => 'a', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-            46 => [[['_route' => 'b', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            58 => [[['_route' => 'c', '_locale' => 'en'], ['_locale', 'id'], null, null, false, true, null]],
-            75 => [[['_route' => 'd', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-            94 => [[['_route' => 'e', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-            110 => [[['_route' => 'f', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-            130 => [[['_route' => 'g', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            154 => [[['_route' => 'h', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-            175 => [[['_route' => 'i', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-            202 => [[['_route' => 'j', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-            216 => [[['_route' => 'k', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            234 => [[['_route' => 'l', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            245 => [[['_route' => 'm', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            264 => [
-                [['_route' => 'n', '_locale' => 'en'], ['_locale'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher12.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher12.php
deleted file mode 100644
index 77e52992deca5b0b85e346b361a1f24552e1c731..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher12.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/abc([^/]++)/(?'
-                        .'|1(?'
-                            .'|(*:27)'
-                            .'|0(?'
-                                .'|(*:38)'
-                                .'|0(*:46)'
-                            .')'
-                        .')'
-                        .'|2(?'
-                            .'|(*:59)'
-                            .'|0(?'
-                                .'|(*:70)'
-                                .'|0(*:78)'
-                            .')'
-                        .')'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            27 => [[['_route' => 'r1'], ['foo'], null, null, false, false, null]],
-            38 => [[['_route' => 'r10'], ['foo'], null, null, false, false, null]],
-            46 => [[['_route' => 'r100'], ['foo'], null, null, false, false, null]],
-            59 => [[['_route' => 'r2'], ['foo'], null, null, false, false, null]],
-            70 => [[['_route' => 'r20'], ['foo'], null, null, false, false, null]],
-            78 => [
-                [['_route' => 'r200'], ['foo'], null, null, false, false, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher13.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher13.php
deleted file mode 100644
index 8e54cc87580e4164bb0f0bb77251dfb1b320c8ef..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher13.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->regexpList = [
-            0 => '{^(?'
-                .'|(?i:([^\\.]++)\\.exampple\\.com)\\.(?'
-                    .'|/abc([^/]++)(?'
-                        .'|(*:56)'
-                    .')'
-                .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            56 => [
-                [['_route' => 'r1'], ['foo', 'foo'], null, null, false, true, null],
-                [['_route' => 'r2'], ['foo', 'foo'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher2.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher2.php
deleted file mode 100644
index 155882448d1ef16465d0f87fd5aa60ecf796a84e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher2.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->staticRoutes = [
-            '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-            '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-            '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-            '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-            '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-            '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-            '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-            '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-            '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-            '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-            '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-            '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-            '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-            '/secure' => [[['_route' => 'secure'], null, null, ['https' => 0], false, false, null]],
-            '/nonsecure' => [[['_route' => 'nonsecure'], null, null, ['http' => 0], false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                .'|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/foo/(baz|symfony)(*:47)'
-                    .'|/bar(?'
-                        .'|/([^/]++)(*:70)'
-                        .'|head/([^/]++)(*:90)'
-                    .')'
-                    .'|/test/([^/]++)(?'
-                        .'|(*:115)'
-                    .')'
-                    .'|/([\']+)(*:131)'
-                    .'|/a/(?'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:160)'
-                            .'|(*:168)'
-                        .')'
-                        .'|(.*)(*:181)'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:204)'
-                            .'|(*:212)'
-                        .')'
-                    .')'
-                    .'|/multi/hello(?:/([^/]++))?(*:248)'
-                    .'|/([^/]++)/b/([^/]++)(?'
-                        .'|(*:279)'
-                        .'|(*:287)'
-                    .')'
-                    .'|/aba/([^/]++)(*:309)'
-                .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                    .'|/route1(?'
-                        .'|3/([^/]++)(*:371)'
-                        .'|4/([^/]++)(*:389)'
-                    .')'
-                .')|(?i:c\\.example\\.com)\\.(?'
-                    .'|/route15/([^/]++)(*:441)'
-                .')|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/route16/([^/]++)(*:489)'
-                    .'|/a/(?'
-                        .'|a\\.\\.\\.(*:510)'
-                        .'|b/(?'
-                            .'|([^/]++)(*:531)'
-                            .'|c/([^/]++)(*:549)'
-                        .')'
-                    .')'
-                .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-            70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-            90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-            115 => [
-                [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-                [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-                [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-            ],
-            131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-            160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-            168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-            181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-            204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-            212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-            248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-            279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-            287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-            309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-            371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-            389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-            441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-            489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-            510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-            531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-            549 => [
-                [['_route' => 'c'], ['var'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher3.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher3.php
deleted file mode 100644
index efafbb24695e6908d038bc2ccf838820d2f0f1fe..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher3.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/rootprefix/test' => [[['_route' => 'static'], null, null, null, false, false, null]],
-            '/with-condition' => [[['_route' => 'with-condition'], null, null, null, false, false, -1]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/rootprefix/([^/]++)(*:27)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            27 => [
-                [['_route' => 'dynamic'], ['var'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-        $this->checkCondition = static function ($condition, $context, $request) {
-            switch ($condition) {
-                case -1: return ($context->getMethod() == "GET");
-            }
-        };
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher4.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher4.php
deleted file mode 100644
index 605901cda28c8e539186b9b8177f8071fdffb6ae..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher4.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/just_head' => [[['_route' => 'just_head'], null, ['HEAD' => 0], null, false, false, null]],
-            '/head_and_get' => [[['_route' => 'head_and_get'], null, ['HEAD' => 0, 'GET' => 1], null, false, false, null]],
-            '/get_and_head' => [[['_route' => 'get_and_head'], null, ['GET' => 0, 'HEAD' => 1], null, false, false, null]],
-            '/post_and_head' => [[['_route' => 'post_and_head'], null, ['POST' => 0, 'HEAD' => 1], null, false, false, null]],
-            '/put_and_post' => [
-                [['_route' => 'put_and_post'], null, ['PUT' => 0, 'POST' => 1], null, false, false, null],
-                [['_route' => 'put_and_get_and_head'], null, ['PUT' => 0, 'GET' => 1, 'HEAD' => 2], null, false, false, null],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher5.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher5.php
deleted file mode 100644
index 97fcab92dca413671701ab264a5ea23bcf98bf04..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher5.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/a/11' => [[['_route' => 'a_first'], null, null, null, false, false, null]],
-            '/a/22' => [[['_route' => 'a_second'], null, null, null, false, false, null]],
-            '/a/333' => [[['_route' => 'a_third'], null, null, null, false, false, null]],
-            '/a/44' => [[['_route' => 'a_fourth'], null, null, null, true, false, null]],
-            '/a/55' => [[['_route' => 'a_fifth'], null, null, null, true, false, null]],
-            '/a/66' => [[['_route' => 'a_sixth'], null, null, null, true, false, null]],
-            '/nested/group/a' => [[['_route' => 'nested_a'], null, null, null, true, false, null]],
-            '/nested/group/b' => [[['_route' => 'nested_b'], null, null, null, true, false, null]],
-            '/nested/group/c' => [[['_route' => 'nested_c'], null, null, null, true, false, null]],
-            '/slashed/group' => [[['_route' => 'slashed_a'], null, null, null, true, false, null]],
-            '/slashed/group/b' => [[['_route' => 'slashed_b'], null, null, null, true, false, null]],
-            '/slashed/group/c' => [[['_route' => 'slashed_c'], null, null, null, true, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/([^/]++)(*:16)'
-                    .'|/nested/([^/]++)(*:39)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            16 => [[['_route' => 'a_wildcard'], ['param'], null, null, false, true, null]],
-            39 => [
-                [['_route' => 'nested_wildcard'], ['param'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher6.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher6.php
deleted file mode 100644
index 850b3bb53282bb5d23d4697ba7c2c16c4276a7b7..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher6.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-            '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-            '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-            '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-            '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-            '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-            '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-            '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:46)'
-                        .'|get\\-method/([^/]++)(*:73)'
-                        .'|head\\-method/([^/]++)(*:101)'
-                        .'|post\\-method/([^/]++)(*:130)'
-                    .')'
-                    .'|/not\\-trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:183)'
-                        .'|get\\-method/([^/]++)(*:211)'
-                        .'|head\\-method/([^/]++)(*:240)'
-                        .'|post\\-method/([^/]++)(*:269)'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-            73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-            101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-            130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-            183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-            211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-            240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-            269 => [
-                [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher7.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher7.php
deleted file mode 100644
index 3f07f80017c2ae3d18f706cd0824a284c138c72f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher7.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-            '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-            '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-            '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-            '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-            '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-            '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-            '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:46)'
-                        .'|get\\-method/([^/]++)(*:73)'
-                        .'|head\\-method/([^/]++)(*:101)'
-                        .'|post\\-method/([^/]++)(*:130)'
-                    .')'
-                    .'|/not\\-trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:183)'
-                        .'|get\\-method/([^/]++)(*:211)'
-                        .'|head\\-method/([^/]++)(*:240)'
-                        .'|post\\-method/([^/]++)(*:269)'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-            73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-            101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-            130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-            183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-            211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-            240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-            269 => [
-                [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher8.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher8.php
deleted file mode 100644
index 3ae962b8edaa4894f6a74f114cbc5aedfa89a2ef..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher8.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/(a)(*:11)'
-                .')/?$}sD',
-            11 => '{^(?'
-                    .'|/(.)(*:22)'
-                .')/?$}sDu',
-            22 => '{^(?'
-                    .'|/(.)(*:33)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            11 => [[['_route' => 'a'], ['a'], null, null, false, true, null]],
-            22 => [[['_route' => 'b'], ['a'], null, null, false, true, null]],
-            33 => [
-                [['_route' => 'c'], ['a'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher9.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher9.php
deleted file mode 100644
index e233cd1ca95329671b03bc6b1e2994a99bdf8e34..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher9.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->staticRoutes = [
-            '/' => [
-                [['_route' => 'a'], '#^(?P<d>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-                [['_route' => 'c'], '#^(?P<e>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-                [['_route' => 'b'], 'd.c.b.a', null, null, false, false, null],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/empty.yml b/vendor/symfony/routing/Tests/Fixtures/empty.yml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/file_resource.yml b/vendor/symfony/routing/Tests/Fixtures/file_resource.yml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/foo.xml b/vendor/symfony/routing/Tests/Fixtures/foo.xml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/foo1.xml b/vendor/symfony/routing/Tests/Fixtures/foo1.xml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/bar.xml b/vendor/symfony/routing/Tests/Fixtures/glob/bar.xml
deleted file mode 100644
index 8a0410c5e65dc08830505d1d4939991e35633fdc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/bar.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="bar_route" path="/bar" controller="AppBundle:Bar:view" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/bar.yml b/vendor/symfony/routing/Tests/Fixtures/glob/bar.yml
deleted file mode 100644
index ba3bc2294b340896467ee59375b98deddddc7fb1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/bar.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-bar_route:
-    path: /bar
-    defaults:
-        _controller: AppBundle:Bar:view
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/baz.xml b/vendor/symfony/routing/Tests/Fixtures/glob/baz.xml
deleted file mode 100644
index 4b48a0f3d161eda5e6708c5bb86f9194abad533f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/baz.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="baz_route" path="/baz" controller="AppBundle:Baz:view" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/baz.yml b/vendor/symfony/routing/Tests/Fixtures/glob/baz.yml
deleted file mode 100644
index f7d8c67f266a87af4d872f0752c1ac58d4cc185a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/baz.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-baz_route:
-    path: /baz
-    defaults:
-        _controller: AppBundle:Baz:view
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.xml b/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.xml
deleted file mode 100644
index a08e96d65a0a6f1025170a879b849c3b80fed10d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="ba?.xml" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.yml b/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.yml
deleted file mode 100644
index d1ae5854a51c158bd00fd8a0fd4eb14bdae2278d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-_static:
-    resource: ba?.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.xml b/vendor/symfony/routing/Tests/Fixtures/glob/import_single.xml
deleted file mode 100644
index 3b26eef1140394bcf61f3051198954e69b9b7b1b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="b?r.xml" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.yml b/vendor/symfony/routing/Tests/Fixtures/glob/import_single.yml
deleted file mode 100644
index f56ddbd0be9f790eecf4886342e9305ee959e67a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-_static:
-    resource: b?r.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl.php b/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl.php
deleted file mode 100644
index 897fa11f282af8b3e12c36a66377e4bd2cf11b98..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    return $routes->import('php_dsl_ba?.php');
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_bar.php b/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_bar.php
deleted file mode 100644
index e6ccf24f4e5299643b145a97d771d678109ac7d2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_bar.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $collection = $routes->collection();
-
-    $collection->add('bar_route', '/bar')
-        ->defaults(['_controller' => 'AppBundle:Bar:view']);
-
-    return $collection;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_baz.php b/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_baz.php
deleted file mode 100644
index cce65d7054f9604da7f611d4aea214e8251a324c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_baz.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $collection = $routes->collection();
-
-    $collection->add('baz_route', '/baz')
-        ->defaults(['_controller' => 'AppBundle:Baz:view']);
-
-    return $collection;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.xml b/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.xml
deleted file mode 100644
index 8699f399c448c2fd4e334fc93798d44071c2052a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="../controller/routing.xml" />
-    <import resource="../controller/routing.xml" prefix="/api" name-prefix="api_" />
-
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.yml b/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.yml
deleted file mode 100644
index 90dce0ea1bfc435a304f2ad700ad6f4b95566088..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-app:
-    resource: ../controller/routing.yml
-
-api:
-    resource: ../controller/routing.yml
-    name_prefix: api_
-    prefix: /api
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.xml b/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.xml
deleted file mode 100644
index 8e768136a3212b0404b346f6c1d604fc7ab5db23..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="../controller/routing.xml" prefix="/slash" name-prefix="a_" />
-    <import resource="../controller/routing.xml" prefix="/no-slash" name-prefix="b_" trailing-slash-on-root="false" />
-
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.yml b/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.yml
deleted file mode 100644
index f840ecf8b427b0367f815b87ea91df4c8a97939f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-app:
-    resource: ../controller/routing.yml
-    name_prefix: a_
-    prefix: /slash
-
-api:
-    resource: ../controller/routing.yml
-    name_prefix: b_
-    prefix: /no-slash
-    trailing_slash_on_root: false
diff --git a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.php b/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.php
deleted file mode 100644
index 3606f3e6626986050d749553ca648dc8a85f2fd8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->add('one', '/one')
-        ->add('two', '/two')->defaults(['specific' => 'imported'])
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.xml b/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.xml
deleted file mode 100644
index 64fd35b799ee2ed402a45ca669339f3e85a73581..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="one" path="/one" />
-    <route id="two" path="/two">
-        <default key="specific">imported</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.yml b/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.yml
deleted file mode 100644
index 9af819067f6f5102bbd594f6b56059551b65c7f5..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-one:
-  path: /one
-
-two:
-  path: /two
-  defaults:
-    specific: imported
diff --git a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.php b/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.php
deleted file mode 100644
index 6ac9d69e623ba3d511cd17bdcef1a8897c7a7739..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes->import('imported-with-defaults.php')
-        ->prefix('/defaults')
-        ->locale('g_locale')
-        ->format('g_format')
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.xml b/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.xml
deleted file mode 100644
index bdd25318d51017b2c3859bfeb55836e59f44901d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="imported-with-defaults.xml" prefix="/defaults"
-            locale="g_locale"
-            format="g_format" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.yml b/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.yml
deleted file mode 100644
index 2e7d59002145b4064b4b00dc03b199a82fdea796..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-defaults:
-  resource: imported-with-defaults.yml
-  prefix: /defaults
-  locale: g_locale
-  format: g_format
diff --git a/vendor/symfony/routing/Tests/Fixtures/incomplete.yml b/vendor/symfony/routing/Tests/Fixtures/incomplete.yml
deleted file mode 100644
index df64d324f9638456021aafc461680efa0cc45723..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/incomplete.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-blog_show:
-    defaults:  { _controller: MyBlogBundle:Blog:show }
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/list_defaults.xml
deleted file mode 100644
index 01be7c186dcbdbda9607adb3f25bb20f71b833b1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_defaults.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <list>
-                <bool>true</bool>
-                <int>1</int>
-                <float>3.5</float>
-                <string>foo</string>
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_in_list_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/list_in_list_defaults.xml
deleted file mode 100644
index 65baabe333f483b879a15fa3a69d156d816afeba..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_in_list_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <list>
-                <list>
-                    <bool>true</bool>
-                    <int>1</int>
-                    <float>3.5</float>
-                    <string>foo</string>
-                </list>
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_in_map_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/list_in_map_defaults.xml
deleted file mode 100644
index f0d972d1f2687160648760ee4fb66c3941feb75e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_in_map_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <map>
-                <list key="list">
-                    <bool>true</bool>
-                    <int>1</int>
-                    <float>3.5</float>
-                    <string>foo</string>
-                </list>
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_null_values.xml b/vendor/symfony/routing/Tests/Fixtures/list_null_values.xml
deleted file mode 100644
index 45bdd9da4a50927f82e2e20c32f0bfe8510ce08f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_null_values.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="list">
-            <list>
-                <bool xsi:nil="true" />
-                <int xsi:nil="true" />
-                <float xsi:nil="1" />
-                <string xsi:nil="true" />
-                <list xsi:nil="true" />
-                <map xsi:nil="true" />
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized.xml b/vendor/symfony/routing/Tests/Fixtures/localized.xml
deleted file mode 100644
index d3585c46db1247f9d4eef5668dcefd7bdc53761b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="localized">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <path locale="en">/path</path>
-        <path locale="fr">/route</path>
-    </route>
-
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.xml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.xml
deleted file mode 100644
index e618b9cea71dafa115f1ad7017778baa99325d94..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <route id="imported" path="/suffix">
-        <default key="_controller">MyBundle:Blog:show</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.yml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.yml
deleted file mode 100644
index b62b569351576673c307792842b792f48e66b2ae..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-imported:
-    controller: ImportedController::someAction
-    path: /imported
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.xml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.xml
deleted file mode 100644
index 3fe523218567f22ee22e2bcb82da7e6f9946133f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <route id="imported">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <path locale="en">/suffix</path>
-        <path locale="fr">/le-suffix</path>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.yml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.yml
deleted file mode 100644
index 65def8a9265084eb8793b118580307024f4091c1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-imported:
-    controller: ImportedController::someAction
-    path:
-        nl: /voorbeeld
-        en: /example
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.php b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.php
deleted file mode 100644
index a32189fb99282fa729cea00f8fc3d72f58de1aa4..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->add('utf8_one', '/one')
-        ->add('utf8_two', '/two')
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.xml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.xml
deleted file mode 100644
index 751d5c5441da8b14b67ea92cc333f7000c9c6140..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing">
-
-    <route id="utf8_one" path="/one" />
-    <route id="utf8_two" path="/two" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.yml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.yml
deleted file mode 100644
index f04e7ac731385b01526245e7fc7576aebafd995b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-utf8_one:
-    path: /one
-
-utf8_two:
-    path: /two
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-controller-default.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-controller-default.yml
deleted file mode 100644
index 1d13a06342a8ce827bb9a5d0be9a9a55750cf89f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-controller-default.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-i_need:
-    defaults:
-        _controller: DefaultController::defaultAction
-    resource: ./localized-route.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.xml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.xml
deleted file mode 100644
index 7acbe689527602b0beaaadca716d1b53442519dc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <import resource="./imported-with-locale-but-not-localized.xml">
-        <prefix locale="fr">/le-prefix</prefix>
-        <prefix locale="en">/the-prefix</prefix>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.yml
deleted file mode 100644
index bc33f3f8d528babd79938946e26e9a7c402e742e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-i_need:
-    resource: ./imported-with-locale-but-not-localized.yml
-    prefix:
-        nl: /nl
-        en: /en
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.xml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.xml
deleted file mode 100644
index c3af109806878450df99ac4b42f6ef233e7ad235..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <import resource="./imported-with-locale.xml">
-        <prefix locale="fr">/le-prefix</prefix>
-        <prefix locale="en">/the-prefix</prefix>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.yml
deleted file mode 100644
index 29d3571bbd55d0f9bf5a6bf0e2a26d318b5ad7b7..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-i_need:
-    resource: ./imported-with-locale.yml
-    prefix:
-        nl: /nl
-        en: /en
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.php b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.php
deleted file mode 100644
index 105528dda43df0866fc1bbb3ee1a73f7b623d2c5..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes->import('imported-with-utf8.php')->utf8();
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.xml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.xml
deleted file mode 100644
index 20f8e38ee1b43242dc69d75ac7eb8b7cb1341a95..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <import resource="imported-with-utf8.xml" utf8="true" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.yml
deleted file mode 100644
index 20ad443bb177099d8d554b81ddacb3d38d8c3f99..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-utf8_routes:
-    resource: imported-with-utf8.yml
-    utf8: true
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importing-localized-route.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importing-localized-route.yml
deleted file mode 100644
index ab54ee496ecf9f309a2521faaccc0ad84201ae2b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importing-localized-route.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-i_need:
-    resource: ./localized-route.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/localized-route.yml b/vendor/symfony/routing/Tests/Fixtures/localized/localized-route.yml
deleted file mode 100644
index 351a418075b0c86bc19e8c42d805197b5cdc96f7..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/localized-route.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-home:
-    path:
-        nl: /nl
-        en: /en
-
-not_localized:
-    controller: HomeController::otherAction
-    path: /here
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/missing-locale-in-importer.yml b/vendor/symfony/routing/Tests/Fixtures/localized/missing-locale-in-importer.yml
deleted file mode 100644
index b6d3f5ec019cf660d7685d6acec8de89c0405c2f..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/missing-locale-in-importer.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-importing_with_missing_prefix:
-    resource: ./localized-route.yml
-    prefix:
-    nl: /prefix
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/not-localized.yml b/vendor/symfony/routing/Tests/Fixtures/localized/not-localized.yml
deleted file mode 100644
index 4be493da029ab37206bf1bcab3f674d2043c8ef0..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/not-localized.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-not_localized:
-    controller: string
-    path: /here
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/officially_formatted_locales.yml b/vendor/symfony/routing/Tests/Fixtures/localized/officially_formatted_locales.yml
deleted file mode 100644
index a125a4efe81720deadbb92149e1ea52e3dacfa12..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/officially_formatted_locales.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-official:
-    controller: HomeController::someAction
-    path:
-        fr.UTF-8: /omelette-au-fromage
-        pt-PT: /eu-não-sou-espanhol
-        pt_BR: /churrasco
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/route-without-path-or-locales.yml b/vendor/symfony/routing/Tests/Fixtures/localized/route-without-path-or-locales.yml
deleted file mode 100644
index 4c7c599f3d649a8a3c3b225ccc4f3acb883de4f2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/route-without-path-or-locales.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-routename:
-    controller: Here::here
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.php b/vendor/symfony/routing/Tests/Fixtures/localized/utf8.php
deleted file mode 100644
index e7826d0a7896bf07b3ee3ba843f027c182aab92b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->add('some_route', '/')
-        ->add('some_utf8_route', '/utf8')->utf8()
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.xml b/vendor/symfony/routing/Tests/Fixtures/localized/utf8.xml
deleted file mode 100644
index 95aff20cfee1a996562536910df28a8b6a06bdd1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        http://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="app_utf8" path="/utf8">
-        <option key="utf8">true</option>
-    </route>
-    <route id="app_no_utf8" path="/no-utf8">
-        <option key="utf8">false</option>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.yml b/vendor/symfony/routing/Tests/Fixtures/localized/utf8.yml
deleted file mode 100644
index 3154c83fd0020d23cb0ef8d6aefb57ec3596fb03..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-some_route:
-    path: /
-
-some_utf8_route:
-    path: /utf8
-    utf8: true
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/map_defaults.xml
deleted file mode 100644
index 9f080443213765bec09f9343f3c6629ca8afb422..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_defaults.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <map>
-                <bool key="public">true</bool>
-                <int key="page">1</int>
-                <float key="price">3.5</float>
-                <string key="title">foo</string>
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_in_list_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/map_in_list_defaults.xml
deleted file mode 100644
index 1c8b87df3bf0b2fc2c24f51255464a3f1899ea4c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_in_list_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <list>
-                <map>
-                    <bool key="public">true</bool>
-                    <int key="page">1</int>
-                    <float key="price">3.5</float>
-                    <string key="title">foo</string>
-                </map>
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_in_map_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/map_in_map_defaults.xml
deleted file mode 100644
index a3af49283e28313438dc9af1a17e8e6b227406aa..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_in_map_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <map>
-                <map key="map">
-                    <bool key="public">true</bool>
-                    <int key="page">1</int>
-                    <float key="price">3.5</float>
-                    <string key="title">foo</string>
-                </map>
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_null_values.xml b/vendor/symfony/routing/Tests/Fixtures/map_null_values.xml
deleted file mode 100644
index a8153ad1fff7f09736c8c0d17fae9cb006b090b4..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_null_values.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="map">
-            <map>
-                <bool key="boolean" xsi:nil="true" />
-                <int key="integer" xsi:nil="true" />
-                <float key="float" xsi:nil="true" />
-                <string key="string" xsi:nil="1" />
-                <list key="list" xsi:nil="true" />
-                <map key="map" xsi:nil="true" />
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/missing_id.xml b/vendor/symfony/routing/Tests/Fixtures/missing_id.xml
deleted file mode 100644
index fa42e98b7f6303a6ca7abc66f1b12b2829e2d2b6..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/missing_id.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route path="/test"></route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/missing_path.xml b/vendor/symfony/routing/Tests/Fixtures/missing_path.xml
deleted file mode 100644
index d048adb17c35bdb3705bd9ee0fcadb9a557bd0c2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/missing_path.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="myroute"></route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/namespaceprefix.xml b/vendor/symfony/routing/Tests/Fixtures/namespaceprefix.xml
deleted file mode 100644
index f303464d6d0be43d89fc1ca67f25c68a2cf6098c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/namespaceprefix.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<r:routes xmlns:r="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <r:route id="blog_show" path="/blog/{slug}" host="{_locale}.example.com">
-        <r:default key="_controller">MyBundle:Blog:show</r:default>
-        <requirement xmlns="http://symfony.com/schema/routing" key="slug">\w+</requirement>
-        <r2:requirement xmlns:r2="http://symfony.com/schema/routing" key="_locale">en|fr|de</r2:requirement>
-        <r:option key="compiler_class">RouteCompiler</r:option>
-        <r:default key="page">
-            <r3:int xmlns:r3="http://symfony.com/schema/routing">1</r3:int>
-        </r:default>
-    </r:route>
-</r:routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonesense_resource_plus_path.yml b/vendor/symfony/routing/Tests/Fixtures/nonesense_resource_plus_path.yml
deleted file mode 100644
index a3e9473727000a25cdab880f40e6c294c1fddf29..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonesense_resource_plus_path.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-blog_show:
-    resource: validpattern.yml
-    path:     /test
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonesense_type_without_resource.yml b/vendor/symfony/routing/Tests/Fixtures/nonesense_type_without_resource.yml
deleted file mode 100644
index 547cda3b618f4ff45afcdee855b5aa7652be0116..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonesense_type_without_resource.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-blog_show:
-    path:    /blog/{slug}
-    type:    custom
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalid.xml b/vendor/symfony/routing/Tests/Fixtures/nonvalid.xml
deleted file mode 100644
index 07f5f801c6b8797d6ae44db9c6a5a7b1a47fbc75..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalid.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}">
-        <default key="_controller">MyBundle:Blog:show</default>
-    <!-- </route> -->
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalid.yml b/vendor/symfony/routing/Tests/Fixtures/nonvalid.yml
deleted file mode 100644
index 257cc5642cb1a054f08cc83f2d943e56fd3ebe99..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalid.yml
+++ /dev/null
@@ -1 +0,0 @@
-foo
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalid2.yml b/vendor/symfony/routing/Tests/Fixtures/nonvalid2.yml
deleted file mode 100644
index cfa9992bbc95e2f6c4400f535366e41d6ab10987..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalid2.yml
+++ /dev/null
@@ -1 +0,0 @@
-route: string
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalidkeys.yml b/vendor/symfony/routing/Tests/Fixtures/nonvalidkeys.yml
deleted file mode 100644
index b01d50273828485896f29649061bba38f7c34fcc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalidkeys.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-someroute:
-  resource: path/to/some.yml
-  not_valid_key: test_
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalidnode.xml b/vendor/symfony/routing/Tests/Fixtures/nonvalidnode.xml
deleted file mode 100644
index 71093a4dd48097d0f659f5e6880e544ec9a80791..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalidnode.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <foo>bar</foo>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalidroute.xml b/vendor/symfony/routing/Tests/Fixtures/nonvalidroute.xml
deleted file mode 100644
index f0b84496c8f2f7db047e1fee2df4ba9eba8e0b9b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalidroute.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <option key="compiler_class">RouteCompiler</option>
-        <foo key="bar">baz</foo>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/null_values.xml b/vendor/symfony/routing/Tests/Fixtures/null_values.xml
deleted file mode 100644
index 078d49ae4f5a33fa6ad2fcd731762ad56a020e95..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/null_values.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}">
-        <default key="foo" xsi:nil="true" />
-        <default key="bar" xsi:nil="1" />
-        <default key="foobar" xsi:nil="false">foo</default>
-        <default key="baz" xsi:nil="0">bar</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl.php
deleted file mode 100644
index 86caa99696149c27c1ed7fdde325c90e635e9f1b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->collection()
-        ->add('foo', '/foo')
-            ->condition('abc')
-            ->options(['utf8' => true])
-        ->add('buz', 'zub')
-            ->controller('foo:act');
-
-    $routes->import('php_dsl_sub.php')
-        ->prefix('/sub')
-        ->requirements(['id' => '\d+']);
-
-    $routes->import('php_dsl_sub.php')
-        ->namePrefix('z_')
-        ->prefix('/zub');
-
-    $routes->import('php_dsl_sub_root.php')
-        ->prefix('/bus', false);
-
-    $routes->add('ouf', '/ouf')
-        ->schemes(['https'])
-        ->methods(['GET'])
-        ->defaults(['id' => 0]);
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_i18n.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_i18n.php
deleted file mode 100644
index 7489360cc26888cbd78000ced7ee33f64b11ce4d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_i18n.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->collection()
-        ->prefix(['en' => '/glish'])
-        ->add('foo', '/foo')
-        ->add('bar', ['en' => '/bar']);
-
-    $routes
-        ->add('baz', ['en' => '/baz']);
-
-    $routes->import('php_dsl_sub_i18n.php')
-        ->prefix(['fr' => '/ench']);
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub.php
deleted file mode 100644
index 08b05633b1dd6b6dc2a33d741732afae2dc4c1fc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $add = $routes->collection('c_')
-        ->prefix('pub');
-
-    $add('root', '/');
-    $add('bar', '/bar');
-
-    $add->collection('pub_')
-        ->host('host')
-        ->add('buz', 'buz');
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_i18n.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_i18n.php
deleted file mode 100644
index e79edc869d2de443d103d308c8a459f1d1a871a6..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_i18n.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $add = $routes->collection('c_')
-        ->prefix('pub');
-
-    $add('foo', ['fr' => '/foo']);
-    $add('bar', ['fr' => '/bar']);
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_root.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_root.php
deleted file mode 100644
index 9b309fc132465a0299e6fe19f19f4c5b31d91844..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_root.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $add = $routes->collection('r_');
-
-    $add('root', '/');
-    $add('bar', '/bar/');
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_object_dsl.php b/vendor/symfony/routing/Tests/Fixtures/php_object_dsl.php
deleted file mode 100644
index 9b9183a1b94272aaecd6ce61d0565d9380ae46fe..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_object_dsl.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return new class() {
-    public function __invoke(RoutingConfigurator $routes)
-    {
-        $routes
-            ->collection()
-            ->add('foo', '/foo')
-            ->condition('abc')
-            ->options(['utf8' => true])
-            ->add('buz', 'zub')
-            ->controller('foo:act');
-
-        $routes->import('php_dsl_sub.php')
-            ->prefix('/sub')
-            ->requirements(['id' => '\d+']);
-
-        $routes->import('php_dsl_sub.php')
-            ->namePrefix('z_')
-            ->prefix('/zub');
-
-        $routes->import('php_dsl_sub_root.php')
-            ->prefix('/bus', false);
-
-        $routes->add('ouf', '/ouf')
-            ->schemes(['https'])
-            ->methods(['GET'])
-            ->defaults(['id' => 0]);
-    }
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/requirements_without_placeholder_name.yml b/vendor/symfony/routing/Tests/Fixtures/requirements_without_placeholder_name.yml
deleted file mode 100644
index be8f04dd650aaa4d421cd1364e6ae7f945bea4aa..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/requirements_without_placeholder_name.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-foo:
-    path: '/{foo}'
-    requirements:
-        - '\d+'
diff --git a/vendor/symfony/routing/Tests/Fixtures/scalar_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/scalar_defaults.xml
deleted file mode 100644
index e3f81cc474ca85daad7f6b348ae3ed01269e2ec5..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/scalar_defaults.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="slug" xsi:nil="true" />
-        <default key="published">
-            <bool>true</bool>
-        </default>
-        <default key="page">
-            <int>1</int>
-        </default>
-        <default key="price">
-            <float>3.5</float>
-        </default>
-        <default key="archived">
-            <bool>false</bool>
-        </default>
-        <default key="free">
-            <bool>1</bool>
-        </default>
-        <default key="locked">
-            <bool>0</bool>
-        </default>
-        <default key="foo" xsi:nil="true" />
-        <default key="bar" xsi:nil="1" />
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/special_route_name.yml b/vendor/symfony/routing/Tests/Fixtures/special_route_name.yml
deleted file mode 100644
index 78be239aa4a58c5a25f568ad1a5edda2c000b766..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/special_route_name.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-"#$péß^a|":
-    path: "true"
diff --git a/vendor/symfony/routing/Tests/Fixtures/validpattern.php b/vendor/symfony/routing/Tests/Fixtures/validpattern.php
deleted file mode 100644
index 3ef0e14862f2a74233b04a28a60e99d54a057fd1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/validpattern.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-$collection = new RouteCollection();
-$collection->add('blog_show', new Route(
-    '/blog/{slug}',
-    ['_controller' => 'MyBlogBundle:Blog:show'],
-    ['locale' => '\w+'],
-    ['compiler_class' => 'RouteCompiler'],
-    '{locale}.example.com',
-    ['https'],
-    ['GET', 'POST', 'put', 'OpTiOnS'],
-    'context.getMethod() == "GET"'
-));
-
-return $collection;
diff --git a/vendor/symfony/routing/Tests/Fixtures/validpattern.xml b/vendor/symfony/routing/Tests/Fixtures/validpattern.xml
deleted file mode 100644
index 93e59d62a762de344aa0be51b57271a6246ba91d..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/validpattern.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}" host="{locale}.example.com" methods="GET|POST  put,OpTiOnS" schemes="hTTps">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <requirement key="locale">\w+</requirement>
-        <option key="compiler_class">RouteCompiler</option>
-        <condition>context.getMethod() == "GET"</condition>
-    </route>
-
-    <route id="blog_show_inherited" path="/blog/{slug}" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/validpattern.yml b/vendor/symfony/routing/Tests/Fixtures/validpattern.yml
deleted file mode 100644
index 565abaaa2c4678eaeb65b237cb83c8ba44690b23..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/validpattern.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-blog_show:
-    path:         /blog/{slug}
-    defaults:     { _controller: "MyBundle:Blog:show" }
-    host:         "{locale}.example.com"
-    requirements: { 'locale': '\w+' }
-    methods:      ['GET','POST','put','OpTiOnS']
-    schemes:      ['https']
-    condition:    'context.getMethod() == "GET"'
-    options:
-        compiler_class: RouteCompiler
-
-blog_show_inherited:
-    path:      /blog/{slug}
diff --git a/vendor/symfony/routing/Tests/Fixtures/validresource.php b/vendor/symfony/routing/Tests/Fixtures/validresource.php
deleted file mode 100644
index 31d354a34cd0082d0b989142fc1a2a50c3bbb70a..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/validresource.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/** @var $loader \Symfony\Component\Routing\Loader\PhpFileLoader */
-/** @var \Symfony\Component\Routing\RouteCollection $collection */
-$collection = $loader->import('validpattern.php');
-$collection->addDefaults([
-    'foo' => 123,
-]);
-$collection->addRequirements([
-    'foo' => '\d+',
-]);
-$collection->addOptions([
-    'foo' => 'bar',
-]);
-$collection->setCondition('context.getMethod() == "POST"');
-$collection->addPrefix('/prefix');
-
-return $collection;
diff --git a/vendor/symfony/routing/Tests/Fixtures/validresource.xml b/vendor/symfony/routing/Tests/Fixtures/validresource.xml
deleted file mode 100644
index 02dfe6be80d1d0f0b64acd0a2b960ac0b8588731..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/validresource.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="validpattern.xml" prefix="/{foo}" host="">
-        <default key="foo">123</default>
-        <requirement key="foo">\d+</requirement>
-        <option key="foo">bar</option>
-        <condition>context.getMethod() == "POST"</condition>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/validresource.yml b/vendor/symfony/routing/Tests/Fixtures/validresource.yml
deleted file mode 100644
index faf2263ae52f4f56aacfc3765081e763d60ebbfc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/validresource.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-_blog:
-    resource:     validpattern.yml
-    prefix:       /{foo}
-    defaults:     { 'foo': '123' }
-    requirements: { 'foo': '\d+' }
-    options:      { 'foo': 'bar' }
-    host:         ""
-    condition:    'context.getMethod() == "POST"'
diff --git a/vendor/symfony/routing/Tests/Fixtures/with_define_path_variable.php b/vendor/symfony/routing/Tests/Fixtures/with_define_path_variable.php
deleted file mode 100644
index 5871420b154678c2d64c43c7e6fe7b55ce5f7a40..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/with_define_path_variable.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-$path = '/1/2/3';
-
-return new \Symfony\Component\Routing\RouteCollection();
diff --git a/vendor/symfony/routing/Tests/Fixtures/withdoctype.xml b/vendor/symfony/routing/Tests/Fixtures/withdoctype.xml
deleted file mode 100644
index f217d5bcacf5402bcd76f4992ccfa8bb90bd177c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Fixtures/withdoctype.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE foo>
-<foo></foo>
diff --git a/vendor/symfony/routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php b/vendor/symfony/routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php
deleted file mode 100644
index 513e1c80e1e66cf2bd4ebf91543322b3992323d2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Generator\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Generator\CompiledUrlGenerator;
-use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledUrlGeneratorDumperTest extends TestCase
-{
-    /**
-     * @var RouteCollection
-     */
-    private $routeCollection;
-
-    /**
-     * @var CompiledUrlGeneratorDumper
-     */
-    private $generatorDumper;
-
-    /**
-     * @var string
-     */
-    private $testTmpFilepath;
-
-    /**
-     * @var string
-     */
-    private $largeTestTmpFilepath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->routeCollection = new RouteCollection();
-        $this->generatorDumper = new CompiledUrlGeneratorDumper($this->routeCollection);
-        $this->testTmpFilepath = sys_get_temp_dir().'/php_generator.'.$this->getName().'.php';
-        $this->largeTestTmpFilepath = sys_get_temp_dir().'/php_generator.'.$this->getName().'.large.php';
-        @unlink($this->testTmpFilepath);
-        @unlink($this->largeTestTmpFilepath);
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->testTmpFilepath);
-
-        $this->routeCollection = null;
-        $this->generatorDumper = null;
-        $this->testTmpFilepath = null;
-    }
-
-    public function testDumpWithRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithSimpleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test', (new Route('/foo')));
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump();
-        file_put_contents($this->testTmpFilepath, $code);
-
-        $context = new RequestContext('/app.php');
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, $context, null, 'en');
-
-        $urlWithDefaultLocale = $projectUrlGenerator->generate('test');
-        $urlWithSpecifiedLocale = $projectUrlGenerator->generate('test', ['_locale' => 'nl']);
-        $context->setParameter('_locale', 'en');
-        $urlWithEnglishContext = $projectUrlGenerator->generate('test');
-        $context->setParameter('_locale', 'nl');
-        $urlWithDutchContext = $projectUrlGenerator->generate('test');
-
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithDefaultLocale);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithSpecifiedLocale);
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithEnglishContext);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithDutchContext);
-
-        // test with full route name
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test.en'));
-
-        $context->setParameter('_locale', 'de_DE');
-        // test that it fall backs to another route when there is no matching localized route
-        $this->assertEquals('/app.php/foo', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithRouteNotFoundLocalizedRoutes()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->expectExceptionMessage('Unable to generate a URL for the named route "test" as such route does not exist.');
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump();
-        file_put_contents($this->testTmpFilepath, $code);
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'), null, 'pl_PL');
-        $projectUrlGenerator->generate('test');
-    }
-
-    public function testDumpWithFallbackLocaleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump();
-        file_put_contents($this->testTmpFilepath, $code);
-
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'en_GB');
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, $context, null, null);
-
-        // test with context _locale
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test'));
-        // test with parameters _locale
-        $this->assertEquals('/app.php/testen/is/leuk', $projectUrlGenerator->generate('test', ['_locale' => 'nl_BE']));
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'), null, 'fr_CA');
-        // test with default locale
-        $this->assertEquals('/app.php/tester/est/amusant', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithTooManyRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        for ($i = 0; $i < 32769; ++$i) {
-            $this->routeCollection->add('route_'.$i, new Route('/route_'.$i));
-        }
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->largeTestTmpFilepath, $this->generatorDumper->dump());
-        $this->routeCollection = $this->generatorDumper = null;
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->largeTestTmpFilepath, new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithoutRoutes()
-    {
-        $this->expectException('InvalidArgumentException');
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'));
-
-        $projectUrlGenerator->generate('Test', []);
-    }
-
-    public function testGenerateNonExistingRoute()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->routeCollection->add('Test', new Route('/test'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext());
-        $url = $projectUrlGenerator->generate('NonExisting', []);
-    }
-
-    public function testDumpForRouteWithDefaults()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}', ['foo' => 'bar']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext());
-        $url = $projectUrlGenerator->generate('Test', []);
-
-        $this->assertEquals('/testing', $url);
-    }
-
-    public function testDumpWithSchemeRequirement()
-    {
-        $this->routeCollection->add('Test1', new Route('/testing', [], [], [], '', ['ftp', 'https']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('ftp://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('ftp://localhost/app.php/testing', $relativeUrl);
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php', 'GET', 'localhost', 'https'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('https://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('/app.php/testing', $relativeUrl);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php b/vendor/symfony/routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php
deleted file mode 100644
index 8ea60eb279f3cfd8c057a81f2469ca7b098f1683..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Generator\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class PhpGeneratorDumperTest extends TestCase
-{
-    /**
-     * @var RouteCollection
-     */
-    private $routeCollection;
-
-    /**
-     * @var PhpGeneratorDumper
-     */
-    private $generatorDumper;
-
-    /**
-     * @var string
-     */
-    private $testTmpFilepath;
-
-    /**
-     * @var string
-     */
-    private $largeTestTmpFilepath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->routeCollection = new RouteCollection();
-        $this->generatorDumper = new PhpGeneratorDumper($this->routeCollection);
-        $this->testTmpFilepath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_generator.'.$this->getName().'.php';
-        $this->largeTestTmpFilepath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_generator.'.$this->getName().'.large.php';
-        @unlink($this->testTmpFilepath);
-        @unlink($this->largeTestTmpFilepath);
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->testTmpFilepath);
-
-        $this->routeCollection = null;
-        $this->generatorDumper = null;
-        $this->testTmpFilepath = null;
-    }
-
-    public function testDumpWithRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \ProjectUrlGenerator(new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithSimpleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test', (new Route('/foo')));
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump([
-            'class' => 'SimpleLocalizedProjectUrlGenerator',
-        ]);
-        file_put_contents($this->testTmpFilepath, $code);
-        include $this->testTmpFilepath;
-
-        $context = new RequestContext('/app.php');
-        $projectUrlGenerator = new \SimpleLocalizedProjectUrlGenerator($context, null, 'en');
-
-        $urlWithDefaultLocale = $projectUrlGenerator->generate('test');
-        $urlWithSpecifiedLocale = $projectUrlGenerator->generate('test', ['_locale' => 'nl']);
-        $context->setParameter('_locale', 'en');
-        $urlWithEnglishContext = $projectUrlGenerator->generate('test');
-        $context->setParameter('_locale', 'nl');
-        $urlWithDutchContext = $projectUrlGenerator->generate('test');
-
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithDefaultLocale);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithSpecifiedLocale);
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithEnglishContext);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithDutchContext);
-
-        // test with full route name
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test.en'));
-
-        $context->setParameter('_locale', 'de_DE');
-        // test that it fall backs to another route when there is no matching localized route
-        $this->assertEquals('/app.php/foo', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithRouteNotFoundLocalizedRoutes()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->expectExceptionMessage('Unable to generate a URL for the named route "test" as such route does not exist.');
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump([
-            'class' => 'RouteNotFoundLocalizedProjectUrlGenerator',
-        ]);
-        file_put_contents($this->testTmpFilepath, $code);
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \RouteNotFoundLocalizedProjectUrlGenerator(new RequestContext('/app.php'), null, 'pl_PL');
-        $projectUrlGenerator->generate('test');
-    }
-
-    public function testDumpWithFallbackLocaleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump([
-            'class' => 'FallbackLocaleLocalizedProjectUrlGenerator',
-        ]);
-        file_put_contents($this->testTmpFilepath, $code);
-        include $this->testTmpFilepath;
-
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'en_GB');
-        $projectUrlGenerator = new \FallbackLocaleLocalizedProjectUrlGenerator($context, null, null);
-
-        // test with context _locale
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test'));
-        // test with parameters _locale
-        $this->assertEquals('/app.php/testen/is/leuk', $projectUrlGenerator->generate('test', ['_locale' => 'nl_BE']));
-
-        $projectUrlGenerator = new \FallbackLocaleLocalizedProjectUrlGenerator(new RequestContext('/app.php'), null, 'fr_CA');
-        // test with default locale
-        $this->assertEquals('/app.php/tester/est/amusant', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithTooManyRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        for ($i = 0; $i < 32769; ++$i) {
-            $this->routeCollection->add('route_'.$i, new Route('/route_'.$i));
-        }
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->largeTestTmpFilepath, $this->generatorDumper->dump([
-            'class' => 'ProjectLargeUrlGenerator',
-        ]));
-        $this->routeCollection = $this->generatorDumper = null;
-        include $this->largeTestTmpFilepath;
-
-        $projectUrlGenerator = new \ProjectLargeUrlGenerator(new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithoutRoutes()
-    {
-        $this->expectException('InvalidArgumentException');
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'WithoutRoutesUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \WithoutRoutesUrlGenerator(new RequestContext('/app.php'));
-
-        $projectUrlGenerator->generate('Test', []);
-    }
-
-    public function testGenerateNonExistingRoute()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->routeCollection->add('Test', new Route('/test'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'NonExistingRoutesUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \NonExistingRoutesUrlGenerator(new RequestContext());
-        $url = $projectUrlGenerator->generate('NonExisting', []);
-    }
-
-    public function testDumpForRouteWithDefaults()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}', ['foo' => 'bar']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'DefaultRoutesUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \DefaultRoutesUrlGenerator(new RequestContext());
-        $url = $projectUrlGenerator->generate('Test', []);
-
-        $this->assertEquals('/testing', $url);
-    }
-
-    public function testDumpWithSchemeRequirement()
-    {
-        $this->routeCollection->add('Test1', new Route('/testing', [], [], [], '', ['ftp', 'https']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'SchemeUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \SchemeUrlGenerator(new RequestContext('/app.php'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('ftp://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('ftp://localhost/app.php/testing', $relativeUrl);
-
-        $projectUrlGenerator = new \SchemeUrlGenerator(new RequestContext('/app.php', 'GET', 'localhost', 'https'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('https://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('/app.php/testing', $relativeUrl);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Generator/UrlGeneratorTest.php b/vendor/symfony/routing/Tests/Generator/UrlGeneratorTest.php
deleted file mode 100644
index a768384747684adf79a86908cd43cd65759b511e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Generator/UrlGeneratorTest.php
+++ /dev/null
@@ -1,863 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Generator;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Generator\UrlGenerator;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class UrlGeneratorTest extends TestCase
-{
-    public function testAbsoluteUrlWithPort80()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost/app.php/testing', $url);
-    }
-
-    public function testAbsoluteSecureUrlWithPort443()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes, ['scheme' => 'https'])->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('https://localhost/app.php/testing', $url);
-    }
-
-    public function testAbsoluteUrlWithNonStandardPort()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes, ['httpPort' => 8080])->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost:8080/app.php/testing', $url);
-    }
-
-    public function testAbsoluteSecureUrlWithNonStandardPort()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes, ['httpsPort' => 8080, 'scheme' => 'https'])->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('https://localhost:8080/app.php/testing', $url);
-    }
-
-    public function testRelativeUrlWithoutParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing', $url);
-    }
-
-    public function testRelativeUrlWithParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing/bar', $url);
-    }
-
-    public function testRelativeUrlWithNullParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing.{format}', ['format' => null]));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing', $url);
-    }
-
-    public function testRelativeUrlWithNullParameterButNotOptional()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}/bar', ['foo' => null]));
-        // This must raise an exception because the default requirement for "foo" is "[^/]+" which is not met with these params.
-        // Generating path "/testing//bar" would be wrong as matching this route would fail.
-        $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testRelativeUrlWithOptionalZeroParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{page}'));
-        $url = $this->getGenerator($routes)->generate('test', ['page' => 0], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing/0', $url);
-    }
-
-    public function testNotPassedOptionalParameterInBetween()
-    {
-        $routes = $this->getRoutes('test', new Route('/{slug}/{page}', ['slug' => 'index', 'page' => 0]));
-        $this->assertSame('/app.php/index/1', $this->getGenerator($routes)->generate('test', ['page' => 1]));
-        $this->assertSame('/app.php/', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testRelativeUrlWithExtraParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing?foo=bar', $url);
-    }
-
-    public function testAbsoluteUrlWithExtraParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost/app.php/testing?foo=bar', $url);
-    }
-
-    public function testUrlWithNullExtraParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => null], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost/app.php/testing', $url);
-    }
-
-    public function testUrlWithExtraParametersFromGlobals()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $generator = $this->getGenerator($routes);
-        $context = new RequestContext('/app.php');
-        $context->setParameter('bar', 'bar');
-        $generator->setContext($context);
-        $url = $generator->generate('test', ['foo' => 'bar']);
-
-        $this->assertEquals('/app.php/testing?foo=bar', $url);
-    }
-
-    public function testUrlWithGlobalParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
-        $generator = $this->getGenerator($routes);
-        $context = new RequestContext('/app.php');
-        $context->setParameter('foo', 'bar');
-        $generator->setContext($context);
-        $url = $generator->generate('test', []);
-
-        $this->assertEquals('/app.php/testing/bar', $url);
-    }
-
-    public function testGlobalParameterHasHigherPriorityThanDefault()
-    {
-        $routes = $this->getRoutes('test', new Route('/{_locale}', ['_locale' => 'en']));
-        $generator = $this->getGenerator($routes);
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'de');
-        $generator->setContext($context);
-        $url = $generator->generate('test', []);
-
-        $this->assertSame('/app.php/de', $url);
-    }
-
-    public function testGenerateWithDefaultLocale()
-    {
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'hr');
-
-        $this->assertSame(
-            'http://localhost/app.php/foo',
-            $generator->generate($name, [], UrlGeneratorInterface::ABSOLUTE_URL)
-        );
-    }
-
-    public function testGenerateWithOverriddenParameterLocale()
-    {
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'hr');
-
-        $this->assertSame(
-            'http://localhost/app.php/bar',
-            $generator->generate($name, ['_locale' => 'en'], UrlGeneratorInterface::ABSOLUTE_URL)
-        );
-    }
-
-    public function testGenerateWithOverriddenParameterLocaleFromRequestContext()
-    {
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'hr');
-
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'en');
-        $generator->setContext($context);
-
-        $this->assertSame(
-            'http://localhost/app.php/bar',
-            $generator->generate($name, [], UrlGeneratorInterface::ABSOLUTE_URL)
-        );
-    }
-
-    public function testGenerateWithoutRoutes()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $routes = $this->getRoutes('foo', new Route('/testing/{foo}'));
-        $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateWithInvalidLocale()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'fr');
-        $generator->generate($name);
-    }
-
-    public function testGenerateForRouteWithoutMandatoryParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\MissingMandatoryParametersException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
-        $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidOptionalParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', [], ['foo' => '1|2']));
-        $this->getGenerator($routes)->generate('test', ['foo' => '0'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidOptionalParameterNonStrict()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $generator = $this->getGenerator($routes);
-        $generator->setStrictRequirements(false);
-        $this->assertSame('', $generator->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testGenerateForRouteWithInvalidOptionalParameterNonStrictWithLogger()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger->expects($this->once())
-            ->method('error');
-        $generator = $this->getGenerator($routes, [], $logger);
-        $generator->setStrictRequirements(false);
-        $this->assertSame('', $generator->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testGenerateForRouteWithInvalidParameterButDisabledRequirementsCheck()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $generator = $this->getGenerator($routes);
-        $generator->setStrictRequirements(null);
-        $this->assertSame('/app.php/testing/bar', $generator->generate('test', ['foo' => 'bar']));
-    }
-
-    public function testGenerateForRouteWithInvalidMandatoryParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', [], ['foo' => 'd+']));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidUtf8Parameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', [], ['foo' => '\pL+'], ['utf8' => true]));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'abc123'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testRequiredParamAndEmptyPassed()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/{slug}', [], ['slug' => '.+']));
-        $this->getGenerator($routes)->generate('test', ['slug' => '']);
-    }
-
-    public function testSchemeRequirementDoesNothingIfSameCurrentScheme()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['http']));
-        $this->assertEquals('/app.php/', $this->getGenerator($routes)->generate('test'));
-
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['https']));
-        $this->assertEquals('/app.php/', $this->getGenerator($routes, ['scheme' => 'https'])->generate('test'));
-    }
-
-    public function testSchemeRequirementForcesAbsoluteUrl()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['https']));
-        $this->assertEquals('https://localhost/app.php/', $this->getGenerator($routes)->generate('test'));
-
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['http']));
-        $this->assertEquals('http://localhost/app.php/', $this->getGenerator($routes, ['scheme' => 'https'])->generate('test'));
-    }
-
-    public function testSchemeRequirementCreatesUrlForFirstRequiredScheme()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['Ftp', 'https']));
-        $this->assertEquals('ftp://localhost/app.php/', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testPathWithTwoStartingSlashes()
-    {
-        $routes = $this->getRoutes('test', new Route('//path-and-not-domain'));
-
-        // this must not generate '//path-and-not-domain' because that would be a network path
-        $this->assertSame('/path-and-not-domain', $this->getGenerator($routes, ['BaseUrl' => ''])->generate('test'));
-    }
-
-    public function testNoTrailingSlashForMultipleOptionalParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/category/{slug1}/{slug2}/{slug3}', ['slug2' => null, 'slug3' => null]));
-
-        $this->assertEquals('/app.php/category/foo', $this->getGenerator($routes)->generate('test', ['slug1' => 'foo']));
-    }
-
-    public function testWithAnIntegerAsADefaultValue()
-    {
-        $routes = $this->getRoutes('test', new Route('/{default}', ['default' => 0]));
-
-        $this->assertEquals('/app.php/foo', $this->getGenerator($routes)->generate('test', ['default' => 'foo']));
-    }
-
-    public function testNullForOptionalParameterIsIgnored()
-    {
-        $routes = $this->getRoutes('test', new Route('/test/{default}', ['default' => 0]));
-
-        $this->assertEquals('/app.php/test', $this->getGenerator($routes)->generate('test', ['default' => null]));
-    }
-
-    public function testQueryParamSameAsDefault()
-    {
-        $routes = $this->getRoutes('test', new Route('/test', ['page' => 1]));
-
-        $this->assertSame('/app.php/test?page=2', $this->getGenerator($routes)->generate('test', ['page' => 2]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['page' => 1]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['page' => '1']));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testArrayQueryParamSameAsDefault()
-    {
-        $routes = $this->getRoutes('test', new Route('/test', ['array' => ['foo', 'bar']]));
-
-        $this->assertSame('/app.php/test?array%5B0%5D=bar&array%5B1%5D=foo', $this->getGenerator($routes)->generate('test', ['array' => ['bar', 'foo']]));
-        $this->assertSame('/app.php/test?array%5Ba%5D=foo&array%5Bb%5D=bar', $this->getGenerator($routes)->generate('test', ['array' => ['a' => 'foo', 'b' => 'bar']]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['array' => ['foo', 'bar']]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['array' => [1 => 'bar', 0 => 'foo']]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testGenerateWithSpecialRouteName()
-    {
-        $routes = $this->getRoutes('$péß^a|', new Route('/bar'));
-
-        $this->assertSame('/app.php/bar', $this->getGenerator($routes)->generate('$péß^a|'));
-    }
-
-    public function testUrlEncoding()
-    {
-        $expectedPath = '/app.php/@:%5B%5D/%28%29*%27%22%20+,;-._~%26%24%3C%3E|%7B%7D%25%5C%5E%60!%3Ffoo=bar%23id'
-            .'/@:%5B%5D/%28%29*%27%22%20+,;-._~%26%24%3C%3E|%7B%7D%25%5C%5E%60!%3Ffoo=bar%23id'
-            .'?query=@:%5B%5D/%28%29*%27%22%20%2B,;-._~%26%24%3C%3E%7C%7B%7D%25%5C%5E%60!?foo%3Dbar%23id';
-
-        // This tests the encoding of reserved characters that are used for delimiting of URI components (defined in RFC 3986)
-        // and other special ASCII chars. These chars are tested as static text path, variable path and query param.
-        $chars = '@:[]/()*\'" +,;-._~&$<>|{}%\\^`!?foo=bar#id';
-        $routes = $this->getRoutes('test', new Route("/$chars/{varpath}", [], ['varpath' => '.+']));
-        $this->assertSame($expectedPath, $this->getGenerator($routes)->generate('test', [
-            'varpath' => $chars,
-            'query' => $chars,
-        ]));
-    }
-
-    public function testEncodingOfRelativePathSegments()
-    {
-        $routes = $this->getRoutes('test', new Route('/dir/../dir/..'));
-        $this->assertSame('/app.php/dir/%2E%2E/dir/%2E%2E', $this->getGenerator($routes)->generate('test'));
-        $routes = $this->getRoutes('test', new Route('/dir/./dir/.'));
-        $this->assertSame('/app.php/dir/%2E/dir/%2E', $this->getGenerator($routes)->generate('test'));
-        $routes = $this->getRoutes('test', new Route('/a./.a/a../..a/...'));
-        $this->assertSame('/app.php/a./.a/a../..a/...', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testAdjacentVariables()
-    {
-        $routes = $this->getRoutes('test', new Route('/{x}{y}{z}.{_format}', ['z' => 'default-z', '_format' => 'html'], ['y' => '\d+']));
-        $generator = $this->getGenerator($routes);
-        $this->assertSame('/app.php/foo123', $generator->generate('test', ['x' => 'foo', 'y' => '123']));
-        $this->assertSame('/app.php/foo123bar.xml', $generator->generate('test', ['x' => 'foo', 'y' => '123', 'z' => 'bar', '_format' => 'xml']));
-
-        // The default requirement for 'x' should not allow the separator '.' in this case because it would otherwise match everything
-        // and following optional variables like _format could never match.
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $generator->generate('test', ['x' => 'do.t', 'y' => '123', 'z' => 'bar', '_format' => 'xml']);
-    }
-
-    public function testOptionalVariableWithNoRealSeparator()
-    {
-        $routes = $this->getRoutes('test', new Route('/get{what}', ['what' => 'All']));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/get', $generator->generate('test'));
-        $this->assertSame('/app.php/getSites', $generator->generate('test', ['what' => 'Sites']));
-    }
-
-    public function testRequiredVariableWithNoRealSeparator()
-    {
-        $routes = $this->getRoutes('test', new Route('/get{what}Suffix'));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/getSitesSuffix', $generator->generate('test', ['what' => 'Sites']));
-    }
-
-    public function testDefaultRequirementOfVariable()
-    {
-        $routes = $this->getRoutes('test', new Route('/{page}.{_format}'));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/index.mobile.html', $generator->generate('test', ['page' => 'index', '_format' => 'mobile.html']));
-    }
-
-    public function testImportantVariable()
-    {
-        $routes = $this->getRoutes('test', (new Route('/{page}.{!_format}'))->addDefaults(['_format' => 'mobile.html']));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/index.xml', $generator->generate('test', ['page' => 'index', '_format' => 'xml']));
-        $this->assertSame('/app.php/index.mobile.html', $generator->generate('test', ['page' => 'index', '_format' => 'mobile.html']));
-        $this->assertSame('/app.php/index.mobile.html', $generator->generate('test', ['page' => 'index']));
-    }
-
-    public function testImportantVariableWithNoDefault()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\MissingMandatoryParametersException');
-        $routes = $this->getRoutes('test', new Route('/{page}.{!_format}'));
-        $generator = $this->getGenerator($routes);
-
-        $generator->generate('test', ['page' => 'index']);
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsSlash()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/{page}.{_format}'));
-        $this->getGenerator($routes)->generate('test', ['page' => 'index', '_format' => 'sl/ash']);
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsNextSeparator()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/{page}.{_format}'));
-        $this->getGenerator($routes)->generate('test', ['page' => 'do.t', '_format' => 'html']);
-    }
-
-    public function testWithHostDifferentFromContext()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com'));
-
-        $this->assertEquals('//fr.example.com/app.php/Fabien', $this->getGenerator($routes)->generate('test', ['name' => 'Fabien', 'locale' => 'fr']));
-    }
-
-    public function testWithHostSameAsContext()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com'));
-
-        $this->assertEquals('/app.php/Fabien', $this->getGenerator($routes, ['host' => 'fr.example.com'])->generate('test', ['name' => 'Fabien', 'locale' => 'fr']));
-    }
-
-    public function testWithHostSameAsContextAndAbsolute()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com'));
-
-        $this->assertEquals('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes, ['host' => 'fr.example.com'])->generate('test', ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testUrlWithInvalidParameterInHost()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/', [], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testUrlWithInvalidParameterInHostWhenParamHasADefaultValue()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/', ['foo' => 'bar'], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testUrlWithInvalidParameterEqualsDefaultValueInHost()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/', ['foo' => 'baz'], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testUrlWithInvalidParameterInHostInNonStrictMode()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $generator = $this->getGenerator($routes);
-        $generator->setStrictRequirements(false);
-        $this->assertSame('', $generator->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH));
-    }
-
-    public function testHostIsCaseInsensitive()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], ['locale' => 'en|de|fr'], [], '{locale}.FooBar.com'));
-        $generator = $this->getGenerator($routes);
-        $this->assertSame('//EN.FooBar.com/app.php/', $generator->generate('test', ['locale' => 'EN'], UrlGeneratorInterface::NETWORK_PATH));
-    }
-
-    public function testDefaultHostIsUsedWhenContextHostIsEmpty()
-    {
-        $routes = $this->getRoutes('test', new Route('/path', ['domain' => 'my.fallback.host'], ['domain' => '.+'], [], '{domain}'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-
-        $this->assertSame('http://my.fallback.host/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testDefaultHostIsUsedWhenContextHostIsEmptyAndPathReferenceType()
-    {
-        $routes = $this->getRoutes('test', new Route('/path', ['domain' => 'my.fallback.host'], ['domain' => '.+'], [], '{domain}'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-
-        $this->assertSame('//my.fallback.host/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH));
-    }
-
-    public function testAbsoluteUrlFallbackToPathIfHostIsEmptyAndSchemeIsHttp()
-    {
-        $routes = $this->getRoutes('test', new Route('/route'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-        $generator->getContext()->setScheme('https');
-
-        $this->assertSame('/app.php/route', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testAbsoluteUrlFallbackToNetworkIfSchemeIsEmptyAndHostIsNot()
-    {
-        $routes = $this->getRoutes('test', new Route('/path'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('example.com');
-        $generator->getContext()->setScheme('');
-
-        $this->assertSame('//example.com/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testAbsoluteUrlFallbackToPathIfSchemeAndHostAreEmpty()
-    {
-        $routes = $this->getRoutes('test', new Route('/path'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-        $generator->getContext()->setScheme('');
-
-        $this->assertSame('/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testAbsoluteUrlWithNonHttpSchemeAndEmptyHost()
-    {
-        $routes = $this->getRoutes('test', new Route('/path', [], [], [], '', ['file']));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setBaseUrl('');
-        $generator->getContext()->setHost('');
-
-        $this->assertSame('file:///path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testGenerateNetworkPath()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com', ['http']));
-
-        $this->assertSame('//fr.example.com/app.php/Fabien', $this->getGenerator($routes)->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::NETWORK_PATH), 'network path with different host'
-        );
-        $this->assertSame('//fr.example.com/app.php/Fabien?query=string', $this->getGenerator($routes, ['host' => 'fr.example.com'])->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr', 'query' => 'string'], UrlGeneratorInterface::NETWORK_PATH), 'network path although host same as context'
-        );
-        $this->assertSame('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes, ['scheme' => 'https'])->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::NETWORK_PATH), 'absolute URL because scheme requirement does not match context'
-        );
-        $this->assertSame('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes)->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::ABSOLUTE_URL), 'absolute URL with same scheme because it is requested'
-        );
-    }
-
-    public function testGenerateRelativePath()
-    {
-        $routes = new RouteCollection();
-        $routes->add('article', new Route('/{author}/{article}/'));
-        $routes->add('comments', new Route('/{author}/{article}/comments'));
-        $routes->add('host', new Route('/{article}', [], [], [], '{author}.example.com'));
-        $routes->add('scheme', new Route('/{author}/blog', [], [], [], '', ['https']));
-        $routes->add('unrelated', new Route('/about'));
-
-        $generator = $this->getGenerator($routes, ['host' => 'example.com', 'pathInfo' => '/fabien/symfony-is-great/']);
-
-        $this->assertSame('comments', $generator->generate('comments',
-            ['author' => 'fabien', 'article' => 'symfony-is-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('comments?page=2', $generator->generate('comments',
-            ['author' => 'fabien', 'article' => 'symfony-is-great', 'page' => 2], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('../twig-is-great/', $generator->generate('article',
-            ['author' => 'fabien', 'article' => 'twig-is-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('../../bernhard/forms-are-great/', $generator->generate('article',
-            ['author' => 'bernhard', 'article' => 'forms-are-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('//bernhard.example.com/app.php/forms-are-great', $generator->generate('host',
-            ['author' => 'bernhard', 'article' => 'forms-are-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('https://example.com/app.php/bernhard/blog', $generator->generate('scheme',
-                ['author' => 'bernhard'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('../../about', $generator->generate('unrelated',
-            [], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-    }
-
-    /**
-     * @dataProvider provideRelativePaths
-     */
-    public function testGetRelativePath($sourcePath, $targetPath, $expectedPath)
-    {
-        $this->assertSame($expectedPath, UrlGenerator::getRelativePath($sourcePath, $targetPath));
-    }
-
-    public function provideRelativePaths()
-    {
-        return [
-            [
-                '/same/dir/',
-                '/same/dir/',
-                '',
-            ],
-            [
-                '/same/file',
-                '/same/file',
-                '',
-            ],
-            [
-                '/',
-                '/file',
-                'file',
-            ],
-            [
-                '/',
-                '/dir/file',
-                'dir/file',
-            ],
-            [
-                '/dir/file.html',
-                '/dir/different-file.html',
-                'different-file.html',
-            ],
-            [
-                '/same/dir/extra-file',
-                '/same/dir/',
-                './',
-            ],
-            [
-                '/parent/dir/',
-                '/parent/',
-                '../',
-            ],
-            [
-                '/parent/dir/extra-file',
-                '/parent/',
-                '../',
-            ],
-            [
-                '/a/b/',
-                '/x/y/z/',
-                '../../x/y/z/',
-            ],
-            [
-                '/a/b/c/d/e',
-                '/a/c/d',
-                '../../../c/d',
-            ],
-            [
-                '/a/b/c//',
-                '/a/b/c/',
-                '../',
-            ],
-            [
-                '/a/b/c/',
-                '/a/b/c//',
-                './/',
-            ],
-            [
-                '/root/a/b/c/',
-                '/root/x/b/c/',
-                '../../../x/b/c/',
-            ],
-            [
-                '/a/b/c/d/',
-                '/a',
-                '../../../../a',
-            ],
-            [
-                '/special-chars/sp%20ce/1€/mäh/e=mc²',
-                '/special-chars/sp%20ce/1€/<µ>/e=mc²',
-                '../<µ>/e=mc²',
-            ],
-            [
-                'not-rooted',
-                'dir/file',
-                'dir/file',
-            ],
-            [
-                '//dir/',
-                '',
-                '../../',
-            ],
-            [
-                '/dir/',
-                '/dir/file:with-colon',
-                './file:with-colon',
-            ],
-            [
-                '/dir/',
-                '/dir/subdir/file:with-colon',
-                'subdir/file:with-colon',
-            ],
-            [
-                '/dir/',
-                '/dir/:subdir/',
-                './:subdir/',
-            ],
-        ];
-    }
-
-    public function testFragmentsCanBeAppendedToUrls()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-
-        $url = $this->getGenerator($routes)->generate('test', ['_fragment' => 'frag ment'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $this->assertEquals('/app.php/testing#frag%20ment', $url);
-
-        $url = $this->getGenerator($routes)->generate('test', ['_fragment' => '0'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $this->assertEquals('/app.php/testing#0', $url);
-    }
-
-    public function testFragmentsDoNotEscapeValidCharacters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['_fragment' => '?/'], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing#?/', $url);
-    }
-
-    public function testFragmentsCanBeDefinedAsDefaults()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing', ['_fragment' => 'fragment']));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing#fragment', $url);
-    }
-
-    /**
-     * @dataProvider provideLookAroundRequirementsInPath
-     */
-    public function testLookRoundRequirementsInPath($expected, $path, $requirement)
-    {
-        $routes = $this->getRoutes('test', new Route($path, [], ['foo' => $requirement, 'baz' => '.+?']));
-        $this->assertSame($expected, $this->getGenerator($routes)->generate('test', ['foo' => 'a/b', 'baz' => 'c/d/e']));
-    }
-
-    public function provideLookAroundRequirementsInPath()
-    {
-        yield ['/app.php/a/b/b%28ar/c/d/e', '/{foo}/b(ar/{baz}', '.+(?=/b\\(ar/)'];
-        yield ['/app.php/a/b/bar/c/d/e', '/{foo}/bar/{baz}', '.+(?!$)'];
-        yield ['/app.php/bar/a/b/bam/c/d/e', '/bar/{foo}/bam/{baz}', '(?<=/bar/).+'];
-        yield ['/app.php/bar/a/b/bam/c/d/e', '/bar/{foo}/bam/{baz}', '(?<!^).+'];
-    }
-
-    protected function getGenerator(RouteCollection $routes, array $parameters = [], $logger = null, string $defaultLocale = null)
-    {
-        $context = new RequestContext('/app.php');
-        foreach ($parameters as $key => $value) {
-            $method = 'set'.$key;
-            $context->$method($value);
-        }
-
-        return new UrlGenerator($routes, $context, $logger, $defaultLocale);
-    }
-
-    protected function getRoutes($name, Route $route)
-    {
-        $routes = new RouteCollection();
-        $routes->add($name, $route);
-
-        return $routes;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AbstractAnnotationLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AbstractAnnotationLoaderTest.php
deleted file mode 100644
index 0ce4a47ec1317dfa7e39599f202e29641ea427be..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/AbstractAnnotationLoaderTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-
-abstract class AbstractAnnotationLoaderTest extends TestCase
-{
-    public function getReader()
-    {
-        return $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
-            ->disableOriginalConstructor()
-            ->getMock()
-        ;
-    }
-
-    public function getClassLoader($reader)
-    {
-        return $this->getMockBuilder('Symfony\Component\Routing\Loader\AnnotationClassLoader')
-            ->setConstructorArgs([$reader])
-            ->getMockForAbstractClass()
-        ;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AnnotationClassLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AnnotationClassLoaderTest.php
deleted file mode 100644
index 078e6c71aad63c33d972bae793e9c23ab66196ef..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/AnnotationClassLoaderTest.php
+++ /dev/null
@@ -1,343 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Doctrine\Common\Annotations\AnnotationReader;
-use Doctrine\Common\Annotations\AnnotationRegistry;
-use Symfony\Component\Routing\Annotation\Route as RouteAnnotation;
-use Symfony\Component\Routing\Loader\AnnotationClassLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\AbstractClassController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\ActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\DefaultValueController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\ExplicitLocalizedActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\GlobalDefaultsClass;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\InvokableController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\InvokableLocalizedController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedMethodActionControllers;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixLocalizedActionController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixMissingLocaleActionController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixMissingRouteLocaleActionController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixWithRouteWithoutLocale;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\MethodActionControllers;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\MissingRouteNameController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\NothingButNameController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\PrefixedActionLocalizedRouteController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\PrefixedActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RouteWithPrefixController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\Utf8ActionControllers;
-
-class AnnotationClassLoaderTest extends AbstractAnnotationLoaderTest
-{
-    /**
-     * @var AnnotationClassLoader
-     */
-    private $loader;
-
-    protected function setUp(): void
-    {
-        $reader = new AnnotationReader();
-        $this->loader = new class($reader) extends AnnotationClassLoader {
-            protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
-            {
-            }
-        };
-        AnnotationRegistry::registerLoader('class_exists');
-    }
-
-    /**
-     * @dataProvider provideTestSupportsChecksResource
-     */
-    public function testSupportsChecksResource($resource, $expectedSupports)
-    {
-        $this->assertSame($expectedSupports, $this->loader->supports($resource), '->supports() returns true if the resource is loadable');
-    }
-
-    public function provideTestSupportsChecksResource()
-    {
-        return [
-            ['class', true],
-            ['\fully\qualified\class\name', true],
-            ['namespaced\class\without\leading\slash', true],
-            ['ÿClassWithLegalSpecialCharacters', true],
-            ['5', false],
-            ['foo.foo', false],
-            [null, false],
-        ];
-    }
-
-    public function testSupportsChecksTypeIfSpecified()
-    {
-        $this->assertTrue($this->loader->supports('class', 'annotation'), '->supports() checks the resource type if specified');
-        $this->assertFalse($this->loader->supports('class', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testSimplePathRoute()
-    {
-        $routes = $this->loader->load(ActionPathController::class);
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/path', $routes->get('action')->getPath());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation A placeholder name must be a string (0 given). Did you forget to specify the placeholder key for the requirement "foo" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController"?
-     * @expectedDeprecation A placeholder name must be a string (1 given). Did you forget to specify the placeholder key for the requirement "\d+" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController"?
-     * @expectedDeprecation A placeholder name must be a string (0 given). Did you forget to specify the placeholder key for the requirement "foo" of route "foo" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController::foo()"?
-     * @expectedDeprecation A placeholder name must be a string (1 given). Did you forget to specify the placeholder key for the requirement "\d+" of route "foo" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController::foo()"?
-     */
-    public function testRequirementsWithoutPlaceholderName()
-    {
-        $this->loader->load(RequirementsWithoutPlaceholderNameController::class);
-    }
-
-    public function testInvokableControllerLoader()
-    {
-        $routes = $this->loader->load(InvokableController::class);
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/here', $routes->get('lol')->getPath());
-        $this->assertEquals(['GET', 'POST'], $routes->get('lol')->getMethods());
-        $this->assertEquals(['https'], $routes->get('lol')->getSchemes());
-    }
-
-    public function testInvokableLocalizedControllerLoading()
-    {
-        $routes = $this->loader->load(InvokableLocalizedController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/here', $routes->get('action.en')->getPath());
-        $this->assertEquals('/hier', $routes->get('action.nl')->getPath());
-    }
-
-    public function testLocalizedPathRoutes()
-    {
-        $routes = $this->loader->load(LocalizedActionPathController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/path', $routes->get('action.en')->getPath());
-        $this->assertEquals('/pad', $routes->get('action.nl')->getPath());
-    }
-
-    public function testLocalizedPathRoutesWithExplicitPathPropety()
-    {
-        $routes = $this->loader->load(ExplicitLocalizedActionPathController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/path', $routes->get('action.en')->getPath());
-        $this->assertEquals('/pad', $routes->get('action.nl')->getPath());
-    }
-
-    public function testDefaultValuesForMethods()
-    {
-        $routes = $this->loader->load(DefaultValueController::class);
-        $this->assertCount(3, $routes);
-        $this->assertEquals('/{default}/path', $routes->get('action')->getPath());
-        $this->assertEquals('value', $routes->get('action')->getDefault('default'));
-        $this->assertEquals('Symfony', $routes->get('hello_with_default')->getDefault('name'));
-        $this->assertEquals('World', $routes->get('hello_without_default')->getDefault('name'));
-    }
-
-    public function testMethodActionControllers()
-    {
-        $routes = $this->loader->load(MethodActionControllers::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/the/path', $routes->get('put')->getPath());
-        $this->assertEquals('/the/path', $routes->get('post')->getPath());
-    }
-
-    public function testInvokableClassRouteLoadWithMethodAnnotation()
-    {
-        $routes = $this->loader->load(LocalizedMethodActionControllers::class);
-        $this->assertCount(4, $routes);
-        $this->assertEquals('/the/path', $routes->get('put.en')->getPath());
-        $this->assertEquals('/the/path', $routes->get('post.en')->getPath());
-    }
-
-    public function testGlobalDefaultsRoutesLoadWithAnnotation()
-    {
-        $routes = $this->loader->load(GlobalDefaultsClass::class);
-        $this->assertCount(2, $routes);
-
-        $specificLocaleRoute = $routes->get('specific_locale');
-
-        $this->assertSame('/defaults/specific-locale', $specificLocaleRoute->getPath());
-        $this->assertSame('s_locale', $specificLocaleRoute->getDefault('_locale'));
-        $this->assertSame('g_format', $specificLocaleRoute->getDefault('_format'));
-
-        $specificFormatRoute = $routes->get('specific_format');
-
-        $this->assertSame('/defaults/specific-format', $specificFormatRoute->getPath());
-        $this->assertSame('g_locale', $specificFormatRoute->getDefault('_locale'));
-        $this->assertSame('s_format', $specificFormatRoute->getDefault('_format'));
-    }
-
-    public function testUtf8RoutesLoadWithAnnotation()
-    {
-        $routes = $this->loader->load(Utf8ActionControllers::class);
-        $this->assertCount(2, $routes);
-        $this->assertTrue($routes->get('one')->getOption('utf8'), 'The route must accept utf8');
-        $this->assertFalse($routes->get('two')->getOption('utf8'), 'The route must not accept utf8');
-    }
-
-    public function testRouteWithPathWithPrefix()
-    {
-        $routes = $this->loader->load(PrefixedActionPathController::class);
-        $this->assertCount(1, $routes);
-        $route = $routes->get('action');
-        $this->assertEquals('/prefix/path', $route->getPath());
-        $this->assertEquals('lol=fun', $route->getCondition());
-        $this->assertEquals('frankdejonge.nl', $route->getHost());
-    }
-
-    public function testLocalizedRouteWithPathWithPrefix()
-    {
-        $routes = $this->loader->load(PrefixedActionLocalizedRouteController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/prefix/path', $routes->get('action.en')->getPath());
-        $this->assertEquals('/prefix/pad', $routes->get('action.nl')->getPath());
-    }
-
-    public function testLocalizedPrefixLocalizedRoute()
-    {
-        $routes = $this->loader->load(LocalizedPrefixLocalizedActionController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/nl/actie', $routes->get('action.nl')->getPath());
-        $this->assertEquals('/en/action', $routes->get('action.en')->getPath());
-    }
-
-    public function testInvokableClassMultipleRouteLoad()
-    {
-        $classRouteData1 = [
-            'name' => 'route1',
-            'path' => '/1',
-            'schemes' => ['https'],
-            'methods' => ['GET'],
-        ];
-
-        $classRouteData2 = [
-            'name' => 'route2',
-            'path' => '/2',
-            'schemes' => ['https'],
-            'methods' => ['GET'],
-        ];
-
-        $reader = $this->getReader();
-        $reader
-            ->expects($this->exactly(1))
-            ->method('getClassAnnotations')
-            ->willReturn([new RouteAnnotation($classRouteData1), new RouteAnnotation($classRouteData2)])
-        ;
-        $reader
-            ->expects($this->once())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-        $loader = new class($reader) extends AnnotationClassLoader {
-            protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
-            {
-            }
-        };
-
-        $routeCollection = $loader->load('Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BazClass');
-        $route = $routeCollection->get($classRouteData1['name']);
-
-        $this->assertSame($classRouteData1['path'], $route->getPath(), '->load preserves class route path');
-        $this->assertEquals($classRouteData1['schemes'], $route->getSchemes(), '->load preserves class route schemes');
-        $this->assertEquals($classRouteData1['methods'], $route->getMethods(), '->load preserves class route methods');
-
-        $route = $routeCollection->get($classRouteData2['name']);
-
-        $this->assertSame($classRouteData2['path'], $route->getPath(), '->load preserves class route path');
-        $this->assertEquals($classRouteData2['schemes'], $route->getSchemes(), '->load preserves class route schemes');
-        $this->assertEquals($classRouteData2['methods'], $route->getMethods(), '->load preserves class route methods');
-    }
-
-    public function testMissingPrefixLocale()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load(LocalizedPrefixMissingLocaleActionController::class);
-    }
-
-    public function testMissingRouteLocale()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load(LocalizedPrefixMissingRouteLocaleActionController::class);
-    }
-
-    public function testRouteWithoutName()
-    {
-        $routes = $this->loader->load(MissingRouteNameController::class)->all();
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/path', reset($routes)->getPath());
-    }
-
-    public function testNothingButName()
-    {
-        $routes = $this->loader->load(NothingButNameController::class)->all();
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/', reset($routes)->getPath());
-    }
-
-    public function testNonExistingClass()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load('ClassThatDoesNotExist');
-    }
-
-    public function testLoadingAbstractClass()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load(AbstractClassController::class);
-    }
-
-    public function testLocalizedPrefixWithoutRouteLocale()
-    {
-        $routes = $this->loader->load(LocalizedPrefixWithRouteWithoutLocale::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/en/suffix', $routes->get('action.en')->getPath());
-        $this->assertEquals('/nl/suffix', $routes->get('action.nl')->getPath());
-    }
-
-    /**
-     * @requires function mb_strtolower
-     */
-    public function testDefaultRouteName()
-    {
-        $methodRouteData = [
-            'name' => null,
-        ];
-
-        $reader = $this->getReader();
-        $reader
-            ->expects($this->once())
-            ->method('getMethodAnnotations')
-            ->willReturn([new RouteAnnotation($methodRouteData)])
-        ;
-
-        $loader = new class($reader) extends AnnotationClassLoader {
-            protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
-            {
-            }
-        };
-        $routeCollection = $loader->load('Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\EncodingClass');
-
-        $defaultName = array_keys($routeCollection->all())[0];
-
-        $this->assertSame($defaultName, 'symfony_component_routing_tests_fixtures_annotatedclasses_encodingclass_routeàction');
-    }
-
-    public function testLoadingRouteWithPrefix()
-    {
-        $routes = $this->loader->load(RouteWithPrefixController::class);
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/prefix/path', $routes->get('action')->getPath());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AnnotationDirectoryLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AnnotationDirectoryLoaderTest.php
deleted file mode 100644
index 858044d459f7ec27c3b74b8e71ff39ab556d79fc..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/AnnotationDirectoryLoaderTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Routing\Loader\AnnotationDirectoryLoader;
-
-class AnnotationDirectoryLoaderTest extends AbstractAnnotationLoaderTest
-{
-    protected $loader;
-    protected $reader;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->reader = $this->getReader();
-        $this->loader = new AnnotationDirectoryLoader(new FileLocator(), $this->getClassLoader($this->reader));
-    }
-
-    public function testLoad()
-    {
-        $this->reader->expects($this->exactly(4))->method('getClassAnnotation');
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getClassAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses');
-    }
-
-    public function testLoadIgnoresHiddenDirectories()
-    {
-        $this->expectAnnotationsToBeReadFrom([
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BarClass',
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BazClass',
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\FooClass',
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\EncodingClass',
-        ]);
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getClassAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses');
-    }
-
-    public function testSupports()
-    {
-        $fixturesDir = __DIR__.'/../Fixtures';
-
-        $this->assertTrue($this->loader->supports($fixturesDir), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($this->loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($this->loader->supports($fixturesDir, 'annotation'), '->supports() checks the resource type if specified');
-        $this->assertFalse($this->loader->supports($fixturesDir, 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testItSupportsAnyAnnotation()
-    {
-        $this->assertTrue($this->loader->supports(__DIR__.'/../Fixtures/even-with-not-existing-folder', 'annotation'));
-    }
-
-    public function testLoadFileIfLocatedResourceIsFile()
-    {
-        $this->reader->expects($this->exactly(1))->method('getClassAnnotation');
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/FooClass.php');
-    }
-
-    private function expectAnnotationsToBeReadFrom(array $classes)
-    {
-        $this->reader->expects($this->exactly(\count($classes)))
-            ->method('getClassAnnotation')
-            ->with($this->callback(function (\ReflectionClass $class) use ($classes) {
-                return \in_array($class->getName(), $classes);
-            }));
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AnnotationFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AnnotationFileLoaderTest.php
deleted file mode 100644
index d0b670c3e2ed6cf574d180214651f86eab100b92..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/AnnotationFileLoaderTest.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Routing\Annotation\Route;
-use Symfony\Component\Routing\Loader\AnnotationFileLoader;
-
-class AnnotationFileLoaderTest extends AbstractAnnotationLoaderTest
-{
-    protected $loader;
-    protected $reader;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->reader = $this->getReader();
-        $this->loader = new AnnotationFileLoader(new FileLocator(), $this->getClassLoader($this->reader));
-    }
-
-    public function testLoad()
-    {
-        $this->reader->expects($this->once())->method('getClassAnnotation');
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/FooClass.php');
-    }
-
-    public function testLoadTraitWithClassConstant()
-    {
-        $this->reader->expects($this->never())->method('getClassAnnotation');
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/FooTrait.php');
-    }
-
-    public function testLoadFileWithoutStartTag()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Did you forgot to add the "<?php" start tag at the beginning of the file?');
-        $this->loader->load(__DIR__.'/../Fixtures/OtherAnnotatedClasses/NoStartTagClass.php');
-    }
-
-    public function testLoadVariadic()
-    {
-        $route = new Route(['path' => '/path/to/{id}']);
-        $this->reader->expects($this->once())->method('getClassAnnotation');
-        $this->reader->expects($this->once())->method('getMethodAnnotations')
-            ->willReturn([$route]);
-
-        $this->loader->load(__DIR__.'/../Fixtures/OtherAnnotatedClasses/VariadicClass.php');
-    }
-
-    /**
-     * @requires PHP 7.0
-     */
-    public function testLoadAnonymousClass()
-    {
-        $this->reader->expects($this->never())->method('getClassAnnotation');
-        $this->reader->expects($this->never())->method('getMethodAnnotations');
-
-        $this->loader->load(__DIR__.'/../Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php');
-    }
-
-    public function testLoadAbstractClass()
-    {
-        $this->reader->expects($this->never())->method('getClassAnnotation');
-        $this->reader->expects($this->never())->method('getMethodAnnotations');
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/AbstractClass.php');
-    }
-
-    public function testSupports()
-    {
-        $fixture = __DIR__.'/../Fixtures/annotated.php';
-
-        $this->assertTrue($this->loader->supports($fixture), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($this->loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($this->loader->supports($fixture, 'annotation'), '->supports() checks the resource type if specified');
-        $this->assertFalse($this->loader->supports($fixture, 'foo'), '->supports() checks the resource type if specified');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/ClosureLoaderTest.php b/vendor/symfony/routing/Tests/Loader/ClosureLoaderTest.php
deleted file mode 100644
index 5d963f86fb01b5ddc0a67e635b7a3699cbeb2c49..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/ClosureLoaderTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Loader\ClosureLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class ClosureLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new ClosureLoader();
-
-        $closure = function () {};
-
-        $this->assertTrue($loader->supports($closure), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports($closure, 'closure'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports($closure, 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoad()
-    {
-        $loader = new ClosureLoader();
-
-        $route = new Route('/');
-        $routes = $loader->load(function () use ($route) {
-            $routes = new RouteCollection();
-
-            $routes->add('foo', $route);
-
-            return $routes;
-        });
-
-        $this->assertEquals($route, $routes->get('foo'), '->load() loads a \Closure resource');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/DirectoryLoaderTest.php b/vendor/symfony/routing/Tests/Loader/DirectoryLoaderTest.php
deleted file mode 100644
index 184d5089bc6331f34b311d070cbf3fc4c3de52c2..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/DirectoryLoaderTest.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\Routing\Loader\AnnotationFileLoader;
-use Symfony\Component\Routing\Loader\DirectoryLoader;
-use Symfony\Component\Routing\Loader\YamlFileLoader;
-use Symfony\Component\Routing\RouteCollection;
-
-class DirectoryLoaderTest extends AbstractAnnotationLoaderTest
-{
-    private $loader;
-    private $reader;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $locator = new FileLocator();
-        $this->reader = $this->getReader();
-        $this->loader = new DirectoryLoader($locator);
-        $resolver = new LoaderResolver([
-            new YamlFileLoader($locator),
-            new AnnotationFileLoader($locator, $this->getClassLoader($this->reader)),
-            $this->loader,
-        ]);
-        $this->loader->setResolver($resolver);
-    }
-
-    public function testLoadDirectory()
-    {
-        $collection = $this->loader->load(__DIR__.'/../Fixtures/directory', 'directory');
-        $this->verifyCollection($collection);
-    }
-
-    public function testImportDirectory()
-    {
-        $collection = $this->loader->load(__DIR__.'/../Fixtures/directory_import', 'directory');
-        $this->verifyCollection($collection);
-    }
-
-    private function verifyCollection(RouteCollection $collection)
-    {
-        $routes = $collection->all();
-
-        $this->assertCount(3, $routes, 'Three routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        for ($i = 1; $i <= 3; ++$i) {
-            $this->assertSame('/route/'.$i, $routes['route'.$i]->getPath());
-        }
-    }
-
-    public function testSupports()
-    {
-        $fixturesDir = __DIR__.'/../Fixtures';
-
-        $this->assertFalse($this->loader->supports($fixturesDir), '->supports(*) returns false');
-
-        $this->assertTrue($this->loader->supports($fixturesDir, 'directory'), '->supports(*, "directory") returns true');
-        $this->assertFalse($this->loader->supports($fixturesDir, 'foo'), '->supports(*, "foo") returns false');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/FileLocatorStub.php b/vendor/symfony/routing/Tests/Loader/FileLocatorStub.php
deleted file mode 100644
index 870c3cf4f4c386574f7eb222d6363451145c5b66..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/FileLocatorStub.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocatorInterface;
-
-class FileLocatorStub implements FileLocatorInterface
-{
-    public function locate($name, $currentPath = null, $first = true)
-    {
-        if (0 === strpos($name, 'http')) {
-            return $name;
-        }
-
-        return rtrim($currentPath, '/').'/'.$name;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/GlobFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/GlobFileLoaderTest.php
deleted file mode 100644
index e4e12b8815c3f9a127f83bd6d257300370f72bc7..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/GlobFileLoaderTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\GlobResource;
-use Symfony\Component\Routing\Loader\GlobFileLoader;
-use Symfony\Component\Routing\RouteCollection;
-
-class GlobFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new GlobFileLoader(new FileLocator());
-
-        $this->assertTrue($loader->supports('any-path', 'glob'), '->supports() returns true if the resource has the glob type');
-        $this->assertFalse($loader->supports('any-path'), '->supports() returns false if the resource is not of glob type');
-    }
-
-    public function testLoadAddsTheGlobResourceToTheContainer()
-    {
-        $loader = new GlobFileLoaderWithoutImport(new FileLocator());
-        $collection = $loader->load(__DIR__.'/../Fixtures/directory/*.yml');
-
-        $this->assertEquals(new GlobResource(__DIR__.'/../Fixtures/directory', '/*.yml', false), $collection->getResources()[0]);
-    }
-}
-
-class GlobFileLoaderWithoutImport extends GlobFileLoader
-{
-    public function import($resource, $type = null, $ignoreErrors = false, $sourceResource = null)
-    {
-        return new RouteCollection();
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php b/vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php
deleted file mode 100644
index a00bc136ac94d0c242a4dce92e6e475eeeaccf63..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Loader\ObjectRouteLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class ObjectRouteLoaderTest extends TestCase
-{
-    /**
-     * @group legacy
-     * @expectedDeprecation Referencing service route loaders with a single colon is deprecated since Symfony 4.1. Use my_route_provider_service::loadRoutes instead.
-     */
-    public function testLoadCallsServiceAndReturnsCollectionWithLegacyNotation()
-    {
-        $loader = new ObjectRouteLoaderForTest();
-
-        // create a basic collection that will be returned
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $loader->loaderMap = [
-            'my_route_provider_service' => new RouteService($collection),
-        ];
-
-        $actualRoutes = $loader->load(
-            'my_route_provider_service:loadRoutes',
-            'service'
-        );
-
-        $this->assertSame($collection, $actualRoutes);
-        // the service file should be listed as a resource
-        $this->assertNotEmpty($actualRoutes->getResources());
-    }
-
-    public function testLoadCallsServiceAndReturnsCollection()
-    {
-        $loader = new ObjectRouteLoaderForTest();
-
-        // create a basic collection that will be returned
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $loader->loaderMap = [
-            'my_route_provider_service' => new RouteService($collection),
-        ];
-
-        $actualRoutes = $loader->load(
-            'my_route_provider_service::loadRoutes',
-            'service'
-        );
-
-        $this->assertSame($collection, $actualRoutes);
-        // the service file should be listed as a resource
-        $this->assertNotEmpty($actualRoutes->getResources());
-    }
-
-    /**
-     * @dataProvider getBadResourceStrings
-     */
-    public function testExceptionWithoutSyntax(string $resourceString): void
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->load($resourceString);
-    }
-
-    public function getBadResourceStrings()
-    {
-        return [
-            ['Foo:Bar:baz'],
-            ['Foo::Bar::baz'],
-            ['Foo:'],
-            ['Foo::'],
-            [':Foo'],
-            ['::Foo'],
-        ];
-    }
-
-    public function testExceptionOnNoObjectReturned()
-    {
-        $this->expectException('LogicException');
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->loaderMap = ['my_service' => 'NOT_AN_OBJECT'];
-        $loader->load('my_service::method');
-    }
-
-    public function testExceptionOnBadMethod()
-    {
-        $this->expectException('BadMethodCallException');
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->loaderMap = ['my_service' => new \stdClass()];
-        $loader->load('my_service::method');
-    }
-
-    public function testExceptionOnMethodNotReturningCollection()
-    {
-        $this->expectException('LogicException');
-        $service = $this->getMockBuilder('stdClass')
-            ->setMethods(['loadRoutes'])
-            ->getMock();
-        $service->expects($this->once())
-            ->method('loadRoutes')
-            ->willReturn('NOT_A_COLLECTION');
-
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->loaderMap = ['my_service' => $service];
-        $loader->load('my_service::loadRoutes');
-    }
-}
-
-class ObjectRouteLoaderForTest extends ObjectRouteLoader
-{
-    public $loaderMap = [];
-
-    protected function getServiceObject($id)
-    {
-        return isset($this->loaderMap[$id]) ? $this->loaderMap[$id] : null;
-    }
-}
-
-class RouteService
-{
-    private $collection;
-
-    public function __construct($collection)
-    {
-        $this->collection = $collection;
-    }
-
-    public function loadRoutes()
-    {
-        return $this->collection;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/PhpFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/PhpFileLoaderTest.php
deleted file mode 100644
index 71f9df15470a1d5aae8796e2b43111ed29683d81..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/PhpFileLoaderTest.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\PhpFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class PhpFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new PhpFileLoader($this->getMockBuilder('Symfony\Component\Config\FileLocator')->getMock());
-
-        $this->assertTrue($loader->supports('foo.php'), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports('foo.php', 'php'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports('foo.php', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoadWithRoute()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validpattern.php');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(1, $routes, 'One route is loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/blog/{slug}', $route->getPath());
-            $this->assertSame('MyBlogBundle:Blog:show', $route->getDefault('_controller'));
-            $this->assertSame('{locale}.example.com', $route->getHost());
-            $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-            $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-            $this->assertEquals(['https'], $route->getSchemes());
-        }
-    }
-
-    public function testLoadWithImport()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validresource.php');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(1, $routes, 'One route is loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/prefix/blog/{slug}', $route->getPath());
-            $this->assertSame('MyBlogBundle:Blog:show', $route->getDefault('_controller'));
-            $this->assertSame('{locale}.example.com', $route->getHost());
-            $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-            $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-            $this->assertEquals(['https'], $route->getSchemes());
-        }
-    }
-
-    public function testThatDefiningVariableInConfigFileHasNoSideEffects()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollection = $loader->load('with_define_path_variable.php');
-        $resources = $routeCollection->getResources();
-        $this->assertCount(1, $resources);
-        $this->assertContainsOnly('Symfony\Component\Config\Resource\ResourceInterface', $resources);
-        $fileResource = reset($resources);
-        $this->assertSame(
-            realpath($locator->locate('with_define_path_variable.php')),
-            (string) $fileResource
-        );
-    }
-
-    public function testLoadingRouteWithDefaults()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('defaults.php');
-
-        $this->assertCount(1, $routes);
-
-        $defaultsRoute = $routes->get('defaults');
-
-        $this->assertSame('/defaults', $defaultsRoute->getPath());
-        $this->assertSame('en', $defaultsRoute->getDefault('_locale'));
-        $this->assertSame('html', $defaultsRoute->getDefault('_format'));
-    }
-
-    public function testLoadingImportedRoutesWithDefaults()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('importer-with-defaults.php');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('one', $localeRoute = new Route('/defaults/one'));
-        $localeRoute->setDefault('_locale', 'g_locale');
-        $localeRoute->setDefault('_format', 'g_format');
-        $expectedRoutes->add('two', $formatRoute = new Route('/defaults/two'));
-        $formatRoute->setDefault('_locale', 'g_locale');
-        $formatRoute->setDefault('_format', 'g_format');
-        $formatRoute->setDefault('specific', 'imported');
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/imported-with-defaults.php'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/importer-with-defaults.php'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8Route()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('utf8.php');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('some_route', new Route('/'));
-
-        $expectedRoutes->add('some_utf8_route', $route = new Route('/utf8'));
-        $route->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/utf8.php'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8ImportedRoutes()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-utf8.php');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('utf8_one', $one = new Route('/one'));
-        $one->setOption('utf8', true);
-
-        $expectedRoutes->add('utf8_two', $two = new Route('/two'));
-        $two->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/imported-with-utf8.php'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/importer-with-utf8.php'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testRoutingConfigurator()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollectionClosure = $loader->load('php_dsl.php');
-        $routeCollectionObject = $loader->load('php_object_dsl.php');
-
-        $expectedCollection = new RouteCollection();
-
-        $expectedCollection->add('foo', (new Route('/foo'))
-            ->setOptions(['utf8' => true])
-            ->setCondition('abc')
-        );
-        $expectedCollection->add('buz', (new Route('/zub'))
-            ->setDefaults(['_controller' => 'foo:act'])
-        );
-        $expectedCollection->add('c_root', (new Route('/sub/pub/'))
-            ->setRequirements(['id' => '\d+'])
-        );
-        $expectedCollection->add('c_bar', (new Route('/sub/pub/bar'))
-            ->setRequirements(['id' => '\d+'])
-        );
-        $expectedCollection->add('c_pub_buz', (new Route('/sub/pub/buz'))
-            ->setHost('host')
-            ->setRequirements(['id' => '\d+'])
-        );
-        $expectedCollection->add('z_c_root', new Route('/zub/pub/'));
-        $expectedCollection->add('z_c_bar', new Route('/zub/pub/bar'));
-        $expectedCollection->add('z_c_pub_buz', (new Route('/zub/pub/buz'))->setHost('host'));
-        $expectedCollection->add('r_root', new Route('/bus'));
-        $expectedCollection->add('r_bar', new Route('/bus/bar/'));
-        $expectedCollection->add('ouf', (new Route('/ouf'))
-            ->setSchemes(['https'])
-            ->setMethods(['GET'])
-            ->setDefaults(['id' => 0])
-        );
-
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_sub.php')));
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_sub_root.php')));
-
-        $expectedCollectionClosure = $expectedCollection;
-        $expectedCollectionObject = clone $expectedCollection;
-
-        $expectedCollectionClosure->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl.php')));
-        $expectedCollectionObject->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_object_dsl.php')));
-
-        $this->assertEquals($expectedCollectionClosure, $routeCollectionClosure);
-        $this->assertEquals($expectedCollectionObject, $routeCollectionObject);
-    }
-
-    public function testRoutingConfiguratorCanImportGlobPatterns()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures/glob']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollection = $loader->load('php_dsl.php');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('baz_route');
-        $this->assertSame('AppBundle:Baz:view', $route->getDefault('_controller'));
-    }
-
-    public function testRoutingI18nConfigurator()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollection = $loader->load('php_dsl_i18n.php');
-
-        $expectedCollection = new RouteCollection();
-
-        $expectedCollection->add('foo.en', (new Route('/glish/foo'))->setDefaults(['_locale' => 'en', '_canonical_route' => 'foo']));
-        $expectedCollection->add('bar.en', (new Route('/glish/bar'))->setDefaults(['_locale' => 'en', '_canonical_route' => 'bar']));
-        $expectedCollection->add('baz.en', (new Route('/baz'))->setDefaults(['_locale' => 'en', '_canonical_route' => 'baz']));
-        $expectedCollection->add('c_foo.fr', (new Route('/ench/pub/foo'))->setDefaults(['_locale' => 'fr', '_canonical_route' => 'c_foo']));
-        $expectedCollection->add('c_bar.fr', (new Route('/ench/pub/bar'))->setDefaults(['_locale' => 'fr', '_canonical_route' => 'c_bar']));
-
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_sub_i18n.php')));
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_i18n.php')));
-
-        $this->assertEquals($expectedCollection, $routeCollection);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php
deleted file mode 100644
index e27149f93125cc6ffcb48df71c8f3f2201ba120b..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php
+++ /dev/null
@@ -1,516 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\XmlFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Tests\Fixtures\CustomXmlFileLoader;
-
-class XmlFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new XmlFileLoader($this->getMockBuilder('Symfony\Component\Config\FileLocator')->getMock());
-
-        $this->assertTrue($loader->supports('foo.xml'), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports('foo.xml', 'xml'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports('foo.xml', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoadWithRoute()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validpattern.xml');
-        $route = $routeCollection->get('blog_show');
-
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $route);
-        $this->assertSame('/blog/{slug}', $route->getPath());
-        $this->assertSame('{locale}.example.com', $route->getHost());
-        $this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
-        $this->assertSame('\w+', $route->getRequirement('locale'));
-        $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-        $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-        $this->assertEquals(['https'], $route->getSchemes());
-        $this->assertEquals('context.getMethod() == "GET"', $route->getCondition());
-    }
-
-    public function testLoadWithNamespacePrefix()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('namespaceprefix.xml');
-
-        $this->assertCount(1, $routeCollection->all(), 'One route is loaded');
-
-        $route = $routeCollection->get('blog_show');
-        $this->assertSame('/blog/{slug}', $route->getPath());
-        $this->assertSame('{_locale}.example.com', $route->getHost());
-        $this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
-        $this->assertSame('\w+', $route->getRequirement('slug'));
-        $this->assertSame('en|fr|de', $route->getRequirement('_locale'));
-        $this->assertNull($route->getDefault('slug'));
-        $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-        $this->assertSame(1, $route->getDefault('page'));
-    }
-
-    public function testLoadWithImport()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validresource.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/{foo}/blog/{slug}', $route->getPath());
-            $this->assertSame('123', $route->getDefault('foo'));
-            $this->assertSame('\d+', $route->getRequirement('foo'));
-            $this->assertSame('bar', $route->getOption('foo'));
-            $this->assertSame('', $route->getHost());
-            $this->assertSame('context.getMethod() == "POST"', $route->getCondition());
-        }
-    }
-
-    public function testLoadingRouteWithDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('defaults.xml');
-
-        $this->assertCount(1, $routes);
-
-        $defaultsRoute = $routes->get('defaults');
-
-        $this->assertSame('/defaults', $defaultsRoute->getPath());
-        $this->assertSame('en', $defaultsRoute->getDefault('_locale'));
-        $this->assertSame('html', $defaultsRoute->getDefault('_format'));
-    }
-
-    public function testLoadingImportedRoutesWithDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('importer-with-defaults.xml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('one', $localeRoute = new Route('/defaults/one'));
-        $localeRoute->setDefault('_locale', 'g_locale');
-        $localeRoute->setDefault('_format', 'g_format');
-        $expectedRoutes->add('two', $formatRoute = new Route('/defaults/two'));
-        $formatRoute->setDefault('_locale', 'g_locale');
-        $formatRoute->setDefault('_format', 'g_format');
-        $formatRoute->setDefault('specific', 'imported');
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/imported-with-defaults.xml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/importer-with-defaults.xml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8Route()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('utf8.xml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('app_utf8', $route = new Route('/utf8'));
-        $route->setOption('utf8', true);
-
-        $expectedRoutes->add('app_no_utf8', $route = new Route('/no-utf8'));
-        $route->setOption('utf8', false);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/utf8.xml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8ImportedRoutes()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-utf8.xml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('utf8_one', $one = new Route('/one'));
-        $one->setOption('utf8', true);
-
-        $expectedRoutes->add('utf8_two', $two = new Route('/two'));
-        $two->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/imported-with-utf8.xml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/importer-with-utf8.xml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadLocalized()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('localized.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        $this->assertEquals('/route', $routeCollection->get('localized.fr')->getPath());
-        $this->assertEquals('/path', $routeCollection->get('localized.en')->getPath());
-    }
-
-    public function testLocalizedImports()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routeCollection = $loader->load('importer-with-locale.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        $this->assertEquals('/le-prefix/le-suffix', $routeCollection->get('imported.fr')->getPath());
-        $this->assertEquals('/the-prefix/suffix', $routeCollection->get('imported.en')->getPath());
-    }
-
-    public function testLocalizedImportsOfNotLocalizedRoutes()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routeCollection = $loader->load('importer-with-locale-imports-non-localized-route.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        $this->assertEquals('/le-prefix/suffix', $routeCollection->get('imported.fr')->getPath());
-        $this->assertEquals('/the-prefix/suffix', $routeCollection->get('imported.en')->getPath());
-    }
-
-    /**
-     * @dataProvider getPathsToInvalidFiles
-     */
-    public function testLoadThrowsExceptionWithInvalidFile($filePath)
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load($filePath);
-    }
-
-    /**
-     * @dataProvider getPathsToInvalidFiles
-     */
-    public function testLoadThrowsExceptionWithInvalidFileEvenWithoutSchemaValidation($filePath)
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new CustomXmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load($filePath);
-    }
-
-    public function getPathsToInvalidFiles()
-    {
-        return [['nonvalidnode.xml'], ['nonvalidroute.xml'], ['nonvalid.xml'], ['missing_id.xml'], ['missing_path.xml']];
-    }
-
-    public function testDocTypeIsNotAllowed()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Document types are not allowed.');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load('withdoctype.xml');
-    }
-
-    public function testNullValues()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('null_values.xml');
-        $route = $routeCollection->get('blog_show');
-
-        $this->assertTrue($route->hasDefault('foo'));
-        $this->assertNull($route->getDefault('foo'));
-        $this->assertTrue($route->hasDefault('bar'));
-        $this->assertNull($route->getDefault('bar'));
-        $this->assertEquals('foo', $route->getDefault('foobar'));
-        $this->assertEquals('bar', $route->getDefault('baz'));
-    }
-
-    public function testScalarDataTypeDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('scalar_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'slug' => null,
-                'published' => true,
-                'page' => 1,
-                'price' => 3.5,
-                'archived' => false,
-                'free' => true,
-                'locked' => false,
-                'foo' => null,
-                'bar' => null,
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testListDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [true, 1, 3.5, 'foo'],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testListInListDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_in_list_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [[true, 1, 3.5, 'foo']],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testListInMapDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_in_map_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => ['list' => [true, 1, 3.5, 'foo']],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testMapDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [
-                    'public' => true,
-                    'page' => 1,
-                    'price' => 3.5,
-                    'title' => 'foo',
-                ],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testMapInListDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_in_list_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [[
-                    'public' => true,
-                    'page' => 1,
-                    'price' => 3.5,
-                    'title' => 'foo',
-                ]],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testMapInMapDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_in_map_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => ['map' => [
-                    'public' => true,
-                    'page' => 1,
-                    'price' => 3.5,
-                    'title' => 'foo',
-                ]],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testNullValuesInList()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_null_values.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame([null, null, null, null, null, null], $route->getDefault('list'));
-    }
-
-    public function testNullValuesInMap()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_null_values.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                'boolean' => null,
-                'integer' => null,
-                'float' => null,
-                'string' => null,
-                'list' => null,
-                'map' => null,
-            ],
-            $route->getDefault('map')
-        );
-    }
-
-    public function testLoadRouteWithControllerAttribute()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $route = $routeCollection->get('app_homepage');
-
-        $this->assertSame('AppBundle:Homepage:show', $route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithoutControllerAttribute()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $route = $routeCollection->get('app_logout');
-
-        $this->assertNull($route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithControllerSetInDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $route = $routeCollection->get('app_blog');
-
-        $this->assertSame('AppBundle:Blog:list', $route->getDefault('_controller'));
-    }
-
-    public function testOverrideControllerInDefaults()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" attribute and the defaults key "_controller" for "app_blog"/');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('override_defaults.xml');
-    }
-
-    /**
-     * @dataProvider provideFilesImportingRoutesWithControllers
-     */
-    public function testImportRouteWithController($file)
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load($file);
-
-        $route = $routeCollection->get('app_homepage');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_blog');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_logout');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-    }
-
-    public function provideFilesImportingRoutesWithControllers()
-    {
-        yield ['import_controller.xml'];
-        yield ['import__controller.xml'];
-    }
-
-    public function testImportWithOverriddenController()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" attribute and the defaults key "_controller" for the "import" tag/');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('import_override_defaults.xml');
-    }
-
-    public function testImportRouteWithGlobMatchingSingleFile()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_single.xml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithGlobMatchingMultipleFiles()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_multiple.xml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('baz_route');
-        $this->assertSame('AppBundle:Baz:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithNamePrefix()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_name_prefix']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $this->assertNotNull($routeCollection->get('app_blog'));
-        $this->assertEquals('/blog', $routeCollection->get('app_blog')->getPath());
-        $this->assertNotNull($routeCollection->get('api_app_blog'));
-        $this->assertEquals('/api/blog', $routeCollection->get('api_app_blog')->getPath());
-    }
-
-    public function testImportRouteWithNoTrailingSlash()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_no_trailing_slash']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $this->assertEquals('/slash/', $routeCollection->get('a_app_homepage')->getPath());
-        $this->assertEquals('/no-slash', $routeCollection->get('b_app_homepage')->getPath());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/YamlFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/YamlFileLoaderTest.php
deleted file mode 100644
index caad0aa978ea68bb781c2696656ce2a930432f5c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Loader/YamlFileLoaderTest.php
+++ /dev/null
@@ -1,389 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\YamlFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class YamlFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new YamlFileLoader($this->getMockBuilder('Symfony\Component\Config\FileLocator')->getMock());
-
-        $this->assertTrue($loader->supports('foo.yml'), '->supports() returns true if the resource is loadable');
-        $this->assertTrue($loader->supports('foo.yaml'), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports('foo.yml', 'yaml'), '->supports() checks the resource type if specified');
-        $this->assertTrue($loader->supports('foo.yaml', 'yaml'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports('foo.yml', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoadDoesNothingIfEmpty()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $collection = $loader->load('empty.yml');
-
-        $this->assertEquals([], $collection->all());
-        $this->assertEquals([new FileResource(realpath(__DIR__.'/../Fixtures/empty.yml'))], $collection->getResources());
-    }
-
-    /**
-     * @dataProvider getPathsToInvalidFiles
-     */
-    public function testLoadThrowsExceptionWithInvalidFile($filePath)
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load($filePath);
-    }
-
-    public function getPathsToInvalidFiles()
-    {
-        return [
-            ['nonvalid.yml'],
-            ['nonvalid2.yml'],
-            ['incomplete.yml'],
-            ['nonvalidkeys.yml'],
-            ['nonesense_resource_plus_path.yml'],
-            ['nonesense_type_without_resource.yml'],
-            ['bad_format.yml'],
-        ];
-    }
-
-    public function testLoadSpecialRouteName()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('special_route_name.yml');
-        $route = $routeCollection->get('#$péß^a|');
-
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $route);
-        $this->assertSame('/true', $route->getPath());
-    }
-
-    public function testLoadWithRoute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validpattern.yml');
-        $route = $routeCollection->get('blog_show');
-
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $route);
-        $this->assertSame('/blog/{slug}', $route->getPath());
-        $this->assertSame('{locale}.example.com', $route->getHost());
-        $this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
-        $this->assertSame('\w+', $route->getRequirement('locale'));
-        $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-        $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-        $this->assertEquals(['https'], $route->getSchemes());
-        $this->assertEquals('context.getMethod() == "GET"', $route->getCondition());
-    }
-
-    public function testLoadWithResource()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validresource.yml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/{foo}/blog/{slug}', $route->getPath());
-            $this->assertSame('123', $route->getDefault('foo'));
-            $this->assertSame('\d+', $route->getRequirement('foo'));
-            $this->assertSame('bar', $route->getOption('foo'));
-            $this->assertSame('', $route->getHost());
-            $this->assertSame('context.getMethod() == "POST"', $route->getCondition());
-        }
-    }
-
-    public function testLoadRouteWithControllerAttribute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $route = $routeCollection->get('app_homepage');
-
-        $this->assertSame('AppBundle:Homepage:show', $route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithoutControllerAttribute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $route = $routeCollection->get('app_logout');
-
-        $this->assertNull($route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithControllerSetInDefaults()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $route = $routeCollection->get('app_blog');
-
-        $this->assertSame('AppBundle:Blog:list', $route->getDefault('_controller'));
-    }
-
-    public function testOverrideControllerInDefaults()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" key and the defaults key "_controller" for "app_blog"/');
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('override_defaults.yml');
-    }
-
-    /**
-     * @dataProvider provideFilesImportingRoutesWithControllers
-     */
-    public function testImportRouteWithController($file)
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load($file);
-
-        $route = $routeCollection->get('app_homepage');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_blog');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_logout');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-    }
-
-    public function provideFilesImportingRoutesWithControllers()
-    {
-        yield ['import_controller.yml'];
-        yield ['import__controller.yml'];
-    }
-
-    public function testImportWithOverriddenController()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" key and the defaults key "_controller" for "_static"/');
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('import_override_defaults.yml');
-    }
-
-    public function testImportRouteWithGlobMatchingSingleFile()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_single.yml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithGlobMatchingMultipleFiles()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_multiple.yml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('baz_route');
-        $this->assertSame('AppBundle:Baz:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithNamePrefix()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_name_prefix']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $this->assertNotNull($routeCollection->get('app_blog'));
-        $this->assertEquals('/blog', $routeCollection->get('app_blog')->getPath());
-        $this->assertNotNull($routeCollection->get('api_app_blog'));
-        $this->assertEquals('/api/blog', $routeCollection->get('api_app_blog')->getPath());
-    }
-
-    public function testRemoteSourcesAreNotAccepted()
-    {
-        $loader = new YamlFileLoader(new FileLocatorStub());
-        $this->expectException(\InvalidArgumentException::class);
-        $loader->load('http://remote.com/here.yml');
-    }
-
-    public function testLoadingRouteWithDefaults()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('defaults.yml');
-
-        $this->assertCount(1, $routes);
-
-        $defaultsRoute = $routes->get('defaults');
-
-        $this->assertSame('/defaults', $defaultsRoute->getPath());
-        $this->assertSame('en', $defaultsRoute->getDefault('_locale'));
-        $this->assertSame('html', $defaultsRoute->getDefault('_format'));
-    }
-
-    public function testLoadingImportedRoutesWithDefaults()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('importer-with-defaults.yml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('one', $localeRoute = new Route('/defaults/one'));
-        $localeRoute->setDefault('_locale', 'g_locale');
-        $localeRoute->setDefault('_format', 'g_format');
-        $expectedRoutes->add('two', $formatRoute = new Route('/defaults/two'));
-        $formatRoute->setDefault('_locale', 'g_locale');
-        $formatRoute->setDefault('_format', 'g_format');
-        $formatRoute->setDefault('specific', 'imported');
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/imported-with-defaults.yml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/importer-with-defaults.yml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8Route()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('utf8.yml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('some_route', new Route('/'));
-
-        $expectedRoutes->add('some_utf8_route', $route = new Route('/utf8'));
-        $route->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/utf8.yml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8ImportedRoutes()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-utf8.yml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('utf8_one', $one = new Route('/one'));
-        $one->setOption('utf8', true);
-
-        $expectedRoutes->add('utf8_two', $two = new Route('/two'));
-        $two->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/imported-with-utf8.yml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/importer-with-utf8.yml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingLocalizedRoute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('localized-route.yml');
-
-        $this->assertCount(3, $routes);
-    }
-
-    public function testImportingRoutesFromDefinition()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importing-localized-route.yml');
-
-        $this->assertCount(3, $routes);
-        $this->assertEquals('/nl', $routes->get('home.nl')->getPath());
-        $this->assertEquals('/en', $routes->get('home.en')->getPath());
-        $this->assertEquals('/here', $routes->get('not_localized')->getPath());
-    }
-
-    public function testImportingRoutesWithLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-locale.yml');
-
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/nl/voorbeeld', $routes->get('imported.nl')->getPath());
-        $this->assertEquals('/en/example', $routes->get('imported.en')->getPath());
-    }
-
-    public function testImportingNonLocalizedRoutesWithLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-locale-imports-non-localized-route.yml');
-
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/nl/imported', $routes->get('imported.nl')->getPath());
-        $this->assertEquals('/en/imported', $routes->get('imported.en')->getPath());
-    }
-
-    public function testImportingRoutesWithOfficialLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('officially_formatted_locales.yml');
-
-        $this->assertCount(3, $routes);
-        $this->assertEquals('/omelette-au-fromage', $routes->get('official.fr.UTF-8')->getPath());
-        $this->assertEquals('/eu-não-sou-espanhol', $routes->get('official.pt-PT')->getPath());
-        $this->assertEquals('/churrasco', $routes->get('official.pt_BR')->getPath());
-    }
-
-    public function testImportingRoutesFromDefinitionMissingLocalePrefix()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $this->expectException(\InvalidArgumentException::class);
-        $loader->load('missing-locale-in-importer.yml');
-    }
-
-    public function testImportingRouteWithoutPathOrLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $this->expectException(\InvalidArgumentException::class);
-        $loader->load('route-without-path-or-locales.yml');
-    }
-
-    public function testImportingWithControllerDefault()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-controller-default.yml');
-        $this->assertCount(3, $routes);
-        $this->assertEquals('DefaultController::defaultAction', $routes->get('home.en')->getDefault('_controller'));
-        $this->assertEquals('DefaultController::defaultAction', $routes->get('home.nl')->getDefault('_controller'));
-        $this->assertEquals('DefaultController::defaultAction', $routes->get('not_localized')->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithNoTrailingSlash()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_no_trailing_slash']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $this->assertEquals('/slash/', $routeCollection->get('a_app_homepage')->getPath());
-        $this->assertEquals('/no-slash', $routeCollection->get('b_app_homepage')->getPath());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation A placeholder name must be a string (0 given). Did you forget to specify the placeholder key for the requirement "\d+" of route "foo" in "%srequirements_without_placeholder_name.yml"?
-     */
-    public function testRequirementsWithoutPlaceholderName()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load('requirements_without_placeholder_name.yml');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php
deleted file mode 100644
index 7fb7dfef9e97bd50bf2e20f5ef1f0c37416207bd..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledRedirectableUrlMatcherTest extends RedirectableUrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        $dumper = new CompiledUrlMatcherDumper($routes);
-        $compiledRoutes = $dumper->getCompiledRoutes();
-
-        return $this->getMockBuilder(TestCompiledRedirectableUrlMatcher::class)
-            ->setConstructorArgs([$compiledRoutes, $context ?: new RequestContext()])
-            ->setMethods(['redirect'])
-            ->getMock();
-    }
-}
-
-class TestCompiledRedirectableUrlMatcher extends CompiledUrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/CompiledUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/CompiledUrlMatcherTest.php
deleted file mode 100644
index 0a93f5ee7531715f3209cebaae359dc1fe2cf9b1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/CompiledUrlMatcherTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledUrlMatcherTest extends UrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        $dumper = new CompiledUrlMatcherDumper($routes);
-
-        return new CompiledUrlMatcher($dumper->getCompiledRoutes(), $context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/DumpedRedirectableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/DumpedRedirectableUrlMatcherTest.php
deleted file mode 100644
index aed006f710c0570e1a9bea6f7f98df4ff0a045e1..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/DumpedRedirectableUrlMatcherTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class DumpedRedirectableUrlMatcherTest extends RedirectableUrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        static $i = 0;
-
-        $class = 'DumpedRedirectableUrlMatcher'.++$i;
-        $dumper = new PhpMatcherDumper($routes);
-        eval('?>'.$dumper->dump(['class' => $class, 'base_class' => 'Symfony\Component\Routing\Tests\Matcher\TestDumpedRedirectableUrlMatcher']));
-
-        return $this->getMockBuilder($class)
-            ->setConstructorArgs([$context ?: new RequestContext()])
-            ->setMethods(['redirect'])
-            ->getMock();
-    }
-}
-
-class TestDumpedRedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/DumpedUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/DumpedUrlMatcherTest.php
deleted file mode 100644
index 1766c04d7ed1b26d123104dcd8ffd5d4fbcc00ed..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/DumpedUrlMatcherTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class DumpedUrlMatcherTest extends UrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        static $i = 0;
-
-        $class = 'DumpedUrlMatcher'.++$i;
-        $dumper = new PhpMatcherDumper($routes);
-        eval('?>'.$dumper->dump(['class' => $class]));
-
-        return new $class($context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php b/vendor/symfony/routing/Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php
deleted file mode 100644
index 744229b3ef9a726f0525ee20b11fa267befa1737..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php
+++ /dev/null
@@ -1,494 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledUrlMatcherDumperTest extends TestCase
-{
-    /**
-     * @var string
-     */
-    private $dumpPath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->dumpPath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_matcher.'.uniqid('CompiledUrlMatcher').'.php';
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->dumpPath);
-    }
-
-    public function testRedirectPreservesUrlEncoding()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo:bar/'));
-
-        $matcher = $this->generateDumpedMatcher($collection);
-        $matcher->expects($this->once())->method('redirect')->with('/foo%3Abar/', 'foo')->willReturn([]);
-
-        $matcher->match('/foo%3Abar');
-    }
-
-    /**
-     * @dataProvider getRouteCollections
-     */
-    public function testDump(RouteCollection $collection, $fixture)
-    {
-        $basePath = __DIR__.'/../../Fixtures/dumper/';
-
-        $dumper = new CompiledUrlMatcherDumper($collection);
-        $this->assertStringEqualsFile($basePath.$fixture, $dumper->dump());
-    }
-
-    public function getRouteCollections()
-    {
-        /* test case 1 */
-
-        $collection = new RouteCollection();
-
-        $collection->add('overridden', new Route('/overridden'));
-
-        // defaults and requirements
-        $collection->add('foo', new Route(
-            '/foo/{bar}',
-            ['def' => 'test'],
-            ['bar' => 'baz|symfony']
-        ));
-        // method requirement
-        $collection->add('bar', new Route(
-            '/bar/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'head']
-        ));
-        // GET method requirement automatically adds HEAD as valid
-        $collection->add('barhead', new Route(
-            '/barhead/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET']
-        ));
-        // simple
-        $collection->add('baz', new Route(
-            '/test/baz'
-        ));
-        // simple with extension
-        $collection->add('baz2', new Route(
-            '/test/baz.html'
-        ));
-        // trailing slash
-        $collection->add('baz3', new Route(
-            '/test/baz3/'
-        ));
-        // trailing slash with variable
-        $collection->add('baz4', new Route(
-            '/test/{foo}/'
-        ));
-        // trailing slash and method
-        $collection->add('baz5', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['post']
-        ));
-        // complex name
-        $collection->add('baz.baz6', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['put']
-        ));
-        // defaults without variable
-        $collection->add('foofoo', new Route(
-            '/foofoo',
-            ['def' => 'test']
-        ));
-        // pattern with quotes
-        $collection->add('quoter', new Route(
-            '/{quoter}',
-            [],
-            ['quoter' => '[\']+']
-        ));
-        // space in pattern
-        $collection->add('space', new Route(
-            '/spa ce'
-        ));
-
-        // prefixes
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden', new Route('/overridden1'));
-        $collection1->add('foo1', (new Route('/{foo}'))->setMethods('PUT'));
-        $collection1->add('bar1', new Route('/{bar}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2 = new RouteCollection();
-        $collection2->addCollection($collection1);
-        $collection2->add('overridden', new Route('/{var}', [], ['var' => '.*']));
-        $collection1 = new RouteCollection();
-        $collection1->add('foo2', new Route('/{foo1}'));
-        $collection1->add('bar2', new Route('/{bar1}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2->addCollection($collection1);
-        $collection2->addPrefix('/a');
-        $collection->addCollection($collection2);
-
-        // overridden through addCollection() and multiple sub-collections with no own prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden2', new Route('/old'));
-        $collection1->add('helloWorld', new Route('/hello/{who}', ['who' => 'World!']));
-        $collection2 = new RouteCollection();
-        $collection3 = new RouteCollection();
-        $collection3->add('overridden2', new Route('/new'));
-        $collection3->add('hey', new Route('/hey/'));
-        $collection2->addCollection($collection3);
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/multi');
-        $collection->addCollection($collection1);
-
-        // "dynamic" prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('foo3', new Route('/{foo}'));
-        $collection1->add('bar3', new Route('/{bar}'));
-        $collection1->addPrefix('/b');
-        $collection1->addPrefix('{_locale}');
-        $collection->addCollection($collection1);
-
-        // route between collections
-        $collection->add('ababa', new Route('/ababa'));
-
-        // collection with static prefix but only one route
-        $collection1 = new RouteCollection();
-        $collection1->add('foo4', new Route('/{foo}'));
-        $collection1->addPrefix('/aba');
-        $collection->addCollection($collection1);
-
-        // prefix and host
-
-        $collection1 = new RouteCollection();
-
-        $route1 = new Route('/route1', [], [], [], 'a.example.com');
-        $collection1->add('route1', $route1);
-
-        $route2 = new Route('/c2/route2', [], [], [], 'a.example.com');
-        $collection1->add('route2', $route2);
-
-        $route3 = new Route('/c2/route3', [], [], [], 'b.example.com');
-        $collection1->add('route3', $route3);
-
-        $route4 = new Route('/route4', [], [], [], 'a.example.com');
-        $collection1->add('route4', $route4);
-
-        $route5 = new Route('/route5', [], [], [], 'c.example.com');
-        $collection1->add('route5', $route5);
-
-        $route6 = new Route('/route6', [], [], [], null);
-        $collection1->add('route6', $route6);
-
-        $collection->addCollection($collection1);
-
-        // host and variables
-
-        $collection1 = new RouteCollection();
-
-        $route11 = new Route('/route11', [], [], [], '{var1}.example.com');
-        $collection1->add('route11', $route11);
-
-        $route12 = new Route('/route12', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route12', $route12);
-
-        $route13 = new Route('/route13/{name}', [], [], [], '{var1}.example.com');
-        $collection1->add('route13', $route13);
-
-        $route14 = new Route('/route14/{name}', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route14', $route14);
-
-        $route15 = new Route('/route15/{name}', [], [], [], 'c.example.com');
-        $collection1->add('route15', $route15);
-
-        $route16 = new Route('/route16/{name}', ['var1' => 'val'], [], [], null);
-        $collection1->add('route16', $route16);
-
-        $route17 = new Route('/route17', [], [], [], null);
-        $collection1->add('route17', $route17);
-
-        $collection->addCollection($collection1);
-
-        // multiple sub-collections with a single route and a prefix each
-        $collection1 = new RouteCollection();
-        $collection1->add('a', new Route('/a...'));
-        $collection2 = new RouteCollection();
-        $collection2->add('b', new Route('/{var}'));
-        $collection3 = new RouteCollection();
-        $collection3->add('c', new Route('/{var}'));
-        $collection3->addPrefix('/c');
-        $collection2->addCollection($collection3);
-        $collection2->addPrefix('/b');
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/a');
-        $collection->addCollection($collection1);
-
-        /* test case 2 */
-
-        $redirectCollection = clone $collection;
-
-        // force HTTPS redirection
-        $redirectCollection->add('secure', new Route(
-            '/secure',
-            [],
-            [],
-            [],
-            '',
-            ['https']
-        ));
-
-        // force HTTP redirection
-        $redirectCollection->add('nonsecure', new Route(
-            '/nonsecure',
-            [],
-            [],
-            [],
-            '',
-            ['http']
-        ));
-
-        /* test case 3 */
-
-        $rootprefixCollection = new RouteCollection();
-        $rootprefixCollection->add('static', new Route('/test'));
-        $rootprefixCollection->add('dynamic', new Route('/{var}'));
-        $rootprefixCollection->addPrefix('rootprefix');
-        $route = new Route('/with-condition');
-        $route->setCondition('context.getMethod() == "GET"');
-        $rootprefixCollection->add('with-condition', $route);
-
-        /* test case 4 */
-        $headMatchCasesCollection = new RouteCollection();
-        $headMatchCasesCollection->add('just_head', new Route(
-            '/just_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD']
-        ));
-        $headMatchCasesCollection->add('head_and_get', new Route(
-            '/head_and_get',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD', 'GET']
-        ));
-        $headMatchCasesCollection->add('get_and_head', new Route(
-            '/get_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('post_and_head', new Route(
-            '/post_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['POST', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('put_and_post', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'POST']
-        ));
-        $headMatchCasesCollection->add('put_and_get_and_head', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'GET', 'HEAD']
-        ));
-
-        /* test case 5 */
-        $groupOptimisedCollection = new RouteCollection();
-        $groupOptimisedCollection->add('a_first', new Route('/a/11'));
-        $groupOptimisedCollection->add('a_second', new Route('/a/22'));
-        $groupOptimisedCollection->add('a_third', new Route('/a/333'));
-        $groupOptimisedCollection->add('a_wildcard', new Route('/{param}'));
-        $groupOptimisedCollection->add('a_fourth', new Route('/a/44/'));
-        $groupOptimisedCollection->add('a_fifth', new Route('/a/55/'));
-        $groupOptimisedCollection->add('a_sixth', new Route('/a/66/'));
-        $groupOptimisedCollection->add('nested_wildcard', new Route('/nested/{param}'));
-        $groupOptimisedCollection->add('nested_a', new Route('/nested/group/a/'));
-        $groupOptimisedCollection->add('nested_b', new Route('/nested/group/b/'));
-        $groupOptimisedCollection->add('nested_c', new Route('/nested/group/c/'));
-
-        $groupOptimisedCollection->add('slashed_a', new Route('/slashed/group/'));
-        $groupOptimisedCollection->add('slashed_b', new Route('/slashed/group/b/'));
-        $groupOptimisedCollection->add('slashed_c', new Route('/slashed/group/c/'));
-
-        /* test case 6 & 7 */
-        $trailingSlashCollection = new RouteCollection();
-        $trailingSlashCollection->add('simple_trailing_slash_no_methods', new Route('/trailing/simple/no-methods/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_trailing_slash_GET_method', new Route('/trailing/simple/get-method/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_trailing_slash_HEAD_method', new Route('/trailing/simple/head-method/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_trailing_slash_POST_method', new Route('/trailing/simple/post-method/', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_trailing_slash_no_methods', new Route('/trailing/regex/no-methods/{param}/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_trailing_slash_GET_method', new Route('/trailing/regex/get-method/{param}/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_trailing_slash_HEAD_method', new Route('/trailing/regex/head-method/{param}/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_trailing_slash_POST_method', new Route('/trailing/regex/post-method/{param}/', [], [], [], '', [], ['POST']));
-
-        $trailingSlashCollection->add('simple_not_trailing_slash_no_methods', new Route('/not-trailing/simple/no-methods', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_not_trailing_slash_GET_method', new Route('/not-trailing/simple/get-method', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_HEAD_method', new Route('/not-trailing/simple/head-method', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_POST_method', new Route('/not-trailing/simple/post-method', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_no_methods', new Route('/not-trailing/regex/no-methods/{param}', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_not_trailing_slash_GET_method', new Route('/not-trailing/regex/get-method/{param}', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_HEAD_method', new Route('/not-trailing/regex/head-method/{param}', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_POST_method', new Route('/not-trailing/regex/post-method/{param}', [], [], [], '', [], ['POST']));
-
-        /* test case 8 */
-        $unicodeCollection = new RouteCollection();
-        $unicodeCollection->add('a', new Route('/{a}', [], ['a' => 'a'], ['utf8' => false]));
-        $unicodeCollection->add('b', new Route('/{a}', [], ['a' => '.'], ['utf8' => true]));
-        $unicodeCollection->add('c', new Route('/{a}', [], ['a' => '.'], ['utf8' => false]));
-
-        /* test case 9 */
-        $hostTreeCollection = new RouteCollection();
-        $hostTreeCollection->add('a', (new Route('/'))->setHost('{d}.e.c.b.a'));
-        $hostTreeCollection->add('b', (new Route('/'))->setHost('d.c.b.a'));
-        $hostTreeCollection->add('c', (new Route('/'))->setHost('{e}.e.c.b.a'));
-
-        /* test case 10 */
-        $chunkedCollection = new RouteCollection();
-        for ($i = 0; $i < 1000; ++$i) {
-            $h = substr(md5($i), 0, 6);
-            $chunkedCollection->add('_'.$i, new Route('/'.$h.'/{a}/{b}/{c}/'.$h));
-        }
-
-        /* test case 11 */
-        $demoCollection = new RouteCollection();
-        $demoCollection->add('a', new Route('/admin/post/'));
-        $demoCollection->add('b', new Route('/admin/post/new'));
-        $demoCollection->add('c', (new Route('/admin/post/{id}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('d', (new Route('/admin/post/{id}/edit'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('e', (new Route('/admin/post/{id}/delete'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('f', new Route('/blog/'));
-        $demoCollection->add('g', new Route('/blog/rss.xml'));
-        $demoCollection->add('h', (new Route('/blog/page/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('i', (new Route('/blog/posts/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('j', (new Route('/blog/comments/{id}/new'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('k', new Route('/blog/search'));
-        $demoCollection->add('l', new Route('/login'));
-        $demoCollection->add('m', new Route('/logout'));
-        $demoCollection->addPrefix('/{_locale}');
-        $demoCollection->add('n', new Route('/{_locale}'));
-        $demoCollection->addRequirements(['_locale' => 'en|fr']);
-        $demoCollection->addDefaults(['_locale' => 'en']);
-
-        /* test case 12 */
-        $suffixCollection = new RouteCollection();
-        $suffixCollection->add('r1', new Route('abc{foo}/1'));
-        $suffixCollection->add('r2', new Route('abc{foo}/2'));
-        $suffixCollection->add('r10', new Route('abc{foo}/10'));
-        $suffixCollection->add('r20', new Route('abc{foo}/20'));
-        $suffixCollection->add('r100', new Route('abc{foo}/100'));
-        $suffixCollection->add('r200', new Route('abc{foo}/200'));
-
-        /* test case 13 */
-        $hostCollection = new RouteCollection();
-        $hostCollection->add('r1', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-        $hostCollection->add('r2', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-
-        return [
-           [new RouteCollection(), 'compiled_url_matcher0.php'],
-           [$collection, 'compiled_url_matcher1.php'],
-           [$redirectCollection, 'compiled_url_matcher2.php'],
-           [$rootprefixCollection, 'compiled_url_matcher3.php'],
-           [$headMatchCasesCollection, 'compiled_url_matcher4.php'],
-           [$groupOptimisedCollection, 'compiled_url_matcher5.php'],
-           [$trailingSlashCollection, 'compiled_url_matcher6.php'],
-           [$trailingSlashCollection, 'compiled_url_matcher7.php'],
-           [$unicodeCollection, 'compiled_url_matcher8.php'],
-           [$hostTreeCollection, 'compiled_url_matcher9.php'],
-           [$chunkedCollection, 'compiled_url_matcher10.php'],
-           [$demoCollection, 'compiled_url_matcher11.php'],
-           [$suffixCollection, 'compiled_url_matcher12.php'],
-           [$hostCollection, 'compiled_url_matcher13.php'],
-        ];
-    }
-
-    private function generateDumpedMatcher(RouteCollection $collection)
-    {
-        $dumper = new CompiledUrlMatcherDumper($collection);
-        $code = $dumper->dump();
-
-        file_put_contents($this->dumpPath, $code);
-        $compiledRoutes = require $this->dumpPath;
-
-        return $this->getMockBuilder(TestCompiledUrlMatcher::class)
-            ->setConstructorArgs([$compiledRoutes, new RequestContext()])
-            ->setMethods(['redirect'])
-            ->getMock();
-    }
-
-    public function testGenerateDumperMatcherWithObject()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Symfony\Component\Routing\Route cannot contain objects');
-        $routeCollection = new RouteCollection();
-        $routeCollection->add('_', new Route('/', [new \stdClass()]));
-        $dumper = new CompiledUrlMatcherDumper($routeCollection);
-        $dumper->dump();
-    }
-}
-
-class TestCompiledUrlMatcher extends CompiledUrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php b/vendor/symfony/routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php
deleted file mode 100644
index 4c15451209b0e3d68a0a611697f683c0d86e65f6..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php
+++ /dev/null
@@ -1,511 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class PhpMatcherDumperTest extends TestCase
-{
-    /**
-     * @var string
-     */
-    private $matcherClass;
-
-    /**
-     * @var string
-     */
-    private $dumpPath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->matcherClass = uniqid('ProjectUrlMatcher');
-        $this->dumpPath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_matcher.'.$this->matcherClass.'.php';
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->dumpPath);
-    }
-
-    public function testRedirectPreservesUrlEncoding()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo:bar/'));
-
-        $class = $this->generateDumpedMatcher($collection, true);
-
-        $matcher = $this->getMockBuilder($class)
-                        ->setMethods(['redirect'])
-                        ->setConstructorArgs([new RequestContext()])
-                        ->getMock();
-
-        $matcher->expects($this->once())->method('redirect')->with('/foo%3Abar/', 'foo')->willReturn([]);
-
-        $matcher->match('/foo%3Abar');
-    }
-
-    /**
-     * @dataProvider getRouteCollections
-     */
-    public function testDump(RouteCollection $collection, $fixture, $options = [])
-    {
-        $basePath = __DIR__.'/../../Fixtures/dumper/';
-
-        $dumper = new PhpMatcherDumper($collection);
-        $this->assertStringEqualsFile($basePath.$fixture, $dumper->dump($options), '->dump() correctly dumps routes as optimized PHP code.');
-    }
-
-    public function getRouteCollections()
-    {
-        /* test case 1 */
-
-        $collection = new RouteCollection();
-
-        $collection->add('overridden', new Route('/overridden'));
-
-        // defaults and requirements
-        $collection->add('foo', new Route(
-            '/foo/{bar}',
-            ['def' => 'test'],
-            ['bar' => 'baz|symfony']
-        ));
-        // method requirement
-        $collection->add('bar', new Route(
-            '/bar/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'head']
-        ));
-        // GET method requirement automatically adds HEAD as valid
-        $collection->add('barhead', new Route(
-            '/barhead/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET']
-        ));
-        // simple
-        $collection->add('baz', new Route(
-            '/test/baz'
-        ));
-        // simple with extension
-        $collection->add('baz2', new Route(
-            '/test/baz.html'
-        ));
-        // trailing slash
-        $collection->add('baz3', new Route(
-            '/test/baz3/'
-        ));
-        // trailing slash with variable
-        $collection->add('baz4', new Route(
-            '/test/{foo}/'
-        ));
-        // trailing slash and method
-        $collection->add('baz5', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['post']
-        ));
-        // complex name
-        $collection->add('baz.baz6', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['put']
-        ));
-        // defaults without variable
-        $collection->add('foofoo', new Route(
-            '/foofoo',
-            ['def' => 'test']
-        ));
-        // pattern with quotes
-        $collection->add('quoter', new Route(
-            '/{quoter}',
-            [],
-            ['quoter' => '[\']+']
-        ));
-        // space in pattern
-        $collection->add('space', new Route(
-            '/spa ce'
-        ));
-
-        // prefixes
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden', new Route('/overridden1'));
-        $collection1->add('foo1', (new Route('/{foo}'))->setMethods('PUT'));
-        $collection1->add('bar1', new Route('/{bar}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2 = new RouteCollection();
-        $collection2->addCollection($collection1);
-        $collection2->add('overridden', new Route('/{var}', [], ['var' => '.*']));
-        $collection1 = new RouteCollection();
-        $collection1->add('foo2', new Route('/{foo1}'));
-        $collection1->add('bar2', new Route('/{bar1}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2->addCollection($collection1);
-        $collection2->addPrefix('/a');
-        $collection->addCollection($collection2);
-
-        // overridden through addCollection() and multiple sub-collections with no own prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden2', new Route('/old'));
-        $collection1->add('helloWorld', new Route('/hello/{who}', ['who' => 'World!']));
-        $collection2 = new RouteCollection();
-        $collection3 = new RouteCollection();
-        $collection3->add('overridden2', new Route('/new'));
-        $collection3->add('hey', new Route('/hey/'));
-        $collection2->addCollection($collection3);
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/multi');
-        $collection->addCollection($collection1);
-
-        // "dynamic" prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('foo3', new Route('/{foo}'));
-        $collection1->add('bar3', new Route('/{bar}'));
-        $collection1->addPrefix('/b');
-        $collection1->addPrefix('{_locale}');
-        $collection->addCollection($collection1);
-
-        // route between collections
-        $collection->add('ababa', new Route('/ababa'));
-
-        // collection with static prefix but only one route
-        $collection1 = new RouteCollection();
-        $collection1->add('foo4', new Route('/{foo}'));
-        $collection1->addPrefix('/aba');
-        $collection->addCollection($collection1);
-
-        // prefix and host
-
-        $collection1 = new RouteCollection();
-
-        $route1 = new Route('/route1', [], [], [], 'a.example.com');
-        $collection1->add('route1', $route1);
-
-        $route2 = new Route('/c2/route2', [], [], [], 'a.example.com');
-        $collection1->add('route2', $route2);
-
-        $route3 = new Route('/c2/route3', [], [], [], 'b.example.com');
-        $collection1->add('route3', $route3);
-
-        $route4 = new Route('/route4', [], [], [], 'a.example.com');
-        $collection1->add('route4', $route4);
-
-        $route5 = new Route('/route5', [], [], [], 'c.example.com');
-        $collection1->add('route5', $route5);
-
-        $route6 = new Route('/route6', [], [], [], null);
-        $collection1->add('route6', $route6);
-
-        $collection->addCollection($collection1);
-
-        // host and variables
-
-        $collection1 = new RouteCollection();
-
-        $route11 = new Route('/route11', [], [], [], '{var1}.example.com');
-        $collection1->add('route11', $route11);
-
-        $route12 = new Route('/route12', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route12', $route12);
-
-        $route13 = new Route('/route13/{name}', [], [], [], '{var1}.example.com');
-        $collection1->add('route13', $route13);
-
-        $route14 = new Route('/route14/{name}', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route14', $route14);
-
-        $route15 = new Route('/route15/{name}', [], [], [], 'c.example.com');
-        $collection1->add('route15', $route15);
-
-        $route16 = new Route('/route16/{name}', ['var1' => 'val'], [], [], null);
-        $collection1->add('route16', $route16);
-
-        $route17 = new Route('/route17', [], [], [], null);
-        $collection1->add('route17', $route17);
-
-        $collection->addCollection($collection1);
-
-        // multiple sub-collections with a single route and a prefix each
-        $collection1 = new RouteCollection();
-        $collection1->add('a', new Route('/a...'));
-        $collection2 = new RouteCollection();
-        $collection2->add('b', new Route('/{var}'));
-        $collection3 = new RouteCollection();
-        $collection3->add('c', new Route('/{var}'));
-        $collection3->addPrefix('/c');
-        $collection2->addCollection($collection3);
-        $collection2->addPrefix('/b');
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/a');
-        $collection->addCollection($collection1);
-
-        /* test case 2 */
-
-        $redirectCollection = clone $collection;
-
-        // force HTTPS redirection
-        $redirectCollection->add('secure', new Route(
-            '/secure',
-            [],
-            [],
-            [],
-            '',
-            ['https']
-        ));
-
-        // force HTTP redirection
-        $redirectCollection->add('nonsecure', new Route(
-            '/nonsecure',
-            [],
-            [],
-            [],
-            '',
-            ['http']
-        ));
-
-        /* test case 3 */
-
-        $rootprefixCollection = new RouteCollection();
-        $rootprefixCollection->add('static', new Route('/test'));
-        $rootprefixCollection->add('dynamic', new Route('/{var}'));
-        $rootprefixCollection->addPrefix('rootprefix');
-        $route = new Route('/with-condition');
-        $route->setCondition('context.getMethod() == "GET"');
-        $rootprefixCollection->add('with-condition', $route);
-
-        /* test case 4 */
-        $headMatchCasesCollection = new RouteCollection();
-        $headMatchCasesCollection->add('just_head', new Route(
-            '/just_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD']
-        ));
-        $headMatchCasesCollection->add('head_and_get', new Route(
-            '/head_and_get',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD', 'GET']
-        ));
-        $headMatchCasesCollection->add('get_and_head', new Route(
-            '/get_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('post_and_head', new Route(
-            '/post_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['POST', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('put_and_post', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'POST']
-        ));
-        $headMatchCasesCollection->add('put_and_get_and_head', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'GET', 'HEAD']
-        ));
-
-        /* test case 5 */
-        $groupOptimisedCollection = new RouteCollection();
-        $groupOptimisedCollection->add('a_first', new Route('/a/11'));
-        $groupOptimisedCollection->add('a_second', new Route('/a/22'));
-        $groupOptimisedCollection->add('a_third', new Route('/a/333'));
-        $groupOptimisedCollection->add('a_wildcard', new Route('/{param}'));
-        $groupOptimisedCollection->add('a_fourth', new Route('/a/44/'));
-        $groupOptimisedCollection->add('a_fifth', new Route('/a/55/'));
-        $groupOptimisedCollection->add('a_sixth', new Route('/a/66/'));
-        $groupOptimisedCollection->add('nested_wildcard', new Route('/nested/{param}'));
-        $groupOptimisedCollection->add('nested_a', new Route('/nested/group/a/'));
-        $groupOptimisedCollection->add('nested_b', new Route('/nested/group/b/'));
-        $groupOptimisedCollection->add('nested_c', new Route('/nested/group/c/'));
-
-        $groupOptimisedCollection->add('slashed_a', new Route('/slashed/group/'));
-        $groupOptimisedCollection->add('slashed_b', new Route('/slashed/group/b/'));
-        $groupOptimisedCollection->add('slashed_c', new Route('/slashed/group/c/'));
-
-        /* test case 6 & 7 */
-        $trailingSlashCollection = new RouteCollection();
-        $trailingSlashCollection->add('simple_trailing_slash_no_methods', new Route('/trailing/simple/no-methods/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_trailing_slash_GET_method', new Route('/trailing/simple/get-method/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_trailing_slash_HEAD_method', new Route('/trailing/simple/head-method/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_trailing_slash_POST_method', new Route('/trailing/simple/post-method/', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_trailing_slash_no_methods', new Route('/trailing/regex/no-methods/{param}/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_trailing_slash_GET_method', new Route('/trailing/regex/get-method/{param}/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_trailing_slash_HEAD_method', new Route('/trailing/regex/head-method/{param}/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_trailing_slash_POST_method', new Route('/trailing/regex/post-method/{param}/', [], [], [], '', [], ['POST']));
-
-        $trailingSlashCollection->add('simple_not_trailing_slash_no_methods', new Route('/not-trailing/simple/no-methods', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_not_trailing_slash_GET_method', new Route('/not-trailing/simple/get-method', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_HEAD_method', new Route('/not-trailing/simple/head-method', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_POST_method', new Route('/not-trailing/simple/post-method', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_no_methods', new Route('/not-trailing/regex/no-methods/{param}', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_not_trailing_slash_GET_method', new Route('/not-trailing/regex/get-method/{param}', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_HEAD_method', new Route('/not-trailing/regex/head-method/{param}', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_POST_method', new Route('/not-trailing/regex/post-method/{param}', [], [], [], '', [], ['POST']));
-
-        /* test case 8 */
-        $unicodeCollection = new RouteCollection();
-        $unicodeCollection->add('a', new Route('/{a}', [], ['a' => 'a'], ['utf8' => false]));
-        $unicodeCollection->add('b', new Route('/{a}', [], ['a' => '.'], ['utf8' => true]));
-        $unicodeCollection->add('c', new Route('/{a}', [], ['a' => '.'], ['utf8' => false]));
-
-        /* test case 9 */
-        $hostTreeCollection = new RouteCollection();
-        $hostTreeCollection->add('a', (new Route('/'))->setHost('{d}.e.c.b.a'));
-        $hostTreeCollection->add('b', (new Route('/'))->setHost('d.c.b.a'));
-        $hostTreeCollection->add('c', (new Route('/'))->setHost('{e}.e.c.b.a'));
-
-        /* test case 10 */
-        $chunkedCollection = new RouteCollection();
-        for ($i = 0; $i < 1000; ++$i) {
-            $h = substr(md5($i), 0, 6);
-            $chunkedCollection->add('_'.$i, new Route('/'.$h.'/{a}/{b}/{c}/'.$h));
-        }
-
-        /* test case 11 */
-        $demoCollection = new RouteCollection();
-        $demoCollection->add('a', new Route('/admin/post/'));
-        $demoCollection->add('b', new Route('/admin/post/new'));
-        $demoCollection->add('c', (new Route('/admin/post/{id}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('d', (new Route('/admin/post/{id}/edit'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('e', (new Route('/admin/post/{id}/delete'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('f', new Route('/blog/'));
-        $demoCollection->add('g', new Route('/blog/rss.xml'));
-        $demoCollection->add('h', (new Route('/blog/page/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('i', (new Route('/blog/posts/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('j', (new Route('/blog/comments/{id}/new'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('k', new Route('/blog/search'));
-        $demoCollection->add('l', new Route('/login'));
-        $demoCollection->add('m', new Route('/logout'));
-        $demoCollection->addPrefix('/{_locale}');
-        $demoCollection->add('n', new Route('/{_locale}'));
-        $demoCollection->addRequirements(['_locale' => 'en|fr']);
-        $demoCollection->addDefaults(['_locale' => 'en']);
-
-        /* test case 12 */
-        $suffixCollection = new RouteCollection();
-        $suffixCollection->add('r1', new Route('abc{foo}/1'));
-        $suffixCollection->add('r2', new Route('abc{foo}/2'));
-        $suffixCollection->add('r10', new Route('abc{foo}/10'));
-        $suffixCollection->add('r20', new Route('abc{foo}/20'));
-        $suffixCollection->add('r100', new Route('abc{foo}/100'));
-        $suffixCollection->add('r200', new Route('abc{foo}/200'));
-
-        /* test case 13 */
-        $hostCollection = new RouteCollection();
-        $hostCollection->add('r1', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-        $hostCollection->add('r2', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-
-        return [
-           [new RouteCollection(), 'url_matcher0.php', []],
-           [$collection, 'url_matcher1.php', []],
-           [$redirectCollection, 'url_matcher2.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$rootprefixCollection, 'url_matcher3.php', []],
-           [$headMatchCasesCollection, 'url_matcher4.php', []],
-           [$groupOptimisedCollection, 'url_matcher5.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$trailingSlashCollection, 'url_matcher6.php', []],
-           [$trailingSlashCollection, 'url_matcher7.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$unicodeCollection, 'url_matcher8.php', []],
-           [$hostTreeCollection, 'url_matcher9.php', []],
-           [$chunkedCollection, 'url_matcher10.php', []],
-           [$demoCollection, 'url_matcher11.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$suffixCollection, 'url_matcher12.php', []],
-           [$hostCollection, 'url_matcher13.php', []],
-        ];
-    }
-
-    private function generateDumpedMatcher(RouteCollection $collection, $redirectableStub = false)
-    {
-        $options = ['class' => $this->matcherClass];
-
-        if ($redirectableStub) {
-            $options['base_class'] = '\Symfony\Component\Routing\Tests\Matcher\Dumper\RedirectableUrlMatcherStub';
-        }
-
-        $dumper = new PhpMatcherDumper($collection);
-        $code = $dumper->dump($options);
-
-        file_put_contents($this->dumpPath, $code);
-        include $this->dumpPath;
-
-        return $this->matcherClass;
-    }
-
-    public function testGenerateDumperMatcherWithObject()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Symfony\Component\Routing\Route cannot contain objects');
-        $routeCollection = new RouteCollection();
-        $routeCollection->add('_', new Route('/', [new \stdClass()]));
-        $dumper = new PhpMatcherDumper($routeCollection);
-        $dumper->dump();
-    }
-}
-
-abstract class RedirectableUrlMatcherStub extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php b/vendor/symfony/routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php
deleted file mode 100644
index fe5014fc80007240bc519614920a4e2101010547..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Matcher\Dumper\StaticPrefixCollection;
-use Symfony\Component\Routing\Route;
-
-class StaticPrefixCollectionTest extends TestCase
-{
-    /**
-     * @dataProvider routeProvider
-     */
-    public function testGrouping(array $routes, $expected)
-    {
-        $collection = new StaticPrefixCollection('/');
-
-        foreach ($routes as $route) {
-            list($path, $name) = $route;
-            $staticPrefix = (new Route($path))->compile()->getStaticPrefix();
-            $collection->addRoute($staticPrefix, [$name]);
-        }
-
-        $dumped = $this->dumpCollection($collection);
-        $this->assertEquals($expected, $dumped);
-    }
-
-    public function routeProvider()
-    {
-        return [
-            'Simple - not nested' => [
-                [
-                    ['/', 'root'],
-                    ['/prefix/segment/', 'prefix_segment'],
-                    ['/leading/segment/', 'leading_segment'],
-                ],
-                <<<EOF
-root
-prefix_segment
-leading_segment
-EOF
-            ],
-            'Nested - small group' => [
-                [
-                    ['/', 'root'],
-                    ['/prefix/segment/aa', 'prefix_segment'],
-                    ['/prefix/segment/bb', 'leading_segment'],
-                ],
-                <<<EOF
-root
-/prefix/segment/
--> prefix_segment
--> leading_segment
-EOF
-            ],
-            'Nested - contains item at intersection' => [
-                [
-                    ['/', 'root'],
-                    ['/prefix/segment/', 'prefix_segment'],
-                    ['/prefix/segment/bb', 'leading_segment'],
-                ],
-                <<<EOF
-root
-/prefix/segment/
--> prefix_segment
--> leading_segment
-EOF
-            ],
-            'Simple one level nesting' => [
-                [
-                    ['/', 'root'],
-                    ['/group/segment/', 'nested_segment'],
-                    ['/group/thing/', 'some_segment'],
-                    ['/group/other/', 'other_segment'],
-                ],
-                <<<EOF
-root
-/group/
--> nested_segment
--> some_segment
--> other_segment
-EOF
-            ],
-            'Retain matching order with groups' => [
-                [
-                    ['/group/aa/', 'aa'],
-                    ['/group/bb/', 'bb'],
-                    ['/group/cc/', 'cc'],
-                    ['/(.*)', 'root'],
-                    ['/group/dd/', 'dd'],
-                    ['/group/ee/', 'ee'],
-                    ['/group/ff/', 'ff'],
-                ],
-                <<<EOF
-/group/
--> aa
--> bb
--> cc
-root
-/group/
--> dd
--> ee
--> ff
-EOF
-            ],
-            'Retain complex matching order with groups at base' => [
-                [
-                    ['/aaa/111/', 'first_aaa'],
-                    ['/prefixed/group/aa/', 'aa'],
-                    ['/prefixed/group/bb/', 'bb'],
-                    ['/prefixed/group/cc/', 'cc'],
-                    ['/prefixed/(.*)', 'root'],
-                    ['/prefixed/group/dd/', 'dd'],
-                    ['/prefixed/group/ee/', 'ee'],
-                    ['/prefixed/', 'parent'],
-                    ['/prefixed/group/ff/', 'ff'],
-                    ['/aaa/222/', 'second_aaa'],
-                    ['/aaa/333/', 'third_aaa'],
-                ],
-                <<<EOF
-/aaa/
--> first_aaa
--> second_aaa
--> third_aaa
-/prefixed/
--> /prefixed/group/
--> -> aa
--> -> bb
--> -> cc
--> root
--> /prefixed/group/
--> -> dd
--> -> ee
--> -> ff
--> parent
-EOF
-            ],
-
-            'Group regardless of segments' => [
-                [
-                    ['/aaa-111/', 'a1'],
-                    ['/aaa-222/', 'a2'],
-                    ['/aaa-333/', 'a3'],
-                    ['/group-aa/', 'g1'],
-                    ['/group-bb/', 'g2'],
-                    ['/group-cc/', 'g3'],
-                ],
-                <<<EOF
-/aaa-
--> a1
--> a2
--> a3
-/group-
--> g1
--> g2
--> g3
-EOF
-            ],
-        ];
-    }
-
-    private function dumpCollection(StaticPrefixCollection $collection, $prefix = '')
-    {
-        $lines = [];
-
-        foreach ($collection->getRoutes() as $item) {
-            if ($item instanceof StaticPrefixCollection) {
-                $lines[] = $prefix.$item->getPrefix();
-                $lines[] = $this->dumpCollection($item, $prefix.'-> ');
-            } else {
-                $lines[] = $prefix.implode(' ', $item);
-            }
-        }
-
-        return implode("\n", $lines);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/RedirectableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/RedirectableUrlMatcherTest.php
deleted file mode 100644
index 1461b4b911b9c012bc5dea2658f7aeca03c7d730..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/RedirectableUrlMatcherTest.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class RedirectableUrlMatcherTest extends UrlMatcherTest
-{
-    public function testMissingTrailingSlash()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->willReturn([]);
-        $matcher->match('/foo');
-    }
-
-    public function testExtraTrailingSlash()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->willReturn([]);
-        $matcher->match('/foo/');
-    }
-
-    public function testRedirectWhenNoSlashForNonSafeMethod()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo');
-    }
-
-    public function testSchemeRedirectRedirectsToFirstScheme()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['FTP', 'HTTPS']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/foo', 'foo', 'ftp')
-            ->willReturn(['_route' => 'foo'])
-        ;
-        $matcher->match('/foo');
-    }
-
-    public function testNoSchemaRedirectIfOneOfMultipleSchemesMatches()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https', 'http']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->never())
-            ->method('redirect');
-        $matcher->match('/foo');
-    }
-
-    public function testSchemeRedirectWithParams()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{bar}', [], [], [], '', ['https']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/foo/baz', 'foo', 'https')
-            ->willReturn(['redirect' => 'value'])
-        ;
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'redirect' => 'value'], $matcher->match('/foo/baz'));
-    }
-
-    public function testSchemeRedirectForRoot()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], [], [], '', ['https']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/', 'foo', 'https')
-            ->willReturn(['redirect' => 'value']);
-        $this->assertEquals(['_route' => 'foo', 'redirect' => 'value'], $matcher->match('/'));
-    }
-
-    public function testSlashRedirectWithParams()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{bar}/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/foo/baz/', 'foo', null)
-            ->willReturn(['redirect' => 'value'])
-        ;
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'redirect' => 'value'], $matcher->match('/foo/baz'));
-    }
-
-    public function testRedirectPreservesUrlEncoding()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo:bar/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo%3Abar/')->willReturn([]);
-        $matcher->match('/foo%3Abar');
-    }
-
-    public function testSchemeRequirement()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https']));
-        $matcher = $this->getUrlMatcher($coll, new RequestContext());
-        $matcher->expects($this->once())->method('redirect')->with('/foo', 'foo', 'https')->willReturn([]);
-        $this->assertSame(['_route' => 'foo'], $matcher->match('/foo'));
-    }
-
-    public function testFallbackPage()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-        $coll->add('bar', new Route('/{name}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo/', 'foo')->willReturn(['_route' => 'foo']);
-        $this->assertSame(['_route' => 'foo'], $matcher->match('/foo'));
-
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-        $coll->add('bar', new Route('/{name}/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo', 'foo')->willReturn(['_route' => 'foo']);
-        $this->assertSame(['_route' => 'foo'], $matcher->match('/foo/'));
-    }
-
-    public function testMissingTrailingSlashAndScheme()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', (new Route('/foo/'))->setSchemes(['https']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo/', 'foo', 'https')->willReturn([]);
-        $matcher->match('/foo');
-    }
-
-    public function testSlashAndVerbPrecedenceWithRedirection()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/api/customers/{customerId}/contactpersons', [], [], [], '', [], ['post']));
-        $coll->add('b', new Route('/api/customers/{customerId}/contactpersons/', [], [], [], '', [], ['get']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $expected = [
-            '_route' => 'b',
-            'customerId' => '123',
-        ];
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons/'));
-
-        $matcher->expects($this->once())->method('redirect')->with('/api/customers/123/contactpersons/')->willReturn([]);
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons'));
-    }
-
-    public function testNonGreedyTrailingRequirement()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}', [], ['a' => '\d+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/123')->willReturn([]);
-
-        $this->assertEquals(['_route' => 'a', 'a' => '123'], $matcher->match('/123/'));
-    }
-
-    public function testTrailingRequirementWithDefault_A()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/fr-fr/{a}', ['a' => 'aaa'], ['a' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/fr-fr')->willReturn([]);
-
-        $this->assertEquals(['_route' => 'a', 'a' => 'aaa'], $matcher->match('/fr-fr/'));
-    }
-
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        return $this->getMockForAbstractClass('Symfony\Component\Routing\Matcher\RedirectableUrlMatcher', [$routes, $context ?: new RequestContext()]);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/TraceableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/TraceableUrlMatcherTest.php
deleted file mode 100644
index b31f99e0c4964b84196888198beedd8f3ca74ef8..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/TraceableUrlMatcherTest.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Matcher\TraceableUrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class TraceableUrlMatcherTest extends UrlMatcherTest
-{
-    public function test()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/bar/{id}', [], ['id' => '\d+']));
-        $coll->add('bar1', new Route('/bar/{name}', [], ['id' => '\w+'], [], '', [], ['POST']));
-        $coll->add('bar2', new Route('/foo', [], [], [], 'baz'));
-        $coll->add('bar3', new Route('/foo1', [], [], [], 'baz'));
-        $coll->add('bar4', new Route('/foo2', [], [], [], 'baz', [], [], 'context.getMethod() == "GET"'));
-
-        $context = new RequestContext();
-        $context->setHost('baz');
-
-        $matcher = new TraceableUrlMatcher($coll, $context);
-        $traces = $matcher->getTraces('/babar');
-        $this->assertSame([0, 0, 0, 0, 0, 0], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/foo');
-        $this->assertSame([1, 0, 0, 2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/bar/12');
-        $this->assertSame([0, 2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/bar/dd');
-        $this->assertSame([0, 1, 1, 0, 0, 0], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/foo1');
-        $this->assertSame([0, 0, 0, 0, 2], $this->getLevels($traces));
-
-        $context->setMethod('POST');
-        $traces = $matcher->getTraces('/foo');
-        $this->assertSame([2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/bar/dd');
-        $this->assertSame([0, 1, 2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/foo2');
-        $this->assertSame([0, 0, 0, 0, 0, 1], $this->getLevels($traces));
-    }
-
-    public function testMatchRouteOnMultipleHosts()
-    {
-        $routes = new RouteCollection();
-        $routes->add('first', new Route(
-            '/mypath/',
-            ['_controller' => 'MainBundle:Info:first'],
-            [],
-            [],
-            'some.example.com'
-        ));
-
-        $routes->add('second', new Route(
-            '/mypath/',
-            ['_controller' => 'MainBundle:Info:second'],
-            [],
-            [],
-            'another.example.com'
-        ));
-
-        $context = new RequestContext();
-        $context->setHost('baz');
-
-        $matcher = new TraceableUrlMatcher($routes, $context);
-
-        $traces = $matcher->getTraces('/mypath/');
-        $this->assertSame(
-            [TraceableUrlMatcher::ROUTE_ALMOST_MATCHES, TraceableUrlMatcher::ROUTE_ALMOST_MATCHES],
-            $this->getLevels($traces)
-        );
-    }
-
-    public function getLevels($traces)
-    {
-        $levels = [];
-        foreach ($traces as $trace) {
-            $levels[] = $trace['level'];
-        }
-
-        return $levels;
-    }
-
-    public function testRoutesWithConditions()
-    {
-        $routes = new RouteCollection();
-        $routes->add('foo', new Route('/foo', [], [], [], 'baz', [], [], "request.headers.get('User-Agent') matches '/firefox/i'"));
-
-        $context = new RequestContext();
-        $context->setHost('baz');
-
-        $matcher = new TraceableUrlMatcher($routes, $context);
-
-        $notMatchingRequest = Request::create('/foo', 'GET');
-        $traces = $matcher->getTracesForRequest($notMatchingRequest);
-        $this->assertEquals("Condition \"request.headers.get('User-Agent') matches '/firefox/i'\" does not evaluate to \"true\"", $traces[0]['log']);
-
-        $matchingRequest = Request::create('/foo', 'GET', [], [], [], ['HTTP_USER_AGENT' => 'Firefox']);
-        $traces = $matcher->getTracesForRequest($matchingRequest);
-        $this->assertEquals('Route matches!', $traces[0]['log']);
-    }
-
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        return new TraceableUrlMatcher($routes, $context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/UrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/UrlMatcherTest.php
deleted file mode 100644
index c6846ae8b5e643cc70bae18c20af72e47a25395c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/Matcher/UrlMatcherTest.php
+++ /dev/null
@@ -1,947 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class UrlMatcherTest extends TestCase
-{
-    public function testNoMethodSoAllowed()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertIsArray($matcher->match('/foo'));
-    }
-
-    public function testMethodNotAllowed()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', [], ['post']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        try {
-            $matcher->match('/foo');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-            $this->assertEquals(['POST'], $e->getAllowedMethods());
-        }
-    }
-
-    public function testMethodNotAllowedOnRoot()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-
-        try {
-            $matcher->match('/');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-            $this->assertEquals(['GET'], $e->getAllowedMethods());
-        }
-    }
-
-    public function testHeadAllowedWhenRequirementContainsGet()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', [], ['get']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'head'));
-        $this->assertIsArray($matcher->match('/foo'));
-    }
-
-    public function testMethodNotAllowedAggregatesAllowedMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo1', new Route('/foo', [], [], [], '', [], ['post']));
-        $coll->add('foo2', new Route('/foo', [], [], [], '', [], ['put', 'delete']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        try {
-            $matcher->match('/foo');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-            $this->assertEquals(['POST', 'PUT', 'DELETE'], $e->getAllowedMethods());
-        }
-    }
-
-    public function testPatternMatchAndParameterReturn()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo/{bar}'));
-        $matcher = $this->getUrlMatcher($collection);
-        try {
-            $matcher->match('/no-match');
-            $this->fail();
-        } catch (ResourceNotFoundException $e) {
-        }
-
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz'], $matcher->match('/foo/baz'));
-    }
-
-    public function testDefaultsAreMerged()
-    {
-        // test that defaults are merged
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo/{bar}', ['def' => 'test']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'def' => 'test'], $matcher->match('/foo/baz'));
-    }
-
-    public function testMethodIsIgnoredIfNoMethodGiven()
-    {
-        // test that route "method" is ignored if no method is given in the context
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo', [], [], [], '', [], ['get', 'head']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertIsArray($matcher->match('/foo'));
-
-        // route does not match with POST method context
-        $matcher = $this->getUrlMatcher($collection, new RequestContext('', 'post'));
-        try {
-            $matcher->match('/foo');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-        }
-
-        // route does match with GET or HEAD method context
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertIsArray($matcher->match('/foo'));
-        $matcher = $this->getUrlMatcher($collection, new RequestContext('', 'head'));
-        $this->assertIsArray($matcher->match('/foo'));
-    }
-
-    public function testRouteWithOptionalVariableAsFirstSegment()
-    {
-        $collection = new RouteCollection();
-        $collection->add('bar', new Route('/{bar}/foo', ['bar' => 'bar'], ['bar' => 'foo|bar']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'bar'], $matcher->match('/bar/foo'));
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'foo'], $matcher->match('/foo/foo'));
-
-        $collection = new RouteCollection();
-        $collection->add('bar', new Route('/{bar}', ['bar' => 'bar'], ['bar' => 'foo|bar']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'foo'], $matcher->match('/foo'));
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'bar'], $matcher->match('/'));
-    }
-
-    public function testRouteWithOnlyOptionalVariables()
-    {
-        $collection = new RouteCollection();
-        $collection->add('bar', new Route('/{foo}/{bar}', ['foo' => 'foo', 'bar' => 'bar'], []));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'bar', 'foo' => 'foo', 'bar' => 'bar'], $matcher->match('/'));
-        $this->assertEquals(['_route' => 'bar', 'foo' => 'a', 'bar' => 'bar'], $matcher->match('/a'));
-        $this->assertEquals(['_route' => 'bar', 'foo' => 'a', 'bar' => 'b'], $matcher->match('/a/b'));
-    }
-
-    public function testMatchWithPrefixes()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{foo}'));
-        $collection->addPrefix('/b');
-        $collection->addPrefix('/a');
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'foo' => 'foo'], $matcher->match('/a/b/foo'));
-    }
-
-    public function testMatchWithDynamicPrefix()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{foo}'));
-        $collection->addPrefix('/b');
-        $collection->addPrefix('/{_locale}');
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_locale' => 'fr', '_route' => 'foo', 'foo' => 'foo'], $matcher->match('/fr/b/foo'));
-    }
-
-    public function testMatchSpecialRouteName()
-    {
-        $collection = new RouteCollection();
-        $collection->add('$péß^a|', new Route('/bar'));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => '$péß^a|'], $matcher->match('/bar'));
-    }
-
-    public function testMatchImportantVariable()
-    {
-        $collection = new RouteCollection();
-        $collection->add('index', new Route('/index.{!_format}', ['_format' => 'xml']));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'index', '_format' => 'xml'], $matcher->match('/index.xml'));
-    }
-
-    public function testShortPathDoesNotMatchImportantVariable()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-
-        $collection = new RouteCollection();
-        $collection->add('index', new Route('/index.{!_format}', ['_format' => 'xml']));
-
-        $this->getUrlMatcher($collection)->match('/index');
-    }
-
-    public function testTrailingEncodedNewlineIsNotOverlooked()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $matcher->match('/foo%0a');
-    }
-
-    public function testMatchNonAlpha()
-    {
-        $collection = new RouteCollection();
-        $chars = '!"$%éà &\'()*+,./:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ\\[]^_`abcdefghijklmnopqrstuvwxyz{|}~-';
-        $collection->add('foo', new Route('/{foo}/bar', [], ['foo' => '['.preg_quote($chars).']+'], ['utf8' => true]));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'foo' => $chars], $matcher->match('/'.rawurlencode($chars).'/bar'));
-        $this->assertEquals(['_route' => 'foo', 'foo' => $chars], $matcher->match('/'.strtr($chars, ['%' => '%25']).'/bar'));
-    }
-
-    public function testMatchWithDotMetacharacterInRequirements()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{foo}/bar', [], ['foo' => '.+']));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'foo' => "\n"], $matcher->match('/'.urlencode("\n").'/bar'), 'linefeed character is matched');
-    }
-
-    public function testMatchOverriddenRoute()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('foo', new Route('/foo1'));
-
-        $collection->addCollection($collection1);
-
-        $matcher = $this->getUrlMatcher($collection);
-
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo1'));
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $this->assertEquals([], $matcher->match('/foo'));
-    }
-
-    public function testMatchRegression()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}'));
-        $coll->add('bar', new Route('/foo/bar/{foo}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/foo/bar/bar'));
-
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{bar}'));
-        $matcher = $this->getUrlMatcher($collection);
-        try {
-            $matcher->match('/');
-            $this->fail();
-        } catch (ResourceNotFoundException $e) {
-        }
-    }
-
-    public function testMultipleParams()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo1', new Route('/foo/{a}/{b}'));
-        $coll->add('foo2', new Route('/foo/{a}/test/test/{b}'));
-        $coll->add('foo3', new Route('/foo/{a}/{b}/{c}/{d}'));
-
-        $route = $this->getUrlMatcher($coll)->match('/foo/test/test/test/bar')['_route'];
-
-        $this->assertEquals('foo2', $route);
-    }
-
-    public function testDefaultRequirementForOptionalVariables()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}', ['page' => 'index', '_format' => 'html']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['page' => 'my-page', '_format' => 'xml', '_route' => 'test'], $matcher->match('/my-page.xml'));
-    }
-
-    public function testMatchingIsEager()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{foo}-{bar}-', [], ['foo' => '.+', 'bar' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['foo' => 'text1-text2-text3', 'bar' => 'text4', '_route' => 'test'], $matcher->match('/text1-text2-text3-text4-'));
-    }
-
-    public function testAdjacentVariables()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{w}{x}{y}{z}.{_format}', ['z' => 'default-z', '_format' => 'html'], ['y' => 'y|Y']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        // 'w' eagerly matches as much as possible and the other variables match the remaining chars.
-        // This also shows that the variables w-z must all exclude the separating char (the dot '.' in this case) by default requirement.
-        // Otherwise they would also consume '.xml' and _format would never match as it's an optional variable.
-        $this->assertEquals(['w' => 'wwwww', 'x' => 'x', 'y' => 'Y', 'z' => 'Z', '_format' => 'xml', '_route' => 'test'], $matcher->match('/wwwwwxYZ.xml'));
-        // As 'y' has custom requirement and can only be of value 'y|Y', it will leave  'ZZZ' to variable z.
-        // So with carefully chosen requirements adjacent variables, can be useful.
-        $this->assertEquals(['w' => 'wwwww', 'x' => 'x', 'y' => 'y', 'z' => 'ZZZ', '_format' => 'html', '_route' => 'test'], $matcher->match('/wwwwwxyZZZ'));
-        // z and _format are optional.
-        $this->assertEquals(['w' => 'wwwww', 'x' => 'x', 'y' => 'y', 'z' => 'default-z', '_format' => 'html', '_route' => 'test'], $matcher->match('/wwwwwxy'));
-
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $matcher->match('/wxy.html');
-    }
-
-    public function testOptionalVariableWithNoRealSeparator()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/get{what}', ['what' => 'All']));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['what' => 'All', '_route' => 'test'], $matcher->match('/get'));
-        $this->assertEquals(['what' => 'Sites', '_route' => 'test'], $matcher->match('/getSites'));
-
-        // Usually the character in front of an optional parameter can be left out, e.g. with pattern '/get/{what}' just '/get' would match.
-        // But here the 't' in 'get' is not a separating character, so it makes no sense to match without it.
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $matcher->match('/ge');
-    }
-
-    public function testRequiredVariableWithNoRealSeparator()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/get{what}Suffix'));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['what' => 'Sites', '_route' => 'test'], $matcher->match('/getSitesSuffix'));
-    }
-
-    public function testDefaultRequirementOfVariable()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}'));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['page' => 'index', '_format' => 'mobile.html', '_route' => 'test'], $matcher->match('/index.mobile.html'));
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsSlash()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}'));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $matcher->match('/index.sl/ash');
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsNextSeparator()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}', [], ['_format' => 'html|xml']));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $matcher->match('/do.t.html');
-    }
-
-    public function testMissingTrailingSlash()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo');
-    }
-
-    public function testExtraTrailingSlash()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo/');
-    }
-
-    public function testMissingTrailingSlashForNonSafeMethod()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo');
-    }
-
-    public function testExtraTrailingSlashForNonSafeMethod()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo/');
-    }
-
-    public function testSchemeRequirement()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https']));
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo');
-    }
-
-    public function testSchemeRequirementForNonSafeMethod()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https']));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo');
-    }
-
-    public function testSamePathWithDifferentScheme()
-    {
-        $coll = new RouteCollection();
-        $coll->add('https_route', new Route('/', [], [], [], '', ['https']));
-        $coll->add('http_route', new Route('/', [], [], [], '', ['http']));
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'http_route'], $matcher->match('/'));
-    }
-
-    public function testCondition()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $route = new Route('/foo');
-        $route->setCondition('context.getMethod() == "POST"');
-        $coll->add('foo', $route);
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo');
-    }
-
-    public function testRequestCondition()
-    {
-        $coll = new RouteCollection();
-        $route = new Route('/foo/{bar}');
-        $route->setCondition('request.getBaseUrl() == "/bar"');
-        $coll->add('bar', $route);
-        $route = new Route('/foo/{bar}');
-        $route->setCondition('request.getBaseUrl() == "/sub/front.php" and request.getPathInfo() == "/foo/bar"');
-        $coll->add('foo', $route);
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('/sub/front.php'));
-        $this->assertEquals(['bar' => 'bar', '_route' => 'foo'], $matcher->match('/foo/bar'));
-    }
-
-    public function testDecodeOnce()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['foo' => 'bar%23', '_route' => 'foo'], $matcher->match('/foo/bar%2523'));
-    }
-
-    public function testCannotRelyOnPrefix()
-    {
-        $coll = new RouteCollection();
-
-        $subColl = new RouteCollection();
-        $subColl->add('bar', new Route('/bar'));
-        $subColl->addPrefix('/prefix');
-        // overwrite the pattern, so the prefix is not valid anymore for this route in the collection
-        $subColl->get('bar')->setPath('/new');
-
-        $coll->addCollection($subColl);
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/new'));
-    }
-
-    public function testWithHost()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}', [], [], [], '{locale}.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo', 'locale' => 'en'], $matcher->match('/foo/bar'));
-    }
-
-    public function testWithHostOnRouteCollection()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}'));
-        $coll->add('bar', new Route('/bar/{foo}', [], [], [], '{locale}.example.net'));
-        $coll->setHost('{locale}.example.com');
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo', 'locale' => 'en'], $matcher->match('/foo/bar'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar', 'locale' => 'en'], $matcher->match('/bar/bar'));
-    }
-
-    public function testVariationInTrailingSlashWithHosts()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], 'foo.example.com'));
-        $coll->add('bar', new Route('/foo', [], [], [], 'bar.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariationInTrailingSlashWithHostsInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/foo', [], [], [], 'bar.example.com'));
-        $coll->add('foo', new Route('/foo/', [], [], [], 'foo.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariationInTrailingSlashWithHostsAndVariable()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/{foo}/', [], [], [], 'foo.example.com'));
-        $coll->add('bar', new Route('/{foo}', [], [], [], 'bar.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testVariationInTrailingSlashWithHostsAndVariableInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/{foo}', [], [], [], 'bar.example.com'));
-        $coll->add('foo', new Route('/{foo}/', [], [], [], 'foo.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testVariationInTrailingSlashWithMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/foo', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariationInTrailingSlashWithMethodsInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/foo', [], [], [], '', [], ['GET']));
-        $coll->add('foo', new Route('/foo/', [], [], [], '', [], ['POST']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariableVariationInTrailingSlashWithMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/{foo}/', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/{foo}', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testVariableVariationInTrailingSlashWithMethodsInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/{foo}', [], [], [], '', [], ['GET']));
-        $coll->add('foo', new Route('/{foo}/', [], [], [], '', [], ['POST']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testMixOfStaticAndVariableVariationInTrailingSlashWithHosts()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], 'foo.example.com'));
-        $coll->add('bar', new Route('/{foo}', [], [], [], 'bar.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testMixOfStaticAndVariableVariationInTrailingSlashWithMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/{foo}', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-        $this->assertEquals(['foo' => 'foo', '_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testWithOutHostHostDoesNotMatch()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}', [], [], [], '{locale}.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'example.com'));
-        $matcher->match('/foo/bar');
-    }
-
-    public function testPathIsCaseSensitive()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/locale', [], ['locale' => 'EN|FR|DE']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/en');
-    }
-
-    public function testHostIsCaseInsensitive()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], ['locale' => 'EN|FR|DE'], [], '{locale}.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['_route' => 'foo', 'locale' => 'en'], $matcher->match('/'));
-    }
-
-    public function testNoConfiguration()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\NoConfigurationException');
-        $coll = new RouteCollection();
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/');
-    }
-
-    public function testNestedCollections()
-    {
-        $coll = new RouteCollection();
-
-        $subColl = new RouteCollection();
-        $subColl->add('a', new Route('/a'));
-        $subColl->add('b', new Route('/b'));
-        $subColl->add('c', new Route('/c'));
-        $subColl->addPrefix('/p');
-        $coll->addCollection($subColl);
-
-        $coll->add('baz', new Route('/{baz}'));
-
-        $subColl = new RouteCollection();
-        $subColl->add('buz', new Route('/buz'));
-        $subColl->addPrefix('/prefix');
-        $coll->addCollection($subColl);
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a'], $matcher->match('/p/a'));
-        $this->assertEquals(['_route' => 'baz', 'baz' => 'p'], $matcher->match('/p'));
-        $this->assertEquals(['_route' => 'buz'], $matcher->match('/prefix/buz'));
-    }
-
-    public function testSchemeAndMethodMismatch()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $this->expectExceptionMessage('No routes found for "/".');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], [], [], null, ['https'], ['POST']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/');
-    }
-
-    public function testSiblingRoutes()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', (new Route('/a{a}'))->setMethods('POST'));
-        $coll->add('b', (new Route('/a{a}'))->setMethods('PUT'));
-        $coll->add('c', new Route('/a{a}'));
-        $coll->add('d', (new Route('/b{a}'))->setCondition('false'));
-        $coll->add('e', (new Route('/{b}{a}'))->setCondition('false'));
-        $coll->add('f', (new Route('/{b}{a}'))->setRequirements(['b' => 'b']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'c', 'a' => 'a'], $matcher->match('/aa'));
-        $this->assertEquals(['_route' => 'f', 'b' => 'b', 'a' => 'a'], $matcher->match('/ba'));
-    }
-
-    public function testUnicodeRoute()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}', [], ['a' => '.'], ['utf8' => false]));
-        $coll->add('b', new Route('/{a}', [], ['a' => '.'], ['utf8' => true]));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'b', 'a' => 'é'], $matcher->match('/é'));
-    }
-
-    public function testRequirementWithCapturingGroup()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}/{b}', [], ['a' => '(a|b)']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a', 'a' => 'a', 'b' => 'b'], $matcher->match('/a/b'));
-    }
-
-    public function testDotAllWithCatchAll()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{id}.html', [], ['id' => '.+']));
-        $coll->add('b', new Route('/{all}', [], ['all' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a', 'id' => 'foo/bar'], $matcher->match('/foo/bar.html'));
-    }
-
-    public function testHostPattern()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{app}/{action}/{unused}', [], [], [], '{host}'));
-
-        $expected = [
-            '_route' => 'a',
-            'app' => 'an_app',
-            'action' => 'an_action',
-            'unused' => 'unused',
-            'host' => 'foo',
-        ];
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo'));
-        $this->assertEquals($expected, $matcher->match('/an_app/an_action/unused'));
-    }
-
-    public function testUtf8Prefix()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/é{foo}', [], [], ['utf8' => true]));
-        $coll->add('b', new Route('/è{bar}', [], [], ['utf8' => true]));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('a', $matcher->match('/éo')['_route']);
-    }
-
-    public function testUtf8AndMethodMatching()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/admin/api/list/{shortClassName}/{id}.{_format}', [], [], ['utf8' => true], '', [], ['PUT']));
-        $coll->add('b', new Route('/admin/api/package.{_format}', [], [], [], '', [], ['POST']));
-        $coll->add('c', new Route('/admin/api/package.{_format}', ['_format' => 'json'], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('c', $matcher->match('/admin/api/package.json')['_route']);
-    }
-
-    public function testHostWithDot()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/foo', [], [], [], 'foo.example.com'));
-        $coll->add('b', new Route('/bar/{baz}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('b', $matcher->match('/bar/abc.123')['_route']);
-    }
-
-    public function testSlashVariant()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/foo/{bar}', [], ['bar' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('a', $matcher->match('/foo/')['_route']);
-    }
-
-    public function testSlashVariant2()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/foo/{bar}/', [], ['bar' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a', 'bar' => 'bar'], $matcher->match('/foo/bar/'));
-    }
-
-    public function testSlashWithVerb()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{foo}', [], [], [], '', [], ['put', 'delete']));
-        $coll->add('b', new Route('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertSame(['_route' => 'b'], $matcher->match('/bar/'));
-
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/dav/{foo}', [], ['foo' => '.*'], [], '', [], ['GET', 'OPTIONS']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'OPTIONS'));
-        $expected = [
-            '_route' => 'a',
-            'foo' => 'files/bar/',
-        ];
-        $this->assertEquals($expected, $matcher->match('/dav/files/bar/'));
-    }
-
-    public function testSlashAndVerbPrecedence()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/api/customers/{customerId}/contactpersons/', [], [], [], '', [], ['post']));
-        $coll->add('b', new Route('/api/customers/{customerId}/contactpersons', [], [], [], '', [], ['get']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $expected = [
-            '_route' => 'b',
-            'customerId' => '123',
-        ];
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons'));
-
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/api/customers/{customerId}/contactpersons/', [], [], [], '', [], ['get']));
-        $coll->add('b', new Route('/api/customers/{customerId}/contactpersons', [], [], [], '', [], ['post']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $expected = [
-            '_route' => 'b',
-            'customerId' => '123',
-        ];
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons'));
-    }
-
-    public function testGreedyTrailingRequirement()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}', [], ['a' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'a', 'a' => 'foo'], $matcher->match('/foo'));
-        $this->assertEquals(['_route' => 'a', 'a' => 'foo/'], $matcher->match('/foo/'));
-    }
-
-    public function testTrailingRequirementWithDefault()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/fr-fr/{a}', ['a' => 'aaa'], ['a' => '.+']));
-        $coll->add('b', new Route('/en-en/{b}', ['b' => 'bbb'], ['b' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'a', 'a' => 'aaa'], $matcher->match('/fr-fr'));
-        $this->assertEquals(['_route' => 'a', 'a' => 'AAA'], $matcher->match('/fr-fr/AAA'));
-        $this->assertEquals(['_route' => 'b', 'b' => 'bbb'], $matcher->match('/en-en'));
-        $this->assertEquals(['_route' => 'b', 'b' => 'BBB'], $matcher->match('/en-en/BBB'));
-    }
-
-    public function testTrailingRequirementWithDefault_A()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/fr-fr/{a}', ['a' => 'aaa'], ['a' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->expectException(ResourceNotFoundException::class);
-        $matcher->match('/fr-fr/');
-    }
-
-    public function testTrailingRequirementWithDefault_B()
-    {
-        $coll = new RouteCollection();
-        $coll->add('b', new Route('/en-en/{b}', ['b' => 'bbb'], ['b' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'b', 'b' => ''], $matcher->match('/en-en/'));
-    }
-
-    public function testRestrictiveTrailingRequirementWithStaticRouteAfter()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/hello{_}', [], ['_' => '/(?!/)']));
-        $coll->add('b', new Route('/hello'));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'a', '_' => '/'], $matcher->match('/hello/'));
-    }
-
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        return new UrlMatcher($routes, $context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RequestContextTest.php b/vendor/symfony/routing/Tests/RequestContextTest.php
deleted file mode 100644
index 3d23b0e8947a2e07cd52daad4e9b43e95477f662..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/RequestContextTest.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RequestContext;
-
-class RequestContextTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $requestContext = new RequestContext(
-            'foo',
-            'post',
-            'foo.bar',
-            'HTTPS',
-            8080,
-            444,
-            '/baz',
-            'bar=foobar'
-        );
-
-        $this->assertEquals('foo', $requestContext->getBaseUrl());
-        $this->assertEquals('POST', $requestContext->getMethod());
-        $this->assertEquals('foo.bar', $requestContext->getHost());
-        $this->assertEquals('https', $requestContext->getScheme());
-        $this->assertSame(8080, $requestContext->getHttpPort());
-        $this->assertSame(444, $requestContext->getHttpsPort());
-        $this->assertEquals('/baz', $requestContext->getPathInfo());
-        $this->assertEquals('bar=foobar', $requestContext->getQueryString());
-    }
-
-    public function testFromRequest()
-    {
-        $request = Request::create('https://test.com:444/foo?bar=baz');
-        $requestContext = new RequestContext();
-        $requestContext->setHttpPort(123);
-        $requestContext->fromRequest($request);
-
-        $this->assertEquals('', $requestContext->getBaseUrl());
-        $this->assertEquals('GET', $requestContext->getMethod());
-        $this->assertEquals('test.com', $requestContext->getHost());
-        $this->assertEquals('https', $requestContext->getScheme());
-        $this->assertEquals('/foo', $requestContext->getPathInfo());
-        $this->assertEquals('bar=baz', $requestContext->getQueryString());
-        $this->assertSame(123, $requestContext->getHttpPort());
-        $this->assertSame(444, $requestContext->getHttpsPort());
-
-        $request = Request::create('http://test.com:8080/foo?bar=baz');
-        $requestContext = new RequestContext();
-        $requestContext->setHttpsPort(567);
-        $requestContext->fromRequest($request);
-
-        $this->assertSame(8080, $requestContext->getHttpPort());
-        $this->assertSame(567, $requestContext->getHttpsPort());
-    }
-
-    public function testGetParameters()
-    {
-        $requestContext = new RequestContext();
-        $this->assertEquals([], $requestContext->getParameters());
-
-        $requestContext->setParameters(['foo' => 'bar']);
-        $this->assertEquals(['foo' => 'bar'], $requestContext->getParameters());
-    }
-
-    public function testHasParameter()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setParameters(['foo' => 'bar']);
-
-        $this->assertTrue($requestContext->hasParameter('foo'));
-        $this->assertFalse($requestContext->hasParameter('baz'));
-    }
-
-    public function testGetParameter()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setParameters(['foo' => 'bar']);
-
-        $this->assertEquals('bar', $requestContext->getParameter('foo'));
-        $this->assertNull($requestContext->getParameter('baz'));
-    }
-
-    public function testSetParameter()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setParameter('foo', 'bar');
-
-        $this->assertEquals('bar', $requestContext->getParameter('foo'));
-    }
-
-    public function testMethod()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setMethod('post');
-
-        $this->assertSame('POST', $requestContext->getMethod());
-    }
-
-    public function testScheme()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setScheme('HTTPS');
-
-        $this->assertSame('https', $requestContext->getScheme());
-    }
-
-    public function testHost()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setHost('eXampLe.com');
-
-        $this->assertSame('example.com', $requestContext->getHost());
-    }
-
-    public function testQueryString()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setQueryString(null);
-
-        $this->assertSame('', $requestContext->getQueryString());
-    }
-
-    public function testPort()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setHttpPort('123');
-        $requestContext->setHttpsPort('456');
-
-        $this->assertSame(123, $requestContext->getHttpPort());
-        $this->assertSame(456, $requestContext->getHttpsPort());
-    }
-
-    public function testFluentInterface()
-    {
-        $requestContext = new RequestContext();
-
-        $this->assertSame($requestContext, $requestContext->setBaseUrl('/app.php'));
-        $this->assertSame($requestContext, $requestContext->setPathInfo('/index'));
-        $this->assertSame($requestContext, $requestContext->setMethod('POST'));
-        $this->assertSame($requestContext, $requestContext->setScheme('https'));
-        $this->assertSame($requestContext, $requestContext->setHost('example.com'));
-        $this->assertSame($requestContext, $requestContext->setQueryString('foo=bar'));
-        $this->assertSame($requestContext, $requestContext->setHttpPort(80));
-        $this->assertSame($requestContext, $requestContext->setHttpsPort(443));
-        $this->assertSame($requestContext, $requestContext->setParameters([]));
-        $this->assertSame($requestContext, $requestContext->setParameter('foo', 'bar'));
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouteCollectionBuilderTest.php b/vendor/symfony/routing/Tests/RouteCollectionBuilderTest.php
deleted file mode 100644
index f5042749e2ebb9255031cd88dd25c1516f2d4f7e..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/RouteCollectionBuilderTest.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\YamlFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouteCollectionBuilder;
-
-class RouteCollectionBuilderTest extends TestCase
-{
-    public function testImport()
-    {
-        $resolvedLoader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $resolver = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderResolverInterface')->getMock();
-        $resolver->expects($this->once())
-            ->method('resolve')
-            ->with('admin_routing.yml', 'yaml')
-            ->willReturn($resolvedLoader);
-
-        $originalRoute = new Route('/foo/path');
-        $expectedCollection = new RouteCollection();
-        $expectedCollection->add('one_test_route', $originalRoute);
-        $expectedCollection->addResource(new FileResource(__DIR__.'/Fixtures/file_resource.yml'));
-
-        $resolvedLoader
-            ->expects($this->once())
-            ->method('load')
-            ->with('admin_routing.yml', 'yaml')
-            ->willReturn($expectedCollection);
-
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $loader->expects($this->any())
-            ->method('getResolver')
-            ->willReturn($resolver);
-
-        // import the file!
-        $routes = new RouteCollectionBuilder($loader);
-        $importedRoutes = $routes->import('admin_routing.yml', '/', 'yaml');
-
-        // we should get back a RouteCollectionBuilder
-        $this->assertInstanceOf('Symfony\Component\Routing\RouteCollectionBuilder', $importedRoutes);
-
-        // get the collection back so we can look at it
-        $addedCollection = $importedRoutes->build();
-        $route = $addedCollection->get('one_test_route');
-        $this->assertSame($originalRoute, $route);
-        // should return file_resource.yml, which is in the original collection
-        $this->assertCount(1, $addedCollection->getResources());
-
-        // make sure the routes were imported into the top-level builder
-        $routeCollection = $routes->build();
-        $this->assertCount(1, $routes->build());
-        $this->assertCount(1, $routeCollection->getResources());
-    }
-
-    public function testImportAddResources()
-    {
-        $routeCollectionBuilder = new RouteCollectionBuilder(new YamlFileLoader(new FileLocator([__DIR__.'/Fixtures/'])));
-        $routeCollectionBuilder->import('file_resource.yml');
-        $routeCollection = $routeCollectionBuilder->build();
-
-        $this->assertCount(1, $routeCollection->getResources());
-    }
-
-    public function testImportWithoutLoaderThrowsException()
-    {
-        $this->expectException('BadMethodCallException');
-        $collectionBuilder = new RouteCollectionBuilder();
-        $collectionBuilder->import('routing.yml');
-    }
-
-    public function testAdd()
-    {
-        $collectionBuilder = new RouteCollectionBuilder();
-
-        $addedRoute = $collectionBuilder->add('/checkout', 'AppBundle:Order:checkout');
-        $addedRoute2 = $collectionBuilder->add('/blogs', 'AppBundle:Blog:list', 'blog_list');
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $addedRoute);
-        $this->assertEquals('AppBundle:Order:checkout', $addedRoute->getDefault('_controller'));
-
-        $finalCollection = $collectionBuilder->build();
-        $this->assertSame($addedRoute2, $finalCollection->get('blog_list'));
-    }
-
-    public function testFlushOrdering()
-    {
-        $importedCollection = new RouteCollection();
-        $importedCollection->add('imported_route1', new Route('/imported/foo1'));
-        $importedCollection->add('imported_route2', new Route('/imported/foo2'));
-
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        // make this loader able to do the import - keeps mocking simple
-        $loader->expects($this->any())
-            ->method('supports')
-            ->willReturn(true);
-        $loader
-            ->expects($this->once())
-            ->method('load')
-            ->willReturn($importedCollection);
-
-        $routes = new RouteCollectionBuilder($loader);
-
-        // 1) Add a route
-        $routes->add('/checkout', 'AppBundle:Order:checkout', 'checkout_route');
-        // 2) Import from a file
-        $routes->mount('/', $routes->import('admin_routing.yml'));
-        // 3) Add another route
-        $routes->add('/', 'AppBundle:Default:homepage', 'homepage');
-        // 4) Add another route
-        $routes->add('/admin', 'AppBundle:Admin:dashboard', 'admin_dashboard');
-
-        // set a default value
-        $routes->setDefault('_locale', 'fr');
-
-        $actualCollection = $routes->build();
-
-        $this->assertCount(5, $actualCollection);
-        $actualRouteNames = array_keys($actualCollection->all());
-        $this->assertEquals([
-            'checkout_route',
-            'imported_route1',
-            'imported_route2',
-            'homepage',
-            'admin_dashboard',
-        ], $actualRouteNames);
-
-        // make sure the defaults were set
-        $checkoutRoute = $actualCollection->get('checkout_route');
-        $defaults = $checkoutRoute->getDefaults();
-        $this->assertArrayHasKey('_locale', $defaults);
-        $this->assertEquals('fr', $defaults['_locale']);
-    }
-
-    public function testFlushSetsRouteNames()
-    {
-        $collectionBuilder = new RouteCollectionBuilder();
-
-        // add a "named" route
-        $collectionBuilder->add('/admin', 'AppBundle:Admin:dashboard', 'admin_dashboard');
-        // add an unnamed route
-        $collectionBuilder->add('/blogs', 'AppBundle:Blog:list')
-            ->setMethods(['GET']);
-
-        // integer route names are allowed - they don't confuse things
-        $collectionBuilder->add('/products', 'AppBundle:Product:list', 100);
-
-        $actualCollection = $collectionBuilder->build();
-        $actualRouteNames = array_keys($actualCollection->all());
-        $this->assertEquals([
-            'admin_dashboard',
-            'GET_blogs',
-            '100',
-        ], $actualRouteNames);
-    }
-
-    public function testFlushSetsDetailsOnChildrenRoutes()
-    {
-        $routes = new RouteCollectionBuilder();
-
-        $routes->add('/blogs/{page}', 'listAction', 'blog_list')
-            // unique things for the route
-            ->setDefault('page', 1)
-            ->setRequirement('id', '\d+')
-            ->setOption('expose', true)
-            // things that the collection will try to override (but won't)
-            ->setDefault('_format', 'html')
-            ->setRequirement('_format', 'json|xml')
-            ->setOption('fooBar', true)
-            ->setHost('example.com')
-            ->setCondition('request.isSecure()')
-            ->setSchemes(['https'])
-            ->setMethods(['POST']);
-
-        // a simple route, nothing added to it
-        $routes->add('/blogs/{id}', 'editAction', 'blog_edit');
-
-        // configure the collection itself
-        $routes
-            // things that will not override the child route
-            ->setDefault('_format', 'json')
-            ->setRequirement('_format', 'xml')
-            ->setOption('fooBar', false)
-            ->setHost('symfony.com')
-            ->setCondition('request.query.get("page")==1')
-            // some unique things that should be set on the child
-            ->setDefault('_locale', 'fr')
-            ->setRequirement('_locale', 'fr|en')
-            ->setOption('niceRoute', true)
-            ->setSchemes(['http'])
-            ->setMethods(['GET', 'POST']);
-
-        $collection = $routes->build();
-        $actualListRoute = $collection->get('blog_list');
-
-        $this->assertEquals(1, $actualListRoute->getDefault('page'));
-        $this->assertEquals('\d+', $actualListRoute->getRequirement('id'));
-        $this->assertTrue($actualListRoute->getOption('expose'));
-        // none of these should be overridden
-        $this->assertEquals('html', $actualListRoute->getDefault('_format'));
-        $this->assertEquals('json|xml', $actualListRoute->getRequirement('_format'));
-        $this->assertTrue($actualListRoute->getOption('fooBar'));
-        $this->assertEquals('example.com', $actualListRoute->getHost());
-        $this->assertEquals('request.isSecure()', $actualListRoute->getCondition());
-        $this->assertEquals(['https'], $actualListRoute->getSchemes());
-        $this->assertEquals(['POST'], $actualListRoute->getMethods());
-        // inherited from the main collection
-        $this->assertEquals('fr', $actualListRoute->getDefault('_locale'));
-        $this->assertEquals('fr|en', $actualListRoute->getRequirement('_locale'));
-        $this->assertTrue($actualListRoute->getOption('niceRoute'));
-
-        $actualEditRoute = $collection->get('blog_edit');
-        // inherited from the collection
-        $this->assertEquals('symfony.com', $actualEditRoute->getHost());
-        $this->assertEquals('request.query.get("page")==1', $actualEditRoute->getCondition());
-        $this->assertEquals(['http'], $actualEditRoute->getSchemes());
-        $this->assertEquals(['GET', 'POST'], $actualEditRoute->getMethods());
-    }
-
-    /**
-     * @dataProvider providePrefixTests
-     */
-    public function testFlushPrefixesPaths($collectionPrefix, $routePath, $expectedPath)
-    {
-        $routes = new RouteCollectionBuilder();
-
-        $routes->add($routePath, 'someController', 'test_route');
-
-        $outerRoutes = new RouteCollectionBuilder();
-        $outerRoutes->mount($collectionPrefix, $routes);
-
-        $collection = $outerRoutes->build();
-
-        $this->assertEquals($expectedPath, $collection->get('test_route')->getPath());
-    }
-
-    public function providePrefixTests()
-    {
-        $tests = [];
-        // empty prefix is of course ok
-        $tests[] = ['', '/foo', '/foo'];
-        // normal prefix - does not matter if it's a wildcard
-        $tests[] = ['/{admin}', '/foo', '/{admin}/foo'];
-        // shows that a prefix will always be given the starting slash
-        $tests[] = ['0', '/foo', '/0/foo'];
-
-        // spaces are ok, and double slahses at the end are cleaned
-        $tests[] = ['/ /', '/foo', '/ /foo'];
-
-        return $tests;
-    }
-
-    public function testFlushSetsPrefixedWithMultipleLevels()
-    {
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $routes = new RouteCollectionBuilder($loader);
-
-        $routes->add('homepage', 'MainController::homepageAction', 'homepage');
-
-        $adminRoutes = $routes->createBuilder();
-        $adminRoutes->add('/dashboard', 'AdminController::dashboardAction', 'admin_dashboard');
-
-        // embedded collection under /admin
-        $adminBlogRoutes = $routes->createBuilder();
-        $adminBlogRoutes->add('/new', 'BlogController::newAction', 'admin_blog_new');
-        // mount into admin, but before the parent collection has been mounted
-        $adminRoutes->mount('/blog', $adminBlogRoutes);
-
-        // now mount the /admin routes, above should all still be /blog/admin
-        $routes->mount('/admin', $adminRoutes);
-        // add a route after mounting
-        $adminRoutes->add('/users', 'AdminController::userAction', 'admin_users');
-
-        // add another sub-collection after the mount
-        $otherAdminRoutes = $routes->createBuilder();
-        $otherAdminRoutes->add('/sales', 'StatsController::indexAction', 'admin_stats_sales');
-        $adminRoutes->mount('/stats', $otherAdminRoutes);
-
-        // add a normal collection and see that it is also prefixed
-        $importedCollection = new RouteCollection();
-        $importedCollection->add('imported_route', new Route('/foo'));
-        // make this loader able to do the import - keeps mocking simple
-        $loader->expects($this->any())
-            ->method('supports')
-            ->willReturn(true);
-        $loader
-            ->expects($this->any())
-            ->method('load')
-            ->willReturn($importedCollection);
-        // import this from the /admin route builder
-        $adminRoutes->import('admin.yml', '/imported');
-
-        $collection = $routes->build();
-        $this->assertEquals('/admin/dashboard', $collection->get('admin_dashboard')->getPath(), 'Routes before mounting have the prefix');
-        $this->assertEquals('/admin/users', $collection->get('admin_users')->getPath(), 'Routes after mounting have the prefix');
-        $this->assertEquals('/admin/blog/new', $collection->get('admin_blog_new')->getPath(), 'Sub-collections receive prefix even if mounted before parent prefix');
-        $this->assertEquals('/admin/stats/sales', $collection->get('admin_stats_sales')->getPath(), 'Sub-collections receive prefix if mounted after parent prefix');
-        $this->assertEquals('/admin/imported/foo', $collection->get('imported_route')->getPath(), 'Normal RouteCollections are also prefixed properly');
-    }
-
-    public function testAutomaticRouteNamesDoNotConflict()
-    {
-        $routes = new RouteCollectionBuilder();
-
-        $adminRoutes = $routes->createBuilder();
-        // route 1
-        $adminRoutes->add('/dashboard', '');
-
-        $accountRoutes = $routes->createBuilder();
-        // route 2
-        $accountRoutes->add('/dashboard', '')
-            ->setMethods(['GET']);
-        // route 3
-        $accountRoutes->add('/dashboard', '')
-            ->setMethods(['POST']);
-
-        $routes->mount('/admin', $adminRoutes);
-        $routes->mount('/account', $accountRoutes);
-
-        $collection = $routes->build();
-        // there are 2 routes (i.e. with non-conflicting names)
-        $this->assertCount(3, $collection->all());
-    }
-
-    public function testAddsThePrefixOnlyOnceWhenLoadingMultipleCollections()
-    {
-        $firstCollection = new RouteCollection();
-        $firstCollection->add('a', new Route('/a'));
-
-        $secondCollection = new RouteCollection();
-        $secondCollection->add('b', new Route('/b'));
-
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $loader->expects($this->any())
-            ->method('supports')
-            ->willReturn(true);
-        $loader
-            ->expects($this->any())
-            ->method('load')
-            ->willReturn([$firstCollection, $secondCollection]);
-
-        $routeCollectionBuilder = new RouteCollectionBuilder($loader);
-        $routeCollectionBuilder->import('/directory/recurse/*', '/other/', 'glob');
-        $routes = $routeCollectionBuilder->build()->all();
-
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/other/a', $routes['a']->getPath());
-        $this->assertEquals('/other/b', $routes['b']->getPath());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouteCollectionTest.php b/vendor/symfony/routing/Tests/RouteCollectionTest.php
deleted file mode 100644
index f310d4e5269e1fa1750ce33e47a8f3b1f697d8ac..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/RouteCollectionTest.php
+++ /dev/null
@@ -1,333 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class RouteCollectionTest extends TestCase
-{
-    public function testRoute()
-    {
-        $collection = new RouteCollection();
-        $route = new Route('/foo');
-        $collection->add('foo', $route);
-        $this->assertEquals(['foo' => $route], $collection->all(), '->add() adds a route');
-        $this->assertEquals($route, $collection->get('foo'), '->get() returns a route by name');
-        $this->assertNull($collection->get('bar'), '->get() returns null if a route does not exist');
-    }
-
-    public function testOverriddenRoute()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-        $collection->add('foo', new Route('/foo1'));
-
-        $this->assertEquals('/foo1', $collection->get('foo')->getPath());
-    }
-
-    public function testDeepOverriddenRoute()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('foo', new Route('/foo1'));
-
-        $collection2 = new RouteCollection();
-        $collection2->add('foo', new Route('/foo2'));
-
-        $collection1->addCollection($collection2);
-        $collection->addCollection($collection1);
-
-        $this->assertEquals('/foo2', $collection1->get('foo')->getPath());
-        $this->assertEquals('/foo2', $collection->get('foo')->getPath());
-    }
-
-    public function testIterator()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', $bar = new Route('/bar'));
-        $collection1->add('foo', $foo = new Route('/foo-new'));
-        $collection->addCollection($collection1);
-        $collection->add('last', $last = new Route('/last'));
-
-        $this->assertInstanceOf('\ArrayIterator', $collection->getIterator());
-        $this->assertSame(['bar' => $bar, 'foo' => $foo, 'last' => $last], $collection->getIterator()->getArrayCopy());
-    }
-
-    public function testCount()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', new Route('/bar'));
-        $collection->addCollection($collection1);
-
-        $this->assertCount(2, $collection);
-    }
-
-    public function testAddCollection()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', $bar = new Route('/bar'));
-        $collection1->add('foo', $foo = new Route('/foo-new'));
-
-        $collection2 = new RouteCollection();
-        $collection2->add('grandchild', $grandchild = new Route('/grandchild'));
-
-        $collection1->addCollection($collection2);
-        $collection->addCollection($collection1);
-        $collection->add('last', $last = new Route('/last'));
-
-        $this->assertSame(['bar' => $bar, 'foo' => $foo, 'grandchild' => $grandchild, 'last' => $last], $collection->all(),
-            '->addCollection() imports routes of another collection, overrides if necessary and adds them at the end');
-    }
-
-    public function testAddCollectionWithResources()
-    {
-        $collection = new RouteCollection();
-        $collection->addResource($foo = new FileResource(__DIR__.'/Fixtures/foo.xml'));
-        $collection1 = new RouteCollection();
-        $collection1->addResource($foo1 = new FileResource(__DIR__.'/Fixtures/foo1.xml'));
-        $collection->addCollection($collection1);
-        $this->assertEquals([$foo, $foo1], $collection->getResources(), '->addCollection() merges resources');
-    }
-
-    public function testAddDefaultsAndRequirementsAndOptions()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{placeholder}'));
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', new Route('/{placeholder}',
-            ['_controller' => 'fixed', 'placeholder' => 'default'], ['placeholder' => '.+'], ['option' => 'value'])
-        );
-        $collection->addCollection($collection1);
-
-        $collection->addDefaults(['placeholder' => 'new-default']);
-        $this->assertEquals(['placeholder' => 'new-default'], $collection->get('foo')->getDefaults(), '->addDefaults() adds defaults to all routes');
-        $this->assertEquals(['_controller' => 'fixed', 'placeholder' => 'new-default'], $collection->get('bar')->getDefaults(),
-            '->addDefaults() adds defaults to all routes and overwrites existing ones');
-
-        $collection->addRequirements(['placeholder' => '\d+']);
-        $this->assertEquals(['placeholder' => '\d+'], $collection->get('foo')->getRequirements(), '->addRequirements() adds requirements to all routes');
-        $this->assertEquals(['placeholder' => '\d+'], $collection->get('bar')->getRequirements(),
-            '->addRequirements() adds requirements to all routes and overwrites existing ones');
-
-        $collection->addOptions(['option' => 'new-value']);
-        $this->assertEquals(
-            ['option' => 'new-value', 'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler'],
-            $collection->get('bar')->getOptions(), '->addOptions() adds options to all routes and overwrites existing ones'
-        );
-    }
-
-    public function testAddPrefix()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo'));
-        $collection2 = new RouteCollection();
-        $collection2->add('bar', $bar = new Route('/bar'));
-        $collection->addCollection($collection2);
-        $collection->addPrefix(' / ');
-        $this->assertSame('/foo', $collection->get('foo')->getPath(), '->addPrefix() trims the prefix and a single slash has no effect');
-        $collection->addPrefix('/{admin}', ['admin' => 'admin'], ['admin' => '\d+']);
-        $this->assertEquals('/{admin}/foo', $collection->get('foo')->getPath(), '->addPrefix() adds a prefix to all routes');
-        $this->assertEquals('/{admin}/bar', $collection->get('bar')->getPath(), '->addPrefix() adds a prefix to all routes');
-        $this->assertEquals(['admin' => 'admin'], $collection->get('foo')->getDefaults(), '->addPrefix() adds defaults to all routes');
-        $this->assertEquals(['admin' => 'admin'], $collection->get('bar')->getDefaults(), '->addPrefix() adds defaults to all routes');
-        $this->assertEquals(['admin' => '\d+'], $collection->get('foo')->getRequirements(), '->addPrefix() adds requirements to all routes');
-        $this->assertEquals(['admin' => '\d+'], $collection->get('bar')->getRequirements(), '->addPrefix() adds requirements to all routes');
-        $collection->addPrefix('0');
-        $this->assertEquals('/0/{admin}/foo', $collection->get('foo')->getPath(), '->addPrefix() ensures a prefix must start with a slash and must not end with a slash');
-        $collection->addPrefix('/ /');
-        $this->assertSame('/ /0/{admin}/foo', $collection->get('foo')->getPath(), '->addPrefix() can handle spaces if desired');
-        $this->assertSame('/ /0/{admin}/bar', $collection->get('bar')->getPath(), 'the route pattern of an added collection is in synch with the added prefix');
-    }
-
-    public function testAddPrefixOverridesDefaultsAndRequirements()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo.{_format}'));
-        $collection->add('bar', $bar = new Route('/bar.{_format}', [], ['_format' => 'json']));
-        $collection->addPrefix('/admin', [], ['_format' => 'html']);
-
-        $this->assertEquals('html', $collection->get('foo')->getRequirement('_format'), '->addPrefix() overrides existing requirements');
-        $this->assertEquals('html', $collection->get('bar')->getRequirement('_format'), '->addPrefix() overrides existing requirements');
-    }
-
-    public function testResource()
-    {
-        $collection = new RouteCollection();
-        $collection->addResource($foo = new FileResource(__DIR__.'/Fixtures/foo.xml'));
-        $collection->addResource($bar = new FileResource(__DIR__.'/Fixtures/bar.xml'));
-        $collection->addResource(new FileResource(__DIR__.'/Fixtures/foo.xml'));
-
-        $this->assertEquals([$foo, $bar], $collection->getResources(),
-            '->addResource() adds a resource and getResources() only returns unique ones by comparing the string representation');
-    }
-
-    public function testUniqueRouteWithGivenName()
-    {
-        $collection1 = new RouteCollection();
-        $collection1->add('foo', new Route('/old'));
-        $collection2 = new RouteCollection();
-        $collection3 = new RouteCollection();
-        $collection3->add('foo', $new = new Route('/new'));
-
-        $collection2->addCollection($collection3);
-        $collection1->addCollection($collection2);
-
-        $this->assertSame($new, $collection1->get('foo'), '->get() returns new route that overrode previous one');
-        // size of 1 because collection1 contains /new but not /old anymore
-        $this->assertCount(1, $collection1->getIterator(), '->addCollection() removes previous routes when adding new routes with the same name');
-    }
-
-    public function testGet()
-    {
-        $collection1 = new RouteCollection();
-        $collection1->add('a', $a = new Route('/a'));
-        $collection2 = new RouteCollection();
-        $collection2->add('b', $b = new Route('/b'));
-        $collection1->addCollection($collection2);
-        $collection1->add('$péß^a|', $c = new Route('/special'));
-
-        $this->assertSame($b, $collection1->get('b'), '->get() returns correct route in child collection');
-        $this->assertSame($c, $collection1->get('$péß^a|'), '->get() can handle special characters');
-        $this->assertNull($collection2->get('a'), '->get() does not return the route defined in parent collection');
-        $this->assertNull($collection1->get('non-existent'), '->get() returns null when route does not exist');
-        $this->assertNull($collection1->get(0), '->get() does not disclose internal child RouteCollection');
-    }
-
-    public function testRemove()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', $bar = new Route('/bar'));
-        $collection->addCollection($collection1);
-        $collection->add('last', $last = new Route('/last'));
-
-        $collection->remove('foo');
-        $this->assertSame(['bar' => $bar, 'last' => $last], $collection->all(), '->remove() can remove a single route');
-        $collection->remove(['bar', 'last']);
-        $this->assertSame([], $collection->all(), '->remove() accepts an array and can remove multiple routes at once');
-    }
-
-    public function testSetHost()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a');
-        $routeb = new Route('/b', [], [], [], '{locale}.example.net');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setHost('{locale}.example.com');
-
-        $this->assertEquals('{locale}.example.com', $routea->getHost());
-        $this->assertEquals('{locale}.example.com', $routeb->getHost());
-    }
-
-    public function testSetCondition()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a');
-        $routeb = new Route('/b', [], [], [], '{locale}.example.net', [], [], 'context.getMethod() == "GET"');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setCondition('context.getMethod() == "POST"');
-
-        $this->assertEquals('context.getMethod() == "POST"', $routea->getCondition());
-        $this->assertEquals('context.getMethod() == "POST"', $routeb->getCondition());
-    }
-
-    public function testClone()
-    {
-        $collection = new RouteCollection();
-        $collection->add('a', new Route('/a'));
-        $collection->add('b', new Route('/b', ['placeholder' => 'default'], ['placeholder' => '.+']));
-
-        $clonedCollection = clone $collection;
-
-        $this->assertCount(2, $clonedCollection);
-        $this->assertEquals($collection->get('a'), $clonedCollection->get('a'));
-        $this->assertNotSame($collection->get('a'), $clonedCollection->get('a'));
-        $this->assertEquals($collection->get('b'), $clonedCollection->get('b'));
-        $this->assertNotSame($collection->get('b'), $clonedCollection->get('b'));
-    }
-
-    public function testSetSchemes()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a', [], [], [], '', 'http');
-        $routeb = new Route('/b');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setSchemes(['http', 'https']);
-
-        $this->assertEquals(['http', 'https'], $routea->getSchemes());
-        $this->assertEquals(['http', 'https'], $routeb->getSchemes());
-    }
-
-    public function testSetMethods()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a', [], [], [], '', [], ['GET', 'POST']);
-        $routeb = new Route('/b');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setMethods('PUT');
-
-        $this->assertEquals(['PUT'], $routea->getMethods());
-        $this->assertEquals(['PUT'], $routeb->getMethods());
-    }
-
-    public function testAddNamePrefix()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo'));
-        $collection->add('bar', $bar = new Route('/bar'));
-        $collection->add('api_foo', $apiFoo = new Route('/api/foo'));
-        $collection->addNamePrefix('api_');
-
-        $this->assertEquals($foo, $collection->get('api_foo'));
-        $this->assertEquals($bar, $collection->get('api_bar'));
-        $this->assertEquals($apiFoo, $collection->get('api_api_foo'));
-        $this->assertNull($collection->get('foo'));
-        $this->assertNull($collection->get('bar'));
-    }
-
-    public function testAddNamePrefixCanonicalRouteName()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo', ['_canonical_route' => 'foo']));
-        $collection->add('bar', new Route('/bar', ['_canonical_route' => 'bar']));
-        $collection->add('api_foo', new Route('/api/foo', ['_canonical_route' => 'api_foo']));
-        $collection->addNamePrefix('api_');
-
-        $this->assertEquals('api_foo', $collection->get('api_foo')->getDefault('_canonical_route'));
-        $this->assertEquals('api_bar', $collection->get('api_bar')->getDefault('_canonical_route'));
-        $this->assertEquals('api_api_foo', $collection->get('api_api_foo')->getDefault('_canonical_route'));
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouteCompilerTest.php b/vendor/symfony/routing/Tests/RouteCompilerTest.php
deleted file mode 100644
index a54e18b58383421a9205c6b176d9097070e02a23..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/RouteCompilerTest.php
+++ /dev/null
@@ -1,398 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCompiler;
-
-class RouteCompilerTest extends TestCase
-{
-    /**
-     * @dataProvider provideCompileData
-     */
-    public function testCompile($name, $arguments, $prefix, $regex, $variables, $tokens)
-    {
-        $r = new \ReflectionClass('Symfony\\Component\\Routing\\Route');
-        $route = $r->newInstanceArgs($arguments);
-
-        $compiled = $route->compile();
-        $this->assertEquals($prefix, $compiled->getStaticPrefix(), $name.' (static prefix)');
-        $this->assertEquals($regex, $compiled->getRegex(), $name.' (regex)');
-        $this->assertEquals($variables, $compiled->getVariables(), $name.' (variables)');
-        $this->assertEquals($tokens, $compiled->getTokens(), $name.' (tokens)');
-    }
-
-    public function provideCompileData()
-    {
-        return [
-            [
-                'Static route',
-                ['/foo'],
-                '/foo', '#^/foo$#sD', [], [
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with a variable',
-                ['/foo/{bar}'],
-                '/foo', '#^/foo/(?P<bar>[^/]++)$#sD', ['bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with a variable that has a default value',
-                ['/foo/{bar}', ['bar' => 'bar']],
-                '/foo', '#^/foo(?:/(?P<bar>[^/]++))?$#sD', ['bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with several variables',
-                ['/foo/{bar}/{foobar}'],
-                '/foo', '#^/foo/(?P<bar>[^/]++)/(?P<foobar>[^/]++)$#sD', ['bar', 'foobar'], [
-                    ['variable', '/', '[^/]++', 'foobar'],
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with several variables that have default values',
-                ['/foo/{bar}/{foobar}', ['bar' => 'bar', 'foobar' => '']],
-                '/foo', '#^/foo(?:/(?P<bar>[^/]++)(?:/(?P<foobar>[^/]++))?)?$#sD', ['bar', 'foobar'], [
-                    ['variable', '/', '[^/]++', 'foobar'],
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with several variables but some of them have no default values',
-                ['/foo/{bar}/{foobar}', ['bar' => 'bar']],
-                '/foo', '#^/foo/(?P<bar>[^/]++)/(?P<foobar>[^/]++)$#sD', ['bar', 'foobar'], [
-                    ['variable', '/', '[^/]++', 'foobar'],
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with an optional variable as the first segment',
-                ['/{bar}', ['bar' => 'bar']],
-                '', '#^/(?P<bar>[^/]++)?$#sD', ['bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                ],
-            ],
-
-            [
-                'Route with a requirement of 0',
-                ['/{bar}', ['bar' => null], ['bar' => '0']],
-                '', '#^/(?P<bar>0)?$#sD', ['bar'], [
-                    ['variable', '/', '0', 'bar'],
-                ],
-            ],
-
-            [
-                'Route with an optional variable as the first segment with requirements',
-                ['/{bar}', ['bar' => 'bar'], ['bar' => '(foo|bar)']],
-                '', '#^/(?P<bar>(?:foo|bar))?$#sD', ['bar'], [
-                    ['variable', '/', '(?:foo|bar)', 'bar'],
-                ],
-            ],
-
-            [
-                'Route with only optional variables',
-                ['/{foo}/{bar}', ['foo' => 'foo', 'bar' => 'bar']],
-                '', '#^/(?P<foo>[^/]++)?(?:/(?P<bar>[^/]++))?$#sD', ['foo', 'bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['variable', '/', '[^/]++', 'foo'],
-                ],
-            ],
-
-            [
-                'Route with a variable in last position',
-                ['/foo-{bar}'],
-                '/foo-', '#^/foo\-(?P<bar>[^/]++)$#sD', ['bar'], [
-                    ['variable', '-', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with nested placeholders',
-                ['/{static{var}static}'],
-                '/{static', '#^/\{static(?P<var>[^/]+)static\}$#sD', ['var'], [
-                    ['text', 'static}'],
-                    ['variable', '', '[^/]+', 'var'],
-                    ['text', '/{static'],
-                ],
-            ],
-
-            [
-                'Route without separator between variables',
-                ['/{w}{x}{y}{z}.{_format}', ['z' => 'default-z', '_format' => 'html'], ['y' => '(y|Y)']],
-                '', '#^/(?P<w>[^/\.]+)(?P<x>[^/\.]+)(?P<y>(?:y|Y))(?:(?P<z>[^/\.]++)(?:\.(?P<_format>[^/]++))?)?$#sD', ['w', 'x', 'y', 'z', '_format'], [
-                    ['variable', '.', '[^/]++', '_format'],
-                    ['variable', '', '[^/\.]++', 'z'],
-                    ['variable', '', '(?:y|Y)', 'y'],
-                    ['variable', '', '[^/\.]+', 'x'],
-                    ['variable', '/', '[^/\.]+', 'w'],
-                ],
-            ],
-
-            [
-                'Route with a format',
-                ['/foo/{bar}.{_format}'],
-                '/foo', '#^/foo/(?P<bar>[^/\.]++)\.(?P<_format>[^/]++)$#sD', ['bar', '_format'], [
-                    ['variable', '.', '[^/]++', '_format'],
-                    ['variable', '/', '[^/\.]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Static non UTF-8 route',
-                ["/fo\xE9"],
-                "/fo\xE9", "#^/fo\xE9$#sD", [], [
-                    ['text', "/fo\xE9"],
-                ],
-            ],
-
-            [
-                'Route with an explicit UTF-8 requirement',
-                ['/{bar}', ['bar' => null], ['bar' => '.'], ['utf8' => true]],
-                '', '#^/(?P<bar>.)?$#sDu', ['bar'], [
-                    ['variable', '/', '.', 'bar', true],
-                ],
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider provideCompileImplicitUtf8Data
-     */
-    public function testCompileImplicitUtf8Data($name, $arguments, $prefix, $regex, $variables, $tokens, $deprecationType)
-    {
-        $this->expectException('LogicException');
-        $r = new \ReflectionClass('Symfony\\Component\\Routing\\Route');
-        $route = $r->newInstanceArgs($arguments);
-
-        $compiled = $route->compile();
-        $this->assertEquals($prefix, $compiled->getStaticPrefix(), $name.' (static prefix)');
-        $this->assertEquals($regex, $compiled->getRegex(), $name.' (regex)');
-        $this->assertEquals($variables, $compiled->getVariables(), $name.' (variables)');
-        $this->assertEquals($tokens, $compiled->getTokens(), $name.' (tokens)');
-    }
-
-    public function provideCompileImplicitUtf8Data()
-    {
-        return [
-            [
-                'Static UTF-8 route',
-                ['/foé'],
-                '/foé', '#^/foé$#sDu', [], [
-                    ['text', '/foé'],
-                ],
-                'patterns',
-            ],
-
-            [
-                'Route with an implicit UTF-8 requirement',
-                ['/{bar}', ['bar' => null], ['bar' => 'é']],
-                '', '#^/(?P<bar>é)?$#sDu', ['bar'], [
-                    ['variable', '/', 'é', 'bar', true],
-                ],
-                'requirements',
-            ],
-
-            [
-                'Route with a UTF-8 class requirement',
-                ['/{bar}', ['bar' => null], ['bar' => '\pM']],
-                '', '#^/(?P<bar>\pM)?$#sDu', ['bar'], [
-                    ['variable', '/', '\pM', 'bar', true],
-                ],
-                'requirements',
-            ],
-
-            [
-                'Route with a UTF-8 separator',
-                ['/foo/{bar}§{_format}', [], [], ['compiler_class' => Utf8RouteCompiler::class]],
-                '/foo', '#^/foo/(?P<bar>[^/§]++)§(?P<_format>[^/]++)$#sDu', ['bar', '_format'], [
-                    ['variable', '§', '[^/]++', '_format', true],
-                    ['variable', '/', '[^/§]++', 'bar', true],
-                    ['text', '/foo'],
-                ],
-                'patterns',
-            ],
-        ];
-    }
-
-    public function testRouteWithSameVariableTwice()
-    {
-        $this->expectException('LogicException');
-        $route = new Route('/{name}/{name}');
-
-        $compiled = $route->compile();
-    }
-
-    public function testRouteCharsetMismatch()
-    {
-        $this->expectException('LogicException');
-        $route = new Route("/\xE9/{bar}", [], ['bar' => '.'], ['utf8' => true]);
-
-        $compiled = $route->compile();
-    }
-
-    public function testRequirementCharsetMismatch()
-    {
-        $this->expectException('LogicException');
-        $route = new Route('/foo/{bar}', [], ['bar' => "\xE9"], ['utf8' => true]);
-
-        $compiled = $route->compile();
-    }
-
-    public function testRouteWithFragmentAsPathParameter()
-    {
-        $this->expectException('InvalidArgumentException');
-        $route = new Route('/{_fragment}');
-
-        $compiled = $route->compile();
-    }
-
-    /**
-     * @dataProvider getVariableNamesStartingWithADigit
-     */
-    public function testRouteWithVariableNameStartingWithADigit($name)
-    {
-        $this->expectException('DomainException');
-        $route = new Route('/{'.$name.'}');
-        $route->compile();
-    }
-
-    public function getVariableNamesStartingWithADigit()
-    {
-        return [
-           ['09'],
-           ['123'],
-           ['1e2'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideCompileWithHostData
-     */
-    public function testCompileWithHost($name, $arguments, $prefix, $regex, $variables, $pathVariables, $tokens, $hostRegex, $hostVariables, $hostTokens)
-    {
-        $r = new \ReflectionClass('Symfony\\Component\\Routing\\Route');
-        $route = $r->newInstanceArgs($arguments);
-
-        $compiled = $route->compile();
-        $this->assertEquals($prefix, $compiled->getStaticPrefix(), $name.' (static prefix)');
-        $this->assertEquals($regex, str_replace(["\n", ' '], '', $compiled->getRegex()), $name.' (regex)');
-        $this->assertEquals($variables, $compiled->getVariables(), $name.' (variables)');
-        $this->assertEquals($pathVariables, $compiled->getPathVariables(), $name.' (path variables)');
-        $this->assertEquals($tokens, $compiled->getTokens(), $name.' (tokens)');
-        $this->assertEquals($hostRegex, str_replace(["\n", ' '], '', $compiled->getHostRegex()), $name.' (host regex)');
-        $this->assertEquals($hostVariables, $compiled->getHostVariables(), $name.' (host variables)');
-        $this->assertEquals($hostTokens, $compiled->getHostTokens(), $name.' (host tokens)');
-    }
-
-    public function provideCompileWithHostData()
-    {
-        return [
-            [
-                'Route with host pattern',
-                ['/hello', [], [], [], 'www.example.com'],
-                '/hello', '#^/hello$#sD', [], [], [
-                    ['text', '/hello'],
-                ],
-                '#^www\.example\.com$#sDi', [], [
-                    ['text', 'www.example.com'],
-                ],
-            ],
-            [
-                'Route with host pattern and some variables',
-                ['/hello/{name}', [], [], [], 'www.example.{tld}'],
-                '/hello', '#^/hello/(?P<name>[^/]++)$#sD', ['tld', 'name'], ['name'], [
-                    ['variable', '/', '[^/]++', 'name'],
-                    ['text', '/hello'],
-                ],
-                '#^www\.example\.(?P<tld>[^\.]++)$#sDi', ['tld'], [
-                    ['variable', '.', '[^\.]++', 'tld'],
-                    ['text', 'www.example'],
-                ],
-            ],
-            [
-                'Route with variable at beginning of host',
-                ['/hello', [], [], [], '{locale}.example.{tld}'],
-                '/hello', '#^/hello$#sD', ['locale', 'tld'], [], [
-                    ['text', '/hello'],
-                ],
-                '#^(?P<locale>[^\.]++)\.example\.(?P<tld>[^\.]++)$#sDi', ['locale', 'tld'], [
-                    ['variable', '.', '[^\.]++', 'tld'],
-                    ['text', '.example'],
-                    ['variable', '', '[^\.]++', 'locale'],
-                ],
-            ],
-            [
-                'Route with host variables that has a default value',
-                ['/hello', ['locale' => 'a', 'tld' => 'b'], [], [], '{locale}.example.{tld}'],
-                '/hello', '#^/hello$#sD', ['locale', 'tld'], [], [
-                    ['text', '/hello'],
-                ],
-                '#^(?P<locale>[^\.]++)\.example\.(?P<tld>[^\.]++)$#sDi', ['locale', 'tld'], [
-                    ['variable', '.', '[^\.]++', 'tld'],
-                    ['text', '.example'],
-                    ['variable', '', '[^\.]++', 'locale'],
-                ],
-            ],
-        ];
-    }
-
-    public function testRouteWithTooLongVariableName()
-    {
-        $this->expectException('DomainException');
-        $route = new Route(sprintf('/{%s}', str_repeat('a', RouteCompiler::VARIABLE_MAXIMUM_LENGTH + 1)));
-        $route->compile();
-    }
-
-    /**
-     * @dataProvider provideRemoveCapturingGroup
-     */
-    public function testRemoveCapturingGroup($regex, $requirement)
-    {
-        $route = new Route('/{foo}', [], ['foo' => $requirement]);
-
-        $this->assertSame($regex, $route->compile()->getRegex());
-    }
-
-    public function provideRemoveCapturingGroup()
-    {
-        yield ['#^/(?P<foo>a(?:b|c)(?:d|e)f)$#sD', 'a(b|c)(d|e)f'];
-        yield ['#^/(?P<foo>a\(b\)c)$#sD', 'a\(b\)c'];
-        yield ['#^/(?P<foo>(?:b))$#sD', '(?:b)'];
-        yield ['#^/(?P<foo>(?(b)b))$#sD', '(?(b)b)'];
-        yield ['#^/(?P<foo>(*F))$#sD', '(*F)'];
-        yield ['#^/(?P<foo>(?:(?:foo)))$#sD', '((foo))'];
-    }
-}
-
-class Utf8RouteCompiler extends RouteCompiler
-{
-    const SEPARATORS = '/§';
-}
diff --git a/vendor/symfony/routing/Tests/RouteTest.php b/vendor/symfony/routing/Tests/RouteTest.php
deleted file mode 100644
index 6add1337ed369f603becc389228f12f453512e37..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/RouteTest.php
+++ /dev/null
@@ -1,274 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Route;
-
-class RouteTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $route = new Route('/{foo}', ['foo' => 'bar'], ['foo' => '\d+'], ['foo' => 'bar'], '{locale}.example.com');
-        $this->assertEquals('/{foo}', $route->getPath(), '__construct() takes a path as its first argument');
-        $this->assertEquals(['foo' => 'bar'], $route->getDefaults(), '__construct() takes defaults as its second argument');
-        $this->assertEquals(['foo' => '\d+'], $route->getRequirements(), '__construct() takes requirements as its third argument');
-        $this->assertEquals('bar', $route->getOption('foo'), '__construct() takes options as its fourth argument');
-        $this->assertEquals('{locale}.example.com', $route->getHost(), '__construct() takes a host pattern as its fifth argument');
-
-        $route = new Route('/', [], [], [], '', ['Https'], ['POST', 'put'], 'context.getMethod() == "GET"');
-        $this->assertEquals(['https'], $route->getSchemes(), '__construct() takes schemes as its sixth argument and lowercases it');
-        $this->assertEquals(['POST', 'PUT'], $route->getMethods(), '__construct() takes methods as its seventh argument and uppercases it');
-        $this->assertEquals('context.getMethod() == "GET"', $route->getCondition(), '__construct() takes a condition as its eight argument');
-
-        $route = new Route('/', [], [], [], '', 'Https', 'Post');
-        $this->assertEquals(['https'], $route->getSchemes(), '__construct() takes a single scheme as its sixth argument');
-        $this->assertEquals(['POST'], $route->getMethods(), '__construct() takes a single method as its seventh argument');
-    }
-
-    public function testPath()
-    {
-        $route = new Route('/{foo}');
-        $route->setPath('/{bar}');
-        $this->assertEquals('/{bar}', $route->getPath(), '->setPath() sets the path');
-        $route->setPath('');
-        $this->assertEquals('/', $route->getPath(), '->setPath() adds a / at the beginning of the path if needed');
-        $route->setPath('bar');
-        $this->assertEquals('/bar', $route->getPath(), '->setPath() adds a / at the beginning of the path if needed');
-        $this->assertEquals($route, $route->setPath(''), '->setPath() implements a fluent interface');
-        $route->setPath('//path');
-        $this->assertEquals('/path', $route->getPath(), '->setPath() does not allow two slashes "//" at the beginning of the path as it would be confused with a network path when generating the path from the route');
-    }
-
-    public function testOptions()
-    {
-        $route = new Route('/{foo}');
-        $route->setOptions(['foo' => 'bar']);
-        $this->assertEquals(array_merge([
-        'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler',
-        ], ['foo' => 'bar']), $route->getOptions(), '->setOptions() sets the options');
-        $this->assertEquals($route, $route->setOptions([]), '->setOptions() implements a fluent interface');
-
-        $route->setOptions(['foo' => 'foo']);
-        $route->addOptions(['bar' => 'bar']);
-        $this->assertEquals($route, $route->addOptions([]), '->addOptions() implements a fluent interface');
-        $this->assertEquals(['foo' => 'foo', 'bar' => 'bar', 'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler'], $route->getOptions(), '->addDefaults() keep previous defaults');
-    }
-
-    public function testOption()
-    {
-        $route = new Route('/{foo}');
-        $this->assertFalse($route->hasOption('foo'), '->hasOption() return false if option is not set');
-        $this->assertEquals($route, $route->setOption('foo', 'bar'), '->setOption() implements a fluent interface');
-        $this->assertEquals('bar', $route->getOption('foo'), '->setOption() sets the option');
-        $this->assertTrue($route->hasOption('foo'), '->hasOption() return true if option is set');
-    }
-
-    public function testDefaults()
-    {
-        $route = new Route('/{foo}');
-        $route->setDefaults(['foo' => 'bar']);
-        $this->assertEquals(['foo' => 'bar'], $route->getDefaults(), '->setDefaults() sets the defaults');
-        $this->assertEquals($route, $route->setDefaults([]), '->setDefaults() implements a fluent interface');
-
-        $route->setDefault('foo', 'bar');
-        $this->assertEquals('bar', $route->getDefault('foo'), '->setDefault() sets a default value');
-
-        $route->setDefault('foo2', 'bar2');
-        $this->assertEquals('bar2', $route->getDefault('foo2'), '->getDefault() return the default value');
-        $this->assertNull($route->getDefault('not_defined'), '->getDefault() return null if default value is not set');
-
-        $route->setDefault('_controller', $closure = function () { return 'Hello'; });
-        $this->assertEquals($closure, $route->getDefault('_controller'), '->setDefault() sets a default value');
-
-        $route->setDefaults(['foo' => 'foo']);
-        $route->addDefaults(['bar' => 'bar']);
-        $this->assertEquals($route, $route->addDefaults([]), '->addDefaults() implements a fluent interface');
-        $this->assertEquals(['foo' => 'foo', 'bar' => 'bar'], $route->getDefaults(), '->addDefaults() keep previous defaults');
-    }
-
-    public function testRequirements()
-    {
-        $route = new Route('/{foo}');
-        $route->setRequirements(['foo' => '\d+']);
-        $this->assertEquals(['foo' => '\d+'], $route->getRequirements(), '->setRequirements() sets the requirements');
-        $this->assertEquals('\d+', $route->getRequirement('foo'), '->getRequirement() returns a requirement');
-        $this->assertNull($route->getRequirement('bar'), '->getRequirement() returns null if a requirement is not defined');
-        $route->setRequirements(['foo' => '^\d+$']);
-        $this->assertEquals('\d+', $route->getRequirement('foo'), '->getRequirement() removes ^ and $ from the path');
-        $this->assertEquals($route, $route->setRequirements([]), '->setRequirements() implements a fluent interface');
-
-        $route->setRequirements(['foo' => '\d+']);
-        $route->addRequirements(['bar' => '\d+']);
-        $this->assertEquals($route, $route->addRequirements([]), '->addRequirements() implements a fluent interface');
-        $this->assertEquals(['foo' => '\d+', 'bar' => '\d+'], $route->getRequirements(), '->addRequirement() keep previous requirements');
-    }
-
-    public function testRequirement()
-    {
-        $route = new Route('/{foo}');
-        $this->assertFalse($route->hasRequirement('foo'), '->hasRequirement() return false if requirement is not set');
-        $route->setRequirement('foo', '^\d+$');
-        $this->assertEquals('\d+', $route->getRequirement('foo'), '->setRequirement() removes ^ and $ from the path');
-        $this->assertTrue($route->hasRequirement('foo'), '->hasRequirement() return true if requirement is set');
-    }
-
-    /**
-     * @dataProvider getInvalidRequirements
-     */
-    public function testSetInvalidRequirement($req)
-    {
-        $this->expectException('InvalidArgumentException');
-        $route = new Route('/{foo}');
-        $route->setRequirement('foo', $req);
-    }
-
-    public function getInvalidRequirements()
-    {
-        return [
-           [''],
-           [[]],
-           ['^$'],
-           ['^'],
-           ['$'],
-        ];
-    }
-
-    public function testHost()
-    {
-        $route = new Route('/');
-        $route->setHost('{locale}.example.net');
-        $this->assertEquals('{locale}.example.net', $route->getHost(), '->setHost() sets the host pattern');
-    }
-
-    public function testScheme()
-    {
-        $route = new Route('/');
-        $this->assertEquals([], $route->getSchemes(), 'schemes is initialized with []');
-        $this->assertFalse($route->hasScheme('http'));
-        $route->setSchemes('hTTp');
-        $this->assertEquals(['http'], $route->getSchemes(), '->setSchemes() accepts a single scheme string and lowercases it');
-        $this->assertTrue($route->hasScheme('htTp'));
-        $this->assertFalse($route->hasScheme('httpS'));
-        $route->setSchemes(['HttpS', 'hTTp']);
-        $this->assertEquals(['https', 'http'], $route->getSchemes(), '->setSchemes() accepts an array of schemes and lowercases them');
-        $this->assertTrue($route->hasScheme('htTp'));
-        $this->assertTrue($route->hasScheme('httpS'));
-    }
-
-    public function testMethod()
-    {
-        $route = new Route('/');
-        $this->assertEquals([], $route->getMethods(), 'methods is initialized with []');
-        $route->setMethods('gEt');
-        $this->assertEquals(['GET'], $route->getMethods(), '->setMethods() accepts a single method string and uppercases it');
-        $route->setMethods(['gEt', 'PosT']);
-        $this->assertEquals(['GET', 'POST'], $route->getMethods(), '->setMethods() accepts an array of methods and uppercases them');
-    }
-
-    public function testCondition()
-    {
-        $route = new Route('/');
-        $this->assertSame('', $route->getCondition());
-        $route->setCondition('context.getMethod() == "GET"');
-        $this->assertSame('context.getMethod() == "GET"', $route->getCondition());
-    }
-
-    public function testCompile()
-    {
-        $route = new Route('/{foo}');
-        $this->assertInstanceOf('Symfony\Component\Routing\CompiledRoute', $compiled = $route->compile(), '->compile() returns a compiled route');
-        $this->assertSame($compiled, $route->compile(), '->compile() only compiled the route once if unchanged');
-        $route->setRequirement('foo', '.*');
-        $this->assertNotSame($compiled, $route->compile(), '->compile() recompiles if the route was modified');
-    }
-
-    public function testSerialize()
-    {
-        $route = new Route('/prefix/{foo}', ['foo' => 'default'], ['foo' => '\d+']);
-
-        $serialized = serialize($route);
-        $unserialized = unserialize($serialized);
-
-        $this->assertEquals($route, $unserialized);
-        $this->assertNotSame($route, $unserialized);
-    }
-
-    public function testInlineDefaultAndRequirement()
-    {
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', null), new Route('/foo/{bar?}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', 'baz'), new Route('/foo/{bar?baz}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', 'baz<buz>'), new Route('/foo/{bar?baz<buz>}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', 'baz'), new Route('/foo/{bar?}', ['bar' => 'baz']));
-
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '.*'), new Route('/foo/{bar<.*>}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '>'), new Route('/foo/{bar<>>}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '\d+'), new Route('/foo/{bar<.*>}', [], ['bar' => '\d+']));
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '[a-z]{2}'), new Route('/foo/{bar<[a-z]{2}>}'));
-
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', null)->setRequirement('bar', '.*'), new Route('/foo/{bar<.*>?}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', '<>')->setRequirement('bar', '>'), new Route('/foo/{bar<>>?<>}'));
-    }
-
-    /**
-     * Tests that the compiled version is also serialized to prevent the overhead
-     * of compiling it again after unserialize.
-     */
-    public function testSerializeWhenCompiled()
-    {
-        $route = new Route('/prefix/{foo}', ['foo' => 'default'], ['foo' => '\d+']);
-        $route->setHost('{locale}.example.net');
-        $route->compile();
-
-        $serialized = serialize($route);
-        $unserialized = unserialize($serialized);
-
-        $this->assertEquals($route, $unserialized);
-        $this->assertNotSame($route, $unserialized);
-    }
-
-    /**
-     * Tests that unserialization does not fail when the compiled Route is of a
-     * class other than CompiledRoute, such as a subclass of it.
-     */
-    public function testSerializeWhenCompiledWithClass()
-    {
-        $route = new Route('/', [], [], ['compiler_class' => '\Symfony\Component\Routing\Tests\Fixtures\CustomRouteCompiler']);
-        $this->assertInstanceOf('\Symfony\Component\Routing\Tests\Fixtures\CustomCompiledRoute', $route->compile(), '->compile() returned a proper route');
-
-        $serialized = serialize($route);
-        try {
-            $unserialized = unserialize($serialized);
-            $this->assertInstanceOf('\Symfony\Component\Routing\Tests\Fixtures\CustomCompiledRoute', $unserialized->compile(), 'the unserialized route compiled successfully');
-        } catch (\Exception $e) {
-            $this->fail('unserializing a route which uses a custom compiled route class');
-        }
-    }
-
-    /**
-     * Tests that the serialized representation of a route in one symfony version
-     * also works in later symfony versions, i.e. the unserialized route is in the
-     * same state as another, semantically equivalent, route.
-     */
-    public function testSerializedRepresentationKeepsWorking()
-    {
-        $serialized = 'C:31:"Symfony\Component\Routing\Route":936:{a:8:{s:4:"path";s:13:"/prefix/{foo}";s:4:"host";s:20:"{locale}.example.net";s:8:"defaults";a:1:{s:3:"foo";s:7:"default";}s:12:"requirements";a:1:{s:3:"foo";s:3:"\d+";}s:7:"options";a:1:{s:14:"compiler_class";s:39:"Symfony\Component\Routing\RouteCompiler";}s:7:"schemes";a:0:{}s:7:"methods";a:0:{}s:8:"compiled";C:39:"Symfony\Component\Routing\CompiledRoute":571:{a:8:{s:4:"vars";a:2:{i:0;s:6:"locale";i:1;s:3:"foo";}s:11:"path_prefix";s:7:"/prefix";s:10:"path_regex";s:31:"#^/prefix(?:/(?P<foo>\d+))?$#sD";s:11:"path_tokens";a:2:{i:0;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:3:"\d+";i:3;s:3:"foo";}i:1;a:2:{i:0;s:4:"text";i:1;s:7:"/prefix";}}s:9:"path_vars";a:1:{i:0;s:3:"foo";}s:10:"host_regex";s:40:"#^(?P<locale>[^\.]++)\.example\.net$#sDi";s:11:"host_tokens";a:2:{i:0;a:2:{i:0;s:4:"text";i:1;s:12:".example.net";}i:1;a:4:{i:0;s:8:"variable";i:1;s:0:"";i:2;s:7:"[^\.]++";i:3;s:6:"locale";}}s:9:"host_vars";a:1:{i:0;s:6:"locale";}}}}}';
-        $unserialized = unserialize($serialized);
-
-        $route = new Route('/prefix/{foo}', ['foo' => 'default'], ['foo' => '\d+']);
-        $route->setHost('{locale}.example.net');
-        $route->compile();
-
-        $this->assertEquals($route, $unserialized);
-        $this->assertNotSame($route, $unserialized);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouterTest.php b/vendor/symfony/routing/Tests/RouterTest.php
deleted file mode 100644
index fa0a2f5399aca2a5f45a26046b67dcc99c1df9e0..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/Tests/RouterTest.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Router;
-
-class RouterTest extends TestCase
-{
-    private $router = null;
-
-    private $loader = null;
-
-    protected function setUp(): void
-    {
-        $this->loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $this->router = new Router($this->loader, 'routing.yml');
-    }
-
-    public function testSetOptionsWithSupportedOptions()
-    {
-        $this->router->setOptions([
-            'cache_dir' => './cache',
-            'debug' => true,
-            'resource_type' => 'ResourceType',
-        ]);
-
-        $this->assertSame('./cache', $this->router->getOption('cache_dir'));
-        $this->assertTrue($this->router->getOption('debug'));
-        $this->assertSame('ResourceType', $this->router->getOption('resource_type'));
-    }
-
-    public function testSetOptionsWithUnsupportedOptions()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The Router does not support the following options: "option_foo", "option_bar"');
-        $this->router->setOptions([
-            'cache_dir' => './cache',
-            'option_foo' => true,
-            'option_bar' => 'baz',
-            'resource_type' => 'ResourceType',
-        ]);
-    }
-
-    public function testSetOptionWithSupportedOption()
-    {
-        $this->router->setOption('cache_dir', './cache');
-
-        $this->assertSame('./cache', $this->router->getOption('cache_dir'));
-    }
-
-    public function testSetOptionWithUnsupportedOption()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The Router does not support the "option_foo" option');
-        $this->router->setOption('option_foo', true);
-    }
-
-    public function testGetOptionWithUnsupportedOption()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The Router does not support the "option_foo" option');
-        $this->router->getOption('option_foo', true);
-    }
-
-    public function testThatRouteCollectionIsLoaded()
-    {
-        $this->router->setOption('resource_type', 'ResourceType');
-
-        $routeCollection = new RouteCollection();
-
-        $this->loader->expects($this->once())
-            ->method('load')->with('routing.yml', 'ResourceType')
-            ->willReturn($routeCollection);
-
-        $this->assertSame($routeCollection, $this->router->getRouteCollection());
-    }
-
-    public function testMatcherIsCreatedIfCacheIsNotConfigured()
-    {
-        $this->router->setOption('cache_dir', null);
-
-        $this->loader->expects($this->once())
-            ->method('load')->with('routing.yml', null)
-            ->willReturn(new RouteCollection());
-
-        $this->assertInstanceOf('Symfony\\Component\\Routing\\Matcher\\UrlMatcher', $this->router->getMatcher());
-    }
-
-    public function testGeneratorIsCreatedIfCacheIsNotConfigured()
-    {
-        $this->router->setOption('cache_dir', null);
-
-        $this->loader->expects($this->once())
-            ->method('load')->with('routing.yml', null)
-            ->willReturn(new RouteCollection());
-
-        $this->assertInstanceOf('Symfony\\Component\\Routing\\Generator\\UrlGenerator', $this->router->getGenerator());
-    }
-
-    public function testMatchRequestWithUrlMatcherInterface()
-    {
-        $matcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\UrlMatcherInterface')->getMock();
-        $matcher->expects($this->once())->method('match');
-
-        $p = new \ReflectionProperty($this->router, 'matcher');
-        $p->setAccessible(true);
-        $p->setValue($this->router, $matcher);
-
-        $this->router->matchRequest(Request::create('/'));
-    }
-
-    public function testMatchRequestWithRequestMatcherInterface()
-    {
-        $matcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $matcher->expects($this->once())->method('matchRequest');
-
-        $p = new \ReflectionProperty($this->router, 'matcher');
-        $p->setAccessible(true);
-        $p->setValue($this->router, $matcher);
-
-        $this->router->matchRequest(Request::create('/'));
-    }
-}
diff --git a/vendor/symfony/routing/composer.json b/vendor/symfony/routing/composer.json
index 77d7ce981c82e34ce076ea203f8e91bb2109e1f8..79173b09b1f344f1fdef5690277efe6b58f1401b 100644
--- a/vendor/symfony/routing/composer.json
+++ b/vendor/symfony/routing/composer.json
@@ -16,14 +16,14 @@
         }
     ],
     "require": {
-        "php": "^7.1.3"
+        "php": ">=7.1.3"
     },
     "require-dev": {
-        "symfony/config": "~4.2",
-        "symfony/http-foundation": "~3.4|~4.0",
-        "symfony/yaml": "~3.4|~4.0",
-        "symfony/expression-language": "~3.4|~4.0",
-        "symfony/dependency-injection": "~3.4|~4.0",
+        "symfony/config": "^4.2|^5.0",
+        "symfony/http-foundation": "^3.4|^4.0|^5.0",
+        "symfony/yaml": "^3.4|^4.0|^5.0",
+        "symfony/expression-language": "^3.4|^4.0|^5.0",
+        "symfony/dependency-injection": "^3.4|^4.0|^5.0",
         "doctrine/annotations": "~1.2",
         "psr/log": "~1.0"
     },
@@ -45,10 +45,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/routing/phpunit.xml.dist b/vendor/symfony/routing/phpunit.xml.dist
deleted file mode 100644
index df742eab0033133b1fabeb16564ca165e37f7c1c..0000000000000000000000000000000000000000
--- a/vendor/symfony/routing/phpunit.xml.dist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Routing Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/twig-bridge/Command/DebugCommand.php b/vendor/symfony/twig-bridge/Command/DebugCommand.php
index b45b580ee4b468116ab6165ca1bd998768312a91..e196f1b82d7eb3f910aedf4b90ecc8afd1b19597 100644
--- a/vendor/symfony/twig-bridge/Command/DebugCommand.php
+++ b/vendor/symfony/twig-bridge/Command/DebugCommand.php
@@ -40,7 +40,7 @@ class DebugCommand extends Command
     public function __construct($twig = null, $projectDir = null)
     {
         if (!$twig instanceof Environment) {
-            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), \E_USER_DEPRECATED);
 
             parent::__construct($twig);
 
@@ -55,7 +55,7 @@ class DebugCommand extends Command
 
     public function setTwigEnvironment(Environment $twig)
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->twig = $twig;
     }
@@ -65,7 +65,7 @@ class DebugCommand extends Command
      */
     protected function getTwigEnvironment()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->twig;
     }
@@ -104,10 +104,10 @@ EOF
         $decorated = $io->isDecorated();
 
         // BC to be removed in 4.0
-        if (__CLASS__ !== \get_class($this)) {
+        if (__CLASS__ !== static::class) {
             $r = new \ReflectionMethod($this, 'getTwigEnvironment');
             if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', \get_class($this).'::getTwigEnvironment'), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', static::class.'::getTwigEnvironment'), \E_USER_DEPRECATED);
 
                 $this->twig = $this->getTwigEnvironment();
             }
@@ -134,7 +134,7 @@ EOF
             }
 
             $data['loader_paths'] = $this->getLoaderPaths();
-            $data = json_encode($data, JSON_PRETTY_PRINT);
+            $data = json_encode($data, \JSON_PRETTY_PRINT);
             $io->writeln($decorated ? OutputFormatter::escape($data) : $data);
 
             return 0;
@@ -239,7 +239,7 @@ EOF
             } elseif (\is_string($cb) && preg_match('{^(.+)::(.+)$}', $cb, $m) && method_exists($m[1], $m[2])) {
                 $refl = new \ReflectionMethod($m[1], $m[2]);
             } else {
-                throw new \UnexpectedValueException('Unsupported callback type');
+                throw new \UnexpectedValueException('Unsupported callback type.');
             }
 
             $args = $refl->getParameters();
diff --git a/vendor/symfony/twig-bridge/Command/LintCommand.php b/vendor/symfony/twig-bridge/Command/LintCommand.php
index c8b5bb5ba2a05c07dbaaee497fbe4a95ff9b2e06..c23c27b37cb2bbc82a02a3d64fc3d7a83e36ce93 100644
--- a/vendor/symfony/twig-bridge/Command/LintCommand.php
+++ b/vendor/symfony/twig-bridge/Command/LintCommand.php
@@ -43,7 +43,7 @@ class LintCommand extends Command
     public function __construct($twig = null)
     {
         if (!$twig instanceof Environment) {
-            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), \E_USER_DEPRECATED);
 
             parent::__construct($twig);
 
@@ -57,7 +57,7 @@ class LintCommand extends Command
 
     public function setTwigEnvironment(Environment $twig)
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->twig = $twig;
     }
@@ -67,7 +67,7 @@ class LintCommand extends Command
      */
     protected function getTwigEnvironment()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->twig;
     }
@@ -105,10 +105,10 @@ EOF
         $io = new SymfonyStyle($input, $output);
 
         // BC to be removed in 4.0
-        if (__CLASS__ !== \get_class($this)) {
+        if (__CLASS__ !== static::class) {
             $r = new \ReflectionMethod($this, 'getTwigEnvironment');
             if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', \get_class($this).'::getTwigEnvironment'), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', static::class.'::getTwigEnvironment'), \E_USER_DEPRECATED);
 
                 $this->twig = $this->getTwigEnvironment();
             }
@@ -120,13 +120,13 @@ EOF
         $filenames = $input->getArgument('filename');
 
         if (0 === \count($filenames)) {
-            if (0 !== ftell(STDIN)) {
+            if (0 !== ftell(\STDIN)) {
                 throw new RuntimeException('Please provide a filename or pipe template content to STDIN.');
             }
 
             $template = '';
-            while (!feof(STDIN)) {
-                $template .= fread(STDIN, 1024);
+            while (!feof(\STDIN)) {
+                $template .= fread(\STDIN, 1024);
             }
 
             return $this->display($input, $output, $io, [$this->validate($template, uniqid('sf_', true))]);
@@ -157,7 +157,7 @@ EOF
             return Finder::create()->files()->in($filename)->name('*.twig');
         }
 
-        throw new RuntimeException(sprintf('File or directory "%s" is not readable', $filename));
+        throw new RuntimeException(sprintf('File or directory "%s" is not readable.', $filename));
     }
 
     private function validate($template, $file)
@@ -226,7 +226,7 @@ EOF
             }
         });
 
-        $output->writeln(json_encode($filesInfo, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
+        $output->writeln(json_encode($filesInfo, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES));
 
         return min($errors, 1);
     }
diff --git a/vendor/symfony/twig-bridge/Extension/CodeExtension.php b/vendor/symfony/twig-bridge/Extension/CodeExtension.php
index 717d4de6979865f7eeabe369f0d38673e57def76..dec4b61212e5a7881ba4b29ff9942f9ba941ed2d 100644
--- a/vendor/symfony/twig-bridge/Extension/CodeExtension.php
+++ b/vendor/symfony/twig-bridge/Extension/CodeExtension.php
@@ -102,7 +102,7 @@ class CodeExtension extends AbstractExtension
             } elseif ('resource' === $item[0]) {
                 $formattedValue = '<em>resource</em>';
             } else {
-                $formattedValue = str_replace("\n", '', htmlspecialchars(var_export($item[1], true), ENT_COMPAT | ENT_SUBSTITUTE, $this->charset));
+                $formattedValue = str_replace("\n", '', htmlspecialchars(var_export($item[1], true), \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset));
             }
 
             $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $key, $formattedValue);
@@ -188,7 +188,7 @@ class CodeExtension extends AbstractExtension
         }
 
         if (false !== $link = $this->getFileLink($file, $line)) {
-            return sprintf('<a href="%s" title="Click to open this file" class="file_link">%s</a>', htmlspecialchars($link, ENT_COMPAT | ENT_SUBSTITUTE, $this->charset), $text);
+            return sprintf('<a href="%s" title="Click to open this file" class="file_link">%s</a>', htmlspecialchars($link, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset), $text);
         }
 
         return $text;
@@ -236,7 +236,7 @@ class CodeExtension extends AbstractExtension
             }
         }
 
-        return htmlspecialchars($message, ENT_COMPAT | ENT_SUBSTITUTE, $this->charset);
+        return htmlspecialchars($message, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset);
     }
 
     /**
diff --git a/vendor/symfony/twig-bridge/Extension/FormExtension.php b/vendor/symfony/twig-bridge/Extension/FormExtension.php
index 1314e6544200f1e6259fa5e64c108506665116e5..84626c22c5250300ff0a68ce0aebe41116b49b31 100644
--- a/vendor/symfony/twig-bridge/Extension/FormExtension.php
+++ b/vendor/symfony/twig-bridge/Extension/FormExtension.php
@@ -38,9 +38,9 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __construct($renderer = null)
     {
         if ($renderer instanceof TwigRendererInterface) {
-            @trigger_error(sprintf('Passing a Twig Form Renderer to the "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0. Pass the Twig\Environment to the TwigRendererEngine constructor instead.', static::class), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a Twig Form Renderer to the "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0. Pass the Twig\Environment to the TwigRendererEngine constructor instead.', static::class), \E_USER_DEPRECATED);
         } elseif (null !== $renderer && !(\is_array($renderer) && isset($renderer[0], $renderer[1]) && $renderer[0] instanceof ContainerInterface)) {
-            throw new \InvalidArgumentException(sprintf('Passing any arguments to the constructor of %s is reserved for internal use.', __CLASS__));
+            throw new \InvalidArgumentException(sprintf('Passing any arguments to the constructor of "%s" is reserved for internal use.', __CLASS__));
         }
         $this->renderer = $renderer;
     }
@@ -116,7 +116,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __get($name)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
 
             if (\is_array($this->renderer)) {
                 $renderer = $this->renderer[0]->get($this->renderer[1]);
@@ -136,7 +136,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __set($name, $value)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
         }
 
         $this->$name = $value;
@@ -148,7 +148,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __isset($name)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
         }
 
         return isset($this->$name);
@@ -160,7 +160,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __unset($name)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
         }
 
         unset($this->$name);
diff --git a/vendor/symfony/twig-bridge/Extension/YamlExtension.php b/vendor/symfony/twig-bridge/Extension/YamlExtension.php
index bb8d5a12bd62e8dfdee8288320a34786a7f6bc46..fb364346df93a51229c85f82327767ee876bfdf6 100644
--- a/vendor/symfony/twig-bridge/Extension/YamlExtension.php
+++ b/vendor/symfony/twig-bridge/Extension/YamlExtension.php
@@ -44,7 +44,7 @@ class YamlExtension extends AbstractExtension
 
         if (\defined('Symfony\Component\Yaml\Yaml::DUMP_OBJECT')) {
             if (\is_bool($dumpObjects)) {
-                @trigger_error('Passing a boolean flag to toggle object support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the Yaml::DUMP_OBJECT flag instead.', E_USER_DEPRECATED);
+                @trigger_error('Passing a boolean flag to toggle object support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the Yaml::DUMP_OBJECT flag instead.', \E_USER_DEPRECATED);
 
                 $flags = $dumpObjects ? Yaml::DUMP_OBJECT : 0;
             } else {
diff --git a/vendor/symfony/twig-bridge/Form/TwigRenderer.php b/vendor/symfony/twig-bridge/Form/TwigRenderer.php
index b4cb7faa4d105b826dc00a2b407b784d04e5e7f4..34407d088c0fb6c96ac023c86b2e308df992aa4b 100644
--- a/vendor/symfony/twig-bridge/Form/TwigRenderer.php
+++ b/vendor/symfony/twig-bridge/Form/TwigRenderer.php
@@ -15,7 +15,7 @@ use Symfony\Component\Form\FormRenderer;
 use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
 use Twig\Environment;
 
-@trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s instead.', TwigRenderer::class, FormRenderer::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s instead.', TwigRenderer::class, FormRenderer::class), \E_USER_DEPRECATED);
 
 /**
  * @author Bernhard Schussek <bschussek@gmail.com>
diff --git a/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php b/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
index 73e7bc4c887e3c485eb6ef02e854d6a9fa82498f..f5097be45434ff4c534f85229757ac4937f6bb98 100644
--- a/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
+++ b/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
@@ -34,7 +34,7 @@ class TwigRendererEngine extends AbstractRendererEngine implements TwigRendererE
     public function __construct(array $defaultThemes = [], Environment $environment = null)
     {
         if (null === $environment) {
-            @trigger_error(sprintf('Not passing a Twig Environment as the second argument for "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0.', static::class), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Not passing a Twig Environment as the second argument for "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0.', static::class), \E_USER_DEPRECATED);
         }
 
         parent::__construct($defaultThemes);
@@ -49,7 +49,7 @@ class TwigRendererEngine extends AbstractRendererEngine implements TwigRendererE
     public function setEnvironment(Environment $environment)
     {
         if ($this->environment) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.3 and will be removed in 4.0. Pass the Twig Environment as second argument of the constructor instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.3 and will be removed in 4.0. Pass the Twig Environment as second argument of the constructor instead.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         $this->environment = $environment;
diff --git a/vendor/symfony/twig-bridge/LICENSE b/vendor/symfony/twig-bridge/LICENSE
index a677f43763ca467472898351b328aee41e2edd7c..9e936ec0448b8549e5edf08e5ac5f01491a8bfc8 100644
--- a/vendor/symfony/twig-bridge/LICENSE
+++ b/vendor/symfony/twig-bridge/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php b/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
index 612bec14e532928654b952526e59f7435548fe6b..8925d588772a83fe6235e61a6fbfba1333208bd4 100644
--- a/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
+++ b/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
@@ -28,7 +28,6 @@ class SearchAndRenderBlockNode extends FunctionExpression
 
         preg_match('/_([^_]+)$/', $this->getAttribute('name'), $matches);
 
-        $label = null;
         $arguments = iterator_to_array($this->getNode('arguments'));
         $blockNameSuffix = $matches[1];
 
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
index e23e6f8a29d09ce51d32b1d29dd02e6063b36b43..5673cf212730cbf37846703f5182802f49400fda 100644
--- a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
+++ b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
@@ -71,7 +71,6 @@ col-sm-10
         <div class="{{ block('form_label_class') }}"></div>{#--#}
         <div class="{{ block('form_group_class') }}">
             {{- form_widget(form) -}}
-            {{- form_errors(form) -}}
         </div>{#--#}
     </div>
 {%- endblock checkbox_row %}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
index ad4477cba5dea2c63c64d0b3e904d83c435de31b..362e27ce954ed0eecc743185e83a50bc0dc3324c 100644
--- a/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
+++ b/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
@@ -222,13 +222,11 @@
                 '%name%': name,
                 '%id%': id,
             }) %}
-        {%- elseif label is same as(false) -%}
-            {% set translation_domain = false %}
-        {%- else -%}
+        {%- elseif label is not same as(false) -%}
             {% set label = name|humanize %}
         {%- endif -%}
     {%- endif -%}
-    <button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</button>
+    <button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ translation_domain is same as(false) or label is same as(false) ? label : label|trans({}, translation_domain) }}</button>
 {%- endblock button_widget -%}
 
 {%- block submit_widget -%}
@@ -401,7 +399,7 @@
     {%- for attrname, attrvalue in attr -%}
         {{- " " -}}
         {%- if attrname in ['placeholder', 'title'] -%}
-            {{- attrname }}="{{ translation_domain is same as(false) ? attrvalue : attrvalue|trans({}, translation_domain) }}"
+            {{- attrname }}="{{ translation_domain is same as(false) or attrvalue is null ? attrvalue : attrvalue|trans({}, translation_domain) }}"
         {%- elseif attrvalue is same as(true) -%}
             {{- attrname }}="{{ attrname }}"
         {%- elseif attrvalue is not same as(false) -%}
diff --git a/vendor/symfony/twig-bridge/Tests/AppVariableTest.php b/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
index 4a3f04fddef18580e25f0645402e92de3cc6ac2f..eb132e72022ba9192f73cc5e0ea9d32473ddb330 100644
--- a/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
+++ b/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
@@ -180,10 +180,10 @@ class AppVariableTest extends TestCase
         $flashMessages = $this->setFlashMessages();
         $this->assertEquals($flashMessages, $this->appVariable->getFlashes([]));
 
-        $flashMessages = $this->setFlashMessages();
+        $this->setFlashMessages();
         $this->assertEquals([], $this->appVariable->getFlashes('this-does-not-exist'));
 
-        $flashMessages = $this->setFlashMessages();
+        $this->setFlashMessages();
         $this->assertEquals(
             ['this-does-not-exist' => []],
             $this->appVariable->getFlashes(['this-does-not-exist'])
diff --git a/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php b/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
index db10ccb6c0904ddff35d13af0af1947f14f7012b..f03e87a4a8100c7b9bf4c973546ad207ddee3bee 100644
--- a/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
@@ -42,7 +42,7 @@ class LintCommandTest extends TestCase
         $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
 
         $this->assertEquals(1, $ret, 'Returns 1 in case of error');
-        $this->assertRegExp('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
+        $this->assertMatchesRegularExpression('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
     }
 
     public function testLintFileNotReadable()
@@ -52,7 +52,7 @@ class LintCommandTest extends TestCase
         $filename = $this->createFile('');
         unlink($filename);
 
-        $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
+        $tester->execute(['filename' => [$filename]], ['decorated' => false]);
     }
 
     public function testLintFileCompileTimeException()
@@ -63,7 +63,7 @@ class LintCommandTest extends TestCase
         $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
 
         $this->assertEquals(1, $ret, 'Returns 1 in case of error');
-        $this->assertRegExp('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
+        $this->assertMatchesRegularExpression('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
     }
 
     /**
@@ -120,7 +120,7 @@ class LintCommandTest extends TestCase
     {
         foreach ($this->files as $file) {
             if (file_exists($file)) {
-                unlink($file);
+                @unlink($file);
             }
         }
     }
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
index 273ca922d6fe85a00d7a6b0a8364c34e67dc36f5..3125b88aad7fdb748d00fb7530cf255a5d265fbc 100644
--- a/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
@@ -82,6 +82,7 @@ class DumpExtensionTest extends TestCase
             $this->assertStringStartsWith('<script>', $dump);
             $dump = preg_replace('/^.*?<pre/', '<pre', $dump);
             $dump = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump);
+            $dump = preg_replace('/<samp [^>]++>/', '<samp>', $dump);
         }
         $this->assertEquals($expectedOutput, $dump);
     }
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
index 2b38122e5641042aa5e061fc54e0800a0d7b22a6..8e100deae10a64d36fa5fc6d1eb28d1d2d1fb7a5 100644
--- a/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
@@ -34,7 +34,7 @@ class StopwatchExtensionTest extends TestCase
         $twig->addExtension(new StopwatchExtension($this->getStopwatch($events)));
 
         try {
-            $nodes = $twig->render('template');
+            $twig->render('template');
         } catch (RuntimeError $e) {
             throw $e->getPrevious();
         }
@@ -57,18 +57,22 @@ class StopwatchExtensionTest extends TestCase
         $events = \is_array($events) ? $events : [$events];
         $stopwatch = $this->getMockBuilder('Symfony\Component\Stopwatch\Stopwatch')->getMock();
 
-        $i = -1;
+        $expectedCalls = 0;
+        $expectedStartCalls = [];
+        $expectedStopCalls = [];
         foreach ($events as $eventName) {
-            $stopwatch->expects($this->at(++$i))
-                ->method('start')
-                ->with($this->equalTo($eventName), 'template')
-            ;
-            $stopwatch->expects($this->at(++$i))
-                ->method('stop')
-                ->with($this->equalTo($eventName))
-            ;
+            ++$expectedCalls;
+            $expectedStartCalls[] = [$this->equalTo($eventName), 'template'];
+            $expectedStopCalls[] = [$this->equalTo($eventName)];
         }
 
+        $startInvocationMocker = $stopwatch->expects($this->exactly($expectedCalls))
+            ->method('start');
+        \call_user_func_array([$startInvocationMocker, 'withConsecutive'], $expectedStartCalls);
+        $stopInvocationMocker = $stopwatch->expects($this->exactly($expectedCalls))
+            ->method('stop');
+        \call_user_func_array([$stopInvocationMocker, 'withConsecutive'], $expectedStopCalls);
+
         return $stopwatch;
     }
 }
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
index aeb109fd250d36b5c42577d7caffe6d50fd3f7ad..206cda6783d3d3b4db89fc6c594d410b55510204 100644
--- a/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
@@ -49,21 +49,21 @@ class TranslationExtensionTest extends TestCase
     {
         $this->expectException('Twig\Error\SyntaxError');
         $this->expectExceptionMessage('Unexpected token. Twig was looking for the "with", "from", or "into" keyword in "index" at line 3.');
-        $output = $this->getTemplate("{% trans \n\nfoo %}{% endtrans %}")->render();
+        $this->getTemplate("{% trans \n\nfoo %}{% endtrans %}")->render();
     }
 
     public function testTransComplexBody()
     {
         $this->expectException('Twig\Error\SyntaxError');
         $this->expectExceptionMessage('A message inside a trans tag must be a simple text in "index" at line 2.');
-        $output = $this->getTemplate("{% trans %}\n{{ 1 + 2 }}{% endtrans %}")->render();
+        $this->getTemplate("{% trans %}\n{{ 1 + 2 }}{% endtrans %}")->render();
     }
 
     public function testTransChoiceComplexBody()
     {
         $this->expectException('Twig\Error\SyntaxError');
         $this->expectExceptionMessage('A message inside a transchoice tag must be a simple text in "index" at line 2.');
-        $output = $this->getTemplate("{% transchoice count %}\n{{ 1 + 2 }}{% endtranschoice %}")->render();
+        $this->getTemplate("{% transchoice count %}\n{{ 1 + 2 }}{% endtranschoice %}")->render();
     }
 
     public function getTransTests()
diff --git a/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php b/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
index 82d72983657ba90ede5815b0c37fae3cc7908cf3..28932d9449d6ae9b5e82b064f3ec4425205b20ac 100644
--- a/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
@@ -16,7 +16,6 @@ use Symfony\Bridge\Twig\Extension\TranslationExtension;
 use Symfony\Bridge\Twig\Translation\TwigExtractor;
 use Symfony\Component\Translation\MessageCatalogue;
 use Twig\Environment;
-use Twig\Error\Error;
 use Twig\Loader\ArrayLoader;
 
 class TwigExtractorTest extends TestCase
@@ -78,23 +77,15 @@ class TwigExtractorTest extends TestCase
     /**
      * @dataProvider resourcesWithSyntaxErrorsProvider
      */
-    public function testExtractSyntaxError($resources)
+    public function testExtractSyntaxError($resources, array $messages)
     {
-        $this->expectException('Twig\Error\Error');
         $twig = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
         $twig->addExtension(new TranslationExtension($this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')->getMock()));
 
         $extractor = new TwigExtractor($twig);
-
-        try {
-            $extractor->extract($resources, new MessageCatalogue('en'));
-        } catch (Error $e) {
-            $this->assertSame(\dirname(__DIR__).strtr('/Fixtures/extractor/syntax_error.twig', '/', \DIRECTORY_SEPARATOR), $e->getFile());
-            $this->assertSame(1, $e->getLine());
-            $this->assertSame('Unclosed "block".', $e->getMessage());
-
-            throw $e;
-        }
+        $catalogue = new MessageCatalogue('en');
+        $extractor->extract($resources, $catalogue);
+        $this->assertSame($messages, $catalogue->all());
     }
 
     /**
@@ -103,9 +94,9 @@ class TwigExtractorTest extends TestCase
     public function resourcesWithSyntaxErrorsProvider()
     {
         return [
-            [__DIR__.'/../Fixtures'],
-            [__DIR__.'/../Fixtures/extractor/syntax_error.twig'],
-            [new \SplFileInfo(__DIR__.'/../Fixtures/extractor/syntax_error.twig')],
+            [__DIR__.'/../Fixtures', ['messages' => ['Hi!' => 'Hi!']]],
+            [__DIR__.'/../Fixtures/extractor/syntax_error.twig', []],
+            [new \SplFileInfo(__DIR__.'/../Fixtures/extractor/syntax_error.twig'), []],
         ];
     }
 
diff --git a/vendor/symfony/twig-bridge/Translation/TwigExtractor.php b/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
index b7c787226656f47b65eaf5bd83703dcf65172b4f..3d01ca57c71580bc4704b24ed2fd345f622fa24c 100644
--- a/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
+++ b/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
@@ -12,7 +12,6 @@
 namespace Symfony\Bridge\Twig\Translation;
 
 use Symfony\Component\Finder\Finder;
-use Symfony\Component\Finder\SplFileInfo;
 use Symfony\Component\Translation\Extractor\AbstractFileExtractor;
 use Symfony\Component\Translation\Extractor\ExtractorInterface;
 use Symfony\Component\Translation\MessageCatalogue;
@@ -58,13 +57,7 @@ class TwigExtractor extends AbstractFileExtractor implements ExtractorInterface
             try {
                 $this->extractTemplate(file_get_contents($file->getPathname()), $catalogue);
             } catch (Error $e) {
-                if ($file instanceof \SplFileInfo) {
-                    $path = $file->getRealPath() ?: $file->getPathname();
-                    $name = $file instanceof SplFileInfo ? $file->getRelativePathname() : $path;
-                    $e->setSourceContext(new Source('', $name, $path));
-                }
-
-                throw $e;
+                // ignore errors, these should be fixed by using the linter
             }
         }
     }
@@ -98,7 +91,7 @@ class TwigExtractor extends AbstractFileExtractor implements ExtractorInterface
      */
     protected function canBeExtracted($file)
     {
-        return $this->isFile($file) && 'twig' === pathinfo($file, PATHINFO_EXTENSION);
+        return $this->isFile($file) && 'twig' === pathinfo($file, \PATHINFO_EXTENSION);
     }
 
     /**
diff --git a/vendor/symfony/twig-bridge/composer.json b/vendor/symfony/twig-bridge/composer.json
index f4fb1c98a4f1bb91463d923f3f473170128a2394..f61e4018eb9a8afec88484c95d0b3fad07103be2 100644
--- a/vendor/symfony/twig-bridge/composer.json
+++ b/vendor/symfony/twig-bridge/composer.json
@@ -66,10 +66,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.4-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/twig/twig/.travis.yml b/vendor/twig/twig/.travis.yml
index ff6132b358d36d8773135c94634dc75fdc434919..8a57df8c31ba9edc5be1cb181eafc45f8cf8e927 100644
--- a/vendor/twig/twig/.travis.yml
+++ b/vendor/twig/twig/.travis.yml
@@ -1,46 +1,35 @@
 language: php
 
-dist: trusty
-
-sudo: false
+dist: xenial
 
 cache:
     directories:
         - vendor
         - $HOME/.composer/cache/files
 
-
 env:
     global:
-        - TWIG_EXT=no
-        - SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT=1
+        - SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE=1
 
 before_install:
     - phpenv config-rm xdebug.ini || return 0
+    - echo memory_limit = -1 >> ~/.phpenv/versions/$TRAVIS_PHP_VERSION/etc/conf.d/travis.ini
 
 install:
     - travis_retry composer install
+    - export PHPUNIT=$(readlink -f ./vendor/bin/simple-phpunit)
+    - $PHPUNIT install
 
-before_script:
-    - if [ "$TWIG_EXT" == "yes" ]; then sh -c "cd ext/twig && phpize && ./configure --enable-twig && make && make install"; fi
-    - if [ "$TWIG_EXT" == "yes" ]; then echo "extension=twig.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi
-
-script: ./vendor/bin/simple-phpunit
+script:
+    - $PHPUNIT
 
 jobs:
     fast_finish: true
     include:
-        - php: 5.5
-        - php: 5.5
-          env: TWIG_EXT=yes
-        - php: 5.6
-        - php: 5.6
-          env: TWIG_EXT=yes
-        - php: 7.0
-        - php: 7.1
         - php: 7.2
         - php: 7.3
-        - php: 7.4snapshot
+        - php: 7.4
+        - php: nightly
         - stage: integration tests
           php: 7.3
           script: ./drupal_test.sh
diff --git a/vendor/twig/twig/CHANGELOG b/vendor/twig/twig/CHANGELOG
index 6ca3d45a1c7e389382b521f339d75cfb774a73ed..862dd3f4b9ce679221f5f5d85ce9bb5b2b48cf2c 100644
--- a/vendor/twig/twig/CHANGELOG
+++ b/vendor/twig/twig/CHANGELOG
@@ -1,4 +1,42 @@
-* 1.42.3 (2019-08-24)
+# 1.44.1 (2020-10-27)
+
+ * Fix "include(template_from_string())"
+
+# 1.44.0 (2020-10-21)
+
+ * Remove implicit dependency on ext/iconv in JS escaper
+ * Fix sandbox support when using "include(template_from_string())"
+ * Make round brackets optional for one argument tests like "same as" or "divisible by"
+ * Add support for ES2015 style object initialisation shortcut { a } is the same as { 'a': a }
+ * Fix filter(), map(), and reduce() to throw a RuntimeError instead of a PHP TypeError
+ * Drop PHP 7.1 support
+
+# 1.43.1 (2020-08-05)
+
+ * Fix sandbox not disabled if syntax error occurs within {% sandbox %} tag
+ * Fix a regression when not using a space before an operator
+ * Restrict callables to closures in filters
+ * Allow trailing commas in argument lists (in calls as well as definitions)
+
+# 1.43.0 (2020-07-05)
+
+ * Throw exception in case non-Traversable data is passed to "filter"
+ * Fix context optimization on PHP 7.4
+ * Fix PHP 8 compatibility
+ * Drop PHP 5.5 5.6, and 7.0 support
+ * Fix ambiguous syntax parsing
+ * In sandbox, the `filter`, `map` and `reduce` filters require Closures in `arrow` parameter
+
+# 1.42.5 (2020-02-11)
+
+ * Fix implementation of case-insensitivity for method names
+
+# 1.42.4 (2019-11-11)
+
+ * optimized "block('foo') ?? 'bar"
+ * added supported for exponential numbers
+
+# 1.42.3 (2019-08-24)
 
  * fixed the "split" filter when the delimiter is "0"
  * fixed the "empty" test on Traversable instances
@@ -6,34 +44,34 @@
  * fixed PHP 7.4 compatibility
  * bumped the minimal PHP version to 5.5
 
-* 1.42.2 (2019-06-18)
+# 1.42.2 (2019-06-18)
 
  * Display partial output (PHP buffer) when an error occurs in debug mode
 
-* 1.42.1 (2019-06-04)
+# 1.42.1 (2019-06-04)
 
  * added support for "Twig\Markup" instances in the "in" test (again)
  * allowed string operators as variables names in assignments
 
-* 1.42.0 (2019-05-31)
+# 1.42.0 (2019-05-31)
 
  * fixed the "filter" filter when the argument is \Traversable but does not implement \Iterator (\SimpleXmlElement for instance)
  * fixed a PHP fatal error when calling a macro imported in a block in a nested block
  * fixed a PHP fatal error when calling a macro imported in the template in another macro
  * fixed wrong error message on "import" and "from"
 
-* 1.41.0 (2019-05-14)
+# 1.41.0 (2019-05-14)
 
  * fixed support for PHP 7.4
  * added "filter", "map", and "reduce" filters (and support for arrow functions)
  * fixed partial output leak when a PHP fatal error occurs
  * optimized context access on PHP 7.4
 
-* 1.40.1 (2019-04-29)
+# 1.40.1 (2019-04-29)
 
-* fixed regression in NodeTraverser
+# fixed regression in NodeTraverser
 
-* 1.40.0 (2019-04-28)
+# 1.40.0 (2019-04-28)
 
  * allowed Twig\NodeVisitor\NodeVisitorInterface::leaveNode() to return "null" instead of "false" (same meaning)
  * added the "apply" tag as a replacement for the "filter" tag
@@ -42,11 +80,11 @@
  * fixed Lexer when using custom options containing the # char
  * fixed "import" when macros are stored in a template string
 
-* 1.39.1 (2019-04-16)
+# 1.39.1 (2019-04-16)
 
  * fixed EscaperNodeVisitor
 
-* 1.39.0 (2019-04-16)
+# 1.39.0 (2019-04-16)
 
  * added Traversable support for the length filter
  * fixed some wrong location in error messages
@@ -57,11 +95,11 @@
  * fixed "include" with "ignore missing" when an error loading occurs in the included template
  * added support for a new whitespace trimming option ({%~ ~%}, {{~ ~}}, {#~ ~#})
 
-* 1.38.4 (2019-03-23)
+# 1.38.4 (2019-03-23)
 
  * fixed CheckToStringNode implementation (broken when a function/filter is variadic)
 
-* 1.38.3 (2019-03-21)
+# 1.38.3 (2019-03-21)
 
  * fixed the spaceless filter so that it behaves like the spaceless tag
  * fixed BC break on Environment::resolveTemplate()
@@ -69,15 +107,15 @@
  * allowed Traversable objects to be used in the "with" tag
  * allowed Traversable objects to be used in the "with" argument of the "include" and "embed" tags
 
-* 1.38.2 (2019-03-12)
+# 1.38.2 (2019-03-12)
 
  * added TemplateWrapper::getTemplateName()
 
-* 1.38.1 (2019-03-12)
+# 1.38.1 (2019-03-12)
 
  * fixed class aliases
 
-* 1.38.0 (2019-03-12)
+# 1.38.0 (2019-03-12)
 
  * fixed sandbox security issue (under some circumstances, calling the
    __toString() method on an object was possible even if not allowed by the
@@ -94,12 +132,12 @@
  * added Twig\Loader\ChainLoader::getLoaders()
  * changed internal code to use the namespaced classes as much as possible
 
-* 1.37.1 (2019-01-14)
+# 1.37.1 (2019-01-14)
 
  * fixed regression (key exists check for non ArrayObject objects)
  * fixed logic in TemplateWrapper
 
-* 1.37.0 (2019-01-14)
+# 1.37.0 (2019-01-14)
 
  * fixed ArrayObject access with a null value
  * fixed embedded templates starting with a BOM
@@ -109,7 +147,7 @@
  * fixed float representation in compiled templates
  * added a second argument to the join filter (last separator configuration)
 
-* 1.36.0 (2018-12-16)
+# 1.36.0 (2018-12-16)
 
  * made sure twig_include returns a string
  * fixed multi-byte UFT-8 in escape('html_attr')
@@ -118,24 +156,24 @@
  * fixed GlobalsInterface extended class
  * fixed filesystem loader throwing an exception instead of returning false
 
-* 1.35.4 (2018-07-13)
+# 1.35.4 (2018-07-13)
 
  * ensured that syntax errors are triggered with the right line
  * added the Symfony ctype polyfill as a dependency
  * "js" filter now produces valid JSON
 
-* 1.35.3 (2018-03-20)
+# 1.35.3 (2018-03-20)
 
  * fixed block names unicity
  * fixed counting children of SimpleXMLElement objects
  * added missing else clause to avoid infinite loops
  * fixed .. (range operator) in sandbox policy
 
-* 1.35.2 (2018-03-03)
+# 1.35.2 (2018-03-03)
 
  * fixed a regression in the way the profiler is registered in templates
 
-* 1.35.1 (2018-03-02)
+# 1.35.1 (2018-03-02)
 
  * added an exception when using "===" instead of "same as"
  * fixed possible array to string conversion concealing actual error
@@ -143,31 +181,31 @@
  * fixed length filter when passing an instance of IteratorAggregate
  * fixed Environment::resolveTemplate to accept instances of TemplateWrapper
 
-* 1.35.0 (2017-09-27)
+# 1.35.0 (2017-09-27)
 
  * added Twig_Profiler_Profile::reset()
  * fixed use TokenParser to return an empty Node
  * added RuntimeExtensionInterface
  * added circular reference detection when loading templates
 
-* 1.34.4 (2017-07-04)
+# 1.34.4 (2017-07-04)
 
  * added support for runtime loaders in IntegrationTestCase
  * fixed deprecation when using Twig_Profiler_Dumper_Html
 
-* 1.34.3 (2017-06-07)
+# 1.34.3 (2017-06-07)
 
  * fixed namespaces introduction
 
-* 1.34.2 (2017-06-05)
+# 1.34.2 (2017-06-05)
 
  * fixed namespaces introduction
 
-* 1.34.1 (2017-06-05)
+# 1.34.1 (2017-06-05)
 
  * fixed namespaces introduction
 
-* 1.34.0 (2017-06-05)
+# 1.34.0 (2017-06-05)
 
  * added support for PHPUnit 6 when testing extensions
  * fixed PHP 7.2 compatibility
@@ -177,15 +215,15 @@
  * dropped HHVM support
  * dropped PHP 5.2 support
 
-* 1.33.2 (2017-04-20)
+# 1.33.2 (2017-04-20)
 
  * fixed edge case in the method cache for Twig attributes
 
-* 1.33.1 (2017-04-18)
+# 1.33.1 (2017-04-18)
 
  * fixed the empty() test
 
-* 1.33.0 (2017-03-22)
+# 1.33.0 (2017-03-22)
 
  * fixed a race condition handling when writing cache files
  * "length" filter now returns string length when applied to an object that does
@@ -194,13 +232,13 @@
    objects implement __toString() but not \Countable
  * fixed JS escaping for unicode characters with higher code points
 
-* 1.32.0 (2017-02-26)
+# 1.32.0 (2017-02-26)
 
  * fixed deprecation notice in Twig_Util_DeprecationCollector
  * added a PSR-11 compatible runtime loader
  * added `side` argument to `trim` to allow left or right trimming only.
 
-* 1.31.0 (2017-01-11)
+# 1.31.0 (2017-01-11)
 
  * added Twig_NodeCaptureInterface for nodes that capture all output
  * fixed marking the environment as initialized too early
@@ -208,13 +246,13 @@
  * turned fatal error into exception when a previously generated cache is corrupted
  * fixed offline cache warm-ups for embedded templates
 
-* 1.30.0 (2016-12-23)
+# 1.30.0 (2016-12-23)
 
  * added Twig_FactoryRuntimeLoader
  * deprecated function/test/filter/tag overriding
  * deprecated the "disable_c_ext" attribute on Twig_Node_Expression_GetAttr
 
-* 1.29.0 (2016-12-13)
+# 1.29.0 (2016-12-13)
 
  * fixed sandbox being left enabled if an exception is thrown while rendering
  * marked some classes as being final (via @final)
@@ -223,16 +261,16 @@
  * deprecated silent display of undefined blocks
  * deprecated support for mbstring.func_overload != 0
 
-* 1.28.2 (2016-11-23)
+# 1.28.2 (2016-11-23)
 
  * fixed precedence between getFoo() and isFoo() in Twig_Template::getAttribute()
  * improved a deprecation message
 
-* 1.28.1 (2016-11-18)
+# 1.28.1 (2016-11-18)
 
  * fixed block() function when used with a template argument
 
-* 1.28.0 (2016-11-17)
+# 1.28.0 (2016-11-17)
 
  * added support for the PHP 7 null coalescing operator for the ?? Twig implementation
  * exposed a way to access template data and methods in a portable way
@@ -242,7 +280,7 @@
  * added "is defined" support for block() and constant()
  * optimized the way attributes are fetched
 
-* 1.27.0 (2016-10-25)
+# 1.27.0 (2016-10-25)
 
  * deprecated Twig_Parser::getEnvironment()
  * deprecated Twig_Parser::addHandler() and Twig_Parser::addNodeVisitor()
@@ -260,13 +298,13 @@
  * fixed template paths when a template name contains a protocol like vfs://
  * improved debugging with Twig_Sandbox_SecurityError exceptions for disallowed methods and properties
 
-* 1.26.1 (2016-10-05)
+# 1.26.1 (2016-10-05)
 
  * removed template source code from generated template classes when debug is disabled
  * fixed default implementation of Twig_Template::getDebugInfo() for better BC
  * fixed regression on static calls for functions/filters/tests
 
-* 1.26.0 (2016-10-02)
+# 1.26.0 (2016-10-02)
 
  * added template cache invalidation based on more environment options
  * added a missing deprecation notice
@@ -274,7 +312,7 @@
  * allowed filters/functions/tests implementation to use a different class than the extension they belong to
  * deprecated Twig_ExtensionInterface::getName()
 
-* 1.25.0 (2016-09-21)
+# 1.25.0 (2016-09-21)
 
  * changed the way we store template source in template classes
  * removed usage of realpath in cache keys
@@ -284,13 +322,13 @@
  * deprecated Twig_Environment::getLexer(), Twig_Environment::getParser(), Twig_Environment::getCompiler()
  * deprecated Twig_Compiler::getFilename()
 
-* 1.24.2 (2016-09-01)
+# 1.24.2 (2016-09-01)
 
  * fixed static callables
  * fixed a potential PHP warning when loading the cache
  * fixed a case where the autoescaping does not work as expected
 
-* 1.24.1 (2016-05-30)
+# 1.24.1 (2016-05-30)
 
  * fixed reserved keywords (forbids true, false, null and none keywords for variables names)
  * fixed support for PHP7 (Throwable support)
@@ -299,36 +337,36 @@
    getTokenParsers(), getTags(), getNodeVisitors(), getUnaryOperators(), getBinaryOperators(),
    getFunctions(), getFilters(), getGlobals(), initGlobals(), initExtensions(), and initExtension()
 
-* 1.24.0 (2016-01-25)
+# 1.24.0 (2016-01-25)
 
  * adding support for the ?? operator
  * fixed the defined test when used on a constant, a map, or a sequence
  * undeprecated _self (should only be used to get the template name, not the template instance)
  * fixed parsing on PHP7
 
-* 1.23.3 (2016-01-11)
+# 1.23.3 (2016-01-11)
 
  * fixed typo
 
-* 1.23.2 (2015-01-11)
+# 1.23.2 (2015-01-11)
 
  * added versions in deprecated messages
  * made file cache tolerant for trailing (back)slashes on directory configuration
  * deprecated unused Twig_Node_Expression_ExtensionReference class
 
-* 1.23.1 (2015-11-05)
+# 1.23.1 (2015-11-05)
 
  * fixed some exception messages which triggered PHP warnings
  * fixed BC on Twig_Test_NodeTestCase
 
-* 1.23.0 (2015-10-29)
+# 1.23.0 (2015-10-29)
 
  * deprecated the possibility to override an extension by registering another one with the same name
  * deprecated Twig_ExtensionInterface::getGlobals() (added Twig_Extension_GlobalsInterface for BC)
  * deprecated Twig_ExtensionInterface::initRuntime() (added Twig_Extension_InitRuntimeInterface for BC)
  * deprecated Twig_Environment::computeAlternatives()
 
-* 1.22.3 (2015-10-13)
+# 1.22.3 (2015-10-13)
 
  * fixed regression when using null as a cache strategy
  * improved performance when checking template freshness
@@ -337,15 +375,15 @@
  * fixed logic for custom escapers to call them even on integers and null values
  * changed template cache names to take into account the Twig C extension
 
-* 1.22.2 (2015-09-22)
+# 1.22.2 (2015-09-22)
 
  * fixed a race condition in template loading
 
-* 1.22.1 (2015-09-15)
+# 1.22.1 (2015-09-15)
 
  * fixed regression in template_from_string
 
-* 1.22.0 (2015-09-13)
+# 1.22.0 (2015-09-13)
 
  * made Twig_Test_IntegrationTestCase more flexible
  * added an option to force PHP bytecode invalidation when writing a compiled template into the cache
@@ -356,23 +394,23 @@
  * added a way to override the filesystem template cache system
  * added a way to get the original template source from Twig_Template
 
-* 1.21.2 (2015-09-09)
+# 1.21.2 (2015-09-09)
 
  * fixed variable names for the deprecation triggering code
  * fixed escaping strategy detection based on filename
  * added Traversable support for replace, merge, and sort
  * deprecated support for character by character replacement for the "replace" filter
 
-* 1.21.1 (2015-08-26)
+# 1.21.1 (2015-08-26)
 
  * fixed regression when using the deprecated Twig_Test_* classes
 
-* 1.21.0 (2015-08-24)
+# 1.21.0 (2015-08-24)
 
  * added deprecation notices for deprecated features
  * added a deprecation "framework" for filters/functions/tests and test fixtures
 
-* 1.20.0 (2015-08-12)
+# 1.20.0 (2015-08-12)
 
  * forbid access to the Twig environment from templates and internal parts of Twig_Template
  * fixed limited RCEs when in sandbox mode
@@ -381,7 +419,7 @@
  * added Twig_BaseNodeVisitor to ease the compatibility of node visitors
    between 1.x and 2.x
 
-* 1.19.0 (2015-07-31)
+# 1.19.0 (2015-07-31)
 
  * fixed wrong error message when including an undefined template in a child template
  * added support for variadic filters, functions, and tests
@@ -391,19 +429,19 @@
  * deprecated Twig_Environment::clearTemplateCache()
  * fixed sandbox disabling when using the include function
 
-* 1.18.2 (2015-06-06)
+# 1.18.2 (2015-06-06)
 
  * fixed template/line guessing in exceptions for nested templates
  * optimized the number of inodes and the size of realpath cache when using the cache
 
-* 1.18.1 (2015-04-19)
+# 1.18.1 (2015-04-19)
 
  * fixed memory leaks in the C extension
  * deprecated Twig_Loader_String
  * fixed the slice filter when used with a SimpleXMLElement object
  * fixed filesystem loader when trying to load non-files (like directories)
 
-* 1.18.0 (2015-01-25)
+# 1.18.0 (2015-01-25)
 
  * fixed some error messages where the line was wrong (unknown variables or argument names)
  * added a new way to customize the main Module node (via empty nodes)
@@ -411,18 +449,18 @@
  * added a profiler
  * fixed filesystem loader cache when different file paths are used for the same template
 
-* 1.17.0 (2015-01-14)
+# 1.17.0 (2015-01-14)
 
  * added a 'filename' autoescaping strategy, which dynamically chooses the
    autoescaping strategy for a template based on template file extension.
 
-* 1.16.3 (2014-12-25)
+# 1.16.3 (2014-12-25)
 
  * fixed regression for dynamic parent templates
  * fixed cache management with statcache
  * fixed a regression in the slice filter
 
-* 1.16.2 (2014-10-17)
+# 1.16.2 (2014-10-17)
 
  * fixed timezone on dates as strings
  * fixed 2-words test names when a custom node class is not used
@@ -433,7 +471,7 @@
  * fixed a regression in the in operator
  * fixed a regression in the slice filter
 
-* 1.16.1 (2014-10-10)
+# 1.16.1 (2014-10-10)
 
  * improved error reporting in a sandboxed template
  * fixed missing error file/line information under certain circumstances
@@ -443,20 +481,20 @@
  * fixed for mb function overload mb_substr acting different
  * fixed the attribute() function when passing a variable for the arguments
 
-* 1.16.0 (2014-07-05)
+# 1.16.0 (2014-07-05)
 
  * changed url_encode to always encode according to RFC 3986
  * fixed inheritance in a 'use'-hierarchy
  * removed the __toString policy check when the sandbox is disabled
  * fixed recursively calling blocks in templates with inheritance
 
-* 1.15.1 (2014-02-13)
+# 1.15.1 (2014-02-13)
 
  * fixed the conversion of the special '0000-00-00 00:00' date
  * added an error message when trying to import an undefined block from a trait
  * fixed a C extension crash when accessing defined but uninitialized property.
 
-* 1.15.0 (2013-12-06)
+# 1.15.0 (2013-12-06)
 
  * made ignoreStrictCheck in Template::getAttribute() works with __call() methods throwing BadMethodCallException
  * added min and max functions
@@ -466,19 +504,19 @@
  * added a source function to include the content of a template without rendering it
  * fixed the C extension sandbox behavior when get or set is prepend to method name
 
-* 1.14.2 (2013-10-30)
+# 1.14.2 (2013-10-30)
 
  * fixed error filename/line when an error occurs in an included file
  * allowed operators that contain whitespaces to have more than one whitespace
  * allowed tests to be made of 1 or 2 words (like "same as" or "divisible by")
 
-* 1.14.1 (2013-10-15)
+# 1.14.1 (2013-10-15)
 
  * made it possible to use named operators as variables
  * fixed the possibility to have a variable named 'matches'
  * added support for PHP 5.5 DateTimeInterface
 
-* 1.14.0 (2013-10-03)
+# 1.14.0 (2013-10-03)
 
  * fixed usage of the html_attr escaping strategy to avoid double-escaping with the html strategy
  * added new operators: ends with, starts with, and matches
@@ -490,12 +528,12 @@
  * fixed template_from_string when the template includes or extends other ones
  * fixed a crash of the C extension on an edge case
 
-* 1.13.2 (2013-08-03)
+# 1.13.2 (2013-08-03)
 
  * fixed the error line number for an error occurs in and embedded template
  * fixed crashes of the C extension on some edge cases
 
-* 1.13.1 (2013-06-06)
+# 1.13.1 (2013-06-06)
 
  * added the possibility to ignore the filesystem constructor argument in Twig_Loader_Filesystem
  * fixed Twig_Loader_Chain::exists() for a loader which implements Twig_ExistsLoaderInterface
@@ -503,7 +541,7 @@
  * added support for object instances as the second argument of the constant test
  * fixed the include function when used in an assignment
 
-* 1.13.0 (2013-05-10)
+# 1.13.0 (2013-05-10)
 
  * fixed getting a numeric-like item on a variable ('09' for instance)
  * fixed getting a boolean or float key on an array, so it is consistent with PHP's array access:
@@ -512,7 +550,7 @@
  * changed ☃ to § in tests
  * enforced usage of named arguments after positional ones
 
-* 1.12.3 (2013-04-08)
+# 1.12.3 (2013-04-08)
 
  * fixed a security issue in the filesystem loader where it was possible to include a template one
    level above the configured path
@@ -520,25 +558,25 @@
  * added a batch filter
  * added support for encoding an array as query string in the url_encode filter
 
-* 1.12.2 (2013-02-09)
+# 1.12.2 (2013-02-09)
 
  * fixed the timezone used by the date filter and function when the given date contains a timezone (like 2010-01-28T15:00:00+02:00)
  * fixed globals when getGlobals is called early on
  * added the first and last filter
 
-* 1.12.1 (2013-01-15)
+# 1.12.1 (2013-01-15)
 
  * added support for object instances as the second argument of the constant function
  * relaxed globals management to avoid a BC break
  * added support for {{ some_string[:2] }}
 
-* 1.12.0 (2013-01-08)
+# 1.12.0 (2013-01-08)
 
  * added verbatim as an alias for the raw tag to avoid confusion with the raw filter
  * fixed registration of tests and functions as anonymous functions
  * fixed globals management
 
-* 1.12.0-RC1 (2012-12-29)
+# 1.12.0-RC1 (2012-12-29)
 
  * added an include function (does the same as the include tag but in a more flexible way)
  * added the ability to use any PHP callable to define filters, functions, and tests
@@ -548,14 +586,14 @@
  * moved filters/functions/tests syntax errors to the parser
  * added support for extended ternary operator syntaxes
 
-* 1.11.1 (2012-11-11)
+# 1.11.1 (2012-11-11)
 
  * fixed debug info line numbering (was off by 2)
  * fixed escaping when calling a macro inside another one (regression introduced in 1.9.1)
  * optimized variable access on PHP 5.4
  * fixed a crash of the C extension when an exception was thrown from a macro called without being imported (using _self.XXX)
 
-* 1.11.0 (2012-11-07)
+# 1.11.0 (2012-11-07)
 
  * fixed macro compilation when a variable name is a PHP reserved keyword
  * changed the date filter behavior to always apply the default timezone, except if false is passed as the timezone
@@ -565,41 +603,41 @@
  * optimized the way Twig exceptions are managed (to make them faster)
  * added Twig_ExistsLoaderInterface (implementing this interface in your loader make the chain loader much faster)
 
-* 1.10.3 (2012-10-19)
+# 1.10.3 (2012-10-19)
 
  * fixed wrong template location in some error messages
  * reverted a BC break introduced in 1.10.2
  * added a split filter
 
-* 1.10.2 (2012-10-15)
+# 1.10.2 (2012-10-15)
 
  * fixed macro calls on PHP 5.4
 
-* 1.10.1 (2012-10-15)
+# 1.10.1 (2012-10-15)
 
  * made a speed optimization to macro calls when imported via the "import" tag
  * fixed C extension compilation on Windows
  * fixed a segfault in the C extension when using DateTime objects
 
-* 1.10.0 (2012-09-28)
+# 1.10.0 (2012-09-28)
 
  * extracted functional tests framework to make it reusable for third-party extensions
  * added namespaced templates support in Twig_Loader_Filesystem
  * added Twig_Loader_Filesystem::prependPath()
  * fixed an error when a token parser pass a closure as a test to the subparse() method
 
-* 1.9.2 (2012-08-25)
+# 1.9.2 (2012-08-25)
 
  * fixed the in operator for objects that contain circular references
  * fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface
 
-* 1.9.1 (2012-07-22)
+# 1.9.1 (2012-07-22)
 
  * optimized macro calls when auto-escaping is on
  * fixed wrong parent class for Twig_Function_Node
  * made Twig_Loader_Chain more explicit about problems
 
-* 1.9.0 (2012-07-13)
+# 1.9.0 (2012-07-13)
 
  * made the parsing independent of the template loaders
  * fixed exception trace when an error occurs when rendering a child template
@@ -607,26 +645,26 @@
  * fixed nested embed tag calls
  * added the date_modify filter
 
-* 1.8.3 (2012-06-17)
+# 1.8.3 (2012-06-17)
 
  * fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash
  * fixed escaping when a project defines a function named html or js
  * fixed chmod mode to apply the umask correctly
 
-* 1.8.2 (2012-05-30)
+# 1.8.2 (2012-05-30)
 
  * added the abs filter
  * fixed a regression when using a number in template attributes
  * fixed compiler when mbstring.func_overload is set to 2
  * fixed DateTimeZone support in date filter
 
-* 1.8.1 (2012-05-17)
+# 1.8.1 (2012-05-17)
 
  * fixed a regression when dealing with SimpleXMLElement instances in templates
  * fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini
  * switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ)
 
-* 1.8.0 (2012-05-08)
+# 1.8.0 (2012-05-08)
 
  * enforced interface when adding tests, filters, functions, and node visitors from extensions
  * fixed a side-effect of the date filter where the timezone might be changed
@@ -635,7 +673,7 @@
  * changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html)
  * added an embed tag
 
-* 1.7.0 (2012-04-24)
+# 1.7.0 (2012-04-24)
 
  * fixed a PHP warning when using CIFS
  * fixed template line number in some exceptions
@@ -649,30 +687,30 @@
  * fixed filesystem loader freshness logic for high traffic websites
  * fixed random function when charset is null
 
-* 1.6.5 (2012-04-11)
+# 1.6.5 (2012-04-11)
 
  * fixed a regression when a template only extends another one without defining any blocks
 
-* 1.6.4 (2012-04-02)
+# 1.6.4 (2012-04-02)
 
  * fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3
  * fixed performance when compiling large files
  * optimized parent template creation when the template does not use dynamic inheritance
 
-* 1.6.3 (2012-03-22)
+# 1.6.3 (2012-03-22)
 
  * fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension
  * fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot
  * made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate
 
-* 1.6.2 (2012-03-18)
+# 1.6.2 (2012-03-18)
 
  * fixed sandbox mode when used with inheritance
  * added preserveKeys support for the slice filter
  * fixed the date filter when a DateTime instance is passed with a specific timezone
  * added a trim filter
 
-* 1.6.1 (2012-02-29)
+# 1.6.1 (2012-02-29)
 
  * fixed Twig C extension
  * removed the creation of Twig_Markup instances when not needed
@@ -680,7 +718,7 @@
  * fixed the slice filter on strings when the length is not specified
  * fixed the creation of the cache directory in case of a race condition
 
-* 1.6.0 (2012-02-04)
+# 1.6.0 (2012-02-04)
 
  * fixed raw blocks when used with the whitespace trim option
  * made a speed optimization to macro calls when imported via the "from" tag
@@ -695,22 +733,22 @@
  * added recursive parsing support in the parser
  * added string and integer handling for the random function
 
-* 1.5.1 (2012-01-05)
+# 1.5.1 (2012-01-05)
 
  * fixed a regression when parsing strings
 
-* 1.5.0 (2012-01-04)
+# 1.5.0 (2012-01-04)
 
  * added Traversable objects support for the join filter
 
-* 1.5.0-RC2 (2011-12-30)
+# 1.5.0-RC2 (2011-12-30)
 
  * added a way to set the default global date interval format
  * fixed the date filter for DateInterval instances (setTimezone() does not exist for them)
  * refactored Twig_Template::display() to ease its extension
  * added a number_format filter
 
-* 1.5.0-RC1 (2011-12-26)
+# 1.5.0-RC1 (2011-12-26)
 
  * removed the need to quote hash keys
  * allowed hash keys to be any expression
@@ -725,19 +763,19 @@
  * added string interpolation support
  * enhanced exceptions for unknown filters, functions, tests, and tags
 
-* 1.4.0 (2011-12-07)
+# 1.4.0 (2011-12-07)
 
  * fixed lexer when using big numbers (> PHP_INT_MAX)
  * added missing preserveKeys argument to the reverse filter
  * fixed macros containing filter tag calls
 
-* 1.4.0-RC2 (2011-11-27)
+# 1.4.0-RC2 (2011-11-27)
 
  * removed usage of Reflection in Twig_Template::getAttribute()
  * added a C extension that can optionally replace Twig_Template::getAttribute()
  * added negative timestamp support to the date filter
 
-* 1.4.0-RC1 (2011-11-20)
+# 1.4.0-RC1 (2011-11-20)
 
  * optimized variable access when using PHP 5.4
  * changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby
@@ -755,11 +793,11 @@
  * moved all node manipulations outside the compile() Node method
  * made several speed optimizations
 
-* 1.3.0 (2011-10-08)
+# 1.3.0 (2011-10-08)
 
 no changes
 
-* 1.3.0-RC1 (2011-10-04)
+# 1.3.0-RC1 (2011-10-04)
 
  * added an optimization for the parent() function
  * added cache reloading when auto_reload is true and an extension has been modified
@@ -767,11 +805,11 @@ no changes
  * allowed empty templates to be used as traits
  * added traits support for the "parent" function
 
-* 1.2.0 (2011-09-13)
+# 1.2.0 (2011-09-13)
 
 no changes
 
-* 1.2.0-RC1 (2011-09-10)
+# 1.2.0-RC1 (2011-09-10)
 
  * enhanced the exception when a tag remains unclosed
  * added support for empty Countable objects for the "empty" test
@@ -788,7 +826,7 @@ no changes
  * removed the possibility to use the "extends" tag from a block
  * added "if" modifier support to "for" loops
 
-* 1.1.2 (2011-07-30)
+# 1.1.2 (2011-07-30)
 
  * fixed json_encode filter on PHP 5.2
  * fixed regression introduced in 1.1.1 ({{ block(foo|lower) }})
@@ -798,28 +836,28 @@ no changes
  * fixed a parsing problem when a large chunk of text is enclosed in a comment tag
  * added PHPDoc for all Token parsers and Core extension functions
 
-* 1.1.1 (2011-07-17)
+# 1.1.1 (2011-07-17)
 
  * added a performance optimization in the Optimizer (also helps to lower the number of nested level calls)
  * made some performance improvement for some edge cases
 
-* 1.1.0 (2011-06-28)
+# 1.1.0 (2011-06-28)
 
  * fixed json_encode filter
 
-* 1.1.0-RC3 (2011-06-24)
+# 1.1.0-RC3 (2011-06-24)
 
  * fixed method case-sensitivity when using the sandbox mode
  * added timezone support for the date filter
  * fixed possible security problems with NUL bytes
 
-* 1.1.0-RC2 (2011-06-16)
+# 1.1.0-RC2 (2011-06-16)
 
  * added an exception when the template passed to "use" is not a string
  * made 'a.b is defined' not throw an exception if a is not defined (in strict mode)
  * added {% line \d+ %} directive
 
-* 1.1.0-RC1 (2011-05-28)
+# 1.1.0-RC1 (2011-05-28)
 
 Flush your cache after upgrading.
 
@@ -833,13 +871,13 @@ Flush your cache after upgrading.
  * wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line
  * moved display() method to Twig_Template (generated templates should now use doDisplay() instead)
 
-* 1.0.0 (2011-03-27)
+# 1.0.0 (2011-03-27)
 
  * fixed output when using mbstring
  * fixed duplicate call of methods when using the sandbox
  * made the charset configurable for the escape filter
 
-* 1.0.0-RC2 (2011-02-21)
+# 1.0.0-RC2 (2011-02-21)
 
  * changed the way {% set %} works when capturing (the content is now marked as safe)
  * added support for macro name in the endmacro tag
@@ -850,7 +888,7 @@ Flush your cache after upgrading.
  * removed coupling between Twig_Node and Twig_Template
  * fixed the ternary operator precedence rule
 
-* 1.0.0-RC1 (2011-01-09)
+# 1.0.0-RC1 (2011-01-09)
 
 Backward incompatibilities:
 
@@ -876,7 +914,7 @@ Changes:
  * the "default" filter now uses the "empty" test instead of just checking for null
  * added the "empty" test
 
-* 0.9.10 (2010-12-16)
+# 0.9.10 (2010-12-16)
 
 Backward incompatibilities:
 
@@ -911,7 +949,7 @@ Changes:
  * added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters)
  * added priority to node visitors
 
-* 0.9.9 (2010-11-28)
+# 0.9.9 (2010-11-28)
 
 Backward incompatibilities:
  * the self special variable has been renamed to _self
@@ -960,7 +998,7 @@ Changes:
  * renamed self to _self (to avoid conflict)
  * fixed Twig_Template::getAttribute() for protected properties
 
-* 0.9.8 (2010-06-28)
+# 0.9.8 (2010-06-28)
 
 Backward incompatibilities:
  * the trans tag plural count is now attached to the plural tag:
@@ -975,7 +1013,7 @@ Backward incompatibilities:
  * fixed set tag when used with a capture
  * fixed type hinting for Twig_Environment::addFilter() method
 
-* 0.9.7 (2010-06-12)
+# 0.9.7 (2010-06-12)
 
 Backward incompatibilities:
  * changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %})
@@ -1002,7 +1040,7 @@ Backward incompatibilities:
  * fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }})
  * added an exception when a child template has a non-empty body (as it is always ignored when rendering)
 
-* 0.9.6 (2010-05-12)
+# 0.9.6 (2010-05-12)
 
  * fixed variables defined outside a loop and for which the value changes in a for loop
  * fixed the test suite for PHP 5.2 and older versions of PHPUnit
@@ -1019,7 +1057,7 @@ Backward incompatibilities:
  * added support for escaping strategy in the autoescape tag
  * fixed lexer when a template has a big chunk of text between/in a block
 
-* 0.9.5 (2010-01-20)
+# 0.9.5 (2010-01-20)
 
 As for any new release, don't forget to remove all cached templates after
 upgrading.
@@ -1056,7 +1094,7 @@ stable).
  * added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes)
  * enhanced some error messages to provide better feedback in case of parsing errors
 
-* 0.9.4 (2009-12-02)
+# 0.9.4 (2009-12-02)
 
 If you have custom loaders, you MUST upgrade them for this release: The
 Twig_Loader base class has been removed, and the Twig_LoaderInterface has also
@@ -1069,7 +1107,7 @@ been changed (see the source code for more information or the documentation).
  * fixed bug when the filename of a template contains */
  * refactored loaders
 
-* 0.9.3 (2009-11-11)
+# 0.9.3 (2009-11-11)
 
 This release is NOT backward compatible with the previous releases.
 
@@ -1098,7 +1136,7 @@ This release is NOT backward compatible with the previous releases.
  * extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} )
  * fixed bug when \ was used in HTML
 
-* 0.9.2 (2009-10-29)
+# 0.9.2 (2009-10-29)
 
  * made some speed optimizations
  * changed the cache extension to .php
@@ -1116,7 +1154,7 @@ This release is NOT backward compatible with the previous releases.
  * enhanced some error messages to ease debugging
  * fixed empty cache files when the template contains an error
 
-* 0.9.1 (2009-10-14)
+# 0.9.1 (2009-10-14)
 
   * fixed a bug in PHP 5.2.6
   * fixed numbers with one than one decimal
@@ -1124,6 +1162,6 @@ This release is NOT backward compatible with the previous releases.
   * made small speed optimizations
   * made minor tweaks to allow better extensibility and flexibility
 
-* 0.9.0 (2009-10-12)
+# 0.9.0 (2009-10-12)
 
  * Initial release
diff --git a/vendor/twig/twig/LICENSE b/vendor/twig/twig/LICENSE
index d06ced2a39c59b2112fb5524ddde48234fc7cee4..94255bb2d4bf63009dfb5928282254860f862003 100644
--- a/vendor/twig/twig/LICENSE
+++ b/vendor/twig/twig/LICENSE
@@ -1,31 +1,27 @@
-Copyright (c) 2009-2019 by the Twig Team.
+Copyright (c) 2009-2020 by the Twig Team.
 
-Some rights reserved.
+All rights reserved.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
+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.
-
-    * The names of the contributors may not be used to endorse or
-      promote products derived from this software without specific
-      prior written permission.
+    * 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 Twig 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.
+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/twig/twig/composer.json b/vendor/twig/twig/composer.json
index 9807aa7711b96176b9710723130c8d76905a4f7a..46b0fc7a1c2e619c2e5729d7b27b2d05218ceb1b 100644
--- a/vendor/twig/twig/composer.json
+++ b/vendor/twig/twig/composer.json
@@ -5,6 +5,7 @@
     "keywords": ["templating"],
     "homepage": "https://twig.symfony.com",
     "license": "BSD-3-Clause",
+    "minimum-stability": "dev",
     "authors": [
         {
             "name": "Fabien Potencier",
@@ -14,7 +15,6 @@
         },
         {
             "name": "Twig Team",
-            "homepage": "https://twig.symfony.com/contributors",
             "role": "Contributors"
         },
         {
@@ -24,12 +24,11 @@
         }
     ],
     "require": {
-        "php": ">=5.5.0",
+        "php": ">=7.2.5",
         "symfony/polyfill-ctype": "^1.8"
     },
     "require-dev": {
-        "symfony/phpunit-bridge": "^4.4@dev|^5.0",
-        "symfony/debug": "^3.4|^4.2",
+        "symfony/phpunit-bridge": "^4.4.9|^5.0.9",
         "psr/container": "^1.0"
     },
     "autoload": {
@@ -47,7 +46,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.42-dev"
+            "dev-master": "1.44-dev"
         }
     }
 }
diff --git a/vendor/twig/twig/doc/advanced.rst b/vendor/twig/twig/doc/advanced.rst
index e253294191dab84c3c46424ca816f970f62a6ddf..f1ac102b55d12aef4bdb9c5cc217e470e8e1d7b7 100644
--- a/vendor/twig/twig/doc/advanced.rst
+++ b/vendor/twig/twig/doc/advanced.rst
@@ -189,7 +189,7 @@ If you want to access the current environment instance in your filter, set the
 ``needs_environment`` option to ``true``; Twig will pass the current
 environment as the first argument to the filter call::
 
-    $filter = new \Twig\TwigFilter('rot13', function (Twig_Environment $env, $string) {
+    $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $string) {
         // get the current charset for instance
         $charset = $env->getCharset();
 
@@ -208,7 +208,7 @@ the first argument to the filter call (or the second one if
         // ...
     }, ['needs_context' => true]);
 
-    $filter = new \Twig\TwigFilter('rot13', function (Twig_Environment $env, $context, $string) {
+    $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $context, $string) {
         // ...
     }, ['needs_context' => true, 'needs_environment' => true]);
 
@@ -339,14 +339,20 @@ When creating tests you can use the ``node_class`` option to provide custom test
 compilation. This is useful if your test can be compiled into PHP primitives.
 This is used by many of the tests built into Twig::
 
-    $twig = new \Twig\Environment($loader);
-    $test = new \Twig\TwigTest(
+    namespace App;
+    
+    use Twig\Environment;
+    use Twig\Node\Expression\TestExpression;
+    use Twig\TwigTest;
+    
+    $twig = new Environment($loader);
+    $test = new TwigTest(
         'odd',
         null,
-        ['node_class' => '\Twig\Node\Expression\Test\OddTest']);
+        ['node_class' => OddTestExpression::class]);
     $twig->addTest($test);
 
-    class Twig_Node_Expression_Test_Odd extends \Twig\Node\Expression\TestExpression
+    class OddTestExpression extends TestExpression
     {
         public function compile(\Twig\Compiler $compiler)
         {
@@ -584,11 +590,6 @@ to host all the specific tags and filters you want to add to Twig.
     recompile your templates whenever you make a change to it (when
     ``auto_reload`` is enabled).
 
-.. note::
-
-    Before writing your own extensions, have a look at the Twig official
-    extension repository: https://github.com/twigphp/Twig-extensions.
-
 An extension is a class that implements the following interface::
 
     interface Twig_ExtensionInterface
@@ -665,7 +666,7 @@ An extension is a class that implements the following interface::
 
 To keep your extension class clean and lean, inherit from the built-in
 ``\Twig\Extension\AbstractExtension`` class instead of implementing the interface as it provides
-empty implementations for all methods:
+empty implementations for all methods::
 
     class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
     {
diff --git a/vendor/twig/twig/doc/advanced_legacy.rst b/vendor/twig/twig/doc/advanced_legacy.rst
index cc87b9c9e8435ad170c6034d82dfee934ef46f8c..409b9144058e78d28f19833e3f865138eea2f1bd 100644
--- a/vendor/twig/twig/doc/advanced_legacy.rst
+++ b/vendor/twig/twig/doc/advanced_legacy.rst
@@ -524,11 +524,6 @@ to host all the specific tags and filters you want to add to Twig.
     recompile your templates whenever you make a change to it (when the
     ``auto_reload`` is enabled).
 
-.. note::
-
-    Before writing your own extensions, have a look at the Twig official
-    extension repository: https://github.com/twigphp/Twig-extensions.
-
 An extension is a class that implements the following interface::
 
     interface Twig_ExtensionInterface
diff --git a/vendor/twig/twig/doc/api.rst b/vendor/twig/twig/doc/api.rst
index b96b0d4e7f3e4fa96178f48e25f7211009666be6..1fac0f755e800138d1d1ba71995b16d7d1cb00b0 100644
--- a/vendor/twig/twig/doc/api.rst
+++ b/vendor/twig/twig/doc/api.rst
@@ -19,8 +19,7 @@ to have multiple environments side by side, with different configurations.
 The typical way to configure Twig to load templates for an application looks
 roughly like this::
 
-    require_once '/path/to/lib/Twig/Autoloader.php';
-    Twig_Autoloader::register();
+    require_once '/path/to/vendor/autoload.php';
 
     $loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
     $twig = new \Twig\Environment($loader, [
@@ -154,10 +153,7 @@ Compilation Cache
 ~~~~~~~~~~~~~~~~~
 
 All template loaders can cache the compiled templates on the filesystem for
-future reuse. It speeds up Twig a lot as templates are only compiled once; and
-the performance boost is even larger if you use a PHP accelerator such as
-OPCache. See the ``cache`` and ``auto_reload`` options of ``\Twig\Environment``
-above for more information.
+future reuse. It speeds up Twig a lot as templates are only compiled once.
 
 Built-in Loaders
 ~~~~~~~~~~~~~~~~
@@ -357,8 +353,8 @@ This section describes the features added by the built-in extensions.
 
 .. tip::
 
-    Read the chapter about extending Twig to learn how to create your own
-    extensions.
+    Read the chapter about :doc:`extending Twig <advanced>` to learn how to
+    create your own extensions.
 
 Core Extension
 ~~~~~~~~~~~~~~
@@ -417,7 +413,7 @@ The escaping rules are implemented as follows:
         {% set text = "Twig<br />" %}
         {{ text }} {# will be escaped #}
 
-* Expressions which the result is always a literal or a variable marked safe
+* Expressions which the result is a literal or a variable marked safe
   are never automatically escaped:
 
   .. code-block:: twig
@@ -425,14 +421,12 @@ The escaping rules are implemented as follows:
         {{ foo ? "Twig<br />" : "<br />Twig" }} {# won't be escaped #}
 
         {% set text = "Twig<br />" %}
-        {{ foo ? text : "<br />Twig" }} {# will be escaped #}
+        {{ true ? text : "<br />Twig" }} {# will be escaped #}
+        {{ false ? text : "<br />Twig" }} {# won't be escaped #}
 
         {% set text = "Twig<br />" %}
         {{ foo ? text|raw : "<br />Twig" }} {# won't be escaped #}
 
-        {% set text = "Twig<br />" %}
-        {{ foo ? text|escape : "<br />Twig" }} {# the result of the expression won't be escaped #}
-
 * Escaping is applied before printing, after any other filter is applied:
 
   .. code-block:: twig
diff --git a/vendor/twig/twig/doc/filters/batch.rst b/vendor/twig/twig/doc/filters/batch.rst
index cc50ec8e8570be22b6aefa45a11966d83a5b822b..c03c5747a994024f8e083dd02e51a83286d8df34 100644
--- a/vendor/twig/twig/doc/filters/batch.rst
+++ b/vendor/twig/twig/doc/filters/batch.rst
@@ -10,7 +10,7 @@ missing items:
 
 .. code-block:: twig
 
-    {% set items = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] %}
+    {% set items = ['a', 'b', 'c', 'd'] %}
 
     <table>
     {% for row in items|batch(3, 'No item') %}
@@ -34,11 +34,6 @@ The above example will be rendered as:
         </tr>
         <tr>
             <td>d</td>
-            <td>e</td>
-            <td>f</td>
-        </tr>
-        <tr>
-            <td>g</td>
             <td>No item</td>
             <td>No item</td>
         </tr>
@@ -49,3 +44,4 @@ Arguments
 
 * ``size``: The size of the batch; fractional numbers will be rounded up
 * ``fill``: Used to fill in missing items
+* ``preserve_keys``: Whether to preserve keys or not
diff --git a/vendor/twig/twig/doc/filters/default.rst b/vendor/twig/twig/doc/filters/default.rst
index c4ccb56a5002905dbc07f56ae343bd17c107121b..e616e590caacf9fced8fa4c61ded2be956ba486a 100644
--- a/vendor/twig/twig/doc/filters/default.rst
+++ b/vendor/twig/twig/doc/filters/default.rst
@@ -21,6 +21,15 @@ undefined:
 .. code-block:: twig
 
     {{ var.method(foo|default('foo'))|default('foo') }}
+    
+Using the ``default`` filter on a boolean variable might trigger unexpected behaviour, as
+``false`` is treated as an empty value. Consider using ``??`` instead:
+
+.. code-block:: twig
+
+    {% set foo = false %}
+    {{ foo|default(true) }} {# true #}
+    {{ foo ?? true }} {# false #}
 
 .. note::
 
diff --git a/vendor/twig/twig/doc/filters/filter.rst b/vendor/twig/twig/doc/filters/filter.rst
index 310e63a73e499cdd63488f47d3660fa284e28ab6..e9f968290f08be9c30621e779f106b40a57f0faf 100644
--- a/vendor/twig/twig/doc/filters/filter.rst
+++ b/vendor/twig/twig/doc/filters/filter.rst
@@ -1,5 +1,5 @@
 ``filter``
-=========
+==========
 
 .. versionadded:: 1.41
     The ``filter`` filter was added in Twig 1.41 and 2.10.
diff --git a/vendor/twig/twig/doc/filters/map.rst b/vendor/twig/twig/doc/filters/map.rst
index 9b1f5d738ec972101e020f731230f0c2b298eae0..e983e33b4846abc85c85955783871070971e435b 100644
--- a/vendor/twig/twig/doc/filters/map.rst
+++ b/vendor/twig/twig/doc/filters/map.rst
@@ -34,5 +34,4 @@ Note that the arrow function has access to the current context.
 Arguments
 ---------
 
-* ``array``: The sequence or mapping
 * ``arrow``: The arrow function
diff --git a/vendor/twig/twig/doc/filters/reduce.rst b/vendor/twig/twig/doc/filters/reduce.rst
index 7d04d6c7b086026fe0397f9e3424f4f54e053a48..af6164a95f72d3a0c1fd4a0d8f28233dbdf6e450 100644
--- a/vendor/twig/twig/doc/filters/reduce.rst
+++ b/vendor/twig/twig/doc/filters/reduce.rst
@@ -1,5 +1,5 @@
 ``reduce``
-=========
+==========
 
 .. versionadded:: 1.41
     The ``reduce`` filter was added in Twig 1.41 and 2.10.
@@ -28,6 +28,5 @@ Note that the arrow function has access to the current context.
 Arguments
 ---------
 
-* ``array``: The sequence or mapping
 * ``arrow``: The arrow function
 * ``initial``: The initial value
diff --git a/vendor/twig/twig/doc/functions/block.rst b/vendor/twig/twig/doc/functions/block.rst
index c62614822a6aad0d3c2dcaa0b870fd411269a244..927fc321fff08740c181b2ca1b5ea9771bc0731f 100644
--- a/vendor/twig/twig/doc/functions/block.rst
+++ b/vendor/twig/twig/doc/functions/block.rst
@@ -1,10 +1,10 @@
 ``block``
 =========
 
-.. versionadded: 1.28
+.. versionadded:: 1.28
     Using ``block`` with the ``defined`` test was added in Twig 1.28.
 
-.. versionadded: 1.28
+.. versionadded:: 1.28
     Support for the template argument was added in Twig 1.28.
 
 When a template uses inheritance and if you want to print a block multiple
diff --git a/vendor/twig/twig/doc/functions/constant.rst b/vendor/twig/twig/doc/functions/constant.rst
index f9d836cd1c6aec17dfc0357ca341af21a110205b..bb19858c223e04bbef44a1d4a7d453a970ff8101 100644
--- a/vendor/twig/twig/doc/functions/constant.rst
+++ b/vendor/twig/twig/doc/functions/constant.rst
@@ -1,10 +1,10 @@
 ``constant``
 ============
 
-.. versionadded: 1.12.1
+.. versionadded:: 1.12.1
     constant now accepts object instances as the second argument.
 
-.. versionadded: 1.28
+.. versionadded:: 1.28
     Using ``constant`` with the ``defined`` test was added in Twig 1.28.
 
 ``constant`` returns the constant value for a given string:
diff --git a/vendor/twig/twig/doc/intro.rst b/vendor/twig/twig/doc/intro.rst
index 1f52c80a899eaf20445bced3c10fd7e4c20eb78f..4c8e73be7449556d7551f8cfd6e613350726db51 100644
--- a/vendor/twig/twig/doc/intro.rst
+++ b/vendor/twig/twig/doc/intro.rst
@@ -26,7 +26,7 @@ Slim, Yii, Laravel, and Codeigniter — just to name a few.
 Prerequisites
 -------------
 
-Twig needs at least **PHP 5.5.0** to run.
+Twig 1.x needs at least **PHP 7.2.5** to run.
 
 Installation
 ------------
diff --git a/vendor/twig/twig/doc/tags/block.rst b/vendor/twig/twig/doc/tags/block.rst
index e38048232503012b2332ee02372b9139f59d22f0..0fb60c63522ae90221b5dacfa2eca3e70a1d042c 100644
--- a/vendor/twig/twig/doc/tags/block.rst
+++ b/vendor/twig/twig/doc/tags/block.rst
@@ -5,7 +5,6 @@ Blocks are used for inheritance and act as placeholders and replacements at
 the same time. They are documented in detail in the documentation for the
 :doc:`extends<../tags/extends>` tag.
 
-Block names should consist of alphanumeric characters, and underscores. Dashes
-are not permitted.
+Block names must consist of alphanumeric characters, and underscores. The first char can't be a digit and dashes are not permitted.
 
 .. seealso:: :doc:`block<../functions/block>`, :doc:`parent<../functions/parent>`, :doc:`use<../tags/use>`, :doc:`extends<../tags/extends>`
diff --git a/vendor/twig/twig/doc/tags/include.rst b/vendor/twig/twig/doc/tags/include.rst
index 661280f92eaa07111b693b8d350a93cdb452d2f1..624e86542e2fdcafd61cd9f01219b26dc7110c1f 100644
--- a/vendor/twig/twig/doc/tags/include.rst
+++ b/vendor/twig/twig/doc/tags/include.rst
@@ -1,7 +1,7 @@
 ``include``
 ===========
 
-The ``include`` statement includes a template and returns the rendered content
+The ``include`` statement includes a template and outputs the rendered content
 of that file:
 
 .. code-block:: twig
diff --git a/vendor/twig/twig/doc/templates.rst b/vendor/twig/twig/doc/templates.rst
index 168a8f7085a19da7b34886c2e9655c94215bc153..872e0b56731d4865c8670ebb816a25e0544b72be 100644
--- a/vendor/twig/twig/doc/templates.rst
+++ b/vendor/twig/twig/doc/templates.rst
@@ -568,6 +568,11 @@ exist:
     {# keys as integer #}
     { 2: 'foo', 4: 'bar' }
 
+    {# keys can be omitted if it is the same as the variable name #}
+    { foo }
+    {# is equivalent to the following #}
+    { 'foo': foo }
+
     {# keys as expressions (the expression must be enclosed into parentheses) -- as of Twig 1.5 #}
     {% set foo = 'foo' %}
     { (foo): 'foo', (1 + 1): 'bar', (foo ~ 'b'): 'baz' }
@@ -865,11 +870,8 @@ the modifiers on one side of a tag or on both sides:
 Extensions
 ----------
 
-Twig can be extended. If you are looking for new tags, filters, or functions,
-have a look at the Twig official `extension repository`_.
-
-If you want to create your own, read the :ref:`Creating an
-Extension<creating_extensions>` chapter.
+Twig can be extended. If you want to create your own extensions, read the
+:ref:`Creating an Extension <creating_extensions>` chapter.
 
 .. _`Twig bundle`:                https://github.com/Anomareh/PHP-Twig.tmbundle
 .. _`Jinja syntax plugin`:        http://jinja.pocoo.org/docs/integration/#vim
@@ -877,7 +879,6 @@ Extension<creating_extensions>` chapter.
 .. _`Twig syntax plugin`:         http://plugins.netbeans.org/plugin/37069/php-twig
 .. _`Twig plugin`:                https://github.com/pulse00/Twig-Eclipse-Plugin
 .. _`Twig language definition`:   https://github.com/gabrielcorpse/gedit-twig-template-language
-.. _`extension repository`:       https://github.com/twigphp/Twig-extensions
 .. _`Twig syntax mode`:           https://github.com/bobthecow/Twig-HTML.mode
 .. _`other Twig syntax mode`:     https://github.com/muxx/Twig-HTML.mode
 .. _`Notepad++ Twig Highlighter`: https://github.com/Banane9/notepadplusplus-twig
diff --git a/vendor/twig/twig/doc/tests/constant.rst b/vendor/twig/twig/doc/tests/constant.rst
index 98abf4d45dd7524a78841555febe345190748b26..5dc87e3ecd121e92852997a24ec6c2850ccb6b01 100644
--- a/vendor/twig/twig/doc/tests/constant.rst
+++ b/vendor/twig/twig/doc/tests/constant.rst
@@ -1,7 +1,7 @@
 ``constant``
 ============
 
-.. versionadded: 1.13.1
+.. versionadded:: 1.13.1
     constant now accepts object instances as the second argument.
 
 ``constant`` checks if a variable has the exact same value as a constant. You
diff --git a/vendor/twig/twig/doc/tests/sameas.rst b/vendor/twig/twig/doc/tests/sameas.rst
index 4fc267dbcba6ad9266390f19e5cae177858839f2..b400b89c5530f8072bd969a51b47aed9e031d74c 100644
--- a/vendor/twig/twig/doc/tests/sameas.rst
+++ b/vendor/twig/twig/doc/tests/sameas.rst
@@ -5,7 +5,7 @@
     The ``same as`` test was added in Twig 1.14.2 as an alias for ``sameas``.
 
 ``same as`` checks if a variable is the same as another variable.
-This is the equivalent to ``===`` in PHP:
+This is equivalent to ``===`` in PHP:
 
 .. code-block:: twig
 
diff --git a/vendor/twig/twig/drupal_test.sh b/vendor/twig/twig/drupal_test.sh
index 0374593c209106dc68a6b97b102462d2b9f451da..ca493f9d43f4a1678369fc9476fe4136f6190841 100644
--- a/vendor/twig/twig/drupal_test.sh
+++ b/vendor/twig/twig/drupal_test.sh
@@ -6,18 +6,17 @@ set -e
 REPO=`pwd`
 cd /tmp
 rm -rf drupal-twig-test
-composer create-project --no-interaction drupal-composer/drupal-project:8.x-dev drupal-twig-test
+composer create-project --no-interaction drupal/recommended-project:8.9.x-dev drupal-twig-test
 cd drupal-twig-test
 (cd vendor/twig && rm -rf twig && ln -sf $REPO twig)
-echo '$config["system.logging"]["error_level"] = "verbose";' >> web/sites/default/settings.php
 php ./web/core/scripts/drupal install --no-interaction demo_umami > output
 perl -p -i -e 's/^([A-Za-z]+)\: (.+)$/export DRUPAL_\1=\2/' output
 source output
+#echo '$config["system.logging"]["error_level"] = "verbose";' >> web/sites/default/settings.php
 
 wget https://get.symfony.com/cli/installer -O - | bash
 export PATH="$HOME/.symfony/bin:$PATH"
 symfony server:start -d --no-tls
-ENDPOINT=`symfony server:status -no-ansi | sed -E 's/^.+ http/http/'`
 
 curl -OLsS https://get.blackfire.io/blackfire-player.phar
 chmod +x blackfire-player.phar
@@ -47,5 +46,5 @@ scenario
     click link('Structure')
         expect status_code() == 200
 EOF
-./blackfire-player.phar run drupal-tests.bkf --endpoint=$ENDPOINT --variable name=$DRUPAL_Username --variable pass=$DRUPAL_Password
+./blackfire-player.phar run drupal-tests.bkf --endpoint=`symfony var:export SYMFONY_DEFAULT_ROUTE_URL` --variable name=$DRUPAL_Username --variable pass=$DRUPAL_Password
 symfony server:stop
diff --git a/vendor/twig/twig/ext/twig/php_twig.h b/vendor/twig/twig/ext/twig/php_twig.h
index 79ac938df534b57217c957e3fffb4f2f30889793..344539abaac2281c62721840d7425fc1e40ddf77 100644
--- a/vendor/twig/twig/ext/twig/php_twig.h
+++ b/vendor/twig/twig/ext/twig/php_twig.h
@@ -15,7 +15,7 @@
 #ifndef PHP_TWIG_H
 #define PHP_TWIG_H
 
-#define PHP_TWIG_VERSION "1.42.3"
+#define PHP_TWIG_VERSION "1.42.5-DEV"
 
 #include "php.h"
 
diff --git a/vendor/twig/twig/lib/Twig/Loader/String.php b/vendor/twig/twig/lib/Twig/Loader/String.php
index 348af0c1d5766ffd9ad5ad3d021c2cd66002ddf6..cb3b2a004b2715e30ae5aecedc7c146292f9021c 100644
--- a/vendor/twig/twig/lib/Twig/Loader/String.php
+++ b/vendor/twig/twig/lib/Twig/Loader/String.php
@@ -36,7 +36,7 @@ class Twig_Loader_String implements LoaderInterface, ExistsLoaderInterface, Sour
 {
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         return $name;
     }
diff --git a/vendor/twig/twig/lib/Twig/Test/Method.php b/vendor/twig/twig/lib/Twig/Test/Method.php
index 3559f34dc8cedd337a0b4167d3abfce8c35ffe69..4f16142b0768fe2b3e122d77690f7f79995b8ca5 100644
--- a/vendor/twig/twig/lib/Twig/Test/Method.php
+++ b/vendor/twig/twig/lib/Twig/Test/Method.php
@@ -39,4 +39,9 @@ class Twig_Test_Method extends Twig_Test
     {
         return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method);
     }
+
+    public function hasOneMandatoryArgument(): bool
+    {
+        return (bool) ($this->options['one_mandatory_argument'] ?? false);
+    }
 }
diff --git a/vendor/twig/twig/phpunit.xml.dist b/vendor/twig/twig/phpunit.xml.dist
deleted file mode 100644
index 391f244a7f48ad377cd4ef9048eb85b94f878750..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/phpunit.xml.dist
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         bootstrap="vendor/autoload.php"
->
-  <testsuites>
-    <testsuite name="Twig Test Suite">
-      <directory>./tests/</directory>
-    </testsuite>
-  </testsuites>
-
-  <php>
-    <ini name="error_reporting" value="-1" />
-    <ini name="xdebug.overload_var_dump" value="0" />
-  </php>
-
-  <listeners>
-    <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
-  </listeners>
-
-  <filter>
-    <whitelist>
-      <directory suffix=".php">./src/</directory>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/twig/twig/src/Environment.php b/vendor/twig/twig/src/Environment.php
index acd8233a7f9de1121dafdf9c396592b37f90e44f..1e5db570f55c98eb9f2e0d319d1a77521c768b8a 100644
--- a/vendor/twig/twig/src/Environment.php
+++ b/vendor/twig/twig/src/Environment.php
@@ -35,17 +35,17 @@ use Twig\RuntimeLoader\RuntimeLoaderInterface;
 use Twig\TokenParser\TokenParserInterface;
 
 /**
- * Stores the Twig configuration.
+ * Stores the Twig configuration and renders templates.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
 class Environment
 {
-    const VERSION = '1.42.3';
-    const VERSION_ID = 14203;
+    const VERSION = '1.44.1';
+    const VERSION_ID = 14401;
     const MAJOR_VERSION = 1;
-    const MINOR_VERSION = 42;
-    const RELEASE_VERSION = 3;
+    const MINOR_VERSION = 44;
+    const RELEASE_VERSION = 1;
     const EXTRA_VERSION = '';
 
     protected $charset;
@@ -515,7 +515,7 @@ class Environment
      *
      * This method should not be used as a generic way to load templates.
      *
-     * @param string $template The template name
+     * @param string $template The template source
      * @param string $name     An optional name of the template to be used in error messages
      *
      * @return TemplateWrapper A template instance representing the given template name
diff --git a/vendor/twig/twig/src/ExpressionParser.php b/vendor/twig/twig/src/ExpressionParser.php
index 9066ade169587d4f787676b3c5a7c21db916461d..fa480a07cc445d540dc4c201aee994df8eda9902 100644
--- a/vendor/twig/twig/src/ExpressionParser.php
+++ b/vendor/twig/twig/src/ExpressionParser.php
@@ -376,7 +376,16 @@ class ExpressionParser
             //  * a string -- 'a'
             //  * a name, which is equivalent to a string -- a
             //  * an expression, which must be enclosed in parentheses -- (1 + 2)
-            if (($token = $stream->nextIf(Token::STRING_TYPE)) || ($token = $stream->nextIf(Token::NAME_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) {
+            if ($token = $stream->nextIf(Token::NAME_TYPE)) {
+                $key = new ConstantExpression($token->getValue(), $token->getLine());
+
+                // {a} is a shortcut for {a:a}
+                if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) {
+                    $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine());
+                    $node->addElement($value, $key);
+                    continue;
+                }
+            } elseif (($token = $stream->nextIf(Token::STRING_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) {
                 $key = new ConstantExpression($token->getValue(), $token->getLine());
             } elseif ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
                 $key = $this->parseExpression();
@@ -598,6 +607,11 @@ class ExpressionParser
         while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) {
             if (!empty($args)) {
                 $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
+
+                // if the comma above was a trailing comma, early exit the argument parse loop
+                if ($stream->test(Token::PUNCTUATION_TYPE, ')')) {
+                    break;
+                }
             }
 
             if ($definition) {
@@ -657,7 +671,7 @@ class ExpressionParser
                 $stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to');
             }
             $value = $token->getValue();
-            if (\in_array(strtolower($value), ['true', 'false', 'none', 'null'])) {
+            if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) {
                 throw new SyntaxError(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext());
             }
             $targets[] = new AssignNameExpression($value, $token->getLine());
@@ -697,6 +711,8 @@ class ExpressionParser
         $arguments = null;
         if ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
             $arguments = $this->parseArguments(true);
+        } elseif ($test->hasOneMandatoryArgument()) {
+            $arguments = new Node([0 => $this->parsePrimaryExpression()]);
         }
 
         return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine());
@@ -740,7 +756,7 @@ class ExpressionParser
                 $message .= sprintf('. Use "%s" instead', $test->getAlternative());
             }
             $src = $stream->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $stream->getCurrent()->getLine());
+            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine());
 
             @trigger_error($message, E_USER_DEPRECATED);
         }
@@ -770,7 +786,7 @@ class ExpressionParser
                 $message .= sprintf('. Use "%s" instead', $function->getAlternative());
             }
             $src = $this->parser->getStream()->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line);
+            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
 
             @trigger_error($message, E_USER_DEPRECATED);
         }
@@ -800,7 +816,7 @@ class ExpressionParser
                 $message .= sprintf('. Use "%s" instead', $filter->getAlternative());
             }
             $src = $this->parser->getStream()->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line);
+            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
 
             @trigger_error($message, E_USER_DEPRECATED);
         }
diff --git a/vendor/twig/twig/src/Extension/AbstractExtension.php b/vendor/twig/twig/src/Extension/AbstractExtension.php
index fa3245b2984c4d6411bbd5e393801795fcee7a8a..cabe7182c9e1a50daa76ff84e88fffe66368809b 100644
--- a/vendor/twig/twig/src/Extension/AbstractExtension.php
+++ b/vendor/twig/twig/src/Extension/AbstractExtension.php
@@ -65,7 +65,7 @@ abstract class AbstractExtension implements ExtensionInterface
      */
     public function getName()
     {
-        return \get_class($this);
+        return static::class;
     }
 }
 
diff --git a/vendor/twig/twig/src/Extension/CoreExtension.php b/vendor/twig/twig/src/Extension/CoreExtension.php
index 5f3cc24a1954b15bfeec95f8b585117a2ff39cc2..b52cb29be139d87d2b8247e6f0a070ee1bf4e76c 100644
--- a/vendor/twig/twig/src/Extension/CoreExtension.php
+++ b/vendor/twig/twig/src/Extension/CoreExtension.php
@@ -194,9 +194,9 @@ class CoreExtension extends AbstractExtension
             new TwigFilter('sort', 'twig_sort_filter'),
             new TwigFilter('merge', 'twig_array_merge'),
             new TwigFilter('batch', 'twig_array_batch'),
-            new TwigFilter('filter', 'twig_array_filter'),
-            new TwigFilter('map', 'twig_array_map'),
-            new TwigFilter('reduce', 'twig_array_reduce'),
+            new TwigFilter('filter', 'twig_array_filter', ['needs_environment' => true]),
+            new TwigFilter('map', 'twig_array_map', ['needs_environment' => true]),
+            new TwigFilter('reduce', 'twig_array_reduce', ['needs_environment' => true]),
 
             // string/array filters
             new TwigFilter('reverse', 'twig_reverse_filter', ['needs_environment' => true]),
@@ -244,11 +244,11 @@ class CoreExtension extends AbstractExtension
             new TwigTest('odd', null, ['node_class' => '\Twig\Node\Expression\Test\OddTest']),
             new TwigTest('defined', null, ['node_class' => '\Twig\Node\Expression\Test\DefinedTest']),
             new TwigTest('sameas', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest', 'deprecated' => '1.21', 'alternative' => 'same as']),
-            new TwigTest('same as', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest']),
+            new TwigTest('same as', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest', 'one_mandatory_argument' => true]),
             new TwigTest('none', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']),
             new TwigTest('null', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']),
             new TwigTest('divisibleby', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest', 'deprecated' => '1.21', 'alternative' => 'divisible by']),
-            new TwigTest('divisible by', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest']),
+            new TwigTest('divisible by', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest', 'one_mandatory_argument' => true]),
             new TwigTest('constant', null, ['node_class' => '\Twig\Node\Expression\Test\ConstantTest']),
             new TwigTest('empty', 'twig_test_empty'),
             new TwigTest('iterable', 'twig_test_iterable'),
@@ -313,6 +313,8 @@ use Twig\Loader\SourceContextLoaderInterface;
 use Twig\Markup;
 use Twig\Node\Expression\ConstantExpression;
 use Twig\Node\Node;
+use Twig\Template;
+use Twig\TemplateWrapper;
 
 /**
  * Cycles over a value.
@@ -459,7 +461,7 @@ function twig_date_modify_filter(Environment $env, $date, $modifier)
  * @param \DateTime|\DateTimeInterface|string|null $date     A date
  * @param \DateTimeZone|string|false|null          $timezone The target timezone, null to use the default, false to leave unchanged
  *
- * @return \DateTime
+ * @return \DateTimeInterface
  */
 function twig_date_converter(Environment $env, $date = null, $timezone = null)
 {
@@ -539,15 +541,15 @@ function twig_replace_filter($str, $from, $to = null)
  */
 function twig_round($value, $precision = 0, $method = 'common')
 {
-    if ('common' == $method) {
+    if ('common' === $method) {
         return round($value, $precision);
     }
 
-    if ('ceil' != $method && 'floor' != $method) {
+    if ('ceil' !== $method && 'floor' !== $method) {
         throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.');
     }
 
-    return $method($value * pow(10, $precision)) / pow(10, $precision);
+    return $method($value * 10 ** $precision) / 10 ** $precision;
 }
 
 /**
@@ -1214,7 +1216,7 @@ function _twig_escape_js_callback($matches)
 
     /*
      * A few characters have short escape sequences in JSON and JavaScript.
-     * Escape sequences supported only by JavaScript, not JSON, are ommitted.
+     * Escape sequences supported only by JavaScript, not JSON, are omitted.
      * \" is also supported but omitted, because the resulting string is not HTML safe.
      */
     static $shortMap = [
@@ -1231,15 +1233,18 @@ function _twig_escape_js_callback($matches)
         return $shortMap[$char];
     }
 
-    // \uHHHH
-    $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8');
-    $char = strtoupper(bin2hex($char));
-
-    if (4 >= \strlen($char)) {
-        return sprintf('\u%04s', $char);
+    $codepoint = mb_ord($char);
+    if (0x10000 > $codepoint) {
+        return sprintf('\u%04X', $codepoint);
     }
 
-    return sprintf('\u%04s\u%04s', substr($char, 0, -4), substr($char, -4));
+    // Split characters outside the BMP into surrogate pairs
+    // https://tools.ietf.org/html/rfc2781.html#section-2.1
+    $u = $codepoint - 0x10000;
+    $high = 0xD800 | ($u >> 10);
+    $low = 0xDC00 | ($u & 0x3FF);
+
+    return sprintf('\u%04X\u%04X', $high, $low);
 }
 
 function _twig_escape_css_callback($matches)
@@ -1504,7 +1509,7 @@ function twig_to_array($seq, $preserveKeys = true)
 function twig_test_empty($value)
 {
     if ($value instanceof \Countable) {
-        return 0 == \count($value);
+        return 0 === \count($value);
     }
 
     if ($value instanceof \Traversable) {
@@ -1560,6 +1565,13 @@ function twig_include(Environment $env, $context, $template, $variables = [], $w
         if (!$alreadySandboxed = $sandbox->isSandboxed()) {
             $sandbox->enableSandbox();
         }
+
+        foreach ((\is_array($template) ? $template : [$template]) as $name) {
+            // if a Template instance is passed, it might have been instantiated outside of a sandbox, check security
+            if ($name instanceof TemplateWrapper || $name instanceof Template) {
+                $name->unwrap()->checkSecurity();
+            }
+        }
     }
 
     $loaded = null;
@@ -1693,8 +1705,16 @@ function twig_array_batch($items, $size, $fill = null, $preserveKeys = true)
     return $result;
 }
 
-function twig_array_filter($array, $arrow)
+function twig_array_filter(Environment $env, $array, $arrow)
 {
+    if (!twig_test_iterable($array)) {
+        throw new RuntimeError(sprintf('The "filter" filter expects an array or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array)));
+    }
+
+    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
+        throw new RuntimeError('The callable passed to "filter" filter must be a Closure in sandbox mode.');
+    }
+
     if (\is_array($array)) {
         if (\PHP_VERSION_ID >= 50600) {
             return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH);
@@ -1707,8 +1727,12 @@ function twig_array_filter($array, $arrow)
     return new \CallbackFilterIterator(new \IteratorIterator($array), $arrow);
 }
 
-function twig_array_map($array, $arrow)
+function twig_array_map(Environment $env, $array, $arrow)
 {
+    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
+        throw new RuntimeError('The callable passed to the "map" filter must be a Closure in sandbox mode.');
+    }
+
     $r = [];
     foreach ($array as $k => $v) {
         $r[$k] = $arrow($v, $k);
@@ -1717,9 +1741,17 @@ function twig_array_map($array, $arrow)
     return $r;
 }
 
-function twig_array_reduce($array, $arrow, $initial = null)
+function twig_array_reduce(Environment $env, $array, $arrow, $initial = null)
 {
+    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
+        throw new RuntimeError('The callable passed to the "reduce" filter must be a Closure in sandbox mode.');
+    }
+
     if (!\is_array($array)) {
+        if (!$array instanceof \Traversable) {
+            throw new RuntimeError(sprintf('The "reduce" filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array)));
+        }
+
         $array = iterator_to_array($array);
     }
 
diff --git a/vendor/twig/twig/src/Extension/ProfilerExtension.php b/vendor/twig/twig/src/Extension/ProfilerExtension.php
index 7b21b9fa55580c8df4019bfac0255fee9e463ebe..ad494585b6d508b0ff6fb05333b715a9badd15a3 100644
--- a/vendor/twig/twig/src/Extension/ProfilerExtension.php
+++ b/vendor/twig/twig/src/Extension/ProfilerExtension.php
@@ -41,7 +41,7 @@ class ProfilerExtension extends AbstractExtension
 
     public function getNodeVisitors()
     {
-        return [new ProfilerNodeVisitor(\get_class($this))];
+        return [new ProfilerNodeVisitor(static::class)];
     }
 
     public function getName()
diff --git a/vendor/twig/twig/src/Lexer.php b/vendor/twig/twig/src/Lexer.php
index 8cae3597f12494f85cb71daba00a3f36d50dae42..67d94ab927b9323c10e1e13dd3b7c11394fbe95e 100644
--- a/vendor/twig/twig/src/Lexer.php
+++ b/vendor/twig/twig/src/Lexer.php
@@ -47,7 +47,7 @@ class Lexer implements \Twig_LexerInterface
     const STATE_INTERPOLATION = 4;
 
     const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A';
-    const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A';
+    const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A';
     const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
     const REGEX_DQ_STRING_DELIM = '/"/A';
     const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
@@ -117,7 +117,7 @@ class Lexer implements \Twig_LexerInterface
             // #}
             'lex_comment' => '{
                 (?:'.
-                    preg_quote($this->options['whitespace_trim']).preg_quote($this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n?
+                    preg_quote($this->options['whitespace_trim'].$this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n?
                     '|'.
                     preg_quote($this->options['whitespace_line_trim'].$this->options['tag_comment'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~#}[ \t\0\x0B]*
                     '|'.
@@ -499,11 +499,15 @@ class Lexer implements \Twig_LexerInterface
         $regex = [];
         foreach ($operators as $operator => $length) {
             // an operator that ends with a character must be followed by
-            // a whitespace or a parenthesis
+            // a whitespace, a parenthesis, an opening map [ or sequence {
+            $r = preg_quote($operator, '/');
             if (ctype_alpha($operator[$length - 1])) {
-                $r = preg_quote($operator, '/').'(?=[\s()])';
-            } else {
-                $r = preg_quote($operator, '/');
+                $r .= '(?=[\s()\[{])';
+            }
+
+            // an operator that begins with a character must not have a dot or pipe before
+            if (ctype_alpha($operator[0])) {
+                $r = '(?<![\.\|])'.$r;
             }
 
             // an operator with a space can be any amount of whitespaces
diff --git a/vendor/twig/twig/src/Loader/ArrayLoader.php b/vendor/twig/twig/src/Loader/ArrayLoader.php
index 6bc430f50e4b64cba6b5f3dc7413ab09bedda0a2..e2c7b33c22ead274992b96ead30f9ceae4605945 100644
--- a/vendor/twig/twig/src/Loader/ArrayLoader.php
+++ b/vendor/twig/twig/src/Loader/ArrayLoader.php
@@ -53,7 +53,7 @@ class ArrayLoader implements LoaderInterface, ExistsLoaderInterface, SourceConte
 
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         $name = (string) $name;
         if (!isset($this->templates[$name])) {
diff --git a/vendor/twig/twig/src/Loader/ChainLoader.php b/vendor/twig/twig/src/Loader/ChainLoader.php
index 25ac55a335b82e7455e3417475914e8e89a97d3f..d1c08670033e4bea78a6f48dc208ae0727124b99 100644
--- a/vendor/twig/twig/src/Loader/ChainLoader.php
+++ b/vendor/twig/twig/src/Loader/ChainLoader.php
@@ -52,7 +52,7 @@ class ChainLoader implements LoaderInterface, ExistsLoaderInterface, SourceConte
 
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         $exceptions = [];
         foreach ($this->loaders as $loader) {
diff --git a/vendor/twig/twig/src/Loader/FilesystemLoader.php b/vendor/twig/twig/src/Loader/FilesystemLoader.php
index 19b43a2954955c391edc691af1dd503f83ab9612..54303ffdabfe80211a2a8f8cd2dcee89ef2afe66 100644
--- a/vendor/twig/twig/src/Loader/FilesystemLoader.php
+++ b/vendor/twig/twig/src/Loader/FilesystemLoader.php
@@ -138,7 +138,7 @@ class FilesystemLoader implements LoaderInterface, ExistsLoaderInterface, Source
 
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         if (null === ($path = $this->findTemplate($name)) || false === $path) {
             return '';
@@ -180,7 +180,7 @@ class FilesystemLoader implements LoaderInterface, ExistsLoaderInterface, Source
         try {
             return null !== ($path = $this->findTemplate($name, false)) && false !== $path;
         } catch (LoaderError $e) {
-            @trigger_error(sprintf('In %s::findTemplate(), you must accept a second argument that when set to "false" returns "false" instead of throwing an exception. Not supporting this argument is deprecated since version 1.27.', \get_class($this)), E_USER_DEPRECATED);
+            @trigger_error(sprintf('In %s::findTemplate(), you must accept a second argument that when set to "false" returns "false" instead of throwing an exception. Not supporting this argument is deprecated since version 1.27.', static::class), E_USER_DEPRECATED);
 
             return false;
         }
diff --git a/vendor/twig/twig/src/Node/CheckSecurityNode.php b/vendor/twig/twig/src/Node/CheckSecurityNode.php
index cf0a7a13d8acd376a04111386241551e3b30c252..5a5ae63dd6dc127d0704d12cd83c9aa83ec94920 100644
--- a/vendor/twig/twig/src/Node/CheckSecurityNode.php
+++ b/vendor/twig/twig/src/Node/CheckSecurityNode.php
@@ -45,10 +45,13 @@ class CheckSecurityNode extends Node
         }
 
         $compiler
-            ->write("\$this->sandbox = \$this->env->getExtension('\Twig\Extension\SandboxExtension');\n")
-            ->write('$tags = ')->repr(array_filter($tags))->raw(";\n")
-            ->write('$filters = ')->repr(array_filter($filters))->raw(";\n")
-            ->write('$functions = ')->repr(array_filter($functions))->raw(";\n\n")
+            ->write("\n")
+            ->write("public function checkSecurity()\n")
+            ->write("{\n")
+            ->indent()
+            ->write('static $tags = ')->repr(array_filter($tags))->raw(";\n")
+            ->write('static $filters = ')->repr(array_filter($filters))->raw(";\n")
+            ->write('static $functions = ')->repr(array_filter($functions))->raw(";\n\n")
             ->write("try {\n")
             ->indent()
             ->write("\$this->sandbox->checkSecurity(\n")
@@ -78,6 +81,8 @@ class CheckSecurityNode extends Node
             ->write("throw \$e;\n")
             ->outdent()
             ->write("}\n\n")
+            ->outdent()
+            ->write("}\n")
         ;
     }
 }
diff --git a/vendor/twig/twig/src/Node/EmbedNode.php b/vendor/twig/twig/src/Node/EmbedNode.php
index 05051ecec8a92d854ea52175fce55967fe928100..dde3db1bd39bc1fb4932f66952104f3b2e1d12a9 100644
--- a/vendor/twig/twig/src/Node/EmbedNode.php
+++ b/vendor/twig/twig/src/Node/EmbedNode.php
@@ -23,7 +23,7 @@ use Twig\Node\Expression\ConstantExpression;
 class EmbedNode extends IncludeNode
 {
     // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module)
-    public function __construct($name, $index, AbstractExpression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
+    public function __construct($name, $index, ?AbstractExpression $variables, $only, $ignoreMissing, $lineno, $tag = null)
     {
         parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag);
 
diff --git a/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php b/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
index 0a56849c7aade3b92390524bf64dbc5c420845c2..7e3c3e484d76044584e23f4ac6601a25ef06e557 100644
--- a/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
@@ -25,7 +25,7 @@ class BlockReferenceExpression extends AbstractExpression
     /**
      * @param Node|null $template
      */
-    public function __construct(\Twig_NodeInterface $name, $template = null, $lineno, $tag = null)
+    public function __construct(\Twig_NodeInterface $name, $template, $lineno, $tag = null)
     {
         if (\is_bool($template)) {
             @trigger_error(sprintf('The %s method "$asString" argument is deprecated since version 1.28 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED);
diff --git a/vendor/twig/twig/src/Node/Expression/CallExpression.php b/vendor/twig/twig/src/Node/Expression/CallExpression.php
index d202a739532c40ca88726c298a4b5f104e9f29d5..d0667379d0e65e695dd4da2031f6b3b721fa5962 100644
--- a/vendor/twig/twig/src/Node/Expression/CallExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/CallExpression.php
@@ -149,7 +149,16 @@ abstract class CallExpression extends AbstractExpression
         $optionalArguments = [];
         $pos = 0;
         foreach ($callableParameters as $callableParameter) {
-            $names[] = $name = $this->normalizeName($callableParameter->name);
+            $name = $this->normalizeName($callableParameter->name);
+            if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) {
+                if ('start' === $name) {
+                    $name = 'low';
+                } elseif ('end' === $name) {
+                    $name = 'high';
+                }
+            }
+
+            $names[] = $name;
 
             if (\array_key_exists($name, $parameters)) {
                 if (\array_key_exists($pos, $parameters)) {
@@ -254,7 +263,8 @@ abstract class CallExpression extends AbstractExpression
         }
         if ($isVariadic) {
             $argument = end($parameters);
-            if ($argument && $argument->isArray() && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) {
+            $isArray = $argument && $argument->hasType() && 'array' === $argument->getType()->getName();
+            if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) {
                 array_pop($parameters);
             } else {
                 $callableName = $r->name;
diff --git a/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php b/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
index b790bf7af7a840641dab6bbc9a9bcebefe65870d..06511c773743ce3490bfe1a17101bc8d312f8d76 100644
--- a/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
@@ -17,7 +17,7 @@ use Twig\Template;
 
 class GetAttrExpression extends AbstractExpression
 {
-    public function __construct(AbstractExpression $node, AbstractExpression $attribute, AbstractExpression $arguments = null, $type, $lineno)
+    public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno)
     {
         $nodes = ['node' => $node, 'attribute' => $attribute];
         if (null !== $arguments) {
diff --git a/vendor/twig/twig/src/Node/Expression/NameExpression.php b/vendor/twig/twig/src/Node/Expression/NameExpression.php
index d3f7d107fb00eef7c13657e5877ea354a5f8ac62..e7be5ff547dee6ca8bf24e2e699c9bb321a91a1d 100644
--- a/vendor/twig/twig/src/Node/Expression/NameExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/NameExpression.php
@@ -36,7 +36,7 @@ class NameExpression extends AbstractExpression
         if ($this->getAttribute('is_defined_test')) {
             if ($this->isSpecial()) {
                 $compiler->repr(true);
-            } elseif (\PHP_VERSION_ID >= 700400) {
+            } elseif (\PHP_VERSION_ID >= 70400) {
                 $compiler
                     ->raw('array_key_exists(')
                     ->string($name)
diff --git a/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php b/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
index 49326d467dbefe9f40fcbb44396a11965f2fc3dc..917d31a3b27a74082294684f5d44460229582692 100644
--- a/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
@@ -22,11 +22,15 @@ class NullCoalesceExpression extends ConditionalExpression
 {
     public function __construct(\Twig_NodeInterface $left, \Twig_NodeInterface $right, $lineno)
     {
-        $test = new AndBinary(
-            new DefinedTest(clone $left, 'defined', new Node(), $left->getTemplateLine()),
-            new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()),
-            $left->getTemplateLine()
-        );
+        $test = new DefinedTest(clone $left, 'defined', new Node(), $left->getTemplateLine());
+        // for "block()", we don't need the null test as the return value is always a string
+        if (!$left instanceof BlockReferenceExpression) {
+            $test = new AndBinary(
+                $test,
+                new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()),
+                $left->getTemplateLine()
+            );
+        }
 
         parent::__construct($test, $left, $right, $lineno);
     }
diff --git a/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php b/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
index 2222e11cfda784e15532246ee5e82056ee87b1aa..e2b3a0b8a90189ed8e2f0160c76af1186259ad6b 100644
--- a/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
+++ b/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
@@ -33,7 +33,7 @@ use Twig\Node\Expression\TestExpression;
  */
 class DefinedTest extends TestExpression
 {
-    public function __construct(\Twig_NodeInterface $node, $name, \Twig_NodeInterface $arguments = null, $lineno)
+    public function __construct(\Twig_NodeInterface $node, $name, ?\Twig_NodeInterface $arguments, $lineno)
     {
         if ($node instanceof NameExpression) {
             $node->setAttribute('is_defined_test', true);
diff --git a/vendor/twig/twig/src/Node/Expression/TestExpression.php b/vendor/twig/twig/src/Node/Expression/TestExpression.php
index 8fc31d3aadc028969f7b4bddf6d92f0ebebfda65..fa3c18fbf75431a35c770c2e21f9f95c2469330a 100644
--- a/vendor/twig/twig/src/Node/Expression/TestExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/TestExpression.php
@@ -16,7 +16,7 @@ use Twig\TwigTest;
 
 class TestExpression extends CallExpression
 {
-    public function __construct(\Twig_NodeInterface $node, $name, \Twig_NodeInterface $arguments = null, $lineno)
+    public function __construct(\Twig_NodeInterface $node, $name, ?\Twig_NodeInterface $arguments, $lineno)
     {
         $nodes = ['node' => $node];
         if (null !== $arguments) {
diff --git a/vendor/twig/twig/src/Node/ForNode.php b/vendor/twig/twig/src/Node/ForNode.php
index 49409a39b18eedfc743bfbbcc028aa2b6f260a46..111da37ea50cfedaef2a3a2d475271c5b64815bd 100644
--- a/vendor/twig/twig/src/Node/ForNode.php
+++ b/vendor/twig/twig/src/Node/ForNode.php
@@ -25,7 +25,7 @@ class ForNode extends Node
 {
     protected $loop;
 
-    public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, AbstractExpression $ifexpr = null, \Twig_NodeInterface $body, \Twig_NodeInterface $else = null, $lineno, $tag = null)
+    public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?AbstractExpression $ifexpr, \Twig_NodeInterface $body, ?\Twig_NodeInterface $else, $lineno, $tag = null)
     {
         $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]);
 
diff --git a/vendor/twig/twig/src/Node/IfNode.php b/vendor/twig/twig/src/Node/IfNode.php
index 4836d91f088f311086519720f7c7e1ffd0041346..da2ad344a7e1e4af6c0a64ee28a3c12a6bfe84a8 100644
--- a/vendor/twig/twig/src/Node/IfNode.php
+++ b/vendor/twig/twig/src/Node/IfNode.php
@@ -21,7 +21,7 @@ use Twig\Compiler;
  */
 class IfNode extends Node
 {
-    public function __construct(\Twig_NodeInterface $tests, \Twig_NodeInterface $else = null, $lineno, $tag = null)
+    public function __construct(\Twig_NodeInterface $tests, ?\Twig_NodeInterface $else, $lineno, $tag = null)
     {
         $nodes = ['tests' => $tests];
         if (null !== $else) {
diff --git a/vendor/twig/twig/src/Node/IncludeNode.php b/vendor/twig/twig/src/Node/IncludeNode.php
index 544db81eaf39c8ff9b470fa6ca5cd577afbac9d0..d0b6184c86f999e4026bda277a0d142e4388f1eb 100644
--- a/vendor/twig/twig/src/Node/IncludeNode.php
+++ b/vendor/twig/twig/src/Node/IncludeNode.php
@@ -22,7 +22,7 @@ use Twig\Node\Expression\AbstractExpression;
  */
 class IncludeNode extends Node implements NodeOutputInterface
 {
-    public function __construct(AbstractExpression $expr, AbstractExpression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
+    public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, $only, $ignoreMissing, $lineno, $tag = null)
     {
         $nodes = ['expr' => $expr];
         if (null !== $variables) {
diff --git a/vendor/twig/twig/src/Node/ModuleNode.php b/vendor/twig/twig/src/Node/ModuleNode.php
index aab2aa33f2d166ddb1c155af578c599977baac8a..89d602b97a15f6a879aa5e8d462eeb6ff1ce24a0 100644
--- a/vendor/twig/twig/src/Node/ModuleNode.php
+++ b/vendor/twig/twig/src/Node/ModuleNode.php
@@ -28,7 +28,7 @@ use Twig\Source;
  */
 class ModuleNode extends Node
 {
-    public function __construct(\Twig_NodeInterface $body, AbstractExpression $parent = null, \Twig_NodeInterface $blocks, \Twig_NodeInterface $macros, \Twig_NodeInterface $traits, $embeddedTemplates, $name, $source = '')
+    public function __construct(\Twig_NodeInterface $body, ?AbstractExpression $parent, \Twig_NodeInterface $blocks, \Twig_NodeInterface $macros, \Twig_NodeInterface $traits, $embeddedTemplates, $name, $source = '')
     {
         if (!$name instanceof Source) {
             @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED);
diff --git a/vendor/twig/twig/src/Node/Node.php b/vendor/twig/twig/src/Node/Node.php
index c890feb72da3e01dee1f64d2bc2304c8dcbe138d..5ec7a73f4c4680ba924317c835f035dbbada5813 100644
--- a/vendor/twig/twig/src/Node/Node.php
+++ b/vendor/twig/twig/src/Node/Node.php
@@ -40,7 +40,7 @@ class Node implements \Twig_NodeInterface
     {
         foreach ($nodes as $name => $node) {
             if (!$node instanceof \Twig_NodeInterface) {
-                @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, \get_class($this)), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class), E_USER_DEPRECATED);
             }
         }
         $this->nodes = $nodes;
@@ -56,7 +56,7 @@ class Node implements \Twig_NodeInterface
             $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true)));
         }
 
-        $repr = [\get_class($this).'('.implode(', ', $attributes)];
+        $repr = [static::class.'('.implode(', ', $attributes)];
 
         if (\count($this->nodes)) {
             foreach ($this->nodes as $name => $node) {
@@ -89,7 +89,7 @@ class Node implements \Twig_NodeInterface
         $dom->appendChild($xml = $dom->createElement('twig'));
 
         $xml->appendChild($node = $dom->createElement('node'));
-        $node->setAttribute('class', \get_class($this));
+        $node->setAttribute('class', static::class);
 
         foreach ($this->attributes as $name => $value) {
             $node->appendChild($attribute = $dom->createElement('attribute'));
@@ -153,7 +153,7 @@ class Node implements \Twig_NodeInterface
     public function getAttribute($name)
     {
         if (!\array_key_exists($name, $this->attributes)) {
-            throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, \get_class($this)));
+            throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, static::class));
         }
 
         return $this->attributes[$name];
@@ -187,7 +187,7 @@ class Node implements \Twig_NodeInterface
     public function getNode($name)
     {
         if (!\array_key_exists($name, $this->nodes)) {
-            throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, \get_class($this)));
+            throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, static::class));
         }
 
         return $this->nodes[$name];
@@ -196,7 +196,7 @@ class Node implements \Twig_NodeInterface
     public function setNode($name, $node = null)
     {
         if (!$node instanceof \Twig_NodeInterface) {
-            @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, \get_class($this)), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class), E_USER_DEPRECATED);
         }
 
         $this->nodes[$name] = $node;
@@ -236,7 +236,7 @@ class Node implements \Twig_NodeInterface
     {
         $this->sourceContext = $source;
         foreach ($this->nodes as $node) {
-            if ($node instanceof Node) {
+            if ($node instanceof self) {
                 $node->setSourceContext($source);
             }
         }
diff --git a/vendor/twig/twig/src/Node/SandboxNode.php b/vendor/twig/twig/src/Node/SandboxNode.php
index 2d644c3a137ba8ef47c6c918884e13648d95150f..3dcd4d8fa008b1d50e9557c1ff3ad33ec8a82882 100644
--- a/vendor/twig/twig/src/Node/SandboxNode.php
+++ b/vendor/twig/twig/src/Node/SandboxNode.php
@@ -34,12 +34,19 @@ class SandboxNode extends Node
             ->write("\$this->sandbox->enableSandbox();\n")
             ->outdent()
             ->write("}\n")
+            ->write("try {\n")
+            ->indent()
             ->subcompile($this->getNode('body'))
+            ->outdent()
+            ->write("} finally {\n")
+            ->indent()
             ->write("if (!\$alreadySandboxed) {\n")
             ->indent()
             ->write("\$this->sandbox->disableSandbox();\n")
             ->outdent()
             ->write("}\n")
+            ->outdent()
+            ->write("}\n")
         ;
     }
 }
diff --git a/vendor/twig/twig/src/Node/WithNode.php b/vendor/twig/twig/src/Node/WithNode.php
index f5ae9246ddc0a529440d0697a539c4d07d49f376..d291dcf9aef16127c231e95d0e2a14b194657862 100644
--- a/vendor/twig/twig/src/Node/WithNode.php
+++ b/vendor/twig/twig/src/Node/WithNode.php
@@ -20,7 +20,7 @@ use Twig\Compiler;
  */
 class WithNode extends Node
 {
-    public function __construct(Node $body, Node $variables = null, $only = false, $lineno, $tag = null)
+    public function __construct(Node $body, ?Node $variables, $only, $lineno, $tag = null)
     {
         $nodes = ['body' => $body];
         if (null !== $variables) {
diff --git a/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php b/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
index c9403398f09a299692ea1c818b3802f73210071e..9bee9f5cb5ce34c10d414ef8929b1be7054b4660 100644
--- a/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
+++ b/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
@@ -12,6 +12,7 @@
 namespace Twig\NodeVisitor;
 
 use Twig\Environment;
+use Twig\Node\CheckSecurityCallNode;
 use Twig\Node\CheckSecurityNode;
 use Twig\Node\CheckToStringNode;
 use Twig\Node\Expression\Binary\ConcatBinary;
@@ -102,7 +103,8 @@ class SandboxNodeVisitor extends AbstractNodeVisitor
         if ($node instanceof ModuleNode) {
             $this->inAModule = false;
 
-            $node->getNode('constructor_end')->setNode('_security_check', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('display_start')]));
+            $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')]));
+            $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')]));
         } elseif ($this->inAModule) {
             if ($node instanceof PrintNode || $node instanceof SetNode) {
                 $this->needsToStringWrap = false;
diff --git a/vendor/twig/twig/src/Parser.php b/vendor/twig/twig/src/Parser.php
index 0ea102cc811255d0cde675376e6ba3de84d881fd..9fb6a83a4e683ba7f49d683677b31d1ea6068f87 100644
--- a/vendor/twig/twig/src/Parser.php
+++ b/vendor/twig/twig/src/Parser.php
@@ -299,7 +299,7 @@ class Parser implements \Twig_ParserInterface
             $this->reservedMacroNames = [];
             $r = new \ReflectionClass($this->env->getBaseTemplateClass());
             foreach ($r->getMethods() as $method) {
-                $methodName = strtolower($method->getName());
+                $methodName = strtr($method->getName(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
 
                 if ('get' === substr($methodName, 0, 3) && isset($methodName[3])) {
                     $this->reservedMacroNames[] = substr($methodName, 3);
@@ -307,7 +307,7 @@ class Parser implements \Twig_ParserInterface
             }
         }
 
-        return \in_array(strtolower($name), $this->reservedMacroNames);
+        return \in_array(strtr($name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), $this->reservedMacroNames);
     }
 
     public function addTrait($trait)
diff --git a/vendor/twig/twig/src/Sandbox/SecurityPolicy.php b/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
index 31b6c34833230b7c8a54d0ac16e6b642ad8939aa..603843591af624a59472370a511895fc880dc880 100644
--- a/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
+++ b/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
@@ -51,7 +51,7 @@ class SecurityPolicy implements SecurityPolicyInterface
     {
         $this->allowedMethods = [];
         foreach ($methods as $class => $m) {
-            $this->allowedMethods[$class] = array_map('strtolower', \is_array($m) ? $m : [$m]);
+            $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]);
         }
     }
 
@@ -93,7 +93,7 @@ class SecurityPolicy implements SecurityPolicyInterface
         }
 
         $allowed = false;
-        $method = strtolower($method);
+        $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
         foreach ($this->allowedMethods as $class => $methods) {
             if ($obj instanceof $class) {
                 $allowed = \in_array($method, $methods);
diff --git a/vendor/twig/twig/src/Template.php b/vendor/twig/twig/src/Template.php
index 3f7447c126cf5bab09e62ca7f77006d916a17c3e..032efe32699d46be8569bcdf368d296522892242 100644
--- a/vendor/twig/twig/src/Template.php
+++ b/vendor/twig/twig/src/Template.php
@@ -111,8 +111,6 @@ abstract class Template implements \Twig_TemplateInterface
      * This method is for internal use only and should never be called
      * directly.
      *
-     * @param array $context
-     *
      * @return \Twig_TemplateInterface|TemplateWrapper|false The parent template or false if there is no parent
      *
      * @internal
@@ -366,7 +364,7 @@ abstract class Template implements \Twig_TemplateInterface
             }
 
             if ($template === $this->getTemplateName()) {
-                $class = \get_class($this);
+                $class = static::class;
                 if (false !== $pos = strrpos($class, '___', -1)) {
                     $class = substr($class, 0, $pos);
                 }
@@ -399,7 +397,7 @@ abstract class Template implements \Twig_TemplateInterface
      *
      * @return Template
      */
-    protected function unwrap()
+    public function unwrap()
     {
         return $this;
     }
@@ -628,7 +626,7 @@ abstract class Template implements \Twig_TemplateInterface
 
                 foreach ($ref->getMethods(\ReflectionMethod::IS_PUBLIC) as $refMethod) {
                     // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment
-                    if ('getenvironment' !== strtolower($refMethod->name)) {
+                    if ('getenvironment' !== strtr($refMethod->name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')) {
                         $methods[] = $refMethod->name;
                     }
                 }
@@ -642,7 +640,7 @@ abstract class Template implements \Twig_TemplateInterface
 
             foreach ($methods as $method) {
                 $cache[$method] = $method;
-                $cache[$lcName = strtolower($method)] = $method;
+                $cache[$lcName = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')] = $method;
 
                 if ('g' === $lcName[0] && 0 === strpos($lcName, 'get')) {
                     $name = substr($method, 3);
@@ -670,7 +668,7 @@ abstract class Template implements \Twig_TemplateInterface
         $call = false;
         if (isset(self::$cache[$class][$item])) {
             $method = self::$cache[$class][$item];
-        } elseif (isset(self::$cache[$class][$lcItem = strtolower($item)])) {
+        } elseif (isset(self::$cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) {
             $method = self::$cache[$class][$lcItem];
         } elseif (isset(self::$cache[$class]['__call'])) {
             $method = $item;
diff --git a/vendor/twig/twig/src/Test/IntegrationTestCase.php b/vendor/twig/twig/src/Test/IntegrationTestCase.php
index 36b36075867cb7f869ad1f3585a181abb1314f62..905f9725e398594c2e04872c4eefc65c6a5bc875 100644
--- a/vendor/twig/twig/src/Test/IntegrationTestCase.php
+++ b/vendor/twig/twig/src/Test/IntegrationTestCase.php
@@ -247,7 +247,7 @@ abstract class IntegrationTestCase extends TestCase
         $templates = [];
         preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER);
         foreach ($matches as $match) {
-            $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2];
+            $templates[($match[1] ?: 'index.twig')] = $match[2];
         }
 
         return $templates;
diff --git a/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php b/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
index 879879a2b010fab2a43e11a863dea4a7b475d2ba..c75e5ef8aa9a345ed8c3caccf867cd437779dec9 100644
--- a/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
+++ b/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
@@ -22,7 +22,7 @@ use Twig\Token;
  *
  *   {% apply upper %}
  *      This text becomes uppercase
- *   {% endapplys %}
+ *   {% endapply %}
  */
 final class ApplyTokenParser extends AbstractTokenParser
 {
diff --git a/vendor/twig/twig/src/TwigTest.php b/vendor/twig/twig/src/TwigTest.php
index 5054965fe9ae66fbc9fd73fdebc523d7451043db..962872d03ebe87d9823fddf4ff32cab5ea8558a3 100644
--- a/vendor/twig/twig/src/TwigTest.php
+++ b/vendor/twig/twig/src/TwigTest.php
@@ -35,6 +35,7 @@ class TwigTest
             'node_class' => '\Twig\Node\Expression\TestExpression',
             'deprecated' => false,
             'alternative' => null,
+            'one_mandatory_argument' => false,
         ], $options);
     }
 
@@ -82,6 +83,11 @@ class TwigTest
     {
         return $this->arguments;
     }
+
+    public function hasOneMandatoryArgument(): bool
+    {
+        return (bool) $this->options['one_mandatory_argument'];
+    }
 }
 
 class_alias('Twig\TwigTest', 'Twig_SimpleTest');
diff --git a/vendor/twig/twig/tests/AutoloaderTest.php b/vendor/twig/twig/tests/AutoloaderTest.php
deleted file mode 100644
index 9bf538aee239f2711a1ed6767864ecad239fb5b5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/AutoloaderTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class AutoloaderTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testAutoload()
-    {
-        $this->assertFalse(class_exists('FooBarFoo'), '->autoload() does not try to load classes that does not begin with Twig');
-
-        $autoloader = new \Twig_Autoloader();
-        $this->assertNull($autoloader->autoload('Foo'), '->autoload() returns false if it is not able to load a class');
-    }
-}
diff --git a/vendor/twig/twig/tests/Cache/FilesystemTest.php b/vendor/twig/twig/tests/Cache/FilesystemTest.php
deleted file mode 100644
index c810caed988206b707555cff634a0ef265d9559a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Cache/FilesystemTest.php
+++ /dev/null
@@ -1,193 +0,0 @@
-<?php
-
-namespace Twig\Tests\Cache;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Cache\FilesystemCache;
-use Twig\Tests\FilesystemHelper;
-
-class FilesystemTest extends \PHPUnit\Framework\TestCase
-{
-    private $classname;
-    private $directory;
-    private $cache;
-
-    protected function setUp()
-    {
-        $nonce = hash('sha256', uniqid(mt_rand(), true));
-        $this->classname = '__Twig_Tests_Cache_FilesystemTest_Template_'.$nonce;
-        $this->directory = sys_get_temp_dir().'/twig-test';
-        $this->cache = new FilesystemCache($this->directory);
-    }
-
-    protected function tearDown()
-    {
-        if (file_exists($this->directory)) {
-            FilesystemHelper::removeDir($this->directory);
-        }
-    }
-
-    public function testLoad()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-
-        $dir = \dirname($key);
-        @mkdir($dir, 0777, true);
-        $this->assertDirectoryExists($dir);
-        $this->assertFalse(class_exists($this->classname, false));
-
-        $content = $this->generateSource();
-        file_put_contents($key, $content);
-
-        $this->cache->load($key);
-
-        $this->assertTrue(class_exists($this->classname, false));
-    }
-
-    public function testLoadMissing()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-
-        $this->assertFalse(class_exists($this->classname, false));
-
-        $this->cache->load($key);
-
-        $this->assertFalse(class_exists($this->classname, false));
-    }
-
-    public function testWrite()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-        $this->assertFileNotExists($this->directory);
-
-        $this->cache->write($key, $content);
-
-        $this->assertFileExists($this->directory);
-        $this->assertFileExists($key);
-        $this->assertSame(file_get_contents($key), $content);
-    }
-
-    public function testWriteFailMkdir()
-    {
-        $this->expectException('\RuntimeException');
-        $this->expectExceptionMessage('Unable to create the cache directory');
-
-        if (\defined('PHP_WINDOWS_VERSION_BUILD')) {
-            $this->markTestSkipped('Read-only directories not possible on Windows.');
-        }
-
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-
-        // Create read-only root directory.
-        @mkdir($this->directory, 0555, true);
-        $this->assertDirectoryExists($this->directory);
-
-        $this->cache->write($key, $content);
-    }
-
-    public function testWriteFailDirWritable()
-    {
-        $this->expectException('\RuntimeException');
-        $this->expectExceptionMessage('Unable to write in the cache directory');
-
-        if (\defined('PHP_WINDOWS_VERSION_BUILD')) {
-            $this->markTestSkipped('Read-only directories not possible on Windows.');
-        }
-
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-
-        // Create root directory.
-        @mkdir($this->directory, 0777, true);
-        // Create read-only subdirectory.
-        @mkdir($this->directory.'/cache', 0555);
-        $this->assertDirectoryExists($this->directory.'/cache');
-
-        $this->cache->write($key, $content);
-    }
-
-    public function testWriteFailWriteFile()
-    {
-        $this->expectException('\RuntimeException');
-        $this->expectExceptionMessage('Failed to write cache file');
-
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-
-        // Create a directory in the place of the cache file.
-        @mkdir($key, 0777, true);
-        $this->assertDirectoryExists($key);
-
-        $this->cache->write($key, $content);
-    }
-
-    public function testGetTimestamp()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-
-        $dir = \dirname($key);
-        @mkdir($dir, 0777, true);
-        $this->assertDirectoryExists($dir);
-
-        // Create the file with a specific modification time.
-        touch($key, 1234567890);
-
-        $this->assertSame(1234567890, $this->cache->getTimestamp($key));
-    }
-
-    public function testGetTimestampMissingFile()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-        $this->assertSame(0, $this->cache->getTimestamp($key));
-    }
-
-    /**
-     * Test file cache is tolerant towards trailing (back)slashes on the configured cache directory.
-     *
-     * @dataProvider provideDirectories
-     */
-    public function testGenerateKey($expected, $input)
-    {
-        $cache = new FilesystemCache($input);
-        $this->assertRegExp($expected, $cache->generateKey('_test_', \get_class($this)));
-    }
-
-    public function provideDirectories()
-    {
-        $pattern = '#a/b/[a-zA-Z0-9]+/[a-zA-Z0-9]+.php$#';
-
-        return [
-            [$pattern, 'a/b'],
-            [$pattern, 'a/b/'],
-            [$pattern, 'a/b\\'],
-            [$pattern, 'a/b\\/'],
-            [$pattern, 'a/b\\//'],
-            ['#/'.substr($pattern, 1), '/a/b'],
-        ];
-    }
-
-    private function generateSource()
-    {
-        return strtr('<?php class {{classname}} {}', [
-            '{{classname}}' => $this->classname,
-        ]);
-    }
-}
diff --git a/vendor/twig/twig/tests/CompilerTest.php b/vendor/twig/twig/tests/CompilerTest.php
deleted file mode 100644
index cc462c25199c76a659255cf93378e37bf1f38dc4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/CompilerTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Compiler;
-use Twig\Environment;
-
-class CompilerTest extends \PHPUnit\Framework\TestCase
-{
-    public function testReprNumericValueWithLocale()
-    {
-        $compiler = new Compiler(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $locale = setlocale(LC_NUMERIC, 0);
-        if (false === $locale) {
-            $this->markTestSkipped('Your platform does not support locales.');
-        }
-
-        $required_locales = ['fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252'];
-        if (false === setlocale(LC_NUMERIC, $required_locales)) {
-            $this->markTestSkipped('Could not set any of required locales: '.implode(', ', $required_locales));
-        }
-
-        $this->assertEquals('1.2', $compiler->repr(1.2)->getSource());
-        $this->assertStringContainsString('fr', strtolower(setlocale(LC_NUMERIC, 0)));
-
-        setlocale(LC_NUMERIC, $locale);
-    }
-}
diff --git a/vendor/twig/twig/tests/ContainerRuntimeLoaderTest.php b/vendor/twig/twig/tests/ContainerRuntimeLoaderTest.php
deleted file mode 100644
index c85648342f39ca4a9627a2d28db34ea3cf99035f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/ContainerRuntimeLoaderTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\RuntimeLoader\ContainerRuntimeLoader;
-
-class ContainerRuntimeLoaderTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     */
-    public function testLoad()
-    {
-        $container = $this->createMock('Psr\Container\ContainerInterface');
-        $container->expects($this->once())->method('has')->with('stdClass')->willReturn(true);
-        $container->expects($this->once())->method('get')->with('stdClass')->willReturn(new \stdClass());
-
-        $loader = new ContainerRuntimeLoader($container);
-
-        $this->assertInstanceOf('stdClass', $loader->load('stdClass'));
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testLoadUnknownRuntimeReturnsNull()
-    {
-        $container = $this->createMock('Psr\Container\ContainerInterface');
-        $container->expects($this->once())->method('has')->with('Foo');
-        $container->expects($this->never())->method('get');
-
-        $loader = new ContainerRuntimeLoader($container);
-        $this->assertNull($loader->load('Foo'));
-    }
-}
diff --git a/vendor/twig/twig/tests/CustomExtensionTest.php b/vendor/twig/twig/tests/CustomExtensionTest.php
deleted file mode 100644
index b45e1434f25157d3c5dc1526bd7c3a89bf24cd67..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/CustomExtensionTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Extension\ExtensionInterface;
-
-class CustomExtensionTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     * @dataProvider provideInvalidExtensions
-     */
-    public function testGetInvalidOperators(ExtensionInterface $extension, $expectedExceptionMessage)
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage($expectedExceptionMessage);
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $env->addExtension($extension);
-        $env->getUnaryOperators();
-    }
-
-    public function provideInvalidExtensions()
-    {
-        return [
-            [new InvalidOperatorExtension(new \stdClass()), '"Twig\Tests\InvalidOperatorExtension::getOperators()" must return an array with operators, got "stdClass".'],
-            [new InvalidOperatorExtension([1, 2, 3]), '"Twig\Tests\InvalidOperatorExtension::getOperators()" must return an array of 2 elements, got 3.'],
-        ];
-    }
-}
-
-class InvalidOperatorExtension implements ExtensionInterface
-{
-    private $operators;
-
-    public function __construct($operators)
-    {
-        $this->operators = $operators;
-    }
-
-    public function initRuntime(Environment $environment)
-    {
-    }
-
-    public function getTokenParsers()
-    {
-        return [];
-    }
-
-    public function getNodeVisitors()
-    {
-        return [];
-    }
-
-    public function getFilters()
-    {
-        return [];
-    }
-
-    public function getTests()
-    {
-        return [];
-    }
-
-    public function getFunctions()
-    {
-        return [];
-    }
-
-    public function getGlobals()
-    {
-        return [];
-    }
-
-    public function getOperators()
-    {
-        return $this->operators;
-    }
-
-    public function getName()
-    {
-        return __CLASS__;
-    }
-}
diff --git a/vendor/twig/twig/tests/EnvironmentTest.php b/vendor/twig/twig/tests/EnvironmentTest.php
deleted file mode 100644
index 54a894506cba8735c5c34b0fe6ee6a898a88ca01..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/EnvironmentTest.php
+++ /dev/null
@@ -1,678 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Cache\FilesystemCache;
-use Twig\Environment;
-use Twig\Extension\AbstractExtension;
-use Twig\Extension\GlobalsInterface;
-use Twig\Extension\InitRuntimeInterface;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\Source;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-class EnvironmentTest extends \PHPUnit\Framework\TestCase
-{
-    private $deprecations = [];
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyTokenizeSignature()
-    {
-        $env = new Environment();
-        $stream = $env->tokenize('{{ foo }}', 'foo');
-        $this->assertEquals('{{ foo }}', $stream->getSource());
-        $this->assertEquals('foo', $stream->getFilename());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyCompileSourceSignature()
-    {
-        $loader = new ArrayLoader(['foo' => '{{ foo }}']);
-        $env = new Environment($loader);
-        $this->assertStringContainsString('getTemplateName', $env->compileSource('{{ foo }}', 'foo'));
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testRenderNoLoader()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessage('You must set a loader first.');
-
-        $env = new Environment();
-        $env->render('test');
-    }
-
-    public function testAutoescapeOption()
-    {
-        $loader = new ArrayLoader([
-            'html' => '{{ foo }} {{ foo }}',
-            'js' => '{{ bar }} {{ bar }}',
-        ]);
-
-        $twig = new Environment($loader, [
-            'debug' => true,
-            'cache' => false,
-            'autoescape' => [$this, 'escapingStrategyCallback'],
-        ]);
-
-        $this->assertEquals('foo&lt;br/ &gt; foo&lt;br/ &gt;', $twig->render('html', ['foo' => 'foo<br/ >']));
-        $this->assertEquals('foo\u003Cbr\/\u0020\u003E foo\u003Cbr\/\u0020\u003E', $twig->render('js', ['bar' => 'foo<br/ >']));
-    }
-
-    public function escapingStrategyCallback($name)
-    {
-        return $name;
-    }
-
-    public function testGlobals()
-    {
-        // to be removed in 2.0
-        $loader = $this->createMock('\Twig\Tests\EnvironmentTestLoaderInterface');
-        //$loader = $this->createMock(['\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface']);
-        $loader->expects($this->any())->method('getSourceContext')->willReturn(new Source('', ''));
-
-        // globals can be added after calling getGlobals
-
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        // globals can be modified after a template has been loaded
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->load('index');
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        // globals can be modified after extensions init
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        // globals can be modified after extensions and a template has been loaded
-        $arrayLoader = new ArrayLoader(['index' => '{{foo}}']);
-        $twig = new Environment($arrayLoader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        $twig->load('index');
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        $twig = new Environment($arrayLoader);
-        $twig->getGlobals();
-        $twig->addGlobal('foo', 'bar');
-        $template = $twig->load('index');
-        $this->assertEquals('bar', $template->render([]));
-
-        /* to be uncomment in Twig 2.0
-        // globals cannot be added after a template has been loaded
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->load('index');
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-
-        // globals cannot be added after extensions init
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-
-        // globals cannot be added after extensions and a template has been loaded
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        $twig->load('index');
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-
-        // test adding globals after a template has been loaded without call to getGlobals
-        $twig = new Environment($loader);
-        $twig->load('index');
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-        */
-    }
-
-    public function testExtensionsAreNotInitializedWhenRenderingACompiledTemplate()
-    {
-        $cache = new FilesystemCache($dir = sys_get_temp_dir().'/twig');
-        $options = ['cache' => $cache, 'auto_reload' => false, 'debug' => false];
-
-        // force compilation
-        $twig = new Environment($loader = new ArrayLoader(['index' => '{{ foo }}']), $options);
-
-        $key = $cache->generateKey('index', $twig->getTemplateClass('index'));
-        $cache->write($key, $twig->compileSource(new Source('{{ foo }}', 'index')));
-
-        // check that extensions won't be initialized when rendering a template that is already in the cache
-        $twig = $this
-            ->getMockBuilder('\Twig\Environment')
-            ->setConstructorArgs([$loader, $options])
-            ->setMethods(['initExtensions'])
-            ->getMock()
-        ;
-
-        $twig->expects($this->never())->method('initExtensions');
-
-        // render template
-        $output = $twig->render('index', ['foo' => 'bar']);
-        $this->assertEquals('bar', $output);
-
-        FilesystemHelper::removeDir($dir);
-    }
-
-    public function testAutoReloadCacheMiss()
-    {
-        $templateName = __FUNCTION__;
-        $templateContent = __FUNCTION__;
-
-        $cache = $this->createMock('\Twig\Cache\CacheInterface');
-        $loader = $this->getMockLoader($templateName, $templateContent);
-        $twig = new Environment($loader, ['cache' => $cache, 'auto_reload' => true, 'debug' => false]);
-
-        // Cache miss: getTimestamp returns 0 and as a result the load() is
-        // skipped.
-        $cache->expects($this->once())
-            ->method('generateKey')
-            ->willReturn('key');
-        $cache->expects($this->once())
-            ->method('getTimestamp')
-            ->willReturn(0);
-        $loader->expects($this->never())
-            ->method('isFresh');
-        $cache->expects($this->once())
-            ->method('write');
-        $cache->expects($this->once())
-            ->method('load');
-
-        $twig->load($templateName);
-    }
-
-    public function testAutoReloadCacheHit()
-    {
-        $templateName = __FUNCTION__;
-        $templateContent = __FUNCTION__;
-
-        $cache = $this->createMock('\Twig\Cache\CacheInterface');
-        $loader = $this->getMockLoader($templateName, $templateContent);
-        $twig = new Environment($loader, ['cache' => $cache, 'auto_reload' => true, 'debug' => false]);
-
-        $now = time();
-
-        // Cache hit: getTimestamp returns something > extension timestamps and
-        // the loader returns true for isFresh().
-        $cache->expects($this->once())
-            ->method('generateKey')
-            ->willReturn('key');
-        $cache->expects($this->once())
-            ->method('getTimestamp')
-            ->willReturn($now);
-        $loader->expects($this->once())
-            ->method('isFresh')
-            ->willReturn(true);
-        $cache->expects($this->atLeastOnce())
-            ->method('load');
-
-        $twig->load($templateName);
-    }
-
-    public function testAutoReloadOutdatedCacheHit()
-    {
-        $templateName = __FUNCTION__;
-        $templateContent = __FUNCTION__;
-
-        $cache = $this->createMock('\Twig\Cache\CacheInterface');
-        $loader = $this->getMockLoader($templateName, $templateContent);
-        $twig = new Environment($loader, ['cache' => $cache, 'auto_reload' => true, 'debug' => false]);
-
-        $now = time();
-
-        $cache->expects($this->once())
-            ->method('generateKey')
-            ->willReturn('key');
-        $cache->expects($this->once())
-            ->method('getTimestamp')
-            ->willReturn($now);
-        $loader->expects($this->once())
-            ->method('isFresh')
-            ->willReturn(false);
-        $cache->expects($this->once())
-            ->method('write');
-        $cache->expects($this->once())
-            ->method('load');
-
-        $twig->load($templateName);
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testHasGetExtensionWithDynamicName()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-
-        $ext1 = new EnvironmentTest_Extension_DynamicWithDeprecatedName('ext1');
-        $ext2 = new EnvironmentTest_Extension_DynamicWithDeprecatedName('ext2');
-        $twig->addExtension($ext1);
-        $twig->addExtension($ext2);
-
-        $this->assertTrue($twig->hasExtension('ext1'));
-        $this->assertTrue($twig->hasExtension('ext2'));
-
-        $this->assertTrue($twig->hasExtension('Twig\Tests\EnvironmentTest_Extension_DynamicWithDeprecatedName'));
-
-        $this->assertSame($ext1, $twig->getExtension('ext1'));
-        $this->assertSame($ext2, $twig->getExtension('ext2'));
-    }
-
-    public function testHasGetExtensionByClassName()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension($ext = new EnvironmentTest_Extension());
-        $this->assertTrue($twig->hasExtension('Twig\Tests\EnvironmentTest_Extension'));
-        $this->assertTrue($twig->hasExtension('\Twig\Tests\EnvironmentTest_Extension'));
-
-        $this->assertSame($ext, $twig->getExtension('Twig\Tests\EnvironmentTest_Extension'));
-        $this->assertSame($ext, $twig->getExtension('\Twig\Tests\EnvironmentTest_Extension'));
-
-        $this->assertTrue($twig->hasExtension('Twig\Tests\EnvironmentTest\Extension'));
-        $this->assertSame($ext, $twig->getExtension('Twig\Tests\EnvironmentTest\Extension'));
-    }
-
-    public function testAddExtension()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_Extension());
-
-        $this->assertArrayHasKey('test', $twig->getTags());
-        $this->assertArrayHasKey('foo_filter', $twig->getFilters());
-        $this->assertArrayHasKey('foo_function', $twig->getFunctions());
-        $this->assertArrayHasKey('foo_test', $twig->getTests());
-        $this->assertArrayHasKey('foo_unary', $twig->getUnaryOperators());
-        $this->assertArrayHasKey('foo_binary', $twig->getBinaryOperators());
-        $this->assertArrayHasKey('foo_global', $twig->getGlobals());
-        $visitors = $twig->getNodeVisitors();
-        $found = false;
-        foreach ($visitors as $visitor) {
-            if ($visitor instanceof EnvironmentTest_NodeVisitor) {
-                $found = true;
-            }
-        }
-        $this->assertTrue($found);
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testAddExtensionWithDeprecatedGetGlobals()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_Extension_WithGlobals());
-
-        $this->deprecations = [];
-        set_error_handler([$this, 'handleError']);
-
-        $this->assertArrayHasKey('foo_global', $twig->getGlobals());
-
-        $this->assertCount(1, $this->deprecations);
-        $this->assertStringContainsString('Defining the getGlobals() method in the "Twig\Tests\EnvironmentTest_Extension_WithGlobals" extension ', $this->deprecations[0]);
-
-        restore_error_handler();
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testRemoveExtension()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_Extension_WithDeprecatedName());
-        $twig->removeExtension('environment_test');
-
-        $this->assertArrayNotHasKey('test', $twig->getTags());
-        $this->assertArrayNotHasKey('foo_filter', $twig->getFilters());
-        $this->assertArrayNotHasKey('foo_function', $twig->getFunctions());
-        $this->assertArrayNotHasKey('foo_test', $twig->getTests());
-        $this->assertArrayNotHasKey('foo_unary', $twig->getUnaryOperators());
-        $this->assertArrayNotHasKey('foo_binary', $twig->getBinaryOperators());
-        $this->assertArrayNotHasKey('foo_global', $twig->getGlobals());
-        $this->assertCount(2, $twig->getNodeVisitors());
-    }
-
-    public function testAddMockExtension()
-    {
-        // should be replaced by the following in 2.0 (this current code is just to avoid a dep notice)
-        // $extension = $this->createMock('\Twig\Extension\AbstractExtension');
-        $extension = eval(<<<EOF
-use Twig\Extension\AbstractExtension;
-
-class EnvironmentTest_ExtensionInEval extends AbstractExtension
-{
-}
-EOF
-        );
-        $extension = new \EnvironmentTest_ExtensionInEval();
-
-        $loader = new ArrayLoader(['page' => 'hey']);
-
-        $twig = new Environment($loader);
-        $twig->addExtension($extension);
-
-        $this->assertInstanceOf('\Twig\Extension\ExtensionInterface', $twig->getExtension(\get_class($extension)));
-        $this->assertTrue($twig->isTemplateFresh('page', time()));
-    }
-
-    public function testInitRuntimeWithAnExtensionUsingInitRuntimeNoDeprecation()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_ExtensionWithoutDeprecationInitRuntime());
-        $twig->initRuntime();
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any deprecations
-        $this->addToAssertionCount(1);
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testInitRuntimeWithAnExtensionUsingInitRuntimeDeprecation()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_ExtensionWithDeprecationInitRuntime());
-
-        $this->deprecations = [];
-        set_error_handler([$this, 'handleError']);
-
-        $twig->initRuntime();
-
-        $this->assertCount(1, $this->deprecations);
-        $this->assertStringContainsString('Defining the initRuntime() method in the "Twig\Tests\EnvironmentTest_ExtensionWithDeprecationInitRuntime" extension is deprecated since version 1.23.', $this->deprecations[0]);
-
-        restore_error_handler();
-    }
-
-    public function handleError($type, $msg)
-    {
-        if (E_USER_DEPRECATED === $type) {
-            $this->deprecations[] = $msg;
-        }
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testOverrideExtension()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_ExtensionWithDeprecationInitRuntime());
-
-        $this->deprecations = [];
-        set_error_handler([$this, 'handleError']);
-
-        $twig->addExtension(new EnvironmentTest_Extension_WithDeprecatedName());
-        $twig->addExtension(new EnvironmentTest_Extension_WithDeprecatedName());
-
-        $this->assertCount(1, $this->deprecations);
-        $this->assertStringContainsString('The possibility to register the same extension twice', $this->deprecations[0]);
-
-        restore_error_handler();
-    }
-
-    public function testAddRuntimeLoader()
-    {
-        $runtimeLoader = $this->createMock('\Twig\RuntimeLoader\RuntimeLoaderInterface');
-        $runtimeLoader->expects($this->any())->method('load')->willReturn(new EnvironmentTest_Runtime());
-
-        $loader = new ArrayLoader([
-            'func_array' => '{{ from_runtime_array("foo") }}',
-            'func_array_default' => '{{ from_runtime_array() }}',
-            'func_array_named_args' => '{{ from_runtime_array(name="foo") }}',
-            'func_string' => '{{ from_runtime_string("foo") }}',
-            'func_string_default' => '{{ from_runtime_string() }}',
-            'func_string_named_args' => '{{ from_runtime_string(name="foo") }}',
-        ]);
-
-        $twig = new Environment($loader);
-        $twig->addExtension(new EnvironmentTest_ExtensionWithoutRuntime());
-        $twig->addRuntimeLoader($runtimeLoader);
-
-        $this->assertEquals('foo', $twig->render('func_array'));
-        $this->assertEquals('bar', $twig->render('func_array_default'));
-        $this->assertEquals('foo', $twig->render('func_array_named_args'));
-        $this->assertEquals('foo', $twig->render('func_string'));
-        $this->assertEquals('bar', $twig->render('func_string_default'));
-        $this->assertEquals('foo', $twig->render('func_string_named_args'));
-    }
-
-    protected function getMockLoader($templateName, $templateContent)
-    {
-        // to be removed in 2.0
-        $loader = $this->createMock('Twig\Tests\EnvironmentTestLoaderInterface');
-        //$loader = $this->createMock(['\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface']);
-        $loader->expects($this->any())
-          ->method('getSourceContext')
-          ->with($templateName)
-          ->willReturn(new Source($templateContent, $templateName));
-        $loader->expects($this->any())
-          ->method('getCacheKey')
-          ->with($templateName)
-          ->willReturn($templateName);
-
-        return $loader;
-    }
-}
-
-class EnvironmentTest_Extension_WithGlobals extends AbstractExtension
-{
-    public function getGlobals()
-    {
-        return [
-            'foo_global' => 'foo_global',
-        ];
-    }
-}
-
-class EnvironmentTest_Extension extends AbstractExtension implements GlobalsInterface
-{
-    public function getTokenParsers()
-    {
-        return [
-            new EnvironmentTest_TokenParser(),
-        ];
-    }
-
-    public function getNodeVisitors()
-    {
-        return [
-            new EnvironmentTest_NodeVisitor(),
-        ];
-    }
-
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('foo_filter', 'foo_filter'),
-        ];
-    }
-
-    public function getTests()
-    {
-        return [
-            new TwigTest('foo_test', 'foo_test'),
-        ];
-    }
-
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('foo_function', 'foo_function'),
-        ];
-    }
-
-    public function getOperators()
-    {
-        return [
-            ['foo_unary' => []],
-            ['foo_binary' => []],
-        ];
-    }
-
-    public function getGlobals()
-    {
-        return [
-            'foo_global' => 'foo_global',
-        ];
-    }
-}
-class_alias('\Twig\Tests\EnvironmentTest_Extension', 'Twig\Tests\EnvironmentTest\Extension', false);
-
-class EnvironmentTest_Extension_WithDeprecatedName extends AbstractExtension
-{
-    public function getName()
-    {
-        return 'environment_test';
-    }
-}
-
-class EnvironmentTest_Extension_DynamicWithDeprecatedName extends AbstractExtension
-{
-    private $name;
-
-    public function __construct($name)
-    {
-        $this->name = $name;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-}
-
-class EnvironmentTest_TokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-    }
-
-    public function getTag()
-    {
-        return 'test';
-    }
-}
-
-class EnvironmentTest_NodeVisitor implements NodeVisitorInterface
-{
-    public function enterNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function leaveNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-class EnvironmentTest_ExtensionWithDeprecationInitRuntime extends AbstractExtension
-{
-    public function initRuntime(Environment $env)
-    {
-    }
-}
-
-class EnvironmentTest_ExtensionWithoutDeprecationInitRuntime extends AbstractExtension implements InitRuntimeInterface
-{
-    public function initRuntime(Environment $env)
-    {
-    }
-}
-
-class EnvironmentTest_ExtensionWithoutRuntime extends AbstractExtension
-{
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('from_runtime_array', ['Twig\Tests\EnvironmentTest_Runtime', 'fromRuntime']),
-            new TwigFunction('from_runtime_string', 'Twig\Tests\EnvironmentTest_Runtime::fromRuntime'),
-        ];
-    }
-
-    public function getName()
-    {
-        return 'from_runtime';
-    }
-}
-
-class EnvironmentTest_Runtime
-{
-    public function fromRuntime($name = 'bar')
-    {
-        return $name;
-    }
-}
-
-// to be removed in 2.0
-interface EnvironmentTestLoaderInterface extends LoaderInterface, SourceContextLoaderInterface
-{
-}
diff --git a/vendor/twig/twig/tests/ErrorTest.php b/vendor/twig/twig/tests/ErrorTest.php
deleted file mode 100644
index a84da2eea65f5b68c67354bbf02e4aa4cdeea565..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/ErrorTest.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Error\Error;
-use Twig\Error\RuntimeError;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\FilesystemLoader;
-use Twig\Source;
-
-class ErrorTest extends \PHPUnit\Framework\TestCase
-{
-    public function testErrorWithObjectFilename()
-    {
-        $error = new Error('foo');
-        $error->setSourceContext(new Source('', new \SplFileInfo(__FILE__)));
-
-        $this->assertStringContainsString('tests'.\DIRECTORY_SEPARATOR.'ErrorTest.php', $error->getMessage());
-    }
-
-    public function testErrorWithArrayFilename()
-    {
-        $error = new Error('foo');
-        $error->setSourceContext(new Source('', ['foo' => 'bar']));
-
-        $this->assertEquals('foo in {"foo":"bar"}', $error->getMessage());
-    }
-
-    public function testTwigExceptionGuessWithMissingVarAndArrayLoader()
-    {
-        $loader = new ArrayLoader([
-            'base.html' => '{% block content %}{% endblock %}',
-            'index.html' => <<<EOHTML
-{% extends 'base.html' %}
-{% block content %}
-    {{ foo.bar }}
-{% endblock %}
-{% block foo %}
-    {{ foo.bar }}
-{% endblock %}
-EOHTML
-        ]);
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render([]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('Variable "foo" does not exist in "index.html" at line 3.', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-        }
-    }
-
-    public function testTwigExceptionGuessWithExceptionAndArrayLoader()
-    {
-        $loader = new ArrayLoader([
-            'base.html' => '{% block content %}{% endblock %}',
-            'index.html' => <<<EOHTML
-{% extends 'base.html' %}
-{% block content %}
-    {{ foo.bar }}
-{% endblock %}
-{% block foo %}
-    {{ foo.bar }}
-{% endblock %}
-EOHTML
-        ]);
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render(['foo' => new ErrorTest_Foo()]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...") in "index.html" at line 3.', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-        }
-    }
-
-    public function testTwigExceptionGuessWithMissingVarAndFilesystemLoader()
-    {
-        $loader = new FilesystemLoader(__DIR__.'/Fixtures/errors');
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render([]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('Variable "foo" does not exist.', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-            $this->assertEquals(3, $e->getLine());
-            $this->assertEquals(strtr(__DIR__.'/Fixtures/errors/index.html', '/', \DIRECTORY_SEPARATOR), $e->getFile());
-        }
-    }
-
-    public function testTwigExceptionGuessWithExceptionAndFilesystemLoader()
-    {
-        $loader = new FilesystemLoader(__DIR__.'/Fixtures/errors');
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render(['foo' => new ErrorTest_Foo()]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...").', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-            $this->assertEquals(3, $e->getLine());
-            $this->assertEquals(strtr(__DIR__.'/Fixtures/errors/index.html', '/', \DIRECTORY_SEPARATOR), $e->getFile());
-        }
-    }
-
-    /**
-     * @dataProvider getErroredTemplates
-     */
-    public function testTwigExceptionAddsFileAndLine($templates, $name, $line)
-    {
-        $loader = new ArrayLoader($templates);
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index');
-
-        try {
-            $template->render([]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals(sprintf('Variable "foo" does not exist in "%s" at line %d.', $name, $line), $e->getMessage());
-            $this->assertEquals($line, $e->getTemplateLine());
-            $this->assertEquals($name, $e->getSourceContext()->getName());
-        }
-
-        try {
-            $template->render(['foo' => new ErrorTest_Foo()]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals(sprintf('An exception has been thrown during the rendering of a template ("Runtime error...") in "%s" at line %d.', $name, $line), $e->getMessage());
-            $this->assertEquals($line, $e->getTemplateLine());
-            $this->assertEquals($name, $e->getSourceContext()->getName());
-        }
-    }
-
-    public function getErroredTemplates()
-    {
-        return [
-            // error occurs in a template
-            [
-                [
-                    'index' => "\n\n{{ foo.bar }}\n\n\n{{ 'foo' }}",
-                ],
-                'index', 3,
-            ],
-
-            // error occurs in an included template
-            [
-                [
-                    'index' => "{% include 'partial' %}",
-                    'partial' => '{{ foo.bar }}',
-                ],
-                'partial', 1,
-            ],
-
-            // error occurs in a parent block when called via parent()
-            [
-                [
-                    'index' => "{% extends 'base' %}
-                    {% block content %}
-                        {{ parent() }}
-                    {% endblock %}",
-                    'base' => '{% block content %}{{ foo.bar }}{% endblock %}',
-                ],
-                'base', 1,
-            ],
-
-            // error occurs in a block from the child
-            [
-                [
-                    'index' => "{% extends 'base' %}
-                    {% block content %}
-                        {{ foo.bar }}
-                    {% endblock %}
-                    {% block foo %}
-                        {{ foo.bar }}
-                    {% endblock %}",
-                    'base' => '{% block content %}{% endblock %}',
-                ],
-                'index', 3,
-            ],
-        ];
-    }
-
-    public function testTwigLeakOutputInDebugMode()
-    {
-        $output = exec(sprintf('%s %s debug', \PHP_BINARY, escapeshellarg(__DIR__.'/Fixtures/errors/leak-output.php')));
-
-        $this->assertSame('Hello OOPS', $output);
-    }
-
-    public function testDoesNotTwigLeakOutput()
-    {
-        $output = exec(sprintf('%s %s', \PHP_BINARY, escapeshellarg(__DIR__.'/Fixtures/errors/leak-output.php')));
-
-        $this->assertSame('', $output);
-    }
-}
-
-class ErrorTest_Foo
-{
-    public function bar()
-    {
-        throw new \Exception('Runtime error...');
-    }
-}
diff --git a/vendor/twig/twig/tests/ExpressionParserTest.php b/vendor/twig/twig/tests/ExpressionParserTest.php
deleted file mode 100644
index ef31fd7152c382e29f9d1f1213e30706040be7a3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/ExpressionParserTest.php
+++ /dev/null
@@ -1,382 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\Binary\ConcatBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Parser;
-use Twig\Source;
-
-class ExpressionParserTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider getFailingTestsForAssignment
-     */
-    public function testCanOnlyAssignToNames($template)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-    }
-
-    public function getFailingTestsForAssignment()
-    {
-        return [
-            ['{% set false = "foo" %}'],
-            ['{% set FALSE = "foo" %}'],
-            ['{% set true = "foo" %}'],
-            ['{% set TRUE = "foo" %}'],
-            ['{% set none = "foo" %}'],
-            ['{% set NONE = "foo" %}'],
-            ['{% set null = "foo" %}'],
-            ['{% set NULL = "foo" %}'],
-            ['{% set 3 = "foo" %}'],
-            ['{% set 1 + 2 = "foo" %}'],
-            ['{% set "bar" = "foo" %}'],
-            ['{% set %}{% endset %}'],
-        ];
-    }
-
-    /**
-     * @dataProvider getTestsForArray
-     */
-    public function testArrayExpression($template, $expected)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $stream = $env->tokenize($source = new Source($template, ''));
-        $parser = new Parser($env);
-        $expected->setSourceContext($source);
-
-        $this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0)->getNode('expr'));
-    }
-
-    /**
-     * @dataProvider getFailingTestsForArray
-     */
-    public function testArraySyntaxError($template)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-    }
-
-    public function getFailingTestsForArray()
-    {
-        return [
-            ['{{ [1, "a": "b"] }}'],
-            ['{{ {"a": "b", 2} }}'],
-        ];
-    }
-
-    public function getTestsForArray()
-    {
-        return [
-            // simple array
-            ['{{ [1, 2] }}', new ArrayExpression([
-                  new ConstantExpression(0, 1),
-                  new ConstantExpression(1, 1),
-
-                  new ConstantExpression(1, 1),
-                  new ConstantExpression(2, 1),
-                ], 1),
-            ],
-
-            // array with trailing ,
-            ['{{ [1, 2, ] }}', new ArrayExpression([
-                  new ConstantExpression(0, 1),
-                  new ConstantExpression(1, 1),
-
-                  new ConstantExpression(1, 1),
-                  new ConstantExpression(2, 1),
-                ], 1),
-            ],
-
-            // simple hash
-            ['{{ {"a": "b", "b": "c"} }}', new ArrayExpression([
-                  new ConstantExpression('a', 1),
-                  new ConstantExpression('b', 1),
-
-                  new ConstantExpression('b', 1),
-                  new ConstantExpression('c', 1),
-                ], 1),
-            ],
-
-            // hash with trailing ,
-            ['{{ {"a": "b", "b": "c", } }}', new ArrayExpression([
-                  new ConstantExpression('a', 1),
-                  new ConstantExpression('b', 1),
-
-                  new ConstantExpression('b', 1),
-                  new ConstantExpression('c', 1),
-                ], 1),
-            ],
-
-            // hash in an array
-            ['{{ [1, {"a": "b", "b": "c"}] }}', new ArrayExpression([
-                  new ConstantExpression(0, 1),
-                  new ConstantExpression(1, 1),
-
-                  new ConstantExpression(1, 1),
-                  new ArrayExpression([
-                        new ConstantExpression('a', 1),
-                        new ConstantExpression('b', 1),
-
-                        new ConstantExpression('b', 1),
-                        new ConstantExpression('c', 1),
-                      ], 1),
-                ], 1),
-            ],
-
-            // array in a hash
-            ['{{ {"a": [1, 2], "b": "c"} }}', new ArrayExpression([
-                  new ConstantExpression('a', 1),
-                  new ArrayExpression([
-                        new ConstantExpression(0, 1),
-                        new ConstantExpression(1, 1),
-
-                        new ConstantExpression(1, 1),
-                        new ConstantExpression(2, 1),
-                      ], 1),
-                  new ConstantExpression('b', 1),
-                  new ConstantExpression('c', 1),
-                ], 1),
-            ],
-        ];
-    }
-
-    public function testStringExpressionDoesNotConcatenateTwoConsecutiveStrings()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $stream = $env->tokenize(new Source('{{ "a" "b" }}', 'index'));
-        $parser = new Parser($env);
-
-        $parser->parse($stream);
-    }
-
-    /**
-     * @dataProvider getTestsForString
-     */
-    public function testStringExpression($template, $expected)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $stream = $env->tokenize($source = new Source($template, ''));
-        $parser = new Parser($env);
-        $expected->setSourceContext($source);
-
-        $this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0)->getNode('expr'));
-    }
-
-    public function getTestsForString()
-    {
-        return [
-            [
-                '{{ "foo" }}', new ConstantExpression('foo', 1),
-            ],
-            [
-                '{{ "foo #{bar}" }}', new ConcatBinary(
-                    new ConstantExpression('foo ', 1),
-                    new NameExpression('bar', 1),
-                    1
-                ),
-            ],
-            [
-                '{{ "foo #{bar} baz" }}', new ConcatBinary(
-                    new ConcatBinary(
-                        new ConstantExpression('foo ', 1),
-                        new NameExpression('bar', 1),
-                        1
-                    ),
-                    new ConstantExpression(' baz', 1),
-                    1
-                ),
-            ],
-
-            [
-                '{{ "foo #{"foo #{bar} baz"} baz" }}', new ConcatBinary(
-                    new ConcatBinary(
-                        new ConstantExpression('foo ', 1),
-                        new ConcatBinary(
-                            new ConcatBinary(
-                                new ConstantExpression('foo ', 1),
-                                new NameExpression('bar', 1),
-                                1
-                            ),
-                            new ConstantExpression(' baz', 1),
-                            1
-                        ),
-                        1
-                    ),
-                    new ConstantExpression(' baz', 1),
-                    1
-                ),
-            ],
-        ];
-    }
-
-    public function testAttributeCallDoesNotSupportNamedArguments()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ foo.bar(name="Foo") }}', 'index')));
-    }
-
-    public function testMacroCallDoesNotSupportNamedArguments()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{% from _self import foo %}{% macro foo() %}{% endmacro %}{{ foo(name="Foo") }}', 'index')));
-    }
-
-    public function testMacroDefinitionDoesNotSupportNonNameVariableName()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('An argument must be a name. Unexpected token "string" of value "a" ("name" expected) in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{% macro foo("a") %}{% endmacro %}', 'index')));
-    }
-
-    /**
-     * @dataProvider             getMacroDefinitionDoesNotSupportNonConstantDefaultValues
-     */
-    public function testMacroDefinitionDoesNotSupportNonConstantDefaultValues($template)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('A default value for an argument must be a constant (a boolean, a string, a number, or an array) in "index" at line 1');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-    }
-
-    public function getMacroDefinitionDoesNotSupportNonConstantDefaultValues()
-    {
-        return [
-            ['{% macro foo(name = "a #{foo} a") %}{% endmacro %}'],
-            ['{% macro foo(name = [["b", "a #{foo} a"]]) %}{% endmacro %}'],
-        ];
-    }
-
-    /**
-     * @dataProvider getMacroDefinitionSupportsConstantDefaultValues
-     */
-    public function testMacroDefinitionSupportsConstantDefaultValues($template)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function getMacroDefinitionSupportsConstantDefaultValues()
-    {
-        return [
-            ['{% macro foo(name = "aa") %}{% endmacro %}'],
-            ['{% macro foo(name = 12) %}{% endmacro %}'],
-            ['{% macro foo(name = true) %}{% endmacro %}'],
-            ['{% macro foo(name = ["a"]) %}{% endmacro %}'],
-            ['{% macro foo(name = [["a"]]) %}{% endmacro %}'],
-            ['{% macro foo(name = {a: "a"}) %}{% endmacro %}'],
-            ['{% macro foo(name = {a: {b: "a"}}) %}{% endmacro %}'],
-        ];
-    }
-
-    public function testUnknownFunction()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "cycl" function. Did you mean "cycle" in "index" at line 1?');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ cycl() }}', 'index')));
-    }
-
-    public function testUnknownFunctionWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" function in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ foobar() }}', 'index')));
-    }
-
-    public function testUnknownFilter()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "lowe" filter. Did you mean "lower" in "index" at line 1?');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ 1|lowe }}', 'index')));
-    }
-
-    public function testUnknownFilterWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" filter in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ 1|foobar }}', 'index')));
-    }
-
-    public function testUnknownTest()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "nul" test. Did you mean "null" in "index" at line 1');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-        $stream = $env->tokenize(new Source('{{ 1 is nul }}', 'index'));
-        $parser->parse($stream);
-    }
-
-    public function testUnknownTestWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" test in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ 1 is foobar }}', 'index')));
-    }
-}
diff --git a/vendor/twig/twig/tests/Extension/CoreTest.php b/vendor/twig/twig/tests/Extension/CoreTest.php
deleted file mode 100644
index 66c32ff150e92ac1fa2ab8e5439acd8c80850bff..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Extension/CoreTest.php
+++ /dev/null
@@ -1,371 +0,0 @@
-<?php
-
-namespace Twig\Tests\Extension;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-
-class CoreTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider getRandomFunctionTestData
-     */
-    public function testRandomFunction(array $expectedInArray, $value1, $value2 = null)
-    {
-        $env = new Environment($this->createMock('Twig_LoaderInterface'));
-        for ($i = 0; $i < 100; ++$i) {
-            $this->assertTrue(\in_array(twig_random($env, $value1, $value2), $expectedInArray, true)); // assertContains() would not consider the type
-        }
-    }
-
-    public function getRandomFunctionTestData()
-    {
-        return [
-            'array' => [
-                ['apple', 'orange', 'citrus'],
-                ['apple', 'orange', 'citrus'],
-            ],
-            'Traversable' => [
-                ['apple', 'orange', 'citrus'],
-                new \ArrayObject(['apple', 'orange', 'citrus']),
-            ],
-            'unicode string' => [
-                ['Ä', '€', 'é'],
-                'Ä€é',
-            ],
-            'numeric but string' => [
-                ['1', '2', '3'],
-                '123',
-            ],
-            'integer' => [
-                range(0, 5, 1),
-                5,
-            ],
-            'float' => [
-                range(0, 5, 1),
-                5.9,
-            ],
-            'negative' => [
-                [0, -1, -2],
-                -2,
-            ],
-            'min max int' => [
-                range(50, 100),
-                50,
-                100,
-            ],
-            'min max float' => [
-                range(-10, 10),
-                -9.5,
-                9.5,
-            ],
-            'min null' => [
-                range(0, 100),
-                null,
-                100,
-            ],
-        ];
-    }
-
-    public function testRandomFunctionWithoutParameter()
-    {
-        $max = mt_getrandmax();
-
-        for ($i = 0; $i < 100; ++$i) {
-            $val = twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-            $this->assertTrue(\is_int($val) && $val >= 0 && $val <= $max);
-        }
-    }
-
-    public function testRandomFunctionReturnsAsIs()
-    {
-        $this->assertSame('', twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), ''));
-        $this->assertSame('', twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['charset' => null]), ''));
-
-        $instance = new \stdClass();
-        $this->assertSame($instance, twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), $instance));
-    }
-
-    public function testRandomFunctionOfEmptyArrayThrowsException()
-    {
-        $this->expectException('\Twig\Error\RuntimeError');
-
-        twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), []);
-    }
-
-    public function testRandomFunctionOnNonUTF8String()
-    {
-        if (!\function_exists('iconv') && !\function_exists('mb_convert_encoding')) {
-            $this->markTestSkipped('needs iconv or mbstring');
-        }
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->setCharset('ISO-8859-1');
-
-        $text = twig_convert_encoding('Äé', 'ISO-8859-1', 'UTF-8');
-        for ($i = 0; $i < 30; ++$i) {
-            $rand = twig_random($twig, $text);
-            $this->assertTrue(\in_array(twig_convert_encoding($rand, 'UTF-8', 'ISO-8859-1'), ['Ä', 'é'], true));
-        }
-    }
-
-    public function testReverseFilterOnNonUTF8String()
-    {
-        if (!\function_exists('iconv') && !\function_exists('mb_convert_encoding')) {
-            $this->markTestSkipped('needs iconv or mbstring');
-        }
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->setCharset('ISO-8859-1');
-
-        $input = twig_convert_encoding('Äé', 'ISO-8859-1', 'UTF-8');
-        $output = twig_convert_encoding(twig_reverse_filter($twig, $input), 'UTF-8', 'ISO-8859-1');
-
-        $this->assertEquals($output, 'éÄ');
-    }
-
-    /**
-     * @dataProvider provideCustomEscaperCases
-     */
-    public function testCustomEscaper($expected, $string, $strategy)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->getExtension('\Twig\Extension\CoreExtension')->setEscaper('foo', '\Twig\Tests\Extension\foo_escaper_for_test');
-
-        $this->assertSame($expected, twig_escape_filter($twig, $string, $strategy));
-    }
-
-    public function provideCustomEscaperCases()
-    {
-        return [
-            ['fooUTF-8', 'foo', 'foo'],
-            ['UTF-8', null, 'foo'],
-            ['42UTF-8', 42, 'foo'],
-        ];
-    }
-
-    public function testUnknownCustomEscaper()
-    {
-        $this->expectException('\Twig\Error\RuntimeError');
-
-        twig_escape_filter(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), 'foo', 'bar');
-    }
-
-    /**
-     * @dataProvider provideTwigFirstCases
-     */
-    public function testTwigFirst($expected, $input)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $this->assertSame($expected, twig_first($twig, $input));
-    }
-
-    public function provideTwigFirstCases()
-    {
-        $i = [1 => 'a', 2 => 'b', 3 => 'c'];
-
-        return [
-            ['a', 'abc'],
-            [1, [1, 2, 3]],
-            ['', null],
-            ['', ''],
-            ['a', new CoreTestIterator($i, array_keys($i), true, 3)],
-        ];
-    }
-
-    /**
-     * @dataProvider provideTwigLastCases
-     */
-    public function testTwigLast($expected, $input)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $this->assertSame($expected, twig_last($twig, $input));
-    }
-
-    public function provideTwigLastCases()
-    {
-        $i = [1 => 'a', 2 => 'b', 3 => 'c'];
-
-        return [
-            ['c', 'abc'],
-            [3, [1, 2, 3]],
-            ['', null],
-            ['', ''],
-            ['c', new CoreTestIterator($i, array_keys($i), true)],
-        ];
-    }
-
-    /**
-     * @dataProvider provideArrayKeyCases
-     */
-    public function testArrayKeysFilter(array $expected, $input)
-    {
-        $this->assertSame($expected, twig_get_array_keys_filter($input));
-    }
-
-    public function provideArrayKeyCases()
-    {
-        $array = ['a' => 'a1', 'b' => 'b1', 'c' => 'c1'];
-        $keys = array_keys($array);
-
-        return [
-            [$keys, $array],
-            [$keys, new CoreTestIterator($array, $keys)],
-            [$keys, new CoreTestIteratorAggregate($array, $keys)],
-            [$keys, new CoreTestIteratorAggregateAggregate($array, $keys)],
-            [[], null],
-            [['a'], new \SimpleXMLElement('<xml><a></a></xml>')],
-        ];
-    }
-
-    /**
-     * @dataProvider provideInFilterCases
-     */
-    public function testInFilter($expected, $value, $compare)
-    {
-        $this->assertSame($expected, twig_in_filter($value, $compare));
-    }
-
-    public function provideInFilterCases()
-    {
-        $array = [1, 2, 'a' => 3, 5, 6, 7];
-        $keys = array_keys($array);
-
-        return [
-            [true, 1, $array],
-            [true, '3', $array],
-            [true, '3', 'abc3def'],
-            [true, 1, new CoreTestIterator($array, $keys, true, 1)],
-            [true, '3', new CoreTestIterator($array, $keys, true, 3)],
-            [true, '3', new CoreTestIteratorAggregateAggregate($array, $keys, true, 3)],
-            [false, 4, $array],
-            [false, 4, new CoreTestIterator($array, $keys, true)],
-            [false, 4, new CoreTestIteratorAggregateAggregate($array, $keys, true)],
-            [false, 1, 1],
-            [true, 'b', new \SimpleXMLElement('<xml><a>b</a></xml>')],
-        ];
-    }
-
-    /**
-     * @dataProvider provideSliceFilterCases
-     */
-    public function testSliceFilter($expected, $input, $start, $length = null, $preserveKeys = false)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $this->assertSame($expected, twig_slice($twig, $input, $start, $length, $preserveKeys));
-    }
-
-    public function provideSliceFilterCases()
-    {
-        $i = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
-        $keys = array_keys($i);
-
-        return [
-            [['a' => 1], $i, 0, 1, true],
-            [['a' => 1], $i, 0, 1, false],
-            [['b' => 2, 'c' => 3], $i, 1, 2],
-            [[1], [1, 2, 3, 4], 0, 1],
-            [[2, 3], [1, 2, 3, 4], 1, 2],
-            [[2, 3], new CoreTestIterator($i, $keys, true), 1, 2],
-            [['c' => 3, 'd' => 4], new CoreTestIteratorAggregate($i, $keys, true), 2, null, true],
-            [$i, new CoreTestIterator($i, $keys, true), 0, \count($keys) + 10, true],
-            [[], new CoreTestIterator($i, $keys, true), \count($keys) + 10],
-            ['de', 'abcdef', 3, 2],
-            [[], new \SimpleXMLElement('<items><item>1</item><item>2</item></items>'), 3],
-            [[], new \ArrayIterator([1, 2]), 3],
-        ];
-    }
-}
-
-function foo_escaper_for_test(Environment $env, $string, $charset)
-{
-    return $string.$charset;
-}
-
-final class CoreTestIteratorAggregate implements \IteratorAggregate
-{
-    private $iterator;
-
-    public function __construct(array $array, array $keys, $allowAccess = false, $maxPosition = false)
-    {
-        $this->iterator = new CoreTestIterator($array, $keys, $allowAccess, $maxPosition);
-    }
-
-    public function getIterator()
-    {
-        return $this->iterator;
-    }
-}
-
-final class CoreTestIteratorAggregateAggregate implements \IteratorAggregate
-{
-    private $iterator;
-
-    public function __construct(array $array, array $keys, $allowValueAccess = false, $maxPosition = false)
-    {
-        $this->iterator = new CoreTestIteratorAggregate($array, $keys, $allowValueAccess, $maxPosition);
-    }
-
-    public function getIterator()
-    {
-        return $this->iterator;
-    }
-}
-
-final class CoreTestIterator implements \Iterator
-{
-    private $position;
-    private $array;
-    private $arrayKeys;
-    private $allowValueAccess;
-    private $maxPosition;
-
-    public function __construct(array $values, array $keys, $allowValueAccess = false, $maxPosition = false)
-    {
-        $this->array = $values;
-        $this->arrayKeys = $keys;
-        $this->position = 0;
-        $this->allowValueAccess = $allowValueAccess;
-        $this->maxPosition = false === $maxPosition ? \count($values) + 1 : $maxPosition;
-    }
-
-    public function rewind()
-    {
-        $this->position = 0;
-    }
-
-    public function current()
-    {
-        if ($this->allowValueAccess) {
-            return $this->array[$this->key()];
-        }
-
-        throw new \LogicException('Code should only use the keys, not the values provided by iterator.');
-    }
-
-    public function key()
-    {
-        return $this->arrayKeys[$this->position];
-    }
-
-    public function next()
-    {
-        ++$this->position;
-        if ($this->position === $this->maxPosition) {
-            throw new \LogicException(sprintf('Code should not iterate beyond %d.', $this->maxPosition));
-        }
-    }
-
-    public function valid()
-    {
-        return isset($this->arrayKeys[$this->position]);
-    }
-}
diff --git a/vendor/twig/twig/tests/Extension/SandboxTest.php b/vendor/twig/twig/tests/Extension/SandboxTest.php
deleted file mode 100644
index fe0f32ff55d5a395d3fe6c397c3d6c179132223b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Extension/SandboxTest.php
+++ /dev/null
@@ -1,365 +0,0 @@
-<?php
-
-namespace Twig\Tests\Extension;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Extension\SandboxExtension;
-use Twig\Loader\ArrayLoader;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityPolicy;
-
-class SandboxTest extends \PHPUnit\Framework\TestCase
-{
-    protected static $params;
-    protected static $templates;
-
-    protected function setUp()
-    {
-        self::$params = [
-            'name' => 'Fabien',
-            'obj' => new FooObject(),
-            'arr' => ['obj' => new FooObject()],
-        ];
-
-        self::$templates = [
-            '1_basic1' => '{{ obj.foo }}',
-            '1_basic2' => '{{ name|upper }}',
-            '1_basic3' => '{% if name %}foo{% endif %}',
-            '1_basic4' => '{{ obj.bar }}',
-            '1_basic5' => '{{ obj }}',
-            '1_basic7' => '{{ cycle(["foo","bar"], 1) }}',
-            '1_basic8' => '{{ obj.getfoobar }}{{ obj.getFooBar }}',
-            '1_basic9' => '{{ obj.foobar }}{{ obj.fooBar }}',
-            '1_basic' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
-            '1_layout' => '{% block content %}{% endblock %}',
-            '1_child' => "{% extends \"1_layout\" %}\n{% block content %}\n{{ \"a\"|json_encode }}\n{% endblock %}",
-            '1_include' => '{{ include("1_basic1", sandboxed=true) }}',
-            '1_range_operator' => '{{ (1..2)[0] }}',
-        ];
-    }
-
-    public function testSandboxWithInheritance()
-    {
-        $this->expectException('\Twig\Sandbox\SecurityError');
-        $this->expectExceptionMessage('Filter "json_encode" is not allowed in "1_child" at line 3.');
-
-        $twig = $this->getEnvironment(true, [], self::$templates, ['block']);
-        $twig->load('1_child')->render([]);
-    }
-
-    public function testSandboxGloballySet()
-    {
-        $twig = $this->getEnvironment(false, [], self::$templates);
-        $this->assertEquals('FOO', $twig->load('1_basic')->render(self::$params), 'Sandbox does nothing if it is disabled globally');
-    }
-
-    public function testSandboxUnallowedMethodAccessor()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic1')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed method is called');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedMethodError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedMethodError');
-            $this->assertEquals('Twig\Tests\Extension\FooObject', $e->getClassName(), 'Exception should be raised on the "Twig\Tests\Extension\FooObject" class');
-            $this->assertEquals('foo', $e->getMethodName(), 'Exception should be raised on the "foo" method');
-        }
-    }
-
-    public function testSandboxUnallowedFilter()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic2')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed filter is called');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedFilterError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFilterError');
-            $this->assertEquals('upper', $e->getFilterName(), 'Exception should be raised on the "upper" filter');
-        }
-    }
-
-    public function testSandboxUnallowedTag()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic3')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed tag is used in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedTagError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedTagError');
-            $this->assertEquals('if', $e->getTagName(), 'Exception should be raised on the "if" tag');
-        }
-    }
-
-    public function testSandboxUnallowedProperty()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic4')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed property is called in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedPropertyError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedPropertyError');
-            $this->assertEquals('Twig\Tests\Extension\FooObject', $e->getClassName(), 'Exception should be raised on the "Twig\Tests\Extension\FooObject" class');
-            $this->assertEquals('bar', $e->getPropertyName(), 'Exception should be raised on the "bar" property');
-        }
-    }
-
-    /**
-     * @dataProvider getSandboxUnallowedToStringTests
-     */
-    public function testSandboxUnallowedToString($template)
-    {
-        $twig = $this->getEnvironment(true, [], ['index' => $template], [], ['upper'], ['Twig\Tests\Extension\FooObject' => 'getAnotherFooObject'], [], ['random']);
-        try {
-            $twig->load('index')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed method (__toString()) is called in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedMethodError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedMethodError');
-            $this->assertEquals('Twig\Tests\Extension\FooObject', $e->getClassName(), 'Exception should be raised on the "Twig\Tests\Extension\FooObject" class');
-            $this->assertEquals('__tostring', $e->getMethodName(), 'Exception should be raised on the "__toString" method');
-        }
-    }
-
-    public function getSandboxUnallowedToStringTests()
-    {
-        return [
-            'simple' => ['{{ obj }}'],
-            'object_from_array' => ['{{ arr.obj }}'],
-            'object_chain' => ['{{ obj.anotherFooObject }}'],
-            'filter' => ['{{ obj|upper }}'],
-            'filter_from_array' => ['{{ arr.obj|upper }}'],
-            'function' => ['{{ random(obj) }}'],
-            'function_from_array' => ['{{ random(arr.obj) }}'],
-            'function_and_filter' => ['{{ random(obj|upper) }}'],
-            'function_and_filter_from_array' => ['{{ random(arr.obj|upper) }}'],
-            'object_chain_and_filter' => ['{{ obj.anotherFooObject|upper }}'],
-            'object_chain_and_function' => ['{{ random(obj.anotherFooObject) }}'],
-            'concat' => ['{{ obj ~ "" }}'],
-            'concat_again' => ['{{ "" ~ obj }}'],
-        ];
-    }
-
-    /**
-     * @dataProvider getSandboxAllowedToStringTests
-     */
-    public function testSandboxAllowedToString($template, $output)
-    {
-        $twig = $this->getEnvironment(true, [], ['index' => $template], ['set'], [], ['Twig\Tests\Extension\FooObject' => ['foo', 'getAnotherFooObject']]);
-        $this->assertEquals($output, $twig->load('index')->render(self::$params));
-    }
-
-    public function getSandboxAllowedToStringTests()
-    {
-        return [
-            'constant_test' => ['{{ obj is constant("PHP_INT_MAX") }}', ''],
-            'set_object' => ['{% set a = obj.anotherFooObject %}{{ a.foo }}', 'foo'],
-            'is_defined' => ['{{ obj.anotherFooObject is defined }}', '1'],
-            'is_null' => ['{{ obj is null }}', ''],
-            'is_sameas' => ['{{ obj is same as(obj) }}', '1'],
-            'is_sameas_from_array' => ['{{ arr.obj is same as(arr.obj) }}', '1'],
-            'is_sameas_from_another_method' => ['{{ obj.anotherFooObject is same as(obj.anotherFooObject) }}', ''],
-        ];
-    }
-
-    public function testSandboxAllowMethodToString()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], ['Twig\Tests\Extension\FooObject' => '__toString']);
-        FooObject::reset();
-        $this->assertEquals('foo', $twig->load('1_basic5')->render(self::$params), 'Sandbox allow some methods');
-        $this->assertEquals(1, FooObject::$called['__toString'], 'Sandbox only calls method once');
-    }
-
-    public function testSandboxAllowMethodToStringDisabled()
-    {
-        $twig = $this->getEnvironment(false, [], self::$templates);
-        FooObject::reset();
-        $this->assertEquals('foo', $twig->load('1_basic5')->render(self::$params), 'Sandbox allows __toString when sandbox disabled');
-        $this->assertEquals(1, FooObject::$called['__toString'], 'Sandbox only calls method once');
-    }
-
-    public function testSandboxUnallowedFunction()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic7')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed function is called in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedFunctionError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFunctionError');
-            $this->assertEquals('cycle', $e->getFunctionName(), 'Exception should be raised on the "cycle" function');
-        }
-    }
-
-    public function testSandboxUnallowedRangeOperator()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_range_operator')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if the unallowed range operator is called');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedFunctionError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFunctionError');
-            $this->assertEquals('range', $e->getFunctionName(), 'Exception should be raised on the "range" function');
-        }
-    }
-
-    public function testSandboxAllowMethodFoo()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], ['Twig\Tests\Extension\FooObject' => 'foo']);
-        FooObject::reset();
-        $this->assertEquals('foo', $twig->load('1_basic1')->render(self::$params), 'Sandbox allow some methods');
-        $this->assertEquals(1, FooObject::$called['foo'], 'Sandbox only calls method once');
-    }
-
-    public function testSandboxAllowFilter()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], ['upper']);
-        $this->assertEquals('FABIEN', $twig->load('1_basic2')->render(self::$params), 'Sandbox allow some filters');
-    }
-
-    public function testSandboxAllowTag()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, ['if']);
-        $this->assertEquals('foo', $twig->load('1_basic3')->render(self::$params), 'Sandbox allow some tags');
-    }
-
-    public function testSandboxAllowProperty()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], [], ['Twig\Tests\Extension\FooObject' => 'bar']);
-        $this->assertEquals('bar', $twig->load('1_basic4')->render(self::$params), 'Sandbox allow some properties');
-    }
-
-    public function testSandboxAllowFunction()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], [], [], ['cycle']);
-        $this->assertEquals('bar', $twig->load('1_basic7')->render(self::$params), 'Sandbox allow some functions');
-    }
-
-    public function testSandboxAllowRangeOperator()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], [], [], ['range']);
-        $this->assertEquals('1', $twig->load('1_range_operator')->render(self::$params), 'Sandbox allow the range operator');
-    }
-
-    public function testSandboxAllowFunctionsCaseInsensitive()
-    {
-        foreach (['getfoobar', 'getFoobar', 'getFooBar'] as $name) {
-            $twig = $this->getEnvironment(true, [], self::$templates, [], [], ['Twig\Tests\Extension\FooObject' => $name]);
-            FooObject::reset();
-            $this->assertEquals('foobarfoobar', $twig->load('1_basic8')->render(self::$params), 'Sandbox allow methods in a case-insensitive way');
-            $this->assertEquals(2, FooObject::$called['getFooBar'], 'Sandbox only calls method once');
-
-            $this->assertEquals('foobarfoobar', $twig->load('1_basic9')->render(self::$params), 'Sandbox allow methods via shortcut names (ie. without get/set)');
-        }
-    }
-
-    public function testSandboxLocallySetForAnInclude()
-    {
-        self::$templates = [
-            '2_basic' => '{{ obj.foo }}{% include "2_included" %}{{ obj.foo }}',
-            '2_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
-        ];
-
-        $twig = $this->getEnvironment(false, [], self::$templates);
-        $this->assertEquals('fooFOOfoo', $twig->load('2_basic')->render(self::$params), 'Sandbox does nothing if disabled globally and sandboxed not used for the include');
-
-        self::$templates = [
-            '3_basic' => '{{ obj.foo }}{% sandbox %}{% include "3_included" %}{% endsandbox %}{{ obj.foo }}',
-            '3_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
-        ];
-
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('3_basic')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception when the included file is sandboxed');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedTagError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedTagError');
-            $this->assertEquals('sandbox', $e->getTagName());
-        }
-    }
-
-    public function testMacrosInASandbox()
-    {
-        $twig = $this->getEnvironment(true, ['autoescape' => 'html'], ['index' => <<<EOF
-{%- import _self as macros %}
-
-{%- macro test(text) %}<p>{{ text }}</p>{% endmacro %}
-
-{{- macros.test('username') }}
-EOF
-        ], ['macro', 'import'], ['escape']);
-
-        $this->assertEquals('<p>username</p>', $twig->load('index')->render([]));
-    }
-
-    public function testSandboxDisabledAfterIncludeFunctionError()
-    {
-        $twig = $this->getEnvironment(false, [], self::$templates);
-
-        $e = null;
-        try {
-            $twig->load('1_include')->render(self::$params);
-        } catch (\Throwable $e) {
-        } catch (\Exception $e) {
-        }
-        if (null === $e) {
-            $this->fail('An exception should be thrown for this test to be valid.');
-        }
-
-        $this->assertFalse($twig->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed(), 'Sandboxed include() function call should not leave Sandbox enabled when an error occurs.');
-    }
-
-    protected function getEnvironment($sandboxed, $options, $templates, $tags = [], $filters = [], $methods = [], $properties = [], $functions = [])
-    {
-        $loader = new ArrayLoader($templates);
-        $twig = new Environment($loader, array_merge(['debug' => true, 'cache' => false, 'autoescape' => false], $options));
-        $policy = new SecurityPolicy($tags, $filters, $methods, $properties, $functions);
-        $twig->addExtension(new SandboxExtension($policy, $sandboxed));
-
-        return $twig;
-    }
-}
-
-class FooObject
-{
-    public static $called = ['__toString' => 0, 'foo' => 0, 'getFooBar' => 0];
-
-    public $bar = 'bar';
-
-    public static function reset()
-    {
-        self::$called = ['__toString' => 0, 'foo' => 0, 'getFooBar' => 0];
-    }
-
-    public function __toString()
-    {
-        ++self::$called['__toString'];
-
-        return 'foo';
-    }
-
-    public function foo()
-    {
-        ++self::$called['foo'];
-
-        return 'foo';
-    }
-
-    public function getFooBar()
-    {
-        ++self::$called['getFooBar'];
-
-        return 'foobar';
-    }
-
-    public function getAnotherFooObject()
-    {
-        return new self();
-    }
-}
diff --git a/vendor/twig/twig/tests/FactoryRuntimeLoaderTest.php b/vendor/twig/twig/tests/FactoryRuntimeLoaderTest.php
deleted file mode 100644
index 32e61d15204d319a627bfe273035a6ffacfd1555..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/FactoryRuntimeLoaderTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\RuntimeLoader\FactoryRuntimeLoader;
-
-class FactoryRuntimeLoaderTest extends \PHPUnit\Framework\TestCase
-{
-    public function testLoad()
-    {
-        $loader = new FactoryRuntimeLoader(['stdClass' => '\Twig\Tests\getRuntime']);
-
-        $this->assertInstanceOf('stdClass', $loader->load('stdClass'));
-    }
-
-    public function testLoadReturnsNullForUnmappedRuntime()
-    {
-        $loader = new FactoryRuntimeLoader();
-
-        $this->assertNull($loader->load('stdClass'));
-    }
-}
-
-function getRuntime()
-{
-    return new \stdClass();
-}
diff --git a/vendor/twig/twig/tests/FileCachingTest.php b/vendor/twig/twig/tests/FileCachingTest.php
deleted file mode 100644
index e1fa3a4b52a00ce779886839b54a2793675498be..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/FileCachingTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class FileCachingTest extends \PHPUnit\Framework\TestCase
-{
-    private $env;
-    private $tmpDir;
-
-    protected function setUp()
-    {
-        $this->tmpDir = sys_get_temp_dir().'/TwigTests';
-        if (!file_exists($this->tmpDir)) {
-            @mkdir($this->tmpDir, 0777, true);
-        }
-
-        if (!is_writable($this->tmpDir)) {
-            $this->markTestSkipped(sprintf('Unable to run the tests as "%s" is not writable.', $this->tmpDir));
-        }
-
-        $this->env = new Environment(new ArrayLoader(['index' => 'index', 'index2' => 'index2']), ['cache' => $this->tmpDir]);
-    }
-
-    protected function tearDown()
-    {
-        FilesystemHelper::removeDir($this->tmpDir);
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testWritingCacheFiles()
-    {
-        $name = 'index';
-        $this->env->load($name);
-        $cacheFileName = $this->env->getCacheFilename($name);
-
-        $this->assertFileExists($cacheFileName, 'Cache file does not exist.');
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testClearingCacheFiles()
-    {
-        $name = 'index2';
-        $this->env->load($name);
-        $cacheFileName = $this->env->getCacheFilename($name);
-
-        $this->assertFileExists($cacheFileName, 'Cache file does not exist.');
-        $this->env->clearCacheFiles();
-        $this->assertFileNotExists($cacheFileName, 'Cache file was not cleared.');
-    }
-}
diff --git a/vendor/twig/twig/tests/FileExtensionEscapingStrategyTest.php b/vendor/twig/twig/tests/FileExtensionEscapingStrategyTest.php
deleted file mode 100644
index 26e14135019dfa6bb5d9dc6a8ea37a5db6bfaa09..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/FileExtensionEscapingStrategyTest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\FileExtensionEscapingStrategy;
-
-class FileExtensionEscapingStrategyTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider getGuessData
-     */
-    public function testGuess($strategy, $filename)
-    {
-        $this->assertSame($strategy, FileExtensionEscapingStrategy::guess($filename));
-    }
-
-    public function getGuessData()
-    {
-        return [
-            // default
-            ['html', 'foo.html'],
-            ['html', 'foo.html.twig'],
-            ['html', 'foo'],
-            ['html', 'foo.bar.twig'],
-            ['html', 'foo.txt/foo'],
-            ['html', 'foo.txt/foo.js/'],
-
-            // css
-            ['css', 'foo.css'],
-            ['css', 'foo.css.twig'],
-            ['css', 'foo.twig.css'],
-            ['css', 'foo.js.css'],
-            ['css', 'foo.js.css.twig'],
-
-            // js
-            ['js', 'foo.js'],
-            ['js', 'foo.js.twig'],
-            ['js', 'foo.txt/foo.js'],
-            ['js', 'foo.txt.twig/foo.js'],
-
-            // txt
-            [false, 'foo.txt'],
-            [false, 'foo.txt.twig'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/FilesystemHelper.php b/vendor/twig/twig/tests/FilesystemHelper.php
deleted file mode 100644
index 76f75afc73de039ebda0ea11cadb7bdc7ae7830d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/FilesystemHelper.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class FilesystemHelper
-{
-    public static function removeDir($dir)
-    {
-        $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \PHP_VERSION_ID < 50300 ? 0 : \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST);
-        foreach ($iterator as $filename => $fileInfo) {
-            if ($iterator->isDot()) {
-                continue;
-            }
-
-            if ($fileInfo->isDir()) {
-                rmdir($filename);
-            } else {
-                unlink($filename);
-            }
-        }
-        rmdir($dir);
-    }
-}
diff --git a/vendor/twig/twig/tests/Fixtures/autoescape/block.test b/vendor/twig/twig/tests/Fixtures/autoescape/block.test
deleted file mode 100644
index a80b80c376e5fd8e6824588209132a983ecad374..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/autoescape/block.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-blocks and autoescape
---TEMPLATE--
-{{ include('unrelated.txt.twig') -}}
-{{ include('template.html.twig') -}}
---TEMPLATE(unrelated.txt.twig)--
-{% block content %}{% endblock %}
---TEMPLATE(template.html.twig)--
-{% extends 'parent.html.twig' %}
-{% block content %}
-{{ br -}}
-{% endblock %}
---TEMPLATE(parent.html.twig)--
-{% set _content = block('content')|raw %}
-{{ _content|raw }}
---DATA--
-return ['br' => '<br />']
---CONFIG--
-return ['autoescape' => 'name']
---EXPECT--
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/autoescape/name.test b/vendor/twig/twig/tests/Fixtures/autoescape/name.test
deleted file mode 100644
index 5ad573cf0aa492029a268c071a473095a36d08db..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/autoescape/name.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"name" autoescape strategy
---TEMPLATE--
-{{ br -}}
-{{ include('index.js.twig') -}}
-{{ include('index.html.twig') -}}
-{{ include('index.txt.twig') -}}
---TEMPLATE(index.js.twig)--
-{{ br -}}
---TEMPLATE(index.html.twig)--
-{{ br -}}
---TEMPLATE(index.txt.twig)--
-{{ br -}}
---DATA--
-return ['br' => '<br />']
---CONFIG--
-return ['autoescape' => 'name']
---EXPECT--
-&lt;br /&gt;
-\u003Cbr\u0020\/\u003E
-&lt;br /&gt;
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/errors/base.html b/vendor/twig/twig/tests/Fixtures/errors/base.html
deleted file mode 100644
index cb0dbe444bb4b15c9d29c1f011bf3fd0c325eb23..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/errors/base.html
+++ /dev/null
@@ -1 +0,0 @@
-{% block content %}{% endblock %}
diff --git a/vendor/twig/twig/tests/Fixtures/errors/index.html b/vendor/twig/twig/tests/Fixtures/errors/index.html
deleted file mode 100644
index df57c822f92e3a550d228e05f604af9e4da465f0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/errors/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-{% extends 'base.html' %}
-{% block content %}
-    {{ foo.bar }}
-{% endblock %}
-{% block foo %}
-    {{ foo.bar }}
-{% endblock %}
diff --git a/vendor/twig/twig/tests/Fixtures/errors/leak-output.php b/vendor/twig/twig/tests/Fixtures/errors/leak-output.php
deleted file mode 100644
index 985c39a8eb72581cabff8c14bef38444d6354c21..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/errors/leak-output.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Twig\Tests\Fixtures\errors;
-
-require __DIR__.'/../../../vendor/autoload.php';
-
-use Twig\Environment;
-use Twig\Extension\AbstractExtension;
-use Twig\Loader\ArrayLoader;
-use Twig\TwigFilter;
-
-class BrokenExtension extends AbstractExtension
-{
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('broken', [$this, 'broken']),
-        ];
-    }
-
-    public function broken()
-    {
-        die('OOPS');
-    }
-}
-
-$loader = new ArrayLoader([
-    'index.html.twig' => 'Hello {{ "world"|broken }}',
-]);
-$twig = new Environment($loader, ['debug' => isset($argv[1])]);
-$twig->addExtension(new BrokenExtension());
-
-echo $twig->render('index.html.twig');
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/child_contents_outside_blocks.test b/vendor/twig/twig/tests/Fixtures/exceptions/child_contents_outside_blocks.test
deleted file mode 100644
index 74a1cc2833c21e402368f62fb4514b6b63c6c02c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/child_contents_outside_blocks.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Exception for child templates defining content outside blocks defined by parent
---TEMPLATE--
-{% extends 'base.twig' %}
-
-Content outside a block.
-
-{% block sidebar %}
-    Content inside a block.
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block sidebar %}
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag in "index.twig" at line 3?
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_extends.test b/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_extends.test
deleted file mode 100644
index 2ab298059d32122c029bce571693de2722fa2a52..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_extends.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception thrown from a child for an extension error
---TEMPLATE--
-{% extends 'base.twig' %}
---TEMPLATE(base.twig)--
-
-
-{{ random([]) }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: The random function cannot pick from an empty array in "base.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_include.test b/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_include.test
deleted file mode 100644
index e2281b2903bd3cbbf26db74282d5d554f813b191..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_include.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception thrown from an include for an extension error
---TEMPLATE--
-{% include 'content.twig' %}
---TEMPLATE(content.twig)--
-
-
-{{ random([]) }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: The random function cannot pick from an empty array in "content.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test
deleted file mode 100644
index 66784292c9106ee55b9f076f703146fe7df88efb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Exception for multiline array with undefined variable
---TEMPLATE--
-{% set foo = {
-   foo: 'foo',
-   bar: 'bar',
-
-
-   foobar: foobar,
-
-
-
-   foo2: foo2,
-} %}
---DATA--
-return ['foobar' => 'foobar']
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "foo2" does not exist in "index.twig" at line 11.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test
deleted file mode 100644
index 7f5e96b0491bd5ec1d2fc58eb18a6e9ec152c5c5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Exception for multiline array with undefined variable
---TEMPLATE--
-{% set foo = {
-   foo: 'foo',
-   bar: 'bar',
-
-
-   foobar: foobar,
-
-
-
-   foo2: foo2,
-} %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "foobar" does not exist in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test
deleted file mode 100644
index 8bc524ef1816d2e175cbff5970ece90b5a7c7cdd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception for multile function with undefined variable
---TEMPLATE--
-{{ include('foo',
-   with_context=with_context
-) }}
---TEMPLATE(foo)--
-Foo
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "with_context" does not exist in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test
deleted file mode 100644
index 5f413d406afbb686ead7f2cc4ac37d177c30b95c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-Exception for multiline function with unknown argument
---TEMPLATE--
-{{ include('foo',
-   with_context=True,
-   invalid=False
-) }}
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown argument "invalid" for function "include(template, variables, with_context, ignore_missing, sandboxed)" in "index.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test
deleted file mode 100644
index 032ad831ec5515a5efdd16ce699cfadfd51f5306..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception for multiline tag with undefined variable
---TEMPLATE--
-{% include 'foo'
-   with vars
-%}
---TEMPLATE(foo)--
-Foo
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "vars" does not exist in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/strict_comparison_operator.test b/vendor/twig/twig/tests/Fixtures/exceptions/strict_comparison_operator.test
deleted file mode 100644
index e14beb672dde80c9499fca0398debc90ef26b4f5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/strict_comparison_operator.test
+++ /dev/null
@@ -1,6 +0,0 @@
---TEST--
-The PHP === strict comparison operator is not supported
---TEMPLATE--
-{{ 1 === 2 }}
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected operator of value "=". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/syntax_error_in_reused_template.test b/vendor/twig/twig/tests/Fixtures/exceptions/syntax_error_in_reused_template.test
deleted file mode 100644
index 4ce06854fb7d2b629006a39e62d5de0b5b3090e9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/syntax_error_in_reused_template.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Exception for syntax error in reused template
---TEMPLATE--
-{% use 'foo.twig' %}
---TEMPLATE(foo.twig)--
-{% block bar %}
-    {% do node.data = 5 %}
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "operator" of value "=" ("end of statement block" expected) in "foo.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/unclosed_tag.test b/vendor/twig/twig/tests/Fixtures/exceptions/unclosed_tag.test
deleted file mode 100644
index b4fc169167632eb1d58f70494dd21a143eafba0e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/unclosed_tag.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Exception for an unclosed tag
---TEMPLATE--
-{% block foo %}
-     {% if foo %}
-
-
-
-
-         {% for i in fo %}
-
-
-
-         {% endfor %}
-
-
-
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected "endblock" tag (expecting closing tag for the "if" tag defined near line 4) in "index.twig" at line 16.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_parent.test b/vendor/twig/twig/tests/Fixtures/exceptions/undefined_parent.test
deleted file mode 100644
index 07f855a3feb650b047d0b21e81ac91db17d59284..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_parent.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Exception for an undefined parent
---TEMPLATE--
-{% extends 'foo.html' %}
-
-{% set foo = "foo" %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.html" is not defined in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_template_in_child_template.test b/vendor/twig/twig/tests/Fixtures/exceptions/undefined_template_in_child_template.test
deleted file mode 100644
index 904faa50ad433995693a09491cac760438af57e4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_template_in_child_template.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Exception for an undefined template in a child template
---TEMPLATE--
-{% extends 'base.twig' %}
-
-{% block sidebar %}
-    {{ include('include.twig') }}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block sidebar %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "include.twig" is not defined in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_trait.test b/vendor/twig/twig/tests/Fixtures/exceptions/undefined_trait.test
deleted file mode 100644
index 5bfdd07e6125439b0c20555f1b7fa7b6cfb2b42f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_trait.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-Exception for an undefined trait
---TEMPLATE--
-{% use 'foo' with foobar as bar %}
---TEMPLATE(foo)--
-{% block bar %}
-{% endblock %}
---EXCEPTION--
-Twig\Error\RuntimeError: Block "foobar" is not defined in trait "foo" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/_self.test b/vendor/twig/twig/tests/Fixtures/expressions/_self.test
deleted file mode 100644
index fb88f4c859d1c6d732747dd244b4f45de86a645f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/_self.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-_self returns the template name
---TEMPLATE--
-{{ _self }}
---DATA--
-return []
---EXPECT--
-index.twig
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/array.test b/vendor/twig/twig/tests/Fixtures/expressions/array.test
deleted file mode 100644
index bf6033356a1c5bd3cbf44e7677b562ccf566fa8e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/array.test
+++ /dev/null
@@ -1,61 +0,0 @@
---TEST--
-Twig supports array notation
---TEMPLATE--
-{# empty array #}
-{{ []|join(',') }}
-
-{{ [1, 2]|join(',') }}
-{{ ['foo', "bar"]|join(',') }}
-{{ {0: 1, 'foo': 'bar'}|join(',') }}
-{{ {0: 1, 'foo': 'bar'}|keys|join(',') }}
-
-{{ {0: 1, foo: 'bar'}|join(',') }}
-{{ {0: 1, foo: 'bar'}|keys|join(',') }}
-
-{# nested arrays #}
-{% set a = [1, 2, [1, 2], {'foo': {'foo': 'bar'}}] %}
-{{ a[2]|join(',') }}
-{{ a[3]["foo"]|join(',') }}
-
-{# works even if [] is used inside the array #}
-{{ [foo[bar]]|join(',') }}
-
-{# elements can be any expression #}
-{{ ['foo'|upper, bar|upper, bar == foo]|join(',') }}
-
-{# arrays can have a trailing , like in PHP #}
-{{
-  [
-    1,
-    2,
-  ]|join(',')
-}}
-
-{# keys can be any expression #}
-{% set a = 1 %}
-{% set b = "foo" %}
-{% set ary = { (a): 'a', (b): 'b', 'c': 'c', (a ~ b): 'd' } %}
-{{ ary|keys|join(',') }}
-{{ ary|join(',') }}
---DATA--
-return ['bar' => 'bar', 'foo' => ['bar' => 'bar']]
---EXPECT--
-1,2
-foo,bar
-1,bar
-0,foo
-
-1,bar
-0,foo
-
-1,2
-bar
-
-bar
-
-FOO,BAR,
-
-1,2
-
-1,foo,c,1foo
-a,b,c,d
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/array_call.test b/vendor/twig/twig/tests/Fixtures/expressions/array_call.test
deleted file mode 100644
index 8c7a2ee7cb8f6f0e1a9fce0072d18c04b35a58ec..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/array_call.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig supports method calls
---TEMPLATE--
-{{ items.foo }}
-{{ items['foo'] }}
-{{ items[foo] }}
-{{ items[items[foo]] }}
---DATA--
-return ['foo' => 'bar', 'items' => ['foo' => 'bar', 'bar' => 'foo']]
---EXPECT--
-bar
-bar
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/binary.test b/vendor/twig/twig/tests/Fixtures/expressions/binary.test
deleted file mode 100644
index b4e8be58d3ccb4e09f5e71b7a0a3916953758b1f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/binary.test
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-Twig supports binary operations (+, -, *, /, ~, %, and, or)
---TEMPLATE--
-{{ 1 + 1 }}
-{{ 2 - 1 }}
-{{ 2 * 2 }}
-{{ 2 / 2 }}
-{{ 3 % 2 }}
-{{ 1 and 1 }}
-{{ 1 and 0 }}
-{{ 0 and 1 }}
-{{ 0 and 0 }}
-{{ 1 or 1 }}
-{{ 1 or 0 }}
-{{ 0 or 1 }}
-{{ 0 or 0 }}
-{{ 0 or 1 and 0 }}
-{{ 1 or 0 and 1 }}
-{{ "foo" ~ "bar" }}
-{{ foo ~ "bar" }}
-{{ "foo" ~ bar }}
-{{ foo ~ bar }}
-{{ 20 // 7 }}
---DATA--
-return ['foo' => 'bar', 'bar' => 'foo']
---EXPECT--
-2
-1
-4
-1
-1
-1
-
-
-
-1
-1
-1
-
-
-1
-foobar
-barbar
-foofoo
-barfoo
-2
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/bitwise.test b/vendor/twig/twig/tests/Fixtures/expressions/bitwise.test
deleted file mode 100644
index c2bda1cc6b61d050904e36912294ec43a6f301d5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/bitwise.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig supports bitwise operations
---TEMPLATE--
-{{ 1 b-and 5 }}
-{{ 1 b-or 5 }}
-{{ 1 b-xor 5 }}
-{{ (1 and 0 b-or 0) is same as(1 and (0 b-or 0)) ? 'ok' : 'ko' }}
---DATA--
-return []
---EXPECT--
-1
-5
-4
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/call_argument_defined_twice.test b/vendor/twig/twig/tests/Fixtures/expressions/call_argument_defined_twice.test
deleted file mode 100644
index 36539a6d1324960aa41d2c13872de5da3f8e22df..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/call_argument_defined_twice.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Argument is defined twice in a call
---TEMPLATE--
-{{ date(987654, date = 123456) }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Argument "date" is defined twice for function "date" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/call_positional_arg_after_named_arg.test b/vendor/twig/twig/tests/Fixtures/expressions/call_positional_arg_after_named_arg.test
deleted file mode 100644
index 729c6748597bc7e6e40a6452f0c92795770ca2df..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/call_positional_arg_after_named_arg.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Positional arguments after named arguments in a call
---TEMPLATE--
-{{ date(date = 123456, 'Y-m-d') }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Positional arguments cannot be used after named arguments for function "date" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/comparison.test b/vendor/twig/twig/tests/Fixtures/expressions/comparison.test
deleted file mode 100644
index 2811634f76aeec591c926c26debff2fe056fbca6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/comparison.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig supports comparison operators (==, !=, <, >, >=, <=)
---TEMPLATE--
-{{ 1 > 2 }}/{{ 1 > 1 }}/{{ 1 >= 2 }}/{{ 1 >= 1 }}
-{{ 1 < 2 }}/{{ 1 < 1 }}/{{ 1 <= 2 }}/{{ 1 <= 1 }}
-{{ 1 == 1 }}/{{ 1 == 2 }}
-{{ 1 != 1 }}/{{ 1 != 2 }}
---DATA--
-return []
---EXPECT--
-///1
-1//1/1
-1/
-/1
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/divisibleby.test b/vendor/twig/twig/tests/Fixtures/expressions/divisibleby.test
deleted file mode 100644
index f1bf5681e59389476732670212836133020a999a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/divisibleby.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Twig supports the "divisible by" operator
---TEMPLATE--
-{{ 8 is divisible by(2) ? 'OK' }}
-{{ 8 is not divisible by(3) ? 'OK' }}
-{{ 8 is    divisible   by   (2) ? 'OK' }}
-{{ 8 is not
-   divisible
-   by
-   (3) ? 'OK' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/dotdot.test b/vendor/twig/twig/tests/Fixtures/expressions/dotdot.test
deleted file mode 100644
index 0efa9305694208f36d0849fe6c0606c10a781877..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/dotdot.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Twig supports the .. operator
---TEMPLATE--
-{% for i in 0..10 %}{{ i }} {% endfor %}
-
-{% for letter in 'a'..'z' %}{{ letter }} {% endfor %}
-
-{% for letter in 'a'|upper..'z'|upper %}{{ letter }} {% endfor %}
-
-{% for i in foo[0]..foo[1] %}{{ i }} {% endfor %}
-
-{% for i in 0 + 1 .. 10 - 1 %}{{ i }} {% endfor %}
---DATA--
-return ['foo' => [1, 10]]
---EXPECT--
-0 1 2 3 4 5 6 7 8 9 10 
-a b c d e f g h i j k l m n o p q r s t u v w x y z 
-A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
-1 2 3 4 5 6 7 8 9 10 
-1 2 3 4 5 6 7 8 9
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ends_with.test b/vendor/twig/twig/tests/Fixtures/expressions/ends_with.test
deleted file mode 100644
index c8086d6d4c283c5b71128462efb3c8ad4fabc579..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ends_with.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-Twig supports the "ends with" operator
---TEMPLATE--
-{{ 'foo' ends with 'o' ? 'OK' : 'KO' }}
-{{ not ('foo' ends with 'f') ? 'OK' : 'KO' }}
-{{ not ('foo' ends with 'foowaytoolong') ? 'OK' : 'KO' }}
-{{ 'foo' ends with '' ? 'OK' : 'KO' }}
-{{ '1' ends with true ? 'OK' : 'KO' }}
-{{ 1 ends with true ? 'OK' : 'KO' }}
-{{ 0 ends with false ? 'OK' : 'KO' }}
-{{ '' ends with false ? 'OK' : 'KO' }}
-{{ false ends with false ? 'OK' : 'KO' }}
-{{ false ends with '' ? 'OK' : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
-KO
-KO
-KO
-KO
-KO
-KO
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/floats.test b/vendor/twig/twig/tests/Fixtures/expressions/floats.test
deleted file mode 100644
index cdf871cde15dbd1ea7bdaf0da4fd6a0ba1c2451e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/floats.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Twig compiles floats properly
---CONDITION--
-version_compare(phpversion(), '7.0.0', '>=')
---TEMPLATE--
-{% set val2 = 0.0 %}
-
-{{ val is same as (0.0) ? 'Yes' : 'No' }}
-{{ val2 is same as (0.0) ? 'Yes' : 'No' }}
-{{ val is same as (val2) ? 'Yes' : 'No' }}
---DATA--
-return ['val' => 0.0]
---EXPECT--
-Yes
-Yes
-Yes
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/grouping.test b/vendor/twig/twig/tests/Fixtures/expressions/grouping.test
deleted file mode 100644
index 069ebf793d10429a4f9cd30dbe66be1e07240a63..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/grouping.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig supports grouping of expressions
---TEMPLATE--
-{{ (2 + 2) / 2 }}
---DATA--
-return []
---EXPECT--
-2
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/literals.test b/vendor/twig/twig/tests/Fixtures/expressions/literals.test
deleted file mode 100644
index 308e8df2ac6b734a4744862429647f4ef0aa3408..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/literals.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Twig supports literals
---TEMPLATE--
-1 {{ true }}
-2 {{ TRUE }}
-3 {{ false }}
-4 {{ FALSE }}
-5 {{ none }}
-6 {{ NONE }}
-7 {{ null }}
-8 {{ NULL }}
---DATA--
-return []
---EXPECT--
-1 1
-2 1
-3 
-4 
-5 
-6 
-7 
-8 
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/magic_call.test b/vendor/twig/twig/tests/Fixtures/expressions/magic_call.test
deleted file mode 100644
index 60417e04ffd0fffc22aac1dedfec44dfb68e4a78..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/magic_call.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Twig supports __call() for attributes
---TEMPLATE--
-{{ foo.foo }}
-{{ foo.bar }}
---DATA--
-class TestClassForMagicCallAttributes
-{
-    public function getBar()
-    {
-        return 'bar_from_getbar';
-    }
-
-    public function __call($method, $arguments)
-    {
-        if ('foo' === $method) {
-            return 'foo_from_call';
-        }
-
-        return false;
-    }
-}
-
-return ['foo' => new TestClassForMagicCallAttributes()]
---EXPECT--
-foo_from_call
-bar_from_getbar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/matches.test b/vendor/twig/twig/tests/Fixtures/expressions/matches.test
deleted file mode 100644
index 95459c3b0f28ee16136bea9462f6e3780b4d17a7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/matches.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Twig supports the "matches" operator
---TEMPLATE--
-{{ 'foo' matches '/o/' ? 'OK' : 'KO' }}
-{{ 'foo' matches '/^fo/' ? 'OK' : 'KO' }}
-{{ 'foo' matches '/O/i' ? 'OK' : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/method_call.test b/vendor/twig/twig/tests/Fixtures/expressions/method_call.test
deleted file mode 100644
index bf49f389e005c6b4b6b84a475eda32ec247cef4a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/method_call.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-Twig supports method calls
---TEMPLATE--
-{{ items.foo.foo }}
-{{ items.foo.getFoo() }}
-{{ items.foo.bar }}
-{{ items.foo['bar'] }}
-{{ items.foo.bar('a', 43) }}
-{{ items.foo.bar(foo) }}
-{{ items.foo.self.foo() }}
-{{ items.foo.is }}
-{{ items.foo.in }}
-{{ items.foo.not }}
---DATA--
-return ['foo' => 'bar', 'items' => ['foo' => new Twig\Tests\TwigTestFoo(), 'bar' => 'foo']]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-foo
-foo
-bar
-
-bar_a-43
-bar_bar
-foo
-is
-in
-not
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/negative_numbers.test b/vendor/twig/twig/tests/Fixtures/expressions/negative_numbers.test
deleted file mode 100644
index c2a6e340245bf32153d7a2bc761c010e09c965d6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/negative_numbers.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Twig manages negative numbers correctly
---TEMPLATE--
-{{ -1 }}
-{{ - 1 }}
-{{ 5 - 1 }}
-{{ 5-1 }}
-{{ 5 + -1 }}
-{{ 5 + - 1 }}
---DATA--
-return []
---EXPECT--
--1
--1
-4
-4
-4
-4
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/not_arrow_fn.test b/vendor/twig/twig/tests/Fixtures/expressions/not_arrow_fn.test
deleted file mode 100644
index af82c47cf5c64538edd95624fef3c84a3cbe0d94..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/not_arrow_fn.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-A string in parentheses cannot be confused with an arrow function
---TEMPLATE--
-{{ ["foo", "bar"]|join(("f")) }}
---DATA--
-return []
---EXPECT--
-foofbar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/operators_as_variables.test b/vendor/twig/twig/tests/Fixtures/expressions/operators_as_variables.test
deleted file mode 100644
index fa9a843c0fa9f1eddd45685a2eac65729d696e85..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/operators_as_variables.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Twig allows to use named operators as variable names
---TEMPLATE--
-{% for match in matches %}
-    {{- match }}
-{% endfor %}
-{{ in }}
-{{ is }}
---DATA--
-return ['matches' => [1, 2, 3], 'in' => 'in', 'is' => 'is']
---EXPECT--
-1
-2
-3
-in
-is
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/postfix.test b/vendor/twig/twig/tests/Fixtures/expressions/postfix.test
deleted file mode 100644
index 276cbf197d1ebe2827d58b892749b70f2596883a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/postfix.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Twig parses postfix expressions
---TEMPLATE--
-{% import _self as macros %}
-
-{% macro foo() %}foo{% endmacro %}
-
-{{ 'a' }}
-{{ 'a'|upper }}
-{{ ('a')|upper }}
-{{ -1|upper }}
-{{ macros.foo() }}
-{{ (macros).foo() }}
---DATA--
-return []
---EXPECT--
-a
-A
-A
--1
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/power.test b/vendor/twig/twig/tests/Fixtures/expressions/power.test
deleted file mode 100644
index 84fd23692ce4edf6acd8370747fbab5ede1a6957..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/power.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Twig parses power expressions
---TEMPLATE--
-{{ 2**3 }}
-{{ (-2)**3 }}
-{{ (-2)**(-3) }}
-{{ a ** a }}
-{{ a ** b }}
-{{ b ** a }}
-{{ b ** b }}
---DATA--
-return ['a' => 4, 'b' => -2]
---EXPECT--
-8
--8
--0.125
-256
-0.0625
-16
-0.25
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/sameas.test b/vendor/twig/twig/tests/Fixtures/expressions/sameas.test
deleted file mode 100644
index 83f3691f97277b76d46938e99a7c40c717963e92..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/sameas.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-Twig supports the "same as" operator
---TEMPLATE--
-{{ 1 is same as(1) ? 'OK' }}
-{{ 1 is not same as(true) ? 'OK' }}
-{{ 1 is same as(1) ? 'OK' }}
-{{ 1 is not same as(true) ? 'OK' }}
-{{ 1 is   same    as   (1) ? 'OK' }}
-{{ 1 is not
-    same
-    as
-    (true) ? 'OK' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/starts_with.test b/vendor/twig/twig/tests/Fixtures/expressions/starts_with.test
deleted file mode 100644
index a78ff1eac714184589eab0ec68babc5574fcdac3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/starts_with.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Twig supports the "starts with" operator
---TEMPLATE--
-{{ 'foo' starts with 'f' ? 'OK' : 'KO' }}
-{{ not ('foo' starts with 'oo') ? 'OK' : 'KO' }}
-{{ not ('foo' starts with 'foowaytoolong') ? 'OK' : 'KO' }}
-{{ 'foo' starts      with 'f' ? 'OK' : 'KO' }}
-{{ 'foo' starts
-with 'f' ? 'OK' : 'KO' }}
-{{ 'foo' starts with '' ? 'OK' : 'KO' }}
-{{ '1' starts with true ? 'OK' : 'KO' }}
-{{ '' starts with false ? 'OK' : 'KO' }}
-{{ 'a' starts with false ? 'OK' : 'KO' }}
-{{ false starts with '' ? 'OK' : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-KO
-KO
-KO
-KO
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/string_operator_as_var_assignment.test b/vendor/twig/twig/tests/Fixtures/expressions/string_operator_as_var_assignment.test
deleted file mode 100644
index 478d4eb5e54beedc02af286cbf28a47cc4bcf63a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/string_operator_as_var_assignment.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Twig supports the string operators as variable names in assignments
---TEMPLATE--
-{% for matches in [1, 2] %}
-    {{- matches }}
-{% endfor %}
-
-{% set matches = [1, 2] %}
-
-OK
---DATA--
-return []
---EXPECT--
-1
-2
-
-
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/strings.test b/vendor/twig/twig/tests/Fixtures/expressions/strings.test
deleted file mode 100644
index f402c8939916a93080fa8457a3367c59b90f07b3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/strings.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig supports string interpolation
---TEMPLATE--
-{{ "foo #{"foo #{bar} baz"} baz" }}
-{{ "foo #{bar}#{bar} baz" }}
---DATA--
-return ['bar' => 'BAR']
---EXPECT--
-foo foo BAR baz baz
-foo BARBAR baz
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator.test b/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator.test
deleted file mode 100644
index 37eccc0f545955f35b14fd99bacb6a3f5f2eb0d5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Twig supports the ternary operator
---TEMPLATE--
-{{ 1 ? 'YES' : 'NO' }}
-{{ 0 ? 'YES' : 'NO' }}
-{{ 0 ? 'YES' : (1 ? 'YES1' : 'NO1') }}
-{{ 0 ? 'YES' : (0 ? 'YES1' : 'NO1') }}
-{{ 1 == 1 ? 'foo<br />':'' }}
-{{ foo ~ (bar ? ('-' ~ bar) : '') }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---EXPECT--
-YES
-NO
-YES1
-NO1
-foo<br />
-foo-bar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_noelse.test b/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_noelse.test
deleted file mode 100644
index 8b0f7284b9b235f1f3eb3573dadaaa07c57f2cb9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_noelse.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig supports the ternary operator
---TEMPLATE--
-{{ 1 ? 'YES' }}
-{{ 0 ? 'YES' }}
---DATA--
-return []
---EXPECT--
-YES
-
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_nothen.test b/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_nothen.test
deleted file mode 100644
index ecd6b7546563de086095574ec7cb20e345e1be44..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_nothen.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig supports the ternary operator
---TEMPLATE--
-{{ 'YES' ?: 'NO' }}
-{{ 0 ?: 'NO' }}
---DATA--
-return []
---EXPECT--
-YES
-NO
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/two_word_operators_as_variables.test b/vendor/twig/twig/tests/Fixtures/expressions/two_word_operators_as_variables.test
deleted file mode 100644
index eca3b285bbe5993fe235afaa8d6be6df1cff6542..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/two_word_operators_as_variables.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig does not allow to use two-word named operators as variable names
---TEMPLATE--
-{{ starts with }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "operator" of value "starts with" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/unary.test b/vendor/twig/twig/tests/Fixtures/expressions/unary.test
deleted file mode 100644
index 54225311903ec6dfe7586a525c37c15a1bd6602b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/unary.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Twig supports unary operators (not, -, +)
---TEMPLATE--
-{{ not 1 }}/{{ not 0 }}
-{{ +1 + 1 }}/{{ -1 - 1 }}
-{{ not (false or true) }}
---DATA--
-return []
---EXPECT--
-/1
-2/-2
-
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/unary_macro_arguments.test b/vendor/twig/twig/tests/Fixtures/expressions/unary_macro_arguments.test
deleted file mode 100644
index 27deba3ef519db1f0bb62a06a2d4dcaa16dabdb7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/unary_macro_arguments.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Twig manages negative numbers as default parameters
---TEMPLATE--
-{% import _self as macros %}
-{{ macros.negative_number1() }}
-{{ macros.negative_number2() }}
-{{ macros.negative_number3() }}
-{{ macros.positive_number1() }}
-{{ macros.positive_number2() }}
-{% macro negative_number1(nb=-1) %}{{ nb }}{% endmacro %}
-{% macro negative_number2(nb = --1) %}{{ nb }}{% endmacro %}
-{% macro negative_number3(nb = - 1) %}{{ nb }}{% endmacro %}
-{% macro positive_number1(nb = +1) %}{{ nb }}{% endmacro %}
-{% macro positive_number2(nb = ++1) %}{{ nb }}{% endmacro %}
---DATA--
-return []
---EXPECT--
--1
-1
--1
-1
-1
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/unary_precedence.test b/vendor/twig/twig/tests/Fixtures/expressions/unary_precedence.test
deleted file mode 100644
index 9c56ab12c0f1f648a2a76ef557ed96ade530392e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/unary_precedence.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig unary operators precedence
---TEMPLATE--
-{{ -1 - 1 }}
-{{ -1 - -1 }}
-{{ -1 * -1 }}
-{{ 4 / -1 * 5 }}
---DATA--
-return []
---EXPECT--
--2
-0
-1
--20
diff --git a/vendor/twig/twig/tests/Fixtures/filters/abs.test b/vendor/twig/twig/tests/Fixtures/filters/abs.test
deleted file mode 100644
index 7518769d4a06fcec199c034f264439533cac0d60..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/abs.test
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-"abs" filter
---TEMPLATE--
-{{ (-5.5)|abs }}
-{{ (-5)|abs }}
-{{ (-0)|abs }}
-{{ 0|abs }}
-{{ 5|abs }}
-{{ 5.5|abs }}
-{{ number1|abs }}
-{{ number2|abs }}
-{{ number3|abs }}
-{{ number4|abs }}
-{{ number5|abs }}
-{{ number6|abs }}
---DATA--
-return ['number1' => -5.5, 'number2' => -5, 'number3' => -0, 'number4' => 0, 'number5' => 5, 'number6' => 5.5]
---EXPECT--
-5.5
-5
-0
-0
-5
-5.5
-5.5
-5
-0
-0
-5
-5.5
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch.test b/vendor/twig/twig/tests/Fixtures/filters/batch.test
deleted file mode 100644
index 0acf25bd6144eef88ae05019b13e3bc1db0c4bcf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch.test
+++ /dev/null
@@ -1,31 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3) %}
-  <div class=row>
-  {% for column in row %}
-    <div class=item>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<div class=row>
-      <div class=item>a</div>
-      <div class=item>b</div>
-      <div class=item>c</div>
-    </div>
-  <div class=row>
-      <div class=item>d</div>
-      <div class=item>e</div>
-      <div class=item>f</div>
-    </div>
-  <div class=row>
-      <div class=item>g</div>
-      <div class=item>h</div>
-      <div class=item>i</div>
-    </div>
-  <div class=row>
-      <div class=item>j</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_float.test b/vendor/twig/twig/tests/Fixtures/filters/batch_float.test
deleted file mode 100644
index dad004ec2c5558f10a0a785072f1a7296d7a44ee..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_float.test
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3.1) %}
-  <div class=row>
-  {% for column in row %}
-    <div class=item>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<div class=row>
-      <div class=item>a</div>
-      <div class=item>b</div>
-      <div class=item>c</div>
-      <div class=item>d</div>
-    </div>
-  <div class=row>
-      <div class=item>e</div>
-      <div class=item>f</div>
-      <div class=item>g</div>
-      <div class=item>h</div>
-    </div>
-  <div class=row>
-      <div class=item>i</div>
-      <div class=item>j</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_empty_fill.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_empty_fill.test
deleted file mode 100644
index 411b4fc749913585fd7184ffddae07375b65a77b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_empty_fill.test
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-<table>
-{% for row in items|batch(3, '') %}
-  <tr>
-  {% for column in row %}
-    <td>{{ column }}</td>
-  {% endfor %}
-  </tr>
-{% endfor %}
-</table>
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<table>
-  <tr>
-      <td>a</td>
-      <td>b</td>
-      <td>c</td>
-    </tr>
-  <tr>
-      <td>d</td>
-      <td>e</td>
-      <td>f</td>
-    </tr>
-  <tr>
-      <td>g</td>
-      <td>h</td>
-      <td>i</td>
-    </tr>
-  <tr>
-      <td>j</td>
-      <td></td>
-      <td></td>
-    </tr>
-</table>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_exact_elements.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_exact_elements.test
deleted file mode 100644
index 750d1557aab1c087a23af76293b71dabb3792e23..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_exact_elements.test
+++ /dev/null
@@ -1,33 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3, 'fill') %}
-  <div class=row>
-  {% for column in row %}
-    <div class=item>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']]
---EXPECT--
-<div class=row>
-      <div class=item>a</div>
-      <div class=item>b</div>
-      <div class=item>c</div>
-    </div>
-  <div class=row>
-      <div class=item>d</div>
-      <div class=item>e</div>
-      <div class=item>f</div>
-    </div>
-  <div class=row>
-      <div class=item>g</div>
-      <div class=item>h</div>
-      <div class=item>i</div>
-    </div>
-  <div class=row>
-      <div class=item>j</div>
-      <div class=item>k</div>
-      <div class=item>l</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_fill.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_fill.test
deleted file mode 100644
index 5d470d005b12cd41b4ebe1f92d7cf774c6df255a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_fill.test
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-<table>
-{% for row in items|batch(3, 'fill') %}
-  <tr>
-  {% for column in row %}
-    <td>{{ column }}</td>
-  {% endfor %}
-  </tr>
-{% endfor %}
-</table>
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<table>
-  <tr>
-      <td>a</td>
-      <td>b</td>
-      <td>c</td>
-    </tr>
-  <tr>
-      <td>d</td>
-      <td>e</td>
-      <td>f</td>
-    </tr>
-  <tr>
-      <td>g</td>
-      <td>h</td>
-      <td>i</td>
-    </tr>
-  <tr>
-      <td>j</td>
-      <td>fill</td>
-      <td>fill</td>
-    </tr>
-</table>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_keys.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_keys.test
deleted file mode 100644
index e56cd79bbc923df292d875c0672185ea7d2ec7d1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_keys.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"batch" filter preserves array keys
---TEMPLATE--
-{{ {'foo': 'bar', 'key': 'value'}|batch(4)|first|keys|join(',') }}
-{{ {'foo': 'bar', 'key': 'value'}|batch(4, 'fill')|first|keys|join(',') }}
---DATA--
-return []
---EXPECT--
-foo,key
-foo,key,0,1
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_more_elements.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_more_elements.test
deleted file mode 100644
index 90f4de6859d8d2976e47c42eb616bb4afe737de3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_more_elements.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3, 'fill') %}
-  <div class=row>
-  {% for key, column in row %}
-    <div class={{ key }}>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', '123' => 'e']]
---EXPECT--
-<div class=row>
-      <div class=a>a</div>
-      <div class=b>b</div>
-      <div class=c>c</div>
-    </div>
-  <div class=row>
-      <div class=d>d</div>
-      <div class=123>e</div>
-      <div class=124>fill</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_zero_elements.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_zero_elements.test
deleted file mode 100644
index bc303da8ab6082be4fcf0606bd9dc66266691b5d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_zero_elements.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"batch" filter with zero elements
---TEMPLATE--
-{{ []|batch(3)|length }}
-{{ []|batch(3, 'fill')|length }}
---DATA--
-return []
---EXPECT--
-0
-0
diff --git a/vendor/twig/twig/tests/Fixtures/filters/convert_encoding.test b/vendor/twig/twig/tests/Fixtures/filters/convert_encoding.test
deleted file mode 100644
index db8acedef5ed72273c49f2c01ef38e9a18bbec1c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/convert_encoding.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"convert_encoding" filter
---CONDITION--
-function_exists('iconv') || function_exists('mb_convert_encoding')
---TEMPLATE--
-{{ "愛していますか?"|convert_encoding('ISO-2022-JP', 'UTF-8')|convert_encoding('UTF-8', 'ISO-2022-JP') }}
---DATA--
-return []
---EXPECT--
-愛していますか?
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date.test b/vendor/twig/twig/tests/Fixtures/filters/date.test
deleted file mode 100644
index 16816aa994806eae8b62969055af433b51b1002b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date.test
+++ /dev/null
@@ -1,90 +0,0 @@
---TEST--
-"date" filter
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('d/m/Y') }}
-{{ date1|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }}
-{{ date1|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }}
-{{ date1|date('d/m/Y H:i:s P', 'America/Chicago') }}
-{{ date1|date('e') }}
-{{ date1|date('d/m/Y H:i:s') }}
-
-{{ date2|date }}
-{{ date2|date('d/m/Y') }}
-{{ date2|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }}
-{{ date2|date('d/m/Y H:i:s', timezone1) }}
-{{ date2|date('d/m/Y H:i:s') }}
-
-{{ date3|date }}
-{{ date3|date('d/m/Y') }}
-
-{{ date4|date }}
-{{ date4|date('d/m/Y') }}
-
-{{ date5|date }}
-{{ date5|date('d/m/Y') }}
-
-{{ date6|date('d/m/Y H:i:s P', 'Europe/Paris') }}
-{{ date6|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }}
-{{ date6|date('d/m/Y H:i:s P', false) }}
-{{ date6|date('e', 'Europe/Paris') }}
-{{ date6|date('e', false) }}
-
-{{ date7|date }}
-{{ date7|date(timezone='Europe/Paris') }}
-{{ date7|date(timezone='Asia/Hong_Kong') }}
-{{ date7|date(timezone=false) }}
-{{ date7|date(timezone='Indian/Mauritius') }}
-
-{{ '2010-01-28 15:00:00'|date(timezone="Europe/Paris") }}
-{{ '2010-01-28 15:00:00'|date(timezone="Asia/Hong_Kong") }}
---DATA--
-date_default_timezone_set('Europe/Paris');
-return [
-    'date1' => mktime(13, 45, 0, 10, 4, 2010),
-    'date2' => new \DateTime('2010-10-04 13:45'),
-    'date3' => '2010-10-04 13:45',
-    'date4' => 1286199900, // \DateTime::createFromFormat('Y-m-d H:i', '2010-10-04 13:45', new \DateTimeZone('UTC'))->getTimestamp() -- A unixtimestamp is always GMT
-    'date5' => -189291360, // \DateTime::createFromFormat('Y-m-d H:i', '1964-01-02 03:04', new \DateTimeZone('UTC'))->getTimestamp(),
-    'date6' => new \DateTime('2010-10-04 13:45', new \DateTimeZone('America/New_York')),
-    'date7' => '2010-01-28T15:00:00+04:00',
-    'timezone1' => new \DateTimeZone('America/New_York'),
-]
---EXPECT--
-October 4, 2010 13:45
-04/10/2010
-04/10/2010 19:45:00
-04/10/2010 19:45:00 +08:00
-04/10/2010 06:45:00 -05:00
-Europe/Paris
-04/10/2010 13:45:00
-
-October 4, 2010 13:45
-04/10/2010
-04/10/2010 19:45:00
-04/10/2010 07:45:00
-04/10/2010 13:45:00
-
-October 4, 2010 13:45
-04/10/2010
-
-October 4, 2010 15:45
-04/10/2010
-
-January 2, 1964 04:04
-02/01/1964
-
-04/10/2010 19:45:00 +02:00
-05/10/2010 01:45:00 +08:00
-04/10/2010 13:45:00 -04:00
-Europe/Paris
-America/New_York
-
-January 28, 2010 12:00
-January 28, 2010 12:00
-January 28, 2010 19:00
-January 28, 2010 15:00
-January 28, 2010 15:00
-
-January 28, 2010 15:00
-January 28, 2010 22:00
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_default_format.test b/vendor/twig/twig/tests/Fixtures/filters/date_default_format.test
deleted file mode 100644
index c6e81302df657a86c81cdcc082c061fe854ca4d2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_default_format.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"date" filter
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('d/m/Y') }}
---DATA--
-date_default_timezone_set('UTC');
-$twig->getExtension('\Twig\Extension\CoreExtension')->setDateFormat('Y-m-d', '%d days %h hours');
-return [
-    'date1' => mktime(13, 45, 0, 10, 4, 2010),
-]
---EXPECT--
-2010-10-04
-04/10/2010
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_default_format_interval.test b/vendor/twig/twig/tests/Fixtures/filters/date_default_format_interval.test
deleted file mode 100644
index a72fb81d629669e2234f144a0d8137b964b36912..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_default_format_interval.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"date" filter (interval support as of PHP 5.3)
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-{{ date2|date }}
-{{ date2|date('%d days') }}
---DATA--
-date_default_timezone_set('UTC');
-$twig->getExtension('\Twig\Extension\CoreExtension')->setDateFormat('Y-m-d', '%d days %h hours');
-return [
-    'date2' => new \DateInterval('P2D'),
-]
---EXPECT--
-2 days 0 hours
-2 days
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_immutable.test b/vendor/twig/twig/tests/Fixtures/filters/date_immutable.test
deleted file mode 100644
index 2414db5015b39b268f14fba7f06ce27d7e0bc367..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_immutable.test
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-"date" filter
---CONDITION--
-version_compare(phpversion(), '5.5.0', '>=')
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('d/m/Y') }}
-{{ date1|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }}
-{{ date1|date('d/m/Y H:i:s', timezone1) }}
-{{ date1|date('d/m/Y H:i:s') }}
-{{ date1|date_modify('+1 hour')|date('d/m/Y H:i:s') }}
-
-{{ date2|date('d/m/Y H:i:s P', 'Europe/Paris') }}
-{{ date2|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }}
-{{ date2|date('d/m/Y H:i:s P', false) }}
-{{ date2|date('e', 'Europe/Paris') }}
-{{ date2|date('e', false) }}
---DATA--
-date_default_timezone_set('Europe/Paris');
-return [
-    'date1' => new \DateTimeImmutable('2010-10-04 13:45'),
-    'date2' => new \DateTimeImmutable('2010-10-04 13:45', new \DateTimeZone('America/New_York')),
-    'timezone1' => new \DateTimeZone('America/New_York'),
-]
---EXPECT--
-October 4, 2010 13:45
-04/10/2010
-04/10/2010 19:45:00
-04/10/2010 07:45:00
-04/10/2010 13:45:00
-04/10/2010 14:45:00
-
-04/10/2010 19:45:00 +02:00
-05/10/2010 01:45:00 +08:00
-04/10/2010 13:45:00 -04:00
-Europe/Paris
-America/New_York
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_interval.test b/vendor/twig/twig/tests/Fixtures/filters/date_interval.test
deleted file mode 100644
index c3333f565bf79ce56966a719d77a14d57ac306ac..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_interval.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"date" filter (interval support as of PHP 5.3)
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('%d days %h hours') }}
-{{ date1|date('%d days %h hours', timezone1) }}
---DATA--
-date_default_timezone_set('UTC');
-return [
-    'date1' => new \DateInterval('P2D'),
-    // This should have no effect on \DateInterval formatting
-    'timezone1' => new \DateTimeZone('America/New_York'),
-]
---EXPECT--
-2 days
-2 days 0 hours
-2 days 0 hours
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_modify.test b/vendor/twig/twig/tests/Fixtures/filters/date_modify.test
deleted file mode 100644
index d7f8fdf42a1d5a913a1f3ab354d304d89f8e58f8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_modify.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"date_modify" filter
---TEMPLATE--
-{{ date1|date_modify('-1day')|date('Y-m-d H:i:s') }}
-{{ date2|date_modify('-1day')|date('Y-m-d H:i:s') }}
---DATA--
-date_default_timezone_set('UTC');
-return [
-    'date1' => '2010-10-04 13:45',
-    'date2' => new \DateTime('2010-10-04 13:45'),
-]
---EXPECT--
-2010-10-03 13:45:00
-2010-10-03 13:45:00
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_namedargs.test b/vendor/twig/twig/tests/Fixtures/filters/date_namedargs.test
deleted file mode 100644
index 2d1aa134496c3eab54315588205b53862bf84c18..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_namedargs.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"date" filter
---TEMPLATE--
-{{ date|date(format='d/m/Y H:i:s P', timezone='America/Chicago') }}
-{{ date|date(timezone='America/Chicago', format='d/m/Y H:i:s P') }}
-{{ date|date('d/m/Y H:i:s P', timezone='America/Chicago') }}
---DATA--
-date_default_timezone_set('UTC');
-return ['date' => mktime(13, 45, 0, 10, 4, 2010)]
---EXPECT--
-04/10/2010 08:45:00 -05:00
-04/10/2010 08:45:00 -05:00
-04/10/2010 08:45:00 -05:00
diff --git a/vendor/twig/twig/tests/Fixtures/filters/default.test b/vendor/twig/twig/tests/Fixtures/filters/default.test
deleted file mode 100644
index b01a62d2fb3a64ccfdf8de2272b08364736df30d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/default.test
+++ /dev/null
@@ -1,150 +0,0 @@
---TEST--
-"default" filter
---TEMPLATE--
-Variable:
-{{ definedVar                  |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ zeroVar                     |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ emptyVar                    |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nullVar                     |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ undefinedVar                |default('default') is same as('default') ? 'ok' : 'ko' }}
-Array access:
-{{ nested.definedVar           |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested['definedVar']        |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested.zeroVar              |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested.emptyVar             |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested.nullVar              |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested.undefinedVar         |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested['undefinedVar']      |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ undefinedVar.foo            |default('default') is same as('default') ? 'ok' : 'ko' }}
-Plain values:
-{{ 'defined'                   |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ 0                           |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ ''                          |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ null                        |default('default') is same as('default') ? 'ok' : 'ko' }}
-Precedence:
-{{ 'o' ~ nullVar               |default('k') }}
-{{ 'o' ~ nested.nullVar        |default('k') }}
-Object methods:
-{{ object.foo                  |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.undefinedMethod      |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ object.getFoo()             |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.getFoo('a')          |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.undefinedMethod()    |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ object.undefinedMethod('a') |default('default') is same as('default') ? 'ok' : 'ko' }}
-Deep nested:
-{{ nested.undefinedVar.foo.bar |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested.definedArray.0       |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested['definedArray'][0]   |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.self.foo             |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.self.undefinedMethod |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ object.undefinedMethod.self |default('default') is same as('default') ? 'ok' : 'ko' }}
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'emptyVar'   => '',
-    'nullVar'    => null,
-    'nested'     => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'emptyVar'     => '',
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-Variable:
-ok
-ok
-ok
-ok
-ok
-Array access:
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-Plain values:
-ok
-ok
-ok
-ok
-Precedence:
-ok
-ok
-Object methods:
-ok
-ok
-ok
-ok
-ok
-ok
-Deep nested:
-ok
-ok
-ok
-ok
-ok
-ok
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'emptyVar'   => '',
-    'nullVar'    => null,
-    'nested'     => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'emptyVar'     => '',
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---CONFIG--
-return ['strict_variables' => true]
---EXPECT--
-Variable:
-ok
-ok
-ok
-ok
-ok
-Array access:
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-Plain values:
-ok
-ok
-ok
-ok
-Precedence:
-ok
-ok
-Object methods:
-ok
-ok
-ok
-ok
-ok
-ok
-Deep nested:
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/filters/dynamic_filter.test b/vendor/twig/twig/tests/Fixtures/filters/dynamic_filter.test
deleted file mode 100644
index 27dc8784c6b64aa8f8472d84aa0205d680be11bb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/dynamic_filter.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-dynamic filter
---TEMPLATE--
-{{ 'bar'|foo_path }}
-{{ 'bar'|a_foo_b_bar }}
---DATA--
-return []
---EXPECT--
-foo/bar
-a/b/bar
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape.test b/vendor/twig/twig/tests/Fixtures/filters/escape.test
deleted file mode 100644
index 131f5b4e72b76badd09fcd26786b467b433b49b6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{{ "foo <br />"|e }}
---DATA--
-return []
---EXPECT--
-foo &lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape_html_attr.test b/vendor/twig/twig/tests/Fixtures/filters/escape_html_attr.test
deleted file mode 100644
index 10e3275542102d8a0d8e5b60b1dc88619bf881b4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape_html_attr.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter does not escape with the html strategy when using the html_attr strategy
---TEMPLATE--
-{{ '<br />'|escape('html_attr') }}
---DATA--
-return []
---EXPECT--
-&lt;br&#x20;&#x2F;&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape_javascript.test b/vendor/twig/twig/tests/Fixtures/filters/escape_javascript.test
deleted file mode 100644
index 4c2fb7a3668257beba238933252c17cc8831abab..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape_javascript.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{{ "é ♜ 𝌆"|e('js') }}
---DATA--
-return []
---EXPECT--
-\u00E9\u0020\u265C\u0020\uD834\uDF06
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape_non_supported_charset.test b/vendor/twig/twig/tests/Fixtures/filters/escape_non_supported_charset.test
deleted file mode 100644
index 93f34297b09bb5a1b2f1cb5334c75ee0148db0c0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape_non_supported_charset.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{{ "愛していますか? <br />"|e }}
---DATA--
-return []
---EXPECT--
-愛していますか? &lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/filters/filter.test b/vendor/twig/twig/tests/Fixtures/filters/filter.test
deleted file mode 100644
index fe44d80ed7e52e4f19bbab6b951333225d956cbb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/filter.test
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-"filter" filter
---TEMPLATE--
-{% set offset = 3 %}
-
-{% for k, v in [1, 5, 3, 4, 5]|filter((v) => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in {a: 1, b: 2, c: 5, d: 8}|filter(v => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in [1, 5, 3, 4, 5]|filter(v => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in it|filter((v) => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in ita|filter(v => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
---DATA--
-return [
-    'it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
-    'ita' => new Twig\Tests\IteratorAggregateStub(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
-]
---EXPECT--
-1 = 5
-3 = 4
-4 = 5
-
-c = 5
-d = 8
-
-1 = 5
-3 = 4
-4 = 5
-
-c = 5
-d = 8
-
-c = 5
-d = 8
diff --git a/vendor/twig/twig/tests/Fixtures/filters/filter_php_55.test b/vendor/twig/twig/tests/Fixtures/filters/filter_php_55.test
deleted file mode 100644
index 6684139a1a7bc8e136b0f90889354166d37681e0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/filter_php_55.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"filter" filter (PHP 5.5 required)
---CONDITION--
-version_compare(phpversion(), '5.5.0', '>=')
---TEMPLATE--
-{% for k, v in xml|filter(x => true) %}
-{{ k }}/{{ v }}
-{% endfor %}
-
-{# we can iterate more than once #}
-{% for k, v in xml|filter(x => true) %}
-{{ k }}/{{ v }}
-{% endfor %}
---DATA--
-return ['xml' => new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><doc><elem>foo</elem><elem>bar</elem><elem>baz</elem></doc>')]
---EXPECT--
-elem/foo
-elem/bar
-elem/baz
-
-elem/foo
-elem/bar
-elem/baz
diff --git a/vendor/twig/twig/tests/Fixtures/filters/filter_php_56.test b/vendor/twig/twig/tests/Fixtures/filters/filter_php_56.test
deleted file mode 100644
index 0daf4083ad4cc2ce158f1d66a30ae33a72d80d7a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/filter_php_56.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-"filter" filter (PHP 5.6 required)
---CONDITION--
-version_compare(phpversion(), '5.6.0', '>=')
---TEMPLATE--
-{% set offset = 3 %}
-
-{% for k, v in {a: 1, b: 2, c: 5, d: 8}|filter((v, k) => (v > offset) and (k != "d")) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in it|filter((v, k) => (v > offset) and (k != "d")) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{# we can iterate more than once #}
-{% for k, v in it|filter((v, k) => (v > offset) and (k != "d")) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
---DATA--
-return ['it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8])]
---EXPECT--
-c = 5
-
-c = 5
-
-c = 5
diff --git a/vendor/twig/twig/tests/Fixtures/filters/first.test b/vendor/twig/twig/tests/Fixtures/filters/first.test
deleted file mode 100644
index b19f2eed7bdeaa7e9661fef1b4284ce399bc9b55..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/first.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"first" filter
---TEMPLATE--
-{{ [1, 2, 3, 4]|first }}
-{{ {a: 1, b: 2, c: 3, d: 4}|first }}
-{{ '1234'|first }}
-{{ arr|first }}
-{{ 'Ä€é'|first }}
-{{ ''|first }}
---DATA--
-return ['arr' => new \ArrayObject([1, 2, 3, 4])]
---EXPECT--
-1
-1
-1
-1
-Ä
diff --git a/vendor/twig/twig/tests/Fixtures/filters/force_escape.test b/vendor/twig/twig/tests/Fixtures/filters/force_escape.test
deleted file mode 100644
index 7efbe3200a673f3ba9ccfd11c318b5ae1b654df1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/force_escape.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{% set foo %}
-    foo<br />
-{% endset %}
-
-{{ foo|e('html') -}}
-{{ foo|e('js') }}
-{% autoescape true %}
-    {{ foo }}
-{% endautoescape %}
---DATA--
-return []
---EXPECT--
-    foo&lt;br /&gt;
-\u0020\u0020\u0020\u0020foo\u003Cbr\u0020\/\u003E\n
-        foo<br />
diff --git a/vendor/twig/twig/tests/Fixtures/filters/format.test b/vendor/twig/twig/tests/Fixtures/filters/format.test
deleted file mode 100644
index efaf8317a3c2f8341b620d720f5631452ba2119d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/format.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"format" filter
---TEMPLATE--
-{{ string|format(foo, 3) }}
---DATA--
-return ['string' => '%s/%d', 'foo' => 'bar']
---EXPECT--
-bar/3
diff --git a/vendor/twig/twig/tests/Fixtures/filters/join.test b/vendor/twig/twig/tests/Fixtures/filters/join.test
deleted file mode 100644
index 3127ea1a7123170e39ab7c5f7ca46a89062f7d12..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/join.test
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-"join" filter
---TEMPLATE--
-{{ ["foo", "bar"]|join(', ') }}
-{{ foo|join(', ') }}
-{{ bar|join(', ') }}
-
-{{ ["foo", "bar"]|join(', ', ' and ') }}
-{{ foo|join(', ', ' and ') }}
-{{ bar|join(', ', ' and ') }}
-{{ ["one", "two", "three"]|join(', ', ' and ') }}
-{{ ["a", "b", "c"]|join('','-') }}
-{{ ["a", "b", "c"]|join('-','-') }}
-{{ ["a", "b", "c"]|join('-','') }}
-{{ ["hello"]|join('|','-') }}
-
-{{ {"a": "w", "b": "x", "c": "y", "d": "z"}|join }}
-{{ {"a": "w", "b": "x", "c": "y", "d": "z"}|join(',') }}
-{{ {"a": "w", "b": "x", "c": "y", "d": "z"}|join(',','-') }}
---DATA--
-return ['foo' => new Twig\Tests\TwigTestFoo(), 'bar' => new \ArrayObject([3, 4])]
---EXPECT--
-foo, bar
-1, 2
-3, 4
-
-foo and bar
-1 and 2
-3 and 4
-one, two and three
-ab-c
-a-b-c
-a-bc
-hello
-
-wxyz
-w,x,y,z
-w,x,y-z
diff --git a/vendor/twig/twig/tests/Fixtures/filters/json_encode.test b/vendor/twig/twig/tests/Fixtures/filters/json_encode.test
deleted file mode 100644
index 902f90b337743bbbb0610b6a0b07cad5c058c73b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/json_encode.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"json_encode" filter
---TEMPLATE--
-{{ "foo"|json_encode|raw }}
-{{ foo|json_encode|raw }}
-{{ [foo, "foo"]|json_encode|raw }}
---DATA--
-return ['foo' => new \Twig\Markup('foo', 'UTF-8')]
---EXPECT--
-"foo"
-"foo"
-["foo","foo"]
diff --git a/vendor/twig/twig/tests/Fixtures/filters/last.test b/vendor/twig/twig/tests/Fixtures/filters/last.test
deleted file mode 100644
index f71896c77f6434a9e0a2b689aaa3e6af143b96b5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/last.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"last" filter
---TEMPLATE--
-{{ [1, 2, 3, 4]|last }}
-{{ {a: 1, b: 2, c: 3, d: 4}|last }}
-{{ '1234'|last }}
-{{ arr|last }}
-{{ 'Ä€é'|last }}
-{{ ''|last }}
---DATA--
-return ['arr' => new \ArrayObject([1, 2, 3, 4])]
---EXPECT--
-4
-4
-4
-4
-é
diff --git a/vendor/twig/twig/tests/Fixtures/filters/length.test b/vendor/twig/twig/tests/Fixtures/filters/length.test
deleted file mode 100644
index eb3f02334f37c54ea0e0410535fa5c001a37625e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/length.test
+++ /dev/null
@@ -1,40 +0,0 @@
---TEST--
-"length" filter
---TEMPLATE--
-{{ array|length }}
-{{ string|length }}
-{{ number|length }}
-{{ to_string_able|length }}
-{{ countable|length }}
-{{ iterator_aggregate|length }}
-{{ null|length }}
-{{ magic|length }}
-{{ non_countable|length }}
-{{ simple_xml_element|length }}
-{{ iterator|length }}
---DATA--
-return [
-    'array' => [1, 4],
-    'string' => 'foo',
-    'number' => 1000,
-    'to_string_able' => new Twig\Tests\ToStringStub('foobar'),
-    'countable' => new Twig\Tests\CountableStub(42),       /* also asserts we do *not* call __toString() */
-    'iterator_aggregate' => new Twig\Tests\IteratorAggregateStub(['a', 'b', 'c']),   /* also asserts we do *not* call __toString() */
-    'null'          => null,
-    'magic'         => new Twig\Tests\MagicCallStub(),     /* used to assert we do *not* call __call */
-    'non_countable' => new \StdClass(),
-    'simple_xml_element' => new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><doc><elem/><elem/></doc>'),
-    'iterator' => new Twig\Tests\SimpleIteratorForTesting()
-]
---EXPECT--
-2
-3
-4
-6
-42
-3
-0
-1
-1
-2
-7
diff --git a/vendor/twig/twig/tests/Fixtures/filters/length_utf8.test b/vendor/twig/twig/tests/Fixtures/filters/length_utf8.test
deleted file mode 100644
index b1e9681a5d556e528593d513356debe044a62645..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/length_utf8.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"length" filter
---CONDITION--
-function_exists('mb_get_info')
---TEMPLATE--
-{{ string|length }}
-{{ markup|length }}
---DATA--
-return ['string' => 'été', 'markup' => new \Twig\Markup('foo', 'UTF-8')]
---EXPECT--
-3
-3
diff --git a/vendor/twig/twig/tests/Fixtures/filters/map.test b/vendor/twig/twig/tests/Fixtures/filters/map.test
deleted file mode 100644
index 5552f816683d5465d27b722c52e107bec5c98447..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/map.test
+++ /dev/null
@@ -1,41 +0,0 @@
---TEST--
-"map" filter
---TEMPLATE--
-{% set offset = 3 %}
-
-{% for k, v in [1, 2]|map((item) => item + 2 ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in {a: 1, b: 2}|map((item) => item ~ "*" ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in {a: 1, b: 2}|map((item, k) => item ~ "*" ~ k ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in [1, 2]|map(item => item + 2 ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in it|map(item => item + 2 ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
---DATA--
-return ['it' => new \ArrayIterator([1, 2])]
---EXPECT--
-0 = 3
-1 = 4
-
-a = 1*
-b = 2*
-
-a = 1*a
-b = 2*b
-
-0 = 3
-1 = 4
-
-0 = 3
-1 = 4
diff --git a/vendor/twig/twig/tests/Fixtures/filters/merge.test b/vendor/twig/twig/tests/Fixtures/filters/merge.test
deleted file mode 100644
index 8877501d4cc1227ff0dded4afb5680ca5c0df403..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/merge.test
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-"merge" filter
---TEMPLATE--
-{{ items|merge({'bar': 'foo'})|join }}
-{{ items|merge({'bar': 'foo'})|keys|join }}
-{{ {'bar': 'foo'}|merge(items)|join }}
-{{ {'bar': 'foo'}|merge(items)|keys|join }}
-{{ numerics|merge([4, 5, 6])|join }}
-{{ traversable.a|merge(traversable.b)|join }}
---DATA--
-return [
-    'items' => ['foo' => 'bar'],
-    'numerics' => [1, 2, 3],
-    'traversable' => [
-        'a' => new \ArrayObject([0 => 1, 1 => 2, 2 => 3]),
-        'b' => new \ArrayObject(['a' => 'b'])
-    ]
-]
---EXPECT--
-barfoo
-foobar
-foobar
-barfoo
-123456
-123b
diff --git a/vendor/twig/twig/tests/Fixtures/filters/nl2br.test b/vendor/twig/twig/tests/Fixtures/filters/nl2br.test
deleted file mode 100644
index 524ec45f9630367a5c5f8b6a5dcd044d8251a798..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/nl2br.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"nl2br" filter
---TEMPLATE--
-{{ "I like Twig.\nYou will like it too.\n\nEverybody like it!"|nl2br }}
-{{ text|nl2br }}
---DATA--
-return ['text' => "If you have some <strong>HTML</strong>\nit will be escaped."]
---EXPECT--
-I like Twig.<br />
-You will like it too.<br />
-<br />
-Everybody like it!
-If you have some &lt;strong&gt;HTML&lt;/strong&gt;<br />
-it will be escaped.
diff --git a/vendor/twig/twig/tests/Fixtures/filters/number_format.test b/vendor/twig/twig/tests/Fixtures/filters/number_format.test
deleted file mode 100644
index 7f1e2e16a288e52db5c47e0270fd0ed370a6053a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/number_format.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"number_format" filter
---TEMPLATE--
-{{ 20|number_format }}
-{{ 20.25|number_format }}
-{{ 20.25|number_format(2) }}
-{{ 20.25|number_format(2, ',') }}
-{{ 1020.25|number_format(2, ',') }}
-{{ 1020.25|number_format(2, ',', '.') }}
---DATA--
-return []
---EXPECT--
-20
-20
-20.25
-20,25
-1,020,25
-1.020,25
diff --git a/vendor/twig/twig/tests/Fixtures/filters/number_format_default.test b/vendor/twig/twig/tests/Fixtures/filters/number_format_default.test
deleted file mode 100644
index beedd901a090379d7657b5757d07d1b6a911e92d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/number_format_default.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-"number_format" filter with defaults.
---TEMPLATE--
-{{ 20|number_format }}
-{{ 20.25|number_format }}
-{{ 20.25|number_format(1) }}
-{{ 20.25|number_format(2, ',') }}
-{{ 1020.25|number_format }}
-{{ 1020.25|number_format(2, ',') }}
-{{ 1020.25|number_format(2, ',', '.') }}
---DATA--
-$twig->getExtension('\Twig\Extension\CoreExtension')->setNumberFormat(2, '!', '=');
-return []
---EXPECT--
-20!00
-20!25
-20!3
-20,25
-1=020!25
-1=020,25
-1.020,25
diff --git a/vendor/twig/twig/tests/Fixtures/filters/reduce.test b/vendor/twig/twig/tests/Fixtures/filters/reduce.test
deleted file mode 100644
index 73cad4168671f7cf99066f9c1e8305b353f74b00..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/reduce.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"reduce" filter
---TEMPLATE--
-{% set offset = 3 %}
-
-{{ [1, -1, 4]|reduce((carry, item) => carry + item + offset, 10) }}
-
-{{ it|reduce((carry, item) => carry + item + offset, 10) }}
---DATA--
-return ['it' => new \ArrayIterator([1, -1, 4])]
---EXPECT--
-23
-
-23
diff --git a/vendor/twig/twig/tests/Fixtures/filters/replace.test b/vendor/twig/twig/tests/Fixtures/filters/replace.test
deleted file mode 100644
index 1b9670a17b38e6480f8e7902990383949de353af..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/replace.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"replace" filter
---TEMPLATE--
-{{ "I liké %this% and %that%."|replace({'%this%': "foo", '%that%': "bar"}) }}
-{{ 'I like single replace operation only %that%'|replace({'%that%' : '%that%1'}) }}
-{{ 'I like %this% and %that%.'|replace(traversable) }}
---DATA--
-return ['traversable' => new \ArrayObject(['%this%' => 'foo', '%that%' => 'bar'])]
---EXPECT--
-I liké foo and bar.
-I like single replace operation only %that%1
-I like foo and bar.
diff --git a/vendor/twig/twig/tests/Fixtures/filters/replace_invalid_arg.test b/vendor/twig/twig/tests/Fixtures/filters/replace_invalid_arg.test
deleted file mode 100644
index ba6fea4125a2eb3c18b6cce12b2e8b5f801b1760..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/replace_invalid_arg.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Exception for invalid argument type in replace call
---TEMPLATE--
-{{ 'test %foo%'|replace(stdClass) }}
---DATA--
-return ['stdClass' => new \stdClass()]
---EXCEPTION--
-Twig\Error\RuntimeError: The "replace" filter expects an array or "Traversable" as replace values, got "stdClass" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/filters/reverse.test b/vendor/twig/twig/tests/Fixtures/filters/reverse.test
deleted file mode 100644
index 904e5839b02971e6c08e1c4a78b34e13e78513d5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/reverse.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"reverse" filter
---TEMPLATE--
-{{ [1, 2, 3, 4]|reverse|join('') }}
-{{ '1234évènement'|reverse }}
-{{ arr|reverse|join('') }}
-{{ {'a': 'c', 'b': 'a'}|reverse()|join(',') }}
-{{ {'a': 'c', 'b': 'a'}|reverse(preserveKeys=true)|join(glue=',') }}
-{{ {'a': 'c', 'b': 'a'}|reverse(preserve_keys=true)|join(glue=',') }}
---DATA--
-return ['arr' => new \ArrayObject([1, 2, 3, 4])]
---EXPECT--
-4321
-tnemenèvé4321
-4321
-a,c
-a,c
-a,c
diff --git a/vendor/twig/twig/tests/Fixtures/filters/round.test b/vendor/twig/twig/tests/Fixtures/filters/round.test
deleted file mode 100644
index 709237543a4c62e358ac92eff1e5c89b4353d5b7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/round.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"round" filter
---TEMPLATE--
-{{ 2.7|round }}
-{{ 2.1|round }}
-{{ 2.1234|round(3, 'floor') }}
-{{ 2.1|round(0, 'ceil') }}
-
-{{ 21.3|round(-1)}}
-{{ 21.3|round(-1, 'ceil')}}
-{{ 21.3|round(-1, 'floor')}}
---DATA--
-return []
---EXPECT--
-3
-2
-2.123
-3
-
-20
-30
-20
diff --git a/vendor/twig/twig/tests/Fixtures/filters/slice.test b/vendor/twig/twig/tests/Fixtures/filters/slice.test
deleted file mode 100644
index fc975d7bb186d7f9079f46f7ae7b844b9cc07af2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/slice.test
+++ /dev/null
@@ -1,54 +0,0 @@
---TEST--
-"slice" filter
---TEMPLATE--
-{{ [1, 2, 3, 4][1:2]|join('') }}
-{{ {a: 1, b: 2, c: 3, d: 4}[1:2]|join('') }}
-{{ [1, 2, 3, 4][start:length]|join('') }}
-{{ [1, 2, 3, 4]|slice(1, 2)|join('') }}
-{{ [1, 2, 3, 4]|slice(1, 2)|keys|join('') }}
-{{ [1, 2, 3, 4]|slice(1, 2, true)|keys|join('') }}
-{{ {a: 1, b: 2, c: 3, d: 4}|slice(1, 2)|join('') }}
-{{ {a: 1, b: 2, c: 3, d: 4}|slice(1, 2)|keys|join('') }}
-{{ '1234'|slice(1, 2) }}
-{{ '1234'[1:2] }}
-{{ arr|slice(1, 2)|join('') }}
-{{ arr[1:2]|join('') }}
-{{ arr[4:1]|join('') }}
-{{ arr[3:2]|join('') }}
-
-{{ [1, 2, 3, 4]|slice(1)|join('') }}
-{{ [1, 2, 3, 4][1:]|join('') }}
-{{ '1234'|slice(1) }}
-{{ '1234'[1:] }}
-{{ '1234'[:1] }}
-
-{{ arr|slice(3)|join('') }}
-{{ arr[2:]|join('') }}
-{{ xml|slice(1)|join('')}}
---DATA--
-return ['start' => 1, 'length' => 2, 'arr' => new \ArrayObject([1, 2, 3, 4]), 'xml' => new \SimpleXMLElement('<items><item>1</item><item>2</item></items>')]
---EXPECT--
-23
-23
-23
-23
-01
-12
-23
-bc
-23
-23
-23
-23
-
-4
-
-234
-234
-234
-234
-1
-
-4
-34
-2
diff --git a/vendor/twig/twig/tests/Fixtures/filters/sort.test b/vendor/twig/twig/tests/Fixtures/filters/sort.test
deleted file mode 100644
index c3b2c70dd4ae670e69954eb54ff76fcf0b590ef1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/sort.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"sort" filter
---TEMPLATE--
-{{ array1|sort|join }}
-{{ array2|sort|join }}
-{{ traversable|sort|join }}
---DATA--
-return ['array1' => [4, 1], 'array2' => ['foo', 'bar'], 'traversable' => new \ArrayObject([0 => 3, 1 => 2, 2 => 1])]
---EXPECT--
-14
-barfoo
-123
diff --git a/vendor/twig/twig/tests/Fixtures/filters/spaceless.test b/vendor/twig/twig/tests/Fixtures/filters/spaceless.test
deleted file mode 100644
index eadc1d4962a3e87c517b8b42dce03736e71e9712..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/spaceless.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"spaceless" filter
---TEMPLATE--
-{{ "    <div>   <div>   foo   </div>   </div>"|spaceless }}
---DATA--
-return []
---EXPECT--
-<div><div>   foo   </div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/special_chars.test b/vendor/twig/twig/tests/Fixtures/filters/special_chars.test
deleted file mode 100644
index 9869ec91c345b3432516527c44a239018094ec3b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/special_chars.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"§" custom filter
---TEMPLATE--
-{{ 'foo'|§ }}
---DATA--
-return []
---EXPECT--
-§foo§
diff --git a/vendor/twig/twig/tests/Fixtures/filters/split.test b/vendor/twig/twig/tests/Fixtures/filters/split.test
deleted file mode 100644
index 2bd46afa36dc94535f8b1cb5f8f97f1588b4b738..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/split.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"split" filter
---TEMPLATE--
-{{ "one,two,three,four,five"|split(',')|join('-') }}
-{{ foo|split(',')|join('-') }}
-{{ foo|split(',', 3)|join('-') }}
-{{ baz|split('')|join('-') }}
-{{ baz|split('', 1)|join('-') }}
-{{ baz|split('', 2)|join('-') }}
-{{ foo|split(',', -2)|join('-') }}
-{{ "hello0world"|split('0')|join('-') }}
---DATA--
-return ['foo' => "one,two,three,four,five", 'baz' => '12345',]
---EXPECT--
-one-two-three-four-five
-one-two-three-four-five
-one-two-three,four,five
-1-2-3-4-5
-1-2-3-4-5
-12-34-5
-one-two-three
-hello-world
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/filters/split_utf8.test b/vendor/twig/twig/tests/Fixtures/filters/split_utf8.test
deleted file mode 100644
index bf52e6df76173ea13e48c87f6eea45b5dac10e7d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/split_utf8.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"split" filter
---CONDITION--
-function_exists('mb_get_info')
---TEMPLATE--
-{{ "é"|split('', 10)|join('-') }}
-{{ foo|split(',')|join('-') }}
-{{ foo|split(',', 1)|join('-') }}
-{{ foo|split(',', 2)|join('-') }}
-{{ foo|split(',', 3)|join('-') }}
-{{ baz|split('')|join('-') }}
-{{ baz|split('', 1)|join('-') }}
-{{ baz|split('', 2)|join('-') }}
---DATA--
-return ['foo' => 'Ä,é,Äほ', 'baz' => 'éÄßごa',]
---EXPECT--
-é
-Ä-é-Äほ
-Ä,é,Äほ
-Ä-é,Äほ
-Ä-é-Äほ
-é-Ä-ß-ご-a
-é-Ä-ß-ご-a
-éÄ-ßご-a
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/filters/static_calls.test b/vendor/twig/twig/tests/Fixtures/filters/static_calls.test
deleted file mode 100644
index 1626db0c97298765d39d45006b24c41910ba2e3a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/static_calls.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Filters as static method calls
---TEMPLATE--
-{{ 'foo'|static_call_string }}
-{{ 'foo'|static_call_array }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-*foo*
-*foo*
diff --git a/vendor/twig/twig/tests/Fixtures/filters/trim.test b/vendor/twig/twig/tests/Fixtures/filters/trim.test
deleted file mode 100644
index 432989ff165f06a3cde1dd13acf44f770fdd821b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/trim.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"trim" filter
---TEMPLATE--
-{{ "  I like Twig.  "|trim }}
-{{ text|trim }}
-{{ "  foo/"|trim("/") }}
-{{ "xxxI like Twig.xxx"|trim(character_mask="x", side="left") }}
-{{ "xxxI like Twig.xxx"|trim(side="right", character_mask="x") }}
-{{ "xxxI like Twig.xxx"|trim("x", "right") }}
-{{ "/  foo/"|trim("/", "left") }}
-{{ "/  foo/"|trim(character_mask="/", side="left") }}
-{{ "  do nothing.  "|trim("", "right") }}
---DATA--
-return ['text' => "  If you have some <strong>HTML</strong> it will be escaped.  "]
---EXPECT--
-I like Twig.
-If you have some &lt;strong&gt;HTML&lt;/strong&gt; it will be escaped.
-  foo
-I like Twig.xxx
-xxxI like Twig.
-xxxI like Twig.
-  foo/
-  foo/
-  do nothing.  
diff --git a/vendor/twig/twig/tests/Fixtures/filters/urlencode.test b/vendor/twig/twig/tests/Fixtures/filters/urlencode.test
deleted file mode 100644
index 66a682dd397ce2da5cad04837ab781125b87015d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/urlencode.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"url_encode" filter
---CONDITION--
-defined('PHP_QUERY_RFC3986')
---TEMPLATE--
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode }}
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode|raw }}
-{{ {}|url_encode|default("default") }}
-{{ 'spéßi%le%c0d@dspa ce'|url_encode }}
---DATA--
-return []
---EXPECT--
-foo=bar&amp;number=3&amp;sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&amp;spa%20ce=
-foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=
-default
-sp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce
diff --git a/vendor/twig/twig/tests/Fixtures/filters/urlencode_deprecated.test b/vendor/twig/twig/tests/Fixtures/filters/urlencode_deprecated.test
deleted file mode 100644
index 38d726492aad5b0600e568997e442d9dfe98ad1d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/filters/urlencode_deprecated.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"url_encode" filter for PHP < 5.4
---CONDITION--
-defined('PHP_QUERY_RFC3986')
---TEMPLATE--
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode }}
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode|raw }}
-{{ {}|url_encode|default("default") }}
-{{ 'spéßi%le%c0d@dspa ce'|url_encode }}
---DATA--
-return []
---EXPECT--
-foo=bar&amp;number=3&amp;sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&amp;spa%20ce=
-foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=
-default
-sp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce
diff --git a/vendor/twig/twig/tests/Fixtures/functions/attribute.test b/vendor/twig/twig/tests/Fixtures/functions/attribute.test
deleted file mode 100644
index 4499ad4bdee3d8dd8c3f1c96b5dde9d4c6fa56d2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/attribute.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"attribute" function
---TEMPLATE--
-{{ attribute(obj, method) }}
-{{ attribute(array, item) }}
-{{ attribute(obj, "bar", ["a", "b"]) }}
-{{ attribute(obj, "bar", arguments) }}
-{{ attribute(obj, method) is defined ? 'ok' : 'ko' }}
-{{ attribute(obj, nonmethod) is defined ? 'ok' : 'ko' }}
---DATA--
-return ['obj' => new Twig\Tests\TwigTestFoo(), 'method' => 'foo', 'array' => ['foo' => 'bar'], 'item' => 'foo', 'nonmethod' => 'xxx', 'arguments' => ['a', 'b']]
---EXPECT--
-foo
-bar
-bar_a-b
-bar_a-b
-ok
-ko
diff --git a/vendor/twig/twig/tests/Fixtures/functions/block.test b/vendor/twig/twig/tests/Fixtures/functions/block.test
deleted file mode 100644
index 1a4fd5492f859c8b46b9955c3b2fcf7c941a37b3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/block.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"block" function
---TEMPLATE--
-{% extends 'base.twig' %}
-{% block bar %}BAR{% endblock %}
---TEMPLATE(base.twig)--
-{% block foo %}{{ block('bar') }}{% endblock %}
-{% block bar %}BAR_BASE{% endblock %}
---DATA--
-return []
---EXPECT--
-BARBAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/block_with_template.test b/vendor/twig/twig/tests/Fixtures/functions/block_with_template.test
deleted file mode 100644
index 37cb7a4813fcf0d1ff2870d41730fd300a9bfebe..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/block_with_template.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"block" function with a template argument
---TEMPLATE--
-{{ block('foo', 'included.twig') }}
-{{ block('foo', included_loaded) }}
-{{ block('foo', included_loaded_internal) }}
-{% set output = block('foo', 'included.twig') %}
-{{ output }}
-{% block foo %}NOT FOO{% endblock %}
---TEMPLATE(included.twig)--
-{% block foo %}FOO{% endblock %}
---DATA--
-return [
-    'included_loaded' => $twig->load('included.twig'),
-    'included_loaded_internal' => $twig->load('included.twig'),
-]
---EXPECT--
-FOO
-FOO
-FOO
-FOO
-NOT FOO
diff --git a/vendor/twig/twig/tests/Fixtures/functions/block_without_name.test b/vendor/twig/twig/tests/Fixtures/functions/block_without_name.test
deleted file mode 100644
index 236df945109f46142e602e6fe814d6460df14378..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/block_without_name.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"block" function without arguments
---TEMPLATE--
-{% extends 'base.twig' %}
-{% block bar %}BAR{% endblock %}
---TEMPLATE(base.twig)--
-{% block foo %}{{ block() }}{% endblock %}
-{% block bar %}BAR_BASE{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: The "block" function takes one argument (the block name) in "base.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/constant.test b/vendor/twig/twig/tests/Fixtures/functions/constant.test
deleted file mode 100644
index fd6dd06111667f0391410cbaccb3e6252fb2c8d4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/constant.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"constant" function
---TEMPLATE--
-{{ constant('DATE_W3C') == expect ? 'true' : 'false' }}
-{{ constant('ARRAY_AS_PROPS', object) }}
---DATA--
-return ['expect' => DATE_W3C, 'object' => new \ArrayObject(['hi'])]
---EXPECT--
-true
-2
diff --git a/vendor/twig/twig/tests/Fixtures/functions/cycle.test b/vendor/twig/twig/tests/Fixtures/functions/cycle.test
deleted file mode 100644
index 0ac6dccd3aee48f744065e8bd03e7c65f3c1c092..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/cycle.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"cycle" function
---TEMPLATE--
-{% for i in 0..6 %}
-{{ cycle(array1, i) }}-{{ cycle(array2, i) }}
-{% endfor %}
---DATA--
-return ['array1' => ['odd', 'even'], 'array2' => ['apple', 'orange', 'citrus']]
---EXPECT--
-odd-apple
-even-orange
-odd-citrus
-even-apple
-odd-orange
-even-citrus
-odd-apple
diff --git a/vendor/twig/twig/tests/Fixtures/functions/date.test b/vendor/twig/twig/tests/Fixtures/functions/date.test
deleted file mode 100644
index c879da3cfd8d2ea67af0aa40c1fe0e0ee026670f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/date.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-"date" function
---TEMPLATE--
-{{ date().format('r') == date('now').format('r') ? 'OK' : 'KO' }}
-{{ date(date1) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date2) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date3) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date4) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date5) == date('1964-01-02 03:04') ? 'OK' : 'KO' }}
-{{ date() > date('-1day') ? 'OK' : 'KO' }}
---DATA--
-date_default_timezone_set('UTC');
-return [
-    'date1' => mktime(13, 45, 0, 10, 4, 2010),
-    'date2' => new \DateTime('2010-10-04 13:45'),
-    'date3' => '2010-10-04 13:45',
-    'date4' => 1286199900, // \DateTime::createFromFormat('Y-m-d H:i', '2010-10-04 13:45', new \DateTimeZone('UTC'))->getTimestamp() -- A unixtimestamp is always GMT
-    'date5' => -189291360, // \DateTime::createFromFormat('Y-m-d H:i', '1964-01-02 03:04', new \DateTimeZone('UTC'))->getTimestamp(),
-]
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/functions/date_namedargs.test b/vendor/twig/twig/tests/Fixtures/functions/date_namedargs.test
deleted file mode 100644
index 11f60ee8bf2ee393960132a5d99ea8cfcc9269f0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/date_namedargs.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"date" function
---TEMPLATE--
-{{ date(date, "America/New_York")|date('d/m/Y H:i:s P', false) }}
-{{ date(timezone="America/New_York", date=date)|date('d/m/Y H:i:s P', false) }}
---DATA--
-date_default_timezone_set('UTC');
-return ['date' => mktime(13, 45, 0, 10, 4, 2010)]
---EXPECT--
-04/10/2010 09:45:00 -04:00
-04/10/2010 09:45:00 -04:00
diff --git a/vendor/twig/twig/tests/Fixtures/functions/dump.test b/vendor/twig/twig/tests/Fixtures/functions/dump.test
deleted file mode 100644
index 691a3abea9bdb16de4611222463e628f05e370ab..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/dump.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"dump" function
---CONDITION--
-!extension_loaded('xdebug')
---TEMPLATE--
-{{ dump('foo') }}
-{{ dump('foo', 'bar') }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---CONFIG--
-return ['debug' => true, 'autoescape' => false]
---EXPECT--
-string(3) "foo"
-
-string(3) "foo"
-string(3) "bar"
diff --git a/vendor/twig/twig/tests/Fixtures/functions/dump_array.test b/vendor/twig/twig/tests/Fixtures/functions/dump_array.test
deleted file mode 100644
index 5fd9383cd6ad44683039940a8bd5e7306bc0ccaf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/dump_array.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"dump" function, xdebug is not loaded or xdebug <2.2-dev is loaded
---CONDITION--
-!extension_loaded('xdebug') || (($r = new \ReflectionExtension('xdebug')) && version_compare($r->getVersion(), '2.2-dev', '<'))
---TEMPLATE--
-{{ dump() }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---CONFIG--
-return ['debug' => true, 'autoescape' => false]
---EXPECT--
-array(3) {
-  ["foo"]=>
-  string(3) "foo"
-  ["bar"]=>
-  string(3) "bar"
-  ["global"]=>
-  string(6) "global"
-}
diff --git a/vendor/twig/twig/tests/Fixtures/functions/dynamic_function.test b/vendor/twig/twig/tests/Fixtures/functions/dynamic_function.test
deleted file mode 100644
index c7b3539c4026a1561affacf871637c8ef4fc60cf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/dynamic_function.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-dynamic function
---TEMPLATE--
-{{ foo_path('bar') }}
-{{ a_foo_b_bar('bar') }}
---DATA--
-return []
---EXPECT--
-foo/bar
-a/b/bar
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/assignment.test b/vendor/twig/twig/tests/Fixtures/functions/include/assignment.test
deleted file mode 100644
index c9ce8123feae7288f39daf4c8da69dad62f41a7a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/assignment.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{% set tmp = include("foo.twig") %}
-
-FOO{{ tmp }}BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return []
---EXPECT--
-FOO
-FOOBARBAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/autoescaping.test b/vendor/twig/twig/tests/Fixtures/functions/include/autoescaping.test
deleted file mode 100644
index a3666261f3953aef38c96e9a628c3a57506b5efb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/autoescaping.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" function is safe for auto-escaping
---TEMPLATE--
-{{ include("foo.twig") }}
---TEMPLATE(foo.twig)--
-<p>Test</p>
---DATA--
-return []
---EXPECT--
-<p>Test</p>
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/basic.test b/vendor/twig/twig/tests/Fixtures/functions/include/basic.test
deleted file mode 100644
index f90983c02f3901f0deb0caa12e3502e0e8f60d93..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/basic.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-FOO
-{{ include("foo.twig") }}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return []
---EXPECT--
-FOO
-
-FOOBAR
-
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/expression.test b/vendor/twig/twig/tests/Fixtures/functions/include/expression.test
deleted file mode 100644
index c6d3d1c5331e6fb49dd0a75f8cca49bb56092d55..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/expression.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"include" function allows expressions for the template to include
---TEMPLATE--
-FOO
-{{ include(foo) }}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
-
-FOOBAR
-
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing.test b/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing.test
deleted file mode 100644
index c05b43e140315a123d36f761f1aeea1fa394542f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include(["foo.twig", "bar.twig"], ignore_missing = true) }}
-{{ include("foo.twig", ignore_missing = true) }}
-{{ include("foo.twig", ignore_missing = true, variables = {}) }}
-{{ include("foo.twig", ignore_missing = true, variables = {}, with_context = true) }}
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing_exists.test b/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing_exists.test
deleted file mode 100644
index fc2d211ad8614aaba958767138bd275931f7f5e1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing_exists.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include("included.twig", ignore_missing = true) }}
-NOT DISPLAYED
---TEMPLATE(included.twig)--
-{{ include("DOES NOT EXIST") }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "included.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/include_missing_extends.test b/vendor/twig/twig/tests/Fixtures/functions/include/include_missing_extends.test
deleted file mode 100644
index 810ae8248000c20fc6a6a6bac58512eadfdecf70..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/include_missing_extends.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include(['bad.twig', 'good.twig'], ignore_missing = true) }}
-NOT DISPLAYED
---TEMPLATE(bad.twig)--
-{% extends 'DOES NOT EXIST' %}
---TEMPLATE(good.twig)--
-NOT DISPLAYED
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "bad.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/missing.test b/vendor/twig/twig/tests/Fixtures/functions/include/missing.test
deleted file mode 100644
index 1d50f7ac2feed6ff24da39d443758007ad28fd27..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/missing.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include("foo.twig") }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/missing_nested.test b/vendor/twig/twig/tests/Fixtures/functions/include/missing_nested.test
deleted file mode 100644
index 9ae8c9ee75935298bf77046f3e37eebe7a6adc07..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/missing_nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}
-    {{ include("foo.twig") }}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "base.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox.test b/vendor/twig/twig/tests/Fixtures/functions/include/sandbox.test
deleted file mode 100644
index ebfdb1eb8fff038b42071ce9e2a6bcedae1f6327..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("foo.twig", sandboxed = true) }}
---TEMPLATE(foo.twig)--
-
-
-{{ foo|e }}
-{{ foo|e }}
---DATA--
-return []
---EXCEPTION--
-Twig\Sandbox\SecurityNotAllowedFilterError: Filter "e" is not allowed in "foo.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling.test b/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling.test
deleted file mode 100644
index 1206b67fe319bcb593a097a45329d00529ae8765..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("foo.twig", sandboxed = true) }}
-{{ include("bar.twig") }}
---TEMPLATE(foo.twig)--
-foo
---TEMPLATE(bar.twig)--
-{{ foo|e }}
---DATA--
-return ['foo' => 'bar<br />']
---EXPECT--
-foo
-
-
-bar&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test b/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test
deleted file mode 100644
index c5be0088af646fee6f1489f9bd952b6ac9ca5fd0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("unknown.twig", sandboxed = true, ignore_missing = true) }}
-{{ include("bar.twig") }}
---TEMPLATE(bar.twig)--
-{{ foo|e }}
---DATA--
-return ['foo' => 'bar<br />']
---EXPECT--
-
-
-bar&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/template_instance.test b/vendor/twig/twig/tests/Fixtures/functions/include/template_instance.test
deleted file mode 100644
index 4c8b450835c1ef6ba2f6009612bcd89afc00a9fd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/template_instance.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" function accepts Twig_Template instance
---TEMPLATE--
-{{ include(foo) }} FOO
---TEMPLATE(foo.twig)--
-BAR
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-BAR FOO
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/templates_as_array.test b/vendor/twig/twig/tests/Fixtures/functions/include/templates_as_array.test
deleted file mode 100644
index 21e5bb2efd20dfa6793d20e13dbebfc5be48f4bc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/templates_as_array.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include(["foo.twig", "bar.twig"]) }}
-{{- include(["bar.twig", "foo.twig"]) }}
---TEMPLATE(foo.twig)--
-foo
---DATA--
-return []
---EXPECT--
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/with_context.test b/vendor/twig/twig/tests/Fixtures/functions/include/with_context.test
deleted file mode 100644
index 46ac8c79bdc28854c5282b631f9751c2ffc2ea77..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/with_context.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" function accept variables and with_context
---TEMPLATE--
-{{ include("foo.twig") }}
-{{- include("foo.twig", with_context = false) }}
-{{- include("foo.twig", {'foo1': 'bar'}) }}
-{{- include("foo.twig", {'foo1': 'bar'}, with_context = false) }}
---TEMPLATE(foo.twig)--
-{% for k, v in _context %}{{ k }},{% endfor %}
---DATA--
-return ['foo' => 'bar']
---EXPECT--
-foo,global,_parent,
-global,_parent,
-foo,global,foo1,_parent,
-foo1,global,_parent,
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/with_variables.test b/vendor/twig/twig/tests/Fixtures/functions/include/with_variables.test
deleted file mode 100644
index 0ed98fed02f664d305732a97a67a574c0718f575..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/with_variables.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"include" function accept variables
---TEMPLATE--
-{{ include("foo.twig", {'foo': 'bar'}) }}
-{{- include("foo.twig", vars) }}
---TEMPLATE(foo.twig)--
-{{ foo }}
---DATA--
-return ['vars' => ['foo' => 'bar']]
---EXPECT--
-bar
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include_template_from_string.test b/vendor/twig/twig/tests/Fixtures/functions/include_template_from_string.test
deleted file mode 100644
index 8d9ba60ce6661d7d7a448430926ff883e0b4a4a4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include_template_from_string.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"template_from_string" function works in an "include"
---TEMPLATE--
-{% set embed = '{% embed "embed.twig" %}{% endembed %}' %}
-{{ include(template_from_string(embed)) }}
---TEMPLATE(embed.twig)--
-Cool
---DATA--
-return []
---EXPECT--
-Cool
diff --git a/vendor/twig/twig/tests/Fixtures/functions/magic_call.test b/vendor/twig/twig/tests/Fixtures/functions/magic_call.test
deleted file mode 100644
index 4dd5e27042b0455033a4f913dba71a0cf95baec7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/magic_call.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-__call calls
---TEMPLATE--
-{{ 'foo'|magic_call }}
---DATA--
-return []
---EXPECT--
-magic_foo
diff --git a/vendor/twig/twig/tests/Fixtures/functions/magic_call53.test b/vendor/twig/twig/tests/Fixtures/functions/magic_call53.test
deleted file mode 100644
index a7c65bf6765121e927b768a826e277cee546d0e4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/magic_call53.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-__staticCall calls
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-{{ 'foo'|magic_call_string }}
-{{ 'foo'|magic_call_array }}
---DATA--
-return []
---EXPECT--
-static_magic_foo
-static_magic_foo
diff --git a/vendor/twig/twig/tests/Fixtures/functions/max.test b/vendor/twig/twig/tests/Fixtures/functions/max.test
deleted file mode 100644
index 6d2de000d5e323dabd52390b41ac1f7cec498b76..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/max.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"max" function
---TEMPLATE--
-{{ max([2, 1, 3, 5, 4]) }}
-{{ max(2, 1, 3, 5, 4) }}
-{{ max({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }}
---DATA--
-return []
---EXPECT--
-5
-5
-two
diff --git a/vendor/twig/twig/tests/Fixtures/functions/min.test b/vendor/twig/twig/tests/Fixtures/functions/min.test
deleted file mode 100644
index 1fe5446b7ca6c1531fb1dbd395d5e43efe90b2df..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/min.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"min" function
---TEMPLATE--
-{{ min(2, 1, 3, 5, 4) }}
-{{ min([2, 1, 3, 5, 4]) }}
-{{ min({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }}
---DATA--
-return []
---EXPECT--
-1
-1
-five
diff --git a/vendor/twig/twig/tests/Fixtures/functions/range.test b/vendor/twig/twig/tests/Fixtures/functions/range.test
deleted file mode 100644
index 2927333b97fca0b3818bc3d3783f5d533ec7df43..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/range.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"range" function
---TEMPLATE--
-{{ range(low=0+1, high=10+0, step=2)|join(',') }}
---DATA--
-return []
---EXPECT--
-1,3,5,7,9
diff --git a/vendor/twig/twig/tests/Fixtures/functions/recursive_block_with_inheritance.test b/vendor/twig/twig/tests/Fixtures/functions/recursive_block_with_inheritance.test
deleted file mode 100644
index 1c3fffb5dabb72d36f8ae629b95cef75b89dcbc3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/recursive_block_with_inheritance.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-"block" function recursively called in a parent template
---TEMPLATE--
-{% extends "ordered_menu.twig" %}
-{% block label %}"{{ parent() }}"{% endblock %}
-{% block list %}{% set class = 'b' %}{{ parent() }}{% endblock %}
---TEMPLATE(ordered_menu.twig)--
-{% extends "menu.twig" %}
-{% block list %}{% set class = class|default('a') %}<ol class="{{ class }}">{{ block('children') }}</ol>{% endblock %}
---TEMPLATE(menu.twig)--
-{% extends "base.twig" %}
-{% block list %}<ul>{{ block('children') }}</ul>{% endblock %}
-{% block children %}{% set currentItem = item %}{% for item in currentItem %}{{ block('item') }}{% endfor %}{% set item = currentItem %}{% endblock %}
-{% block item %}<li>{% if item is not iterable %}{{ block('label') }}{% else %}{{ block('list') }}{% endif %}</li>{% endblock %}
-{% block label %}{{ item }}{% endblock %}
---TEMPLATE(base.twig)--
-{{ block('list') }}
---DATA--
-return ['item' => ['1', '2', ['3.1', ['3.2.1', '3.2.2'], '3.4']]]
---EXPECT--
-<ol class="b"><li>"1"</li><li>"2"</li><li><ol class="b"><li>"3.1"</li><li><ol class="b"><li>"3.2.1"</li><li>"3.2.2"</li></ol></li><li>"3.4"</li></ol></li></ol>
diff --git a/vendor/twig/twig/tests/Fixtures/functions/source.test b/vendor/twig/twig/tests/Fixtures/functions/source.test
deleted file mode 100644
index b691ce7bcd9ee45fd067fdb934b0ede31e41df10..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/source.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"source" function
---TEMPLATE--
-FOO
-{{ source("foo.twig") }}
-
-BAR
---TEMPLATE(foo.twig)--
-{{ foo }}<br />
---DATA--
-return []
---EXPECT--
-FOO
-
-{{ foo }}<br />
-
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/special_chars.test b/vendor/twig/twig/tests/Fixtures/functions/special_chars.test
deleted file mode 100644
index 9c9e249455ea8126dd1ad1142ce6cc8386e2ff44..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/special_chars.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"§" custom function
---TEMPLATE--
-{{ §('foo') }}
---DATA--
-return []
---EXPECT--
-§foo§
diff --git a/vendor/twig/twig/tests/Fixtures/functions/static_calls.test b/vendor/twig/twig/tests/Fixtures/functions/static_calls.test
deleted file mode 100644
index dd13abb0bc56901af37fefa3148143d4d57e5454..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/static_calls.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Functions as static method calls
---TEMPLATE--
-{{ static_call_string('foo') }}
-{{ static_call_array('foo') }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-*foo*
-*foo*
diff --git a/vendor/twig/twig/tests/Fixtures/functions/template_from_string.test b/vendor/twig/twig/tests/Fixtures/functions/template_from_string.test
deleted file mode 100644
index 33b0e40d7c31a98d96effd8a7ee4c69f7ea8b13e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/template_from_string.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-"template_from_string" function
---TEMPLATE--
-{% include template_from_string(template) %}
-
-{% include template_from_string("Hello {{ name }}") %}
-{% include template_from_string('{% extends "parent.twig" %}{% block content %}Hello {{ name }}{% endblock %}') %}
---TEMPLATE(parent.twig)--
-{% block content %}{% endblock %}
---DATA--
-return ['name' => 'Fabien', 'template' => "Hello {{ name }}"]
---EXPECT--
-Hello Fabien
-Hello Fabien
-Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/functions/template_from_string_error.test b/vendor/twig/twig/tests/Fixtures/functions/template_from_string_error.test
deleted file mode 100644
index 900d238bd2bc8f8a584a3ea9e297c0fe6d8d3ad5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/functions/template_from_string_error.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"template_from_string" function
---TEMPLATE--
-{% include template_from_string("{{ not a Twig template ", "foo.twig") %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unclosed "variable" in "foo.twig (string template 4900163d56b1af4b704c6b0afee7f98ba53418ce7a93d37a3af1882735baf9cd)" at line 1.
diff --git a/vendor/twig/twig/tests/Fixtures/macros/default_values.test b/vendor/twig/twig/tests/Fixtures/macros/default_values.test
deleted file mode 100644
index 18bba524ad94134dc644155c4d1d0a96851c5061..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/macros/default_values.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% from _self import test %}
-
-{% macro test(a, b = 'bar') -%}
-{{ a }}{{ b }}
-{%- endmacro %}
-
-{{ test('foo') }}
-{{ test('bar', 'foo') }}
---DATA--
-return []
---EXPECT--
-foobar
-barfoo
diff --git a/vendor/twig/twig/tests/Fixtures/macros/nested_calls.test b/vendor/twig/twig/tests/Fixtures/macros/nested_calls.test
deleted file mode 100644
index 4577286d0cbfb87c8a7538904d8af1769c3b36a8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/macros/nested_calls.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% import _self as macros %}
-
-{% macro foo(data) %}
-    {{ data }}
-{% endmacro %}
-
-{% macro bar() %}
-    <br />
-{% endmacro %}
-
-{{ macros.foo(macros.bar()) }}
---DATA--
-return []
---EXPECT--
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/macros/reserved_variables.test b/vendor/twig/twig/tests/Fixtures/macros/reserved_variables.test
deleted file mode 100644
index 05dd9213008a5fa0772dd2f14134e7e115a22ece..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/macros/reserved_variables.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% from _self import test %}
-
-{% macro test(this) -%}
-    {{ this }}
-{%- endmacro %}
-
-{{ test(this) }}
---DATA--
-return ['this' => 'foo']
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/macros/simple.test b/vendor/twig/twig/tests/Fixtures/macros/simple.test
deleted file mode 100644
index 8fc6b477fb2d4348ee1bb4bc3f3bd37a5de1adca..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/macros/simple.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% import _self as test %}
-{% from _self import test %}
-
-{% macro test(a, b) -%}
-    {{ a|default('a') }}<br />
-    {{- b|default('b') }}<br />
-{%- endmacro %}
-
-{{ test.test() }}
-{{ test() }}
-{{ test.test(1, "c") }}
-{{ test(1, "c") }}
---DATA--
-return []
---EXPECT--
-a<br />b<br />
-a<br />b<br />
-1<br />c<br />
-1<br />c<br />
diff --git a/vendor/twig/twig/tests/Fixtures/macros/varargs.test b/vendor/twig/twig/tests/Fixtures/macros/varargs.test
deleted file mode 100644
index dd4b5c9f4710f2d172322168707979693bac039f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/macros/varargs.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-macro with arbitrary arguments
---TEMPLATE--
-{% from _self import test1, test2 %}
-
-{% macro test1(var) %}
-    {{- var }}: {{ varargs|join(", ") }}
-{% endmacro %}
-
-{% macro test2() %}
-    {{- varargs|join(", ") }}
-{% endmacro %}
-
-{{ test1("foo", "bar", "foobar") }}
-{{ test2("foo", "bar", "foobar") }}
---DATA--
-return []
---EXPECT--
-foo: bar, foobar
-
-foo, bar, foobar
diff --git a/vendor/twig/twig/tests/Fixtures/macros/varargs_argument.test b/vendor/twig/twig/tests/Fixtures/macros/varargs_argument.test
deleted file mode 100644
index 1ad368bf1e1b30d329656292140be931a75fac41..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/macros/varargs_argument.test
+++ /dev/null
@@ -1,7 +0,0 @@
---TEST--
-macro with varargs argument
---TEMPLATE--
-{% macro test(varargs) %}
-{% endmacro %}
---EXCEPTION--
-Twig\Error\SyntaxError: The argument "varargs" in macro "test" cannot be defined because the variable "varargs" is reserved for arbitrary arguments in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/macros/with_filters.test b/vendor/twig/twig/tests/Fixtures/macros/with_filters.test
deleted file mode 100644
index 96064ba0123b9c40f9a51e8819d31f503a8f82b4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/macros/with_filters.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-macro with a filter
---TEMPLATE--
-{% import _self as test %}
-
-{% macro test() %}
-    {% filter escape %}foo<br />{% endfilter %}
-{% endmacro %}
-
-{{ test.test() }}
---DATA--
-return []
---EXPECT--
-foo&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/regression/block_names_unicity.test b/vendor/twig/twig/tests/Fixtures/regression/block_names_unicity.test
deleted file mode 100644
index df0747072430fd6b44ddc97defe77da41b9fdc2c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/regression/block_names_unicity.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Block names are unique per template
---TEMPLATE--
-{% extends 'layout' %}
-{% block content -%}
-    {% filter title -%}
-        second
-    {% endfilter %}
-{% endblock %}
---TEMPLATE(layout)--
-{% filter title -%}
-    first
-{% endfilter %}
-{% block content %}{% endblock %}
---DATA--
-return []
---EXPECT--
-First
-Second
diff --git a/vendor/twig/twig/tests/Fixtures/regression/combined_debug_info.test b/vendor/twig/twig/tests/Fixtures/regression/combined_debug_info.test
deleted file mode 100644
index 6426d2c1d858d94b68092e529dd567dd3720c730..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/regression/combined_debug_info.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Exception with bad line number
---TEMPLATE--
-{% block content %}
-    {{ foo }}
-    {{ include("foo") }}
-{% endblock %}
-index
---TEMPLATE(foo)--
-foo
-{{ foo.bar }}
---DATA--
-return ['foo' => 'foo']
---EXCEPTION--
-Twig\Error\RuntimeError: Impossible to access an attribute ("bar") on a string variable ("foo") in "foo" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/regression/empty_token.test b/vendor/twig/twig/tests/Fixtures/regression/empty_token.test
deleted file mode 100644
index 25bdc9e407c86c929ae79865d0036cf0e164c75e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/regression/empty_token.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig outputs 0 nodes correctly
---TEMPLATE--
-{{ foo }}0{{ foo }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-foo0foo
diff --git a/vendor/twig/twig/tests/Fixtures/regression/issue_1143.test b/vendor/twig/twig/tests/Fixtures/regression/issue_1143.test
deleted file mode 100644
index e2ab950e18353e45d656ff5dc7bdb3e80bf3c424..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/regression/issue_1143.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-error in twig extension
---TEMPLATE--
-{{ object.region is not null ? object.regionChoices[object.region] }}
---DATA--
-class House
-{
-    const REGION_S = 1;
-    const REGION_P = 2;
-
-    public static $regionChoices = [self::REGION_S => 'house.region.s', self::REGION_P => 'house.region.p'];
-
-    public function getRegionChoices()
-    {
-        return self::$regionChoices;
-    }
-}
-
-$object = new House();
-$object->region = 1;
-return ['object' => $object]
---EXPECT--
-house.region.s
diff --git a/vendor/twig/twig/tests/Fixtures/regression/multi_word_tests.test b/vendor/twig/twig/tests/Fixtures/regression/multi_word_tests.test
deleted file mode 100644
index 96ca5517a144ff79a17e2b3400a67fc4f03a24a9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/regression/multi_word_tests.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig allows multi-word tests without a custom node class
---TEMPLATE--
-{{ 'foo' is multi word ? 'yes' : 'no' }}
-{{ 'foo bar' is multi word ? 'yes' : 'no' }}
---DATA--
-return []
---EXPECT--
-no
-yes
diff --git a/vendor/twig/twig/tests/Fixtures/regression/simple_xml_element.test b/vendor/twig/twig/tests/Fixtures/regression/simple_xml_element.test
deleted file mode 100644
index b6e62c8d7e15e67724ebcc28b3850119d6ca99a3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/regression/simple_xml_element.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Twig is able to deal with SimpleXMLElement instances as variables
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-Hello '{{ images.image.0.group }}'!
-{{ images.image.0.group.attributes.myattr }}
-{{ images.children().image.count() }}
-{% for image in images %}
-    - {{ image.group }}
-{% endfor %}
---DATA--
-return ['images' => new \SimpleXMLElement('<images><image><group myattr="example">foo</group></image><image><group>bar</group></image></images>')]
---EXPECT--
-Hello 'foo'!
-example
-2
-    - foo
-    - bar
diff --git a/vendor/twig/twig/tests/Fixtures/regression/strings_like_numbers.test b/vendor/twig/twig/tests/Fixtures/regression/strings_like_numbers.test
deleted file mode 100644
index 62fe884858740eba24d41661de3486f14538a23a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/regression/strings_like_numbers.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig does not confuse strings with integers in getAttribute()
---TEMPLATE--
-{{ hash['2e2'] }}
---DATA--
-return ['hash' => ['2e2' => 'works']]
---EXPECT--
-works
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/basic.test b/vendor/twig/twig/tests/Fixtures/tags/apply/basic.test
deleted file mode 100644
index 4848ee0259795af952e1a8ca76e78678e0fd80eb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/basic.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"apply" tag applies a filter on its children
---TEMPLATE--
-{% apply upper %}
-Some text with a {{ var }}
-{% endapply %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-SOME TEXT WITH A VAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/json_encode.test b/vendor/twig/twig/tests/Fixtures/tags/apply/json_encode.test
deleted file mode 100644
index 8a590b44ac49ba85930c35e09f73999a010bbd11..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/json_encode.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"apply" tag applies a filter on its children
---TEMPLATE--
-{% apply json_encode|raw %}test{% endapply %}
---DATA--
-return []
---EXPECT--
-"test"
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/apply/multiple.test
deleted file mode 100644
index e16998a52607fd9f97ef7f169850e27feb5227a0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/multiple.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"apply" tags accept multiple chained filters
---TEMPLATE--
-{% apply lower|title %}
-  {{ var }}
-{% endapply %}
---DATA--
-return ['var' => 'VAR']
---EXPECT--
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/nested.test b/vendor/twig/twig/tests/Fixtures/tags/apply/nested.test
deleted file mode 100644
index b64a6914c535f181f521956e90a769f9300b20d3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"apply" tags can be nested at will
---TEMPLATE--
-{% apply lower|title %}
-  {{ var }}
-  {% apply upper %}
-    {{ var }}
-  {% endapply %}
-  {{ var }}
-{% endapply %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-  Var
-      Var
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/scope.test b/vendor/twig/twig/tests/Fixtures/tags/apply/scope.test
deleted file mode 100644
index a87ff9116ba93994179b1617cf331c780f8c909c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/scope.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-"apply" tag does not create a new scope
---TEMPLATE--
-{% set foo = 'baz' %}
-{% apply spaceless %}
-    {% set foo = 'foo' %}
-    {% set bar = 'bar' %}
-{% endapply %}
-{{ 'foo' == foo ? 'OK ' ~ foo : 'KO' }}
-{{ 'bar' == bar ? 'OK ' ~ bar : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK foo
-OK bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/with_for_tag.test b/vendor/twig/twig/tests/Fixtures/tags/apply/with_for_tag.test
deleted file mode 100644
index 4453880b596763c8d81253273a41eaa1aeee2775..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/with_for_tag.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"apply" tag applies the filter on "for" tags
---TEMPLATE--
-{% apply upper %}
-{% for item in items %}
-{{ item }}
-{% endfor %}
-{% endapply %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A
-B
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/with_if_tag.test b/vendor/twig/twig/tests/Fixtures/tags/apply/with_if_tag.test
deleted file mode 100644
index ca7a592cbaa5773b6eca8d3bd125c44aef962155..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/with_if_tag.test
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-"apply" tag applies the filter on "if" tags
---TEMPLATE--
-{% apply upper %}
-{% if items %}
-{{ items|join(', ') }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% else %}
-{{ items.1 }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% elseif items.1 %}
-{{ items.0 }}
-{% endif %}
-
-{% endapply %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A, B
-
-B
-
-A
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/basic.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/basic.test
deleted file mode 100644
index 5979725e38d6769695462823add2ee9ea74bb2cf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/basic.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-"autoescape" tag applies escaping on its children
---TEMPLATE--
-{% autoescape %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape 'html' %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape false %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape true %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape false %}
-{{ var }}<br />
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;<br />
-&lt;br /&gt;<br />
-<br /><br />
-&lt;br /&gt;<br />
-<br /><br />
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/blocks.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/blocks.test
deleted file mode 100644
index 292e1b4167cef9a545ba9d894b9a153a548b05df..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/blocks.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"autoescape" tag applies escaping on embedded blocks
---TEMPLATE--
-{% autoescape 'html' %}
-  {% block foo %}
-    {{ var }}
-  {% endblock %}
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/double_escaping.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/double_escaping.test
deleted file mode 100644
index 1724b48787fcfdc979f3c5968b4154ade8c88611..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/double_escaping.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"autoescape" tag does not double-escape
---TEMPLATE--
-{% autoescape 'html' %}
-{{ var|escape }}
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/functions.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/functions.test
deleted file mode 100644
index 170e7074edece9534552efa295a80b56f6be41d3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/functions.test
+++ /dev/null
@@ -1,83 +0,0 @@
---TEST--
-"autoescape" tag applies escaping after calling functions
---TEMPLATE--
-
-autoescape false
-{% autoescape false %}
-
-safe_br
-{{ safe_br() }}
-
-unsafe_br
-{{ unsafe_br() }}
-
-{% endautoescape %}
-
-autoescape 'html'
-{% autoescape 'html' %}
-
-safe_br
-{{ safe_br() }}
-
-unsafe_br
-{{ unsafe_br() }}
-
-unsafe_br()|raw
-{{ (unsafe_br())|raw }}
-
-safe_br()|escape
-{{ (safe_br())|escape }}
-
-safe_br()|raw
-{{ (safe_br())|raw }}
-
-unsafe_br()|escape
-{{ (unsafe_br())|escape }}
-
-{% endautoescape %}
-
-autoescape js
-{% autoescape 'js' %}
-
-safe_br
-{{ safe_br() }}
-
-{% endautoescape %}
---DATA--
-return []
---EXPECT--
-
-autoescape false
-
-safe_br
-<br />
-
-unsafe_br
-<br />
-
-
-autoescape 'html'
-
-safe_br
-<br />
-
-unsafe_br
-&lt;br /&gt;
-
-unsafe_br()|raw
-<br />
-
-safe_br()|escape
-&lt;br /&gt;
-
-safe_br()|raw
-<br />
-
-unsafe_br()|escape
-&lt;br /&gt;
-
-
-autoescape js
-
-safe_br
-\u003Cbr\u0020\/\u003E
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/literal.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/literal.test
deleted file mode 100644
index 3d8d4f8fdd2598ba829beaf7358255a12504208a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/literal.test
+++ /dev/null
@@ -1,87 +0,0 @@
---TEST--
-"autoescape" tag does not apply escaping on literals
---TEMPLATE--
-{% autoescape 'html' %}
-
-1. Simple literal
-{{ "<br />" }}
-
-2. Conditional expression with only literals
-{{ true ? "<br />" : "<br>" }}
-
-3. Conditional expression with a variable
-{{ true ? "<br />" : someVar }}
-{{ false ? "<br />" : someVar }}
-{{ true ? someVar : "<br />" }}
-{{ false ? someVar : "<br />" }}
-
-4. Nested conditionals with only literals
-{{ true ? (true ? "<br />" : "<br>") : "\n" }}
-
-5. Nested conditionals with a variable
-{{ true ? (true ? "<br />" : someVar) : "\n" }}
-{{ true ? (false ? "<br />" : someVar) : "\n" }}
-{{ true ? (true ? someVar : "<br />") : "\n" }}
-{{ true ? (false ? someVar : "<br />") : "\n" }}
-{{ false ? "\n" : (true ? someVar : "<br />") }}
-{{ false ? "\n" : (false ? someVar : "<br />") }}
-
-6. Nested conditionals with a variable marked safe
-{{ true ? (true ? "<br />" : someVar|raw) : "\n" }}
-{{ true ? (false ? "<br />" : someVar|raw) : "\n" }}
-{{ true ? (true ? someVar|raw : "<br />") : "\n" }}
-{{ true ? (false ? someVar|raw : "<br />") : "\n" }}
-{{ false ? "\n" : (true ? someVar|raw : "<br />") }}
-{{ false ? "\n" : (false ? someVar|raw : "<br />") }}
-
-7. Without then clause
-{{ "<br />" ?: someVar }}
-{{ someFalseVar ?: "<br />" }}
-
-8. NullCoalesce
-{{ aaaa ?? "<br />" }}
-{{ "<br />" ?? someVar }}
-
-{% endautoescape %}
---DATA--
-return ['someVar' => '<br />', 'someFalseVar' => false]
---EXPECT--
-
-1. Simple literal
-<br />
-
-2. Conditional expression with only literals
-<br />
-
-3. Conditional expression with a variable
-<br />
-&lt;br /&gt;
-&lt;br /&gt;
-<br />
-
-4. Nested conditionals with only literals
-<br />
-
-5. Nested conditionals with a variable
-<br />
-&lt;br /&gt;
-&lt;br /&gt;
-<br />
-&lt;br /&gt;
-<br />
-
-6. Nested conditionals with a variable marked safe
-<br />
-<br />
-<br />
-<br />
-<br />
-<br />
-
-7. Without then clause
-<br />
-<br />
-
-8. NullCoalesce
-<br />
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/nested.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/nested.test
deleted file mode 100644
index 0d88c7e3a2e4779247e27882e7e8e26b22d3ad4e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/nested.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-"autoescape" tags can be nested at will
---TEMPLATE--
-{{ var }}
-{% autoescape 'html' %}
-  {{ var }}
-  {% autoescape false %}
-    {{ var }}
-    {% autoescape 'html' %}
-      {{ var }}
-    {% endautoescape %}
-    {{ var }}
-  {% endautoescape %}
-  {{ var }}
-{% endautoescape %}
-{{ var }}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;
-  &lt;br /&gt;
-      <br />
-          &lt;br /&gt;
-        <br />
-    &lt;br /&gt;
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/objects.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/objects.test
deleted file mode 100644
index 9d959b22b4fa5018adcc6eda178812eb90c22b1d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/objects.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-"autoescape" tag applies escaping to object method calls
---TEMPLATE--
-{% autoescape 'html' %}
-{{ user.name }}
-{{ user.name|lower }}
-{{ user }}
-{% endautoescape %}
---DATA--
-class UserForAutoEscapeTest
-{
-  public function getName()
-  {
-    return 'Fabien<br />';
-  }
-
-  public function __toString()
-  {
-     return 'Fabien<br />';
-  }
-}
-return ['user' => new UserForAutoEscapeTest()]
---EXPECT--
-Fabien&lt;br /&gt;
-fabien&lt;br /&gt;
-Fabien&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/raw.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/raw.test
deleted file mode 100644
index 187327c8017be5fcaa9cebc00cb447b9e5dff126..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/raw.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"autoescape" tag does not escape when raw is used as a filter
---TEMPLATE--
-{% autoescape 'html' %}
-{{ var|raw }}
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.legacy.test
deleted file mode 100644
index 289f2b1743327495d75982b0a084898f507df0f9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.legacy.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"autoescape" tag accepts an escaping strategy
---TEMPLATE--
-{% autoescape true js %}{{ var }}{% endautoescape %}
-
-{% autoescape true html %}{{ var }}{% endautoescape %}
---DATA--
-return ['var' => '<br />"']
---EXPECT--
-\u003Cbr\u0020\/\u003E\u0022
-&lt;br /&gt;&quot;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.test
deleted file mode 100644
index 9a0137ee27ec67f8fcddafa411780aca1cee10f2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"autoescape" tag accepts an escaping strategy
---TEMPLATE--
-{% autoescape 'js' %}{{ var }}{% endautoescape %}
-
-{% autoescape 'html' %}{{ var }}{% endautoescape %}
---DATA--
-return ['var' => '<br />"']
---EXPECT--
-\u003Cbr\u0020\/\u003E\u0022
-&lt;br /&gt;&quot;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/type.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/type.test
deleted file mode 100644
index 9ae8d7bf9921e180caf80fc9c3e1874b388c6dab..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/type.test
+++ /dev/null
@@ -1,69 +0,0 @@
---TEST--
-escape types
---TEMPLATE--
-
-1. autoescape 'html' |escape('js')
-
-{% autoescape 'html' %}
-<a onclick="alert(&quot;{{ msg|escape('js') }}&quot;)"></a>
-{% endautoescape %}
-
-2. autoescape 'html' |escape('js')
-
-{% autoescape 'html' %}
-<a onclick="alert(&quot;{{ msg|escape('js') }}&quot;)"></a>
-{% endautoescape %}
-
-3. autoescape 'js' |escape('js')
-
-{% autoescape 'js' %}
-<a onclick="alert(&quot;{{ msg|escape('js') }}&quot;)"></a>
-{% endautoescape %}
-
-4. no escape
-
-{% autoescape false %}
-<a onclick="alert(&quot;{{ msg }}&quot;)"></a>
-{% endautoescape %}
-
-5. |escape('js')|escape('html')
-
-{% autoescape false %}
-<a onclick="alert(&quot;{{ msg|escape('js')|escape('html') }}&quot;)"></a>
-{% endautoescape %}
-
-6. autoescape 'html' |escape('js')|escape('html')
-
-{% autoescape 'html' %}
-<a onclick="alert(&quot;{{ msg|escape('js')|escape('html') }}&quot;)"></a>
-{% endautoescape %}
-
---DATA--
-return ['msg' => "<>\n'\""]
---EXPECT--
-
-1. autoescape 'html' |escape('js')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-2. autoescape 'html' |escape('js')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-3. autoescape 'js' |escape('js')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-4. no escape
-
-<a onclick="alert(&quot;<>
-'"&quot;)"></a>
-
-5. |escape('js')|escape('html')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-6. autoescape 'html' |escape('js')|escape('html')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters.test
deleted file mode 100644
index f97105bbd1b009a7f2f08d4c6f1d2d9d66df9553..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters.test
+++ /dev/null
@@ -1,131 +0,0 @@
---TEST--
-"autoescape" tag applies escaping after calling filters
---TEMPLATE--
-{% autoescape 'html' %}
-
-(escape_and_nl2br is an escaper filter)
-
-1. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped )
-{{ var|escape_and_nl2br }}
-
-2. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped, |raw is redundant )
-{{ var|escape_and_nl2br|raw }}
-
-3. Explicit escape
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is explicitly escaped by |escape )
-{{ var|escape_and_nl2br|escape }}
-
-4. Escape non-escaper filter output
-( var is upper-cased by |upper,
-  the output is auto-escaped )
-{{ var|upper }}
-
-5. Escape if last filter is not an escaper
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is upper-cased by |upper,
-  the output is auto-escaped as |upper is not an escaper )
-{{ var|escape_and_nl2br|upper }}
-
-6. Don't escape escaper filter output
-( var is upper cased by upper,
-  the output is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is not escaped as |escape_and_nl2br is an escaper )
-{{ var|upper|escape_and_nl2br }}
-
-7. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is auto-escaped )
-{{ "<b>%s</b>"|format(var) }}
-
-8. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  |raw is redundant,
-  the output is auto-escaped )
-{{ "<b>%s</b>"|raw|format(var) }}
-
-9. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end )
-{{ "<b>%s</b>"|format(var)|raw }}
-
-10. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end,
-  the |raw filter on var is redundant )
-{{ "<b>%s</b>"|format(var|raw)|raw }}
-
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig"]
---EXPECT--
-
-(escape_and_nl2br is an escaper filter)
-
-1. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped )
-&lt;Fabien&gt;<br />
-Twig
-
-2. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped, |raw is redundant )
-&lt;Fabien&gt;<br />
-Twig
-
-3. Explicit escape
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is explicitly escaped by |escape )
-&amp;lt;Fabien&amp;gt;&lt;br /&gt;
-Twig
-
-4. Escape non-escaper filter output
-( var is upper-cased by |upper,
-  the output is auto-escaped )
-&lt;FABIEN&gt;
-TWIG
-
-5. Escape if last filter is not an escaper
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is upper-cased by |upper,
-  the output is auto-escaped as |upper is not an escaper )
-&amp;LT;FABIEN&amp;GT;&lt;BR /&gt;
-TWIG
-
-6. Don't escape escaper filter output
-( var is upper cased by upper,
-  the output is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is not escaped as |escape_and_nl2br is an escaper )
-&lt;FABIEN&gt;<br />
-TWIG
-
-7. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is auto-escaped )
-&lt;b&gt;&lt;Fabien&gt;
-Twig&lt;/b&gt;
-
-8. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  |raw is redundant,
-  the output is auto-escaped )
-&lt;b&gt;&lt;Fabien&gt;
-Twig&lt;/b&gt;
-
-9. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end )
-<b><Fabien>
-Twig</b>
-
-10. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end,
-  the |raw filter on var is redundant )
-<b><Fabien>
-Twig</b>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters_arguments.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters_arguments.test
deleted file mode 100644
index 50f72d83a1ee7888446673bdb7c722ecb2571dc8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters_arguments.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"autoescape" tag do not applies escaping on filter arguments
---TEMPLATE--
-{% autoescape 'html' %}
-{{ var|nl2br("<br />") }}
-{{ var|nl2br("<br />"|escape) }}
-{{ var|nl2br(sep) }}
-{{ var|nl2br(sep|raw) }}
-{{ var|nl2br(sep|escape) }}
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig", 'sep' => '<br />']
---EXPECT--
-&lt;Fabien&gt;<br />
-Twig
-&lt;Fabien&gt;&lt;br /&gt;
-Twig
-&lt;Fabien&gt;<br />
-Twig
-&lt;Fabien&gt;<br />
-Twig
-&lt;Fabien&gt;&lt;br /&gt;
-Twig
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_pre_escape_filters.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_pre_escape_filters.test
deleted file mode 100644
index c9c738055dfcef96e635fa6f75b84c97bf7d43ce..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_pre_escape_filters.test
+++ /dev/null
@@ -1,68 +0,0 @@
---TEST--
-"autoescape" tag applies escaping after calling filters, and before calling pre_escape filters
---TEMPLATE--
-{% autoescape 'html' %}
-
-(nl2br is pre_escaped for "html" and declared safe for "html")
-
-1. Pre-escape and don't post-escape
-( var|escape|nl2br )
-{{ var|nl2br }}
-
-2. Don't double-pre-escape
-( var|escape|nl2br )
-{{ var|escape|nl2br }}
-
-3. Don't escape safe values
-( var|raw|nl2br )
-{{ var|raw|nl2br }}
-
-4. Don't escape safe values
-( var|escape|nl2br|nl2br )
-{{ var|nl2br|nl2br }}
-
-5. Re-escape values that are escaped for an other contexts
-( var|escape_something|escape|nl2br )
-{{ var|escape_something|nl2br }}
-
-6. Still escape when using filters not declared safe
-( var|escape|nl2br|upper|escape )
-{{ var|nl2br|upper }}
-
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig"]
---EXPECT--
-
-(nl2br is pre_escaped for "html" and declared safe for "html")
-
-1. Pre-escape and don't post-escape
-( var|escape|nl2br )
-&lt;Fabien&gt;<br />
-Twig
-
-2. Don't double-pre-escape
-( var|escape|nl2br )
-&lt;Fabien&gt;<br />
-Twig
-
-3. Don't escape safe values
-( var|raw|nl2br )
-<Fabien><br />
-Twig
-
-4. Don't escape safe values
-( var|escape|nl2br|nl2br )
-&lt;Fabien&gt;<br /><br />
-Twig
-
-5. Re-escape values that are escaped for an other contexts
-( var|escape_something|escape|nl2br )
-&lt;FABIEN&gt;<br />
-TWIG
-
-6. Still escape when using filters not declared safe
-( var|escape|nl2br|upper|escape )
-&amp;LT;FABIEN&amp;GT;&lt;BR /&gt;
-TWIG
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test
deleted file mode 100644
index c764d434b099903c4347838017a69d15f43c853a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test
+++ /dev/null
@@ -1,50 +0,0 @@
---TEST--
-"autoescape" tag handles filters preserving the safety
---TEMPLATE--
-{% autoescape 'html' %}
-
-(preserves_safety is preserving safety for "html")
-
-1. Unsafe values are still unsafe
-( var|preserves_safety|escape )
-{{ var|preserves_safety }}
-
-2. Safe values are still safe
-( var|escape|preserves_safety )
-{{ var|escape|preserves_safety }}
-
-3. Re-escape values that are escaped for an other contexts
-( var|escape_something|preserves_safety|escape )
-{{ var|escape_something|preserves_safety }}
-
-4. Still escape when using filters not declared safe
-( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape )
-{{ var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'}) }}
-
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig"]
---EXPECT--
-
-(preserves_safety is preserving safety for "html")
-
-1. Unsafe values are still unsafe
-( var|preserves_safety|escape )
-&lt;FABIEN&gt;
-TWIG
-
-2. Safe values are still safe
-( var|escape|preserves_safety )
-&LT;FABIEN&GT;
-TWIG
-
-3. Re-escape values that are escaped for an other contexts
-( var|escape_something|preserves_safety|escape )
-&lt;FABIEN&gt;
-TWIG
-
-4. Still escape when using filters not declared safe
-( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape )
-&amp;LT;FABPOT&amp;GT;
-TWIG
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/block/basic.test b/vendor/twig/twig/tests/Fixtures/tags/block/basic.test
deleted file mode 100644
index 988b09ce863a8a22883d1bf03222508a1fb78a1b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/block/basic.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% block title1 %}FOO{% endblock %}
-{% block title2 foo|lower %}
---TEMPLATE(foo.twig)--
-{% block content %}{% endblock %}
---DATA--
-return ['foo' => 'bar']
---EXPECT--
-FOObar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/block/block_unique_name.test b/vendor/twig/twig/tests/Fixtures/tags/block/block_unique_name.test
deleted file mode 100644
index 3009f8b4201eb5f6f0d859f85bbd92d7e8ed5d4a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/block/block_unique_name.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% block content %}
-    {% block content %}
-    {% endblock %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: The block 'content' has already been defined line 2 in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/block/special_chars.test b/vendor/twig/twig/tests/Fixtures/tags/block/special_chars.test
deleted file mode 100644
index e8e240eb77e0d35a4e2055863f9755962b150273..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/block/special_chars.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"§" special chars in a block name
---TEMPLATE--
-{% block § %}
-§
-{% endblock § %}
---DATA--
-return []
---EXPECT--
-§
diff --git a/vendor/twig/twig/tests/Fixtures/tags/deprecated/block.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/deprecated/block.legacy.test
deleted file mode 100644
index 53729dd1f70043190c05037a6e4f26be70d288f2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/deprecated/block.legacy.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Deprecating a block with "deprecated" tag
---TEMPLATE--
-{% use 'greeting.twig' %}
-
-{{ block('welcome') }}
-
---TEMPLATE(greeting.twig)--
-{% block welcome %}
-  {% deprecated 'The "welcome" block is deprecated, use "hello" instead.' %}
-  {{ block('hello') }}
-{% endblock %}
-
-{% block hello %}
-Hello Fabien
-{% endblock %}
---DATA--
-return []
---EXPECT--
-  Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/tags/deprecated/macro.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/deprecated/macro.legacy.test
deleted file mode 100644
index 5cc48dd873baf587edf45a579d4d43bf44181e60..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/deprecated/macro.legacy.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-Deprecating a macro with "deprecated" tag
---TEMPLATE--
-{% import 'greeting.twig' as greeting %}
-
-{{ greeting.welcome('Fabien') }}
-
---TEMPLATE(greeting.twig)--
-{% macro welcome(name) %}
-  {% deprecated 'The "welcome" macro is deprecated, use "hello" instead.' %}
-  {% import _self as self %}
-  {{ self.hello(name) }}
-{% endmacro %}
-
-{% macro hello(name) %}
-Hello {{ name }}
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/tags/deprecated/template.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/deprecated/template.legacy.test
deleted file mode 100644
index 7f786d57fc3555b7bbe8834d413e8d3a9a52ebda..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/deprecated/template.legacy.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Deprecating a template with "deprecated" tag
---TEMPLATE--
-{% extends 'greeting.twig' %}
-
-{% deprecated 'The "index.twig" template is deprecated, use "greeting.twig" instead.' %}
---TEMPLATE(greeting.twig)--
-Hello Fabien
---DATA--
-return []
---EXPECT--
-Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/basic.test b/vendor/twig/twig/tests/Fixtures/tags/embed/basic.test
deleted file mode 100644
index 16781e4186abdf2554d885b620d2326fb26ee290..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/basic.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/complex_dynamic_parent.test b/vendor/twig/twig/tests/Fixtures/tags/embed/complex_dynamic_parent.test
deleted file mode 100644
index b799a8c95f8cc2ec4898b51f1acf8c20e91ee92b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/complex_dynamic_parent.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed foo ~ ".twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/dynamic_parent.test b/vendor/twig/twig/tests/Fixtures/tags/embed/dynamic_parent.test
deleted file mode 100644
index 6f0879e28dce54d1f44db6e235cd5714138b0a16..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/dynamic_parent.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed foo %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/error_line.test b/vendor/twig/twig/tests/Fixtures/tags/embed/error_line.test
deleted file mode 100644
index b1c6c85e6112d165b81436eb39d9ff2c04854c01..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/error_line.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE(index.twig)--
-FOO
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ nothing }}
-    {% endblock %}
-{% endembed %}
-BAR
---TEMPLATE(foo.twig)--
-{% block c1 %}{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "nothing" does not exist in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/embed/multiple.test
deleted file mode 100644
index 9f7b52f1d827be751059a540e9db446576505363..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/multiple.test
+++ /dev/null
@@ -1,50 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/nested.test b/vendor/twig/twig/tests/Fixtures/tags/embed/nested.test
deleted file mode 100644
index 9f33723366d939962e855d2b666ff6bf60ced730..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/nested.test
+++ /dev/null
@@ -1,42 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        {% embed "foo.twig" %}
-            {% block c1 %}
-                {{ parent() }}
-                block1extended
-            {% endblock %}
-        {% endembed %}
-
-    {% endblock %}
-{% endembed %}
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-A
-            block1
-
-        
-A
-                    block1
-
-                block1extended
-            B
-    block2
-C
-    B
-    block2
-C
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/with_extends.test b/vendor/twig/twig/tests/Fixtures/tags/embed/with_extends.test
deleted file mode 100644
index ce726ac00927ec91b137dc66ed42ef35736732e9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/with_extends.test
+++ /dev/null
@@ -1,60 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block c1 %}
-    {{ parent() }}
-    blockc1baseextended
-{% endblock %}
-
-{% block c2 %}
-    {{ parent() }}
-
-    {% embed "foo.twig" %}
-        {% block c1 %}
-            {{ parent() }}
-            block1extended
-        {% endblock %}
-    {% endembed %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(base.twig)--
-A
-{% block c1 %}
-    blockc1base
-{% endblock %}
-{% block c2 %}
-    blockc2base
-{% endblock %}
-B
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-A
-        blockc1base
-
-    blockc1baseextended
-        blockc2base
-
-
-    
-A
-                block1
-
-            block1extended
-        B
-    block2
-C        blockc2base
-
-B
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/basic.test b/vendor/twig/twig/tests/Fixtures/tags/filter/basic.test
deleted file mode 100644
index 866171ecc5ded2e1b14df5fa9cc1a9f06108f80c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/basic.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"filter" tag applies a filter on its children
---TEMPLATE--
-{% filter upper %}
-Some text with a {{ var }}
-{% endfilter %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-SOME TEXT WITH A VAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/json_encode.test b/vendor/twig/twig/tests/Fixtures/tags/filter/json_encode.test
deleted file mode 100644
index a2562b995be01b417994f6b5a83d61f5ba2fb4d6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/json_encode.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"filter" tag applies a filter on its children
---TEMPLATE--
-{% filter json_encode|raw %}test{% endfilter %}
---DATA--
-return []
---EXPECT--
-"test"
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/filter/multiple.test
deleted file mode 100644
index 8eb3cbdd7d28e8f76fbfe99e7ed7eda4976e1c8d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/multiple.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"filter" tags accept multiple chained filters
---TEMPLATE--
-{% filter lower|title %}
-  {{ var }}
-{% endfilter %}
---DATA--
-return ['var' => 'VAR']
---EXPECT--
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/nested.test b/vendor/twig/twig/tests/Fixtures/tags/filter/nested.test
deleted file mode 100644
index 6d18e1af08cbdf35d8cd9b2150a9deea24f504e8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"filter" tags can be nested at will
---TEMPLATE--
-{% filter lower|title %}
-  {{ var }}
-  {% filter upper %}
-    {{ var }}
-  {% endfilter %}
-  {{ var }}
-{% endfilter %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-  Var
-      Var
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/scope.test b/vendor/twig/twig/tests/Fixtures/tags/filter/scope.test
deleted file mode 100644
index 889a46f6a218515954b6572be8acdfeb941e20fa..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/scope.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"scope" tag creates a new scope
---TEMPLATE--
-{% filter spaceless %}
-{% set item = 'foo' %}
-{% endfilter %}
-{{ item }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "item" does not exist in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/with_for_tag.test b/vendor/twig/twig/tests/Fixtures/tags/filter/with_for_tag.test
deleted file mode 100644
index d2d87cfda38a9d847e882d8ac7335a897fdd1fed..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/with_for_tag.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"filter" tag applies the filter on "for" tags
---TEMPLATE--
-{% filter upper %}
-{% for item in items %}
-{{ item }}
-{% endfor %}
-{% endfilter %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A
-B
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/with_if_tag.test b/vendor/twig/twig/tests/Fixtures/tags/filter/with_if_tag.test
deleted file mode 100644
index f2e804bfb105bff4875fa50af30fb0362424e897..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/with_if_tag.test
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-"filter" tag applies the filter on "if" tags
---TEMPLATE--
-{% filter upper %}
-{% if items %}
-{{ items|join(', ') }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% else %}
-{{ items.1 }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% elseif items.1 %}
-{{ items.0 }}
-{% endif %}
-
-{% endfilter %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A, B
-
-B
-
-A
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/condition.test b/vendor/twig/twig/tests/Fixtures/tags/for/condition.test
deleted file mode 100644
index b1ad22fd53fa11e82b50fca04a53ce013e99c342..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/condition.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"for" tag takes a condition
---TEMPLATE--
-{% for i in 1..5 if i is odd -%}
-    {{ loop.index }}.{{ i }}{{ foo.bar }}
-{% endfor %}
---DATA--
-return ['foo' => ['bar' => 'X']]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-1.1X
-2.3X
-3.5X
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/context.test b/vendor/twig/twig/tests/Fixtures/tags/for/context.test
deleted file mode 100644
index 3cdd575c83e68113802756b381fb478e456adcdc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/context.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"for" tag keeps the context safe
---TEMPLATE--
-{% for item in items %}
-  {% for item in items %}
-    * {{ item }}
-  {% endfor %}
-  * {{ item }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-      * a
-      * b
-    * a
-      * a
-      * b
-    * b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/else.test b/vendor/twig/twig/tests/Fixtures/tags/for/else.test
deleted file mode 100644
index 86ec9c28d3ea952d83306579e24b54c91eb75799..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/else.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"for" tag can use an "else" clause
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-{% else %}
-  no item
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * a
-  * b
---DATA--
-return ['items' => []]
---EXPECT--
-  no item
---DATA--
-return []
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-  no item
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/inner_variables.test b/vendor/twig/twig/tests/Fixtures/tags/for/inner_variables.test
deleted file mode 100644
index e1ad3c73567c9756719329b441ceaacc32422325..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/inner_variables.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"for" tag does not reset inner variables
---TEMPLATE--
-{% for i in 1..2 %}
-  {% for j in 0..2 %}
-    {{k}}{% set k = k+1 %} {{ loop.parent.loop.index }}
-  {% endfor %}
-{% endfor %}
---DATA--
-return ['k' => 0]
---EXPECT--
-      0 1
-      1 1
-      2 1
-        3 2
-      4 2
-      5 2
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/keys.test b/vendor/twig/twig/tests/Fixtures/tags/for/keys.test
deleted file mode 100644
index 92135575f630427fad458861536d0f2dec292ea9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/keys.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"for" tag can iterate over keys
---TEMPLATE--
-{% for key in items|keys %}
-  * {{ key }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * 0
-  * 1
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/keys_and_values.test b/vendor/twig/twig/tests/Fixtures/tags/for/keys_and_values.test
deleted file mode 100644
index ab39ddf210c31e8b4ceb9e9c1c00d8d95e47c7a3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/keys_and_values.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"for" tag can iterate over keys and values
---TEMPLATE--
-{% for key, item in items %}
-  * {{ key }}/{{ item }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * 0/a
-  * 1/b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_context.test
deleted file mode 100644
index 56a60c2e6eefe1922e1b25940645964d9dd95dbb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"for" tag adds a loop variable to the context
---TEMPLATE--
-{% for item in items %}
-  * {{ loop.index }}/{{ loop.index0 }}
-  * {{ loop.revindex }}/{{ loop.revindex0 }}
-  * {{ loop.first }}/{{ loop.last }}/{{ loop.length }}
-
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * 1/0
-  * 2/1
-  * 1//2
-
-  * 2/1
-  * 1/0
-  * /1/2
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context_local.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_context_local.test
deleted file mode 100644
index 58e5a9b34511fbaa64f350192a38ab8f07704830..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context_local.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"for" tag adds a loop variable to the context locally
---TEMPLATE--
-{% for item in items %}
-{% endfor %}
-{% if loop is not defined %}WORKS{% endif %}
---DATA--
-return ['items' => []]
---EXPECT--
-WORKS
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined.test
deleted file mode 100644
index 2d8c0b87389f7f8dc67ab6e6e1e13d77a48a2dee..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"for" tag
---TEMPLATE--
-{% for i, item in items if i > 0 %}
-    {{ loop.last }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXCEPTION--
-Twig\Error\SyntaxError: The "loop.last" variable is not defined when looping with a condition in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined_cond.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined_cond.test
deleted file mode 100644
index e90e96b4ae2b6502e469b1c6f35561f7c107337f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined_cond.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-"for" tag
---TEMPLATE--
-{% for i, item in items if loop.last > 0 %}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXCEPTION--
-Twig\Error\SyntaxError: The "loop" variable cannot be used in a looping condition in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/nested_else.test b/vendor/twig/twig/tests/Fixtures/tags/for/nested_else.test
deleted file mode 100644
index df1bb07ac04a81ea22e3b55c493f020f2b3988e8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/nested_else.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"for" tag can use an "else" clause
---TEMPLATE--
-{% for item in items %}
-  {% for item in items1 %}
-    * {{ item }}
-  {% else %}
-    no {{ item }}
-  {% endfor %}
-{% else %}
-  no item1
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b'], 'items1' => []]
---EXPECT--
-no a
-        no b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/objects.test b/vendor/twig/twig/tests/Fixtures/tags/for/objects.test
deleted file mode 100644
index 2ba2d92c2cc2bc8ecc4a8a9adb6d8b309d806f39..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/objects.test
+++ /dev/null
@@ -1,43 +0,0 @@
---TEST--
-"for" tag iterates over iterable objects
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-  * {{ loop.index }}/{{ loop.index0 }}
-  * {{ loop.first }}
-
-{% endfor %}
-
-{% for key, value in items %}
-  * {{ key }}/{{ value }}
-{% endfor %}
-
-{% for key in items|keys %}
-  * {{ key }}
-{% endfor %}
---DATA--
-class ItemsIterator implements Iterator
-{
-  protected $values = ['foo' => 'bar', 'bar' => 'foo'];
-  public function current() { return current($this->values); }
-  public function key() { return key($this->values); }
-  public function next() { return next($this->values); }
-  public function rewind() { return reset($this->values); }
-  public function valid() { return false !== current($this->values); }
-}
-return ['items' => new ItemsIterator()]
---EXPECT--
-  * bar
-  * 1/0
-  * 1
-
-  * foo
-  * 2/1
-  * 
-
-
-  * foo/bar
-  * bar/foo
-
-  * foo
-  * bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/objects_countable.test b/vendor/twig/twig/tests/Fixtures/tags/for/objects_countable.test
deleted file mode 100644
index 99146bde36fd3845993997a87ce0fc85d07dbcd6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/objects_countable.test
+++ /dev/null
@@ -1,47 +0,0 @@
---TEST--
-"for" tag iterates over iterable and countable objects
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-  * {{ loop.index }}/{{ loop.index0 }}
-  * {{ loop.revindex }}/{{ loop.revindex0 }}
-  * {{ loop.first }}/{{ loop.last }}/{{ loop.length }}
-
-{% endfor %}
-
-{% for key, value in items %}
-  * {{ key }}/{{ value }}
-{% endfor %}
-
-{% for key in items|keys %}
-  * {{ key }}
-{% endfor %}
---DATA--
-class ItemsIteratorCountable implements Iterator, \Countable
-{
-  protected $values = ['foo' => 'bar', 'bar' => 'foo'];
-  public function current() { return current($this->values); }
-  public function key() { return key($this->values); }
-  public function next() { return next($this->values); }
-  public function rewind() { return reset($this->values); }
-  public function valid() { return false !== current($this->values); }
-  public function count() { return count($this->values); }
-}
-return ['items' => new ItemsIteratorCountable()]
---EXPECT--
-  * bar
-  * 1/0
-  * 2/1
-  * 1//2
-
-  * foo
-  * 2/1
-  * 1/0
-  * /1/2
-
-
-  * foo/bar
-  * bar/foo
-
-  * foo
-  * bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/recursive.test b/vendor/twig/twig/tests/Fixtures/tags/for/recursive.test
deleted file mode 100644
index 3b677d60ffb9a3be25aa27fcf5d83359b8c05621..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/recursive.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"for" tags can be nested
---TEMPLATE--
-{% for key, item in items %}
-* {{ key }} ({{ loop.length }}):
-{% for value in item %}
-  * {{ value }} ({{ loop.length }})
-{% endfor %}
-{% endfor %}
---DATA--
-return ['items' => ['a' => ['a1', 'a2', 'a3'], 'b' => ['b1']]]
---EXPECT--
-* a (2):
-  * a1 (3)
-  * a2 (3)
-  * a3 (3)
-* b (2):
-  * b1 (1)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/values.test b/vendor/twig/twig/tests/Fixtures/tags/for/values.test
deleted file mode 100644
index 384c41b288678702d6dc8688b2de55fe50d0bdf5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/values.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"for" tag iterates over item values
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * a
-  * b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/from.test b/vendor/twig/twig/tests/Fixtures/tags/from.test
deleted file mode 100644
index 1d3c9e2b58ccb8a884256ee3c6cea9133944d705..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/from.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-global variables
---TEMPLATE--
-{% include "included.twig" %}
-{% from "included.twig" import foobar %}
-{{ foobar() }}
---TEMPLATE(included.twig)--
-{% macro foobar() %}
-called foobar
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-called foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/if/basic.test b/vendor/twig/twig/tests/Fixtures/tags/if/basic.test
deleted file mode 100644
index a02165e539e92943f2363462e27802679f6add87..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/if/basic.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"if" creates a condition
---TEMPLATE--
-{% if a is defined %}
-  {{ a }}
-{% elseif b is defined %}
-  {{ b }}
-{% else %}
-  NOTHING
-{% endif %}
---DATA--
-return ['a' => 'a']
---EXPECT--
-  a
---DATA--
-return ['b' => 'b']
---EXPECT--
-  b
---DATA--
-return []
---EXPECT--
-  NOTHING
diff --git a/vendor/twig/twig/tests/Fixtures/tags/if/expression.test b/vendor/twig/twig/tests/Fixtures/tags/if/expression.test
deleted file mode 100644
index eb65083c615e01d80a01056ddf5b988c9911e499..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/if/expression.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"if" takes an expression as a test
---TEMPLATE--
-{% if a < 2 %}
-  A1
-{% elseif a > 10 %}
-  A2
-{% else %}
-  A3
-{% endif %}
---DATA--
-return ['a' => 1]
---EXPECT--
-  A1
---DATA--
-return ['a' => 12]
---EXPECT--
-  A2
---DATA--
-return ['a' => 7]
---EXPECT--
-  A3
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/basic.test b/vendor/twig/twig/tests/Fixtures/tags/include/basic.test
deleted file mode 100644
index 9982b039d02ee8bfbfe88050150932ac46408673..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/basic.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-FOO
-{% include "foo.twig" %}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return []
---EXPECT--
-FOO
-
-FOOBAR
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/expression.test b/vendor/twig/twig/tests/Fixtures/tags/include/expression.test
deleted file mode 100644
index 23db181238909af98abaa2138ab73fa01ca8cd90..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/expression.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag allows expressions for the template to include
---TEMPLATE--
-FOO
-{% include foo %}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
-
-FOOBAR
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing.test b/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing.test
deleted file mode 100644
index 6c8bdb1e92b37a6ca6c96be98219caf09ed8d74e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include ["foo.twig", "bar.twig"] ignore missing %}
-{% include "foo.twig" ignore missing %}
-{% include "foo.twig" ignore missing with {} %}
-{% include "foo.twig" ignore missing with {} only %}
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing_exists.test b/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing_exists.test
deleted file mode 100644
index 1af012210e4dac336bf13c4709f314e29bdd6f2e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing_exists.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include "included.twig" ignore missing %}
-NOT DISPLAYED
---TEMPLATE(included.twig)--
-{% include "DOES NOT EXIST" %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "included.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/include_missing_extends.test b/vendor/twig/twig/tests/Fixtures/tags/include/include_missing_extends.test
deleted file mode 100644
index d0d1bfe5907a0ef5c7d1f5480e70402085c073de..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/include_missing_extends.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include ['bad.twig', 'good.twig'] ignore missing %}
-NOT DISPLAYED
---TEMPLATE(bad.twig)--
-{% extends 'DOES NOT EXIST' %}
---TEMPLATE(good.twig)--
-NOT DISPLAYED
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "bad.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/missing.test b/vendor/twig/twig/tests/Fixtures/tags/include/missing.test
deleted file mode 100644
index ac72838e8493e65fbddf4658fe19b89bb0278bcd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/missing.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include "foo.twig" %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/missing_nested.test b/vendor/twig/twig/tests/Fixtures/tags/include/missing_nested.test
deleted file mode 100644
index 0ee51b78622a90580798a17ff4c7174c66245776..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/missing_nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}
-    {% include "foo.twig" %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "base.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/only.test b/vendor/twig/twig/tests/Fixtures/tags/include/only.test
deleted file mode 100644
index 8da402f7a83e32d07e6c5f5add9c6987bf91bcba..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/only.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-"include" tag accept variables and only
---TEMPLATE--
-{% include "foo.twig" %}
-{% include "foo.twig" only %}
-{% include "foo.twig" with vars1 %}
-{% include "foo.twig" with vars1 only %}
-{% include "foo.twig" with vars2 %}
-{% include "foo.twig" with vars2 only %}
---TEMPLATE(foo.twig)--
-{% for k, v in _context %}{{ k }},{% endfor %}
---DATA--
-return ['vars1' => ['foo1' => 'bar'], 'vars2' => new ArrayObject(['foo2' => 'bar'])]
---EXPECT--
-vars1,vars2,global,_parent,
-global,_parent,
-vars1,vars2,global,foo1,_parent,
-foo1,global,_parent,
-vars1,vars2,global,foo2,_parent,
-foo2,global,_parent,
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/template_instance.test b/vendor/twig/twig/tests/Fixtures/tags/include/template_instance.test
deleted file mode 100644
index 4fb862a175c195b7d747194cafc75646c18c2636..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/template_instance.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" tag accepts \Twig\TemplateWrapper instance
---TEMPLATE--
-{% include foo %} FOO
---TEMPLATE(foo.twig)--
-BAR
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-BAR FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/templates_as_array.test b/vendor/twig/twig/tests/Fixtures/tags/include/templates_as_array.test
deleted file mode 100644
index 38063952d41aa60a74e5318e43bedf1cb0d0b7d2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/templates_as_array.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include ["foo.twig", "bar.twig"] %}
-{% include ["bar.twig", "foo.twig"] %}
---TEMPLATE(foo.twig)--
-foo
---DATA--
-return []
---EXPECT--
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/with_variables.test b/vendor/twig/twig/tests/Fixtures/tags/include/with_variables.test
deleted file mode 100644
index 45a05199ec61c6445b1324ee7d2567c62a15cabe..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/with_variables.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"include" tag accept variables
---TEMPLATE--
-{% include "foo.twig" with {'foo': 'bar'} %}
-{% include "foo.twig" with vars1 %}
-{% include "foo.twig" with vars2 %}
---TEMPLATE(foo.twig)--
-{{ foo }}
---DATA--
-return ['vars1' => ['foo' => 'bar'], 'vars2' => new ArrayObject(['foo' => 'bar'])]
---EXPECT--
-bar
-bar
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/basic.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/basic.test
deleted file mode 100644
index 703b61be176557b82a769ecc098c2d8e1c1e0eff..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/basic.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}
-FOO
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}{% endblock %}
---DATA--
-return []
---EXPECT--
-FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr.test
deleted file mode 100644
index 0b82d4cf2ddb24de10ba92a8162d812fe36001af..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr.test
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-block_expr
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block element -%}
-    Element:
-    {{- parent() -}}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block element -%}
-    <div>
-        {%- if item.children is defined %}
-            {%- for item in item.children %}
-                {{- block('element') -}}
-            {% endfor %}
-        {%- endif -%}
-    </div>
-{%- endblock %}
---DATA--
-return [
-    'item' => [
-        'children' => [
-            null,
-            null,
-        ]
-    ]
-]
---EXPECT--
-Element:<div>Element:<div></div>Element:<div></div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr2.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr2.test
deleted file mode 100644
index 18f6604113e8650b79a26c19a893fed8115b544c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr2.test
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-block_expr2
---TEMPLATE--
-{% extends "base2.twig" %}
-
-{% block element -%}
-    Element:
-    {{- parent() -}}
-{% endblock %}
---TEMPLATE(base2.twig)--
-{% extends "base.twig" %}
---TEMPLATE(base.twig)--
-{% block element -%}
-    <div>
-        {%- if item.children is defined %}
-            {%- for item in item.children %}
-                {{- block('element') -}}
-            {% endfor %}
-        {%- endif -%}
-    </div>
-{%- endblock %}
---DATA--
-return [
-    'item' => [
-        'children' => [
-            null,
-            null,
-        ]
-    ]
-]
---EXPECT--
-Element:<div>Element:<div></div>Element:<div></div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/conditional.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/conditional.test
deleted file mode 100644
index bd28248d137731dd99d25b0dad05ba6124e535cc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/conditional.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends standalone ? foo : 'bar.twig' %}
-
-{% block content %}{{ parent() }}FOO{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}FOO{% endblock %}
---TEMPLATE(bar.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return ['foo' => 'foo.twig', 'standalone' => true]
---EXPECT--
-FOOFOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/dynamic.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/dynamic.test
deleted file mode 100644
index e6a0f017280fa58e20d22ba45026e5401f14897d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/dynamic.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends foo %}
-
-{% block content %}
-FOO
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}{% endblock %}
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/empty.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/empty.test
deleted file mode 100644
index ca11bf20d1b2109d22c9a779ae7d55890a6c1f7e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/empty.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
---TEMPLATE(foo.twig)--
-{% block content %}FOO{% endblock %}
---DATA--
-return []
---EXPECT--
-FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array.test
deleted file mode 100644
index 4d2cb6c65724d30c3d95ddc27388a124329377b3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends ["foo.twig", "bar.twig"] %}
---TEMPLATE(bar.twig)--
-{% block content %}
-foo
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test
deleted file mode 100644
index 5108651103bcb5b4954e538559529e5c1d050b59..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends ["", "bar.twig"] %}
---TEMPLATE(bar.twig)--
-{% block content %}
-foo
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test
deleted file mode 100644
index c5ee6f193b7d77a47eaa23cbcc378d17cfd6e72a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends [null, "bar.twig"] %}
---TEMPLATE(bar.twig)--
-{% block content %}
-foo
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_block.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_block.test
deleted file mode 100644
index a372ea1c81ec000b4f79999fcea4449becb00f0f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_block.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"extends" tag in a block
---TEMPLATE--
-{% block foo %}
-    {% extends "foo.twig" %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Cannot use "extend" in a block in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_macro.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_macro.test
deleted file mode 100644
index dc87b2a8c2dd086cacf5fd31807245c606743804..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_macro.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"extends" tag in a macro
---TEMPLATE--
-{% macro foo() %}
-    {% extends "foo.twig" %}
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Cannot use "extend" in a macro in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple.test
deleted file mode 100644
index fc25badd34f1d4c35dacd728d2ee8c471b62e9aa..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "layout.twig" %}{% block content %}{{ parent() }}index {% endblock %}
---TEMPLATE(layout.twig)--
-{% extends "base.twig" %}{% block content %}{{ parent() }}layout {% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}base {% endblock %}
---DATA--
-return []
---EXPECT--
-base layout index
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple_dynamic.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple_dynamic.test
deleted file mode 100644
index fa887177bd31aca407c2385fdabb74d1d0079479..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple_dynamic.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% set foo = 1 %}
-{{ include('parent.twig') }}
-{{ include('parent.twig') }}
-{% set foo = 2 %}
-{{ include('parent.twig') }}
---TEMPLATE(parent.twig)--
-{% extends foo~'_parent.twig' %}{% block content %}{{ parent() }} parent{% endblock %}
---TEMPLATE(1_parent.twig)--
-{% block content %}1{% endblock %}
---TEMPLATE(2_parent.twig)--
-{% block content %}2{% endblock %}
---DATA--
-return []
---EXPECT--
-1 parent
-
-1 parent
-
-2 parent
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks.test
deleted file mode 100644
index abea2e9d4730ba1aad960001d8efd72ef361d757..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}
-    {% block subcontent %}
-        {% block subsubcontent %}
-            SUBSUBCONTENT
-        {% endblock %}
-    {% endblock %}
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}
-    {% block subcontent %}
-        SUBCONTENT
-    {% endblock %}
-{% endblock %}
---DATA--
-return []
---EXPECT--
-SUBSUBCONTENT
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test
deleted file mode 100644
index 20b7848f8d329776d1c8d2d40b775852c4ce6aaa..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% block content %}
-    CONTENT
-    {%- block subcontent -%}
-        SUBCONTENT
-    {%- endblock -%}
-    ENDCONTENT
-{% endblock %}
---TEMPLATE(foo.twig)--
---DATA--
-return []
---EXPECT--
-CONTENTSUBCONTENTENDCONTENT
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_inheritance.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_inheritance.test
deleted file mode 100644
index 0b585b4809cbeba1935d04ea2080edee72aa7774..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_inheritance.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "layout.twig" %}
-{% block inside %}INSIDE{% endblock inside %}
---TEMPLATE(layout.twig)--
-{% extends "base.twig" %}
-{% block body %}
-    {% block inside '' %}
-{% endblock body %}
---TEMPLATE(base.twig)--
-{% block body '' %}
---DATA--
-return []
---EXPECT--
-INSIDE
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent.test
deleted file mode 100644
index 73f4c0ec5eb54b323b3e4cbb81cd964abf541792..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}{{ parent() }}FOO{{ parent() }}{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return []
---EXPECT--
-BARFOOBAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_as_template_wrapper.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_as_template_wrapper.test
deleted file mode 100644
index 1aaed556c5761bfe4f6032cb9a717f4d6472fb08..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_as_template_wrapper.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag with a parent as a Twig_TemplateWrapper instance
---TEMPLATE--
-{% extends foo %}
-
-{% block content %}New{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}Default{% endblock %}
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-New
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_change.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_change.test
deleted file mode 100644
index 01bd544f83c21e00b76fe7695ad18b767fe1c8b0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_change.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends foo ? 'foo.twig' : 'bar.twig' %}
---TEMPLATE(foo.twig)--
-FOO
---TEMPLATE(bar.twig)--
-BAR
---DATA--
-return ['foo' => true]
---EXPECT--
-FOO
---DATA--
-return ['foo' => false]
---EXPECT--
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_isolation.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_isolation.test
deleted file mode 100644
index 58a37bd9021a6b4ad58d4155f26b4136d4665ecb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_isolation.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "base.twig" %}
-{% block content %}{% include "included.twig" %}{% endblock %}
-
-{% block footer %}Footer{% endblock %}
---TEMPLATE(included.twig)--
-{% extends "base.twig" %}
-{% block content %}Included Content{% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}Default Content{% endblock %}
-
-{% block footer %}Default Footer{% endblock %}
---DATA--
-return []
---EXPECT--
-Included Content
-Default Footer
-Footer
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_nested.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_nested.test
deleted file mode 100644
index d4347bac4f8b4bd54c154bd2d4b12218652657d4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_nested.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}
-  {% block inside %}
-    INSIDE OVERRIDDEN
-  {% endblock %}
-
-  BEFORE
-  {{ parent() }}
-  AFTER
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}
-  BAR
-{% endblock %}
---DATA--
-return []
---EXPECT--
-
-INSIDE OVERRIDDEN
-  
-  BEFORE
-    BAR
-
-  AFTER
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends.test
deleted file mode 100644
index 6d98891553d07630f4cb015f23c73bb12ae8b954..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"parent" tag
---TEMPLATE--
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: Calling "parent" on a template that does not extend nor "use" another template is forbidden in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test
deleted file mode 100644
index 39882b8b39d3714e35d1a87eca28505e97742ffd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"parent" tag
---TEMPLATE--
-{% use 'foo.twig' %}
-
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return []
---EXPECT--
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/template_instance.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/template_instance.test
deleted file mode 100644
index a5a223886dc640742a579ff9326c3c061b6e4b5c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/template_instance.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag accepts Twig_Template instance
---TEMPLATE--
-{% extends foo %}
-
-{% block content %}
-{{ parent() }}FOO
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-BARFOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/use.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/use.test
deleted file mode 100644
index 4df32ee9d3f24b8d0aecc96f843adec898c36d58..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/use.test
+++ /dev/null
@@ -1,44 +0,0 @@
---TEST--
-"parent" function
---TEMPLATE--
-{% extends "parent.twig" %}
-
-{% use "use1.twig" %}
-{% use "use2.twig" %}
-
-{% block content_parent %}
-    {{ parent() }}
-{% endblock %}
-
-{% block content_use1 %}
-    {{ parent() }}
-{% endblock %}
-
-{% block content_use2 %}
-    {{ parent() }}
-{% endblock %}
-
-{% block content %}
-    {{ block('content_use1_only') }}
-    {{ block('content_use2_only') }}
-{% endblock %}
---TEMPLATE(parent.twig)--
-{% block content_parent 'content_parent' %}
-{% block content_use1 'content_parent' %}
-{% block content_use2 'content_parent' %}
-{% block content '' %}
---TEMPLATE(use1.twig)--
-{% block content_use1 'content_use1' %}
-{% block content_use2 'content_use1' %}
-{% block content_use1_only 'content_use1_only' %}
---TEMPLATE(use2.twig)--
-{% block content_use2 'content_use2' %}
-{% block content_use2_only 'content_use2_only' %}
---DATA--
-return []
---EXPECT--
-    content_parent
-    content_use1
-    content_use2
-    content_use1_only
-    content_use2_only
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/basic.test b/vendor/twig/twig/tests/Fixtures/tags/macro/basic.test
deleted file mode 100644
index ae090f9a06911e925230150cc5294e874e0f44fe..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/basic.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.input('username') }}
-{{ macros.input('password', null, 'password', 1) }}
-
-{% macro input(name, value, type, size) %}
-  <input type="{{ type|default("text") }}" name="{{ name }}" value="{{ value|e|default('') }}" size="{{ size|default(20) }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  <input type="text" name="username" value="" size="20">
-
-  <input type="password" name="password" value="" size="1">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/endmacro_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/endmacro_name.test
deleted file mode 100644
index 3f3caf7773b30878d21152a594d0efbb66dc096e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/endmacro_name.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"macro" tag supports name for endmacro
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.foo() }}
-{{ macros.bar() }}
-
-{% macro foo() %}foo{% endmacro %}
-{% macro bar() %}bar{% endmacro bar %}
---DATA--
-return []
---EXPECT--
-foo
-bar
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/external.test b/vendor/twig/twig/tests/Fixtures/tags/macro/external.test
deleted file mode 100644
index b28ca19f029ebe1f945cde0c8584197f0bb886b3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/external.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import 'forms.twig' as forms %}
-
-{{ forms.input('username') }}
-{{ forms.input('password', null, 'password', 1) }}
---TEMPLATE(forms.twig)--
-{% macro input(name, value, type, size) %}
-  <input type="{{ type|default("text") }}" name="{{ name }}" value="{{ value|e|default('') }}" size="{{ size|default(20) }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  <input type="text" name="username" value="" size="20">
-
-  <input type="password" name="password" value="" size="1">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from.test
deleted file mode 100644
index 8b9aae87890f34e791425ac62b42bfcb743addd8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% from 'forms.twig' import foo %}
-{% from 'forms.twig' import foo as foobar, bar %}
-
-{{ foo('foo') }}
-{{ foobar('foo') }}
-{{ bar('foo') }}
---TEMPLATE(forms.twig)--
-{% macro foo(name) %}foo{{ name }}{% endmacro %}
-{% macro bar(name) %}bar{{ name }}{% endmacro %}
---DATA--
-return []
---EXPECT--
-foofoo
-foofoo
-barfoo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_in_block_is_local.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_in_block_is_local.test
deleted file mode 100644
index 0c89ce62a8f5cf9fdbb4dd89e58213b2b05a26b5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_in_block_is_local.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- from _self import input as linput %}
-{% endblock %}
-
-{% block bar %}
-    {{- linput('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "linput" function in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_local_override.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_local_override.test
deleted file mode 100644
index 27bfbaee1f19c63e8b57e211ed6e6de0b9e84846..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_local_override.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- from _self import input %}
-
-{% block foo %}
-    {%- from "macros" import input %}
-    {{- input('username') }}
-{% endblock %}
-
-{% block bar %}
-    {{- input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---TEMPLATE(macros)--
-{% macro input(name) %}
-    <input name="{{ name }}" value="local">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username" value="local">
-
-
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_macro_in_a_macro.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_macro_in_a_macro.test
deleted file mode 100644
index 87ac25c3103003bad44e03236e3ee98e0b30a4c2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_macro_in_a_macro.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"from" tag with syntax error
---TEMPLATE--
-{% from _self import another, foo %}
-
-{{ foo() }}
-
-{% macro foo() %}
-    {{ another() }}
-{% endmacro %}
-
-{% macro another() %}
-    OK
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "another" function in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks.test
deleted file mode 100644
index 8ede5db5094fac92ecc2f6fcce9e5b7552059b82..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- from _self import input as linput %}
-
-    {% block bar %}
-        {{- linput('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "linput" function in "index.twig" at line 6.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks_with_global_macro.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks_with_global_macro.test
deleted file mode 100644
index f737bf0d8b5e06fdffd03c627ae4d44988846862..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks_with_global_macro.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- from _self import input %}
-
-{% block foo %}
-    {% block bar %}
-        {{- input('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "input" function in "index.twig" at line 6.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_syntax_error.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_syntax_error.test
deleted file mode 100644
index 6223cfe947a8261e6c5decb8b0b1396d3023adf3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_syntax_error.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"from" tag with syntax error
---TEMPLATE--
-{% from 'forms.twig' %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "end of statement block" ("name" expected with value "import") in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_with_reserved_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_with_reserved_name.test
deleted file mode 100644
index 19adb9df4cec1113a211559c4139c550ac40a5aa..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_with_reserved_name.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"from" tag with reserved name
---TEMPLATE--
-{% from 'forms.twig' import templateName %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: "templateName" cannot be an imported macro as it is a reserved keyword in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/global.test b/vendor/twig/twig/tests/Fixtures/tags/macro/global.test
deleted file mode 100644
index 832740eac5612f57ea35e9ef0de43c0fb8162014..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/global.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% from 'forms.twig' import foo %}
-
-{{ foo('foo') }}
-{{ foo() }}
---TEMPLATE(forms.twig)--
-{% macro foo(name) %}{{ name|default('foo') }}{{ global }}{% endmacro %}
---DATA--
-return []
---EXPECT--
-fooglobal
-fooglobal
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_and_blocks.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_and_blocks.test
deleted file mode 100644
index 721f5506a5ab2a442596e4acabc37e9255bb6529..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_and_blocks.test
+++ /dev/null
@@ -1,36 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import _self as macros %}
-{% from _self import input %}
-
-{% block foo %}
-    {{- macros.input('username') }}
-    {{- input('username') }}
-
-    {%- import _self as lmacros %}
-    {%- from _self import input as linput %}
-
-    {{- lmacros.input('username') }}
-    {{- linput('username') }}
-{% endblock %}
-
-{% block bar %}
-    {{- macros.input('username') }}
-    {{- input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username">
-<input name="username">
-<input name="username">
-<input name="username">
-
-
-<input name="username">
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_from_string_template.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_from_string_template.test
deleted file mode 100644
index 6c1817be7db40f04059847cc0729aa25cff41c42..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_from_string_template.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"import" tag with a template as string
---TEMPLATE--
-{% import template_from_string("{% macro test() %}ok{% endmacro %}") as m %}
-{{ m.test() }}
---TEMPLATE(forms.twig)--
---DATA--
-return []
---EXPECT--
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_in_block_is_local.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_in_block_is_local.test
deleted file mode 100644
index 9443e122215446fc1942dbc9677013fe5c2f06fd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_in_block_is_local.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- import _self as lmacros %}
-{% endblock %}
-
-{% block bar %}
-    {{- lmacros.input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "lmacros" does not exist in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_local_override.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_local_override.test
deleted file mode 100644
index 7cf0552f836ce5a36d2b2612614b8d2ce664457c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_local_override.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- import _self as macros %}
-
-{% block foo %}
-    {%- import "macros" as macros %}
-    {{- macros.input('username') }}
-{% endblock %}
-
-{% block bar %}
-    {{- macros.input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---TEMPLATE(macros)--
-{% macro input(name) %}
-    <input name="{{ name }}" value="local">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username" value="local">
-
-
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_macro_in_a_macro.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_macro_in_a_macro.test
deleted file mode 100644
index d224482e197725c6c7daac9eba4dc79dd4e25014..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_macro_in_a_macro.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"import" tag with syntax error
---TEMPLATE--
-{% import _self as foo %}
-
-{{ foo.foo() }}
-
-{% macro foo() %}
-    {{ foo.another() }}
-{% endmacro %}
-
-{% macro another() %}
-    OK
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "foo" does not exist in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks.legacy.test
deleted file mode 100644
index e822c7ff48258b49891decf44520f15087ed2b1c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks.legacy.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- import _self as lmacros %}
-
-    {% block bar %}
-        {{- lmacros.input('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks_with_global_macro.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks_with_global_macro.legacy.test
deleted file mode 100644
index 697d665f84f523677eedaf550637ac0f8009905c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks_with_global_macro.legacy.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- import _self as macros %}
-
-{% block foo %}
-    {% block bar %}
-        {{- macros.input('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_self_parent.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_self_parent.test
deleted file mode 100644
index 24a8cdb50b7d22c0e12158a6f2e60ee3d0769802..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_self_parent.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% extends "parent" %}
-{% import _self as me %}
-
-{% block test %}
-    {{ me.hello() }}
-{% endblock test %}
---TEMPLATE(parent)--
-{% import _self as me %}
-
-{% block test %}
-Hello
-{% endblock test %}
-
-{% macro hello() %}
-    Test
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-Test
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_syntax_error.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_syntax_error.test
deleted file mode 100644
index b9817f0eed63523308d37f1e8e5a0041aed30a8f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_syntax_error.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"import" tag with reserved name
---TEMPLATE--
-{% import 'forms.twig' %}
-
-{{ macros.parent() }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "end of statement block" ("name" expected with value "as") in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_with_reserved_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_with_reserved_name.test
deleted file mode 100644
index 34b8d43a25ae24fa9deb80e816f085148d025db1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_with_reserved_name.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"from" tag with reserved name
---TEMPLATE--
-{% import 'forms.twig' as macros %}
-
-{{ macros.parent() }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: "parent" cannot be called as macro as it is a reserved keyword in "index.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/reserved_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/reserved_name.test
deleted file mode 100644
index e58dd7caccbc18162ac9e5ac56e3907d3dd09bcc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/reserved_name.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"macro" tag with reserved name
---TEMPLATE--
-{% macro parent(arg1, arg2) %}
-    parent
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: "parent" cannot be used as a macro name as it is a reserved keyword in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/self_import.test b/vendor/twig/twig/tests/Fixtures/tags/macro/self_import.test
deleted file mode 100644
index ca3157dd88451a0a605e7b16a2d45d2a9b90aa11..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/self_import.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import _self as forms %}
-
-{{ forms.input('username') }}
-{{ forms.input('password', null, 'password', 1) }}
-
-{% macro input(name, value, type, size) %}
-  <input type="{{ type|default("text") }}" name="{{ name }}" value="{{ value|e|default('') }}" size="{{ size|default(20) }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  <input type="text" name="username" value="" size="20">
-
-  <input type="password" name="password" value="" size="1">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/special_chars.test b/vendor/twig/twig/tests/Fixtures/tags/macro/special_chars.test
deleted file mode 100644
index 491e91e80d70c1659455a13d72602bfe26c6a647..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/special_chars.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"§" as a macro name
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.§('foo') }}
-
-{% macro §(foo) %}
-  §{{ foo }}§
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-§foo§
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/super_globals.test b/vendor/twig/twig/tests/Fixtures/tags/macro/super_globals.test
deleted file mode 100644
index 643697ce28cabfee458c56229a6b50d69c197361..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/super_globals.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Super globals as macro arguments
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.foo('foo') }}
-
-{% macro foo(GET) %}
-    {{ GET }}
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/raw/basic.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/raw/basic.legacy.test
deleted file mode 100644
index 7875b2af72331d977a5cd9decb386c8c1686d028..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/raw/basic.legacy.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"raw" tag
---TEMPLATE--
-{% raw %}
-{{ foo }}
-{% endraw %}
---DATA--
-return []
---EXPECT--
-{{ foo }}
diff --git a/vendor/twig/twig/tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test
deleted file mode 100644
index d4c8dd2cd1fc07fea17a0446ce6e078d864771d7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"raw" tag
---TEMPLATE--
-{% raw %}
-{{ foo }}
-{% endverbatim %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected end of file: Unclosed "raw" block in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/raw/whitespace_control.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/raw/whitespace_control.legacy.test
deleted file mode 100644
index 11f42025e13d2c08680a017cd6a42a0a1d5815db..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/raw/whitespace_control.legacy.test
+++ /dev/null
@@ -1,56 +0,0 @@
---TEST--
-"raw" tag
---TEMPLATE--
-1***
-
-{%- raw %}
-    {{ 'bla' }}
-{% endraw %}
-
-1***
-2***
-
-{%- raw -%}
-    {{ 'bla' }}
-{% endraw %}
-
-2***
-3***
-
-{%- raw -%}
-    {{ 'bla' }}
-{% endraw -%}
-
-3***
-4***
-
-{%- raw -%}
-    {{ 'bla' }}
-{%- endraw %}
-
-4***
-5***
-
-{%- raw -%}
-    {{ 'bla' }}
-{%- endraw -%}
-
-5***
---DATA--
-return []
---EXPECT--
-1***
-    {{ 'bla' }}
-
-
-1***
-2***{{ 'bla' }}
-
-
-2***
-3***{{ 'bla' }}
-3***
-4***{{ 'bla' }}
-
-4***
-5***{{ 'bla' }}5***
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/array.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/array.test
deleted file mode 100644
index b432427e4a638079edf4d67fb76d570081078d56..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/array.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-{%- endsandbox %}
---TEMPLATE(foo.twig)--
-{{ [a][0] }}
-{{ dump([a][0]) }}
---DATA--
-return ['a' => 'b']
---CONFIG--
-return ['autoescape' => false, 'debug' => true]
---EXPECT--
-b
-string(1) "b"
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid1.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid1.test
deleted file mode 100644
index e26a78bc1576df3d70fc79230ab2a2b52246573d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid1.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-    a
-{%- endsandbox %}
---TEMPLATE(foo.twig)--
-foo
---EXCEPTION--
-Twig\Error\SyntaxError: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid2.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid2.test
deleted file mode 100644
index bb2a329715aa20d74484396ef9afc9fa9b430279..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid2.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-
-    {% if 1 %}
-        {%- include "foo.twig" %}
-    {% endif %}
-{%- endsandbox %}
---TEMPLATE(foo.twig)--
-foo
---EXCEPTION--
-Twig\Error\SyntaxError: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/simple.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/simple.test
deleted file mode 100644
index 4d232d8bbd2447d00d79dcb7a0edc2c4a144ab1f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/simple.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-{%- endsandbox %}
-
-{%- sandbox %}
-    {%- include "foo.twig" %}
-    {%- include "foo.twig" %}
-{%- endsandbox %}
-
-{%- sandbox %}{% include "foo.twig" %}{% endsandbox %}
---TEMPLATE(foo.twig)--
-foo
---DATA--
-return []
---EXPECT--
-foo
-foo
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/basic.test b/vendor/twig/twig/tests/Fixtures/tags/set/basic.test
deleted file mode 100644
index aae1427e8103cd7617a82c53b5d7e74ce29f9d08..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/basic.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-"set" tag
---TEMPLATE--
-{% set foo = 'foo' %}
-{% set bar = 'foo<br />' %}
-
-{{ foo }}
-{{ bar }}
-
-{% set foo, bar = 'foo', 'bar' %}
-
-{{ foo }}{{ bar }}
---DATA--
-return []
---EXPECT--
-foo
-foo&lt;br /&gt;
-
-
-foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/capture-empty.test b/vendor/twig/twig/tests/Fixtures/tags/set/capture-empty.test
deleted file mode 100644
index 97fc43cc2ab57f7a01b0599776d5c06ab9a70c9d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/capture-empty.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-"set" tag block empty capture
---TEMPLATE--
-{% set foo %}{% endset %}
-
-{% if foo %}FAIL{% endif %}
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/capture.test b/vendor/twig/twig/tests/Fixtures/tags/set/capture.test
deleted file mode 100644
index c3faf250038f5b20b6b7a175de4d332dcd2f0791..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/capture.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"set" tag block capture
---TEMPLATE--
-{% set foo %}f<br />o<br />o{% endset %}
-
-{{ foo }}
---DATA--
-return []
---EXPECT--
-f<br />o<br />o
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/capture_scope.test b/vendor/twig/twig/tests/Fixtures/tags/set/capture_scope.test
deleted file mode 100644
index bb2bbebaf0eb94acdeb9e7b5773b9828cfd0d752..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/capture_scope.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"set" tag block capture
---TEMPLATE--
-{% set foo %}{{ foo }}{% endset %}
-
-{{ foo }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/expression.test b/vendor/twig/twig/tests/Fixtures/tags/set/expression.test
deleted file mode 100644
index bd472771a66c69311c06a4d94ab227bec8e4aaae..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/expression.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"set" tag
---TEMPLATE--
-{% set foo, bar = 'foo' ~ 'bar', 'bar' ~ 'foo' %}
-
-{{ foo }}
-{{ bar }}
---DATA--
-return []
---EXPECT--
-foobar
-barfoo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance.test b/vendor/twig/twig/tests/Fixtures/tags/set/inheritance.test
deleted file mode 100644
index 79e89ce79b7d1c21c436050e6e0dbc3f9c438d6f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"set" tag with inheritance
---TEMPLATE--
-{% extends "layout.twig" %}
-
-{% set bar %}bar{% endset %}
-
-{% block var_from_child %}
-    {{- bar -}}
-{% endblock %}
---TEMPLATE(layout.twig)--
-{% set foo %}foo{% endset %}
-
-{% block var_from_layout %}
-    {{- foo -}}
-{% endblock %}
-
-{% block var_from_child %}
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance_overriding.test b/vendor/twig/twig/tests/Fixtures/tags/set/inheritance_overriding.test
deleted file mode 100644
index 2d23c83ae6725b5aaa0953a038009cdf5c060e38..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance_overriding.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"set" tag with inheritance
---TEMPLATE--
-{% extends "layout.twig" %}
-
-{% set foo %}bar{% endset %}
-
-{% block var_from_child %}
-    {{- foo -}}
-{% endblock %}
---TEMPLATE(layout.twig)--
-{% set foo %}foo{% endset %}
-
-{% block var_from_layout %}
-    {{- foo -}}
-{% endblock %}
-
-{% block var_from_child %}
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/mutating.test b/vendor/twig/twig/tests/Fixtures/tags/set/mutating.test
deleted file mode 100644
index ae388bb873a3f3f059698ede4c29e7eb498851f4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/mutating.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"set" tag
---TEMPLATE--
-{% set foo = "foo" %}
-
-{% set bar %}
-    {%- set foo = "bar" -%}
-    bar
-{% endset %}
-
-{{ foo }}
-{{ bar }}
---DATA--
-return []
---EXPECT--
-bar
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/spaceless/simple.test b/vendor/twig/twig/tests/Fixtures/tags/spaceless/simple.test
deleted file mode 100644
index 98bd27a13a7bf460c1e730ea8f2dcbc6a8e27434..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/spaceless/simple.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"spaceless" tag removes whites between HTML tags
---TEMPLATE--
-{% spaceless %}
-
-    <div>   <div>   foo   </div>   </div>
-
-{% endspaceless %}
---DATA--
-return []
---EXPECT--
-<div><div>   foo   </div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/special_chars.test b/vendor/twig/twig/tests/Fixtures/tags/special_chars.test
deleted file mode 100644
index 64ffd1d76bf70c56809c91c0435bea52b4b00f7c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/special_chars.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"§" custom tag
---TEMPLATE--
-{% § %}
---DATA--
-return []
---EXPECT--
-§
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/aliases.test b/vendor/twig/twig/tests/Fixtures/tags/use/aliases.test
deleted file mode 100644
index b6b1d5c668894281f540162e4e79409b19344438..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/aliases.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "blocks.twig" with content as foo %}
-
-{{ block('foo') }}
---TEMPLATE(blocks.twig)--
-{% block content 'foo' %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/basic.test b/vendor/twig/twig/tests/Fixtures/tags/use/basic.test
deleted file mode 100644
index be622a10e20424baa57ea56cefbfa309eaa2541f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/basic.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "blocks.twig" %}
-
-{{ block('content') }}
---TEMPLATE(blocks.twig)--
-{% block content 'foo' %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/deep.test b/vendor/twig/twig/tests/Fixtures/tags/use/deep.test
deleted file mode 100644
index 771ba642b905dfeefffe4ea2ec0d2111b6bd3039..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/deep.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" %}
-
-{{ block('content') }}
-{{ block('foo') }}
-{{ block('bar') }}
---TEMPLATE(foo.twig)--
-{% use "bar.twig" %}
-
-{% block content 'foo' %}
-{% block foo 'foo' %}
---TEMPLATE(bar.twig)--
-{% block content 'bar' %}
-{% block bar 'bar' %}
---DATA--
-return []
---EXPECT--
-foo
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/deep_empty.test b/vendor/twig/twig/tests/Fixtures/tags/use/deep_empty.test
deleted file mode 100644
index f14ce83de5e7e75b1a6eec7ddd620f710604b471..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/deep_empty.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" %}
---TEMPLATE(foo.twig)--
-{% use "bar.twig" %}
---TEMPLATE(bar.twig)--
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance.test b/vendor/twig/twig/tests/Fixtures/tags/use/inheritance.test
deleted file mode 100644
index 1edeaa1115d06f632796b8b80c216b1ff66fb801..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance.test
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "parent.twig" %}
-
-{{ block('container') }}
---TEMPLATE(parent.twig)--
-{% use "ancestor.twig" %}
-
-{% block sub_container %}
-    <div class="overridden_sub_container">overridden sub_container</div>
-{% endblock %}
---TEMPLATE(ancestor.twig)--
-{% block container %}
-    <div class="container">{{ block('sub_container') }}</div>
-{% endblock %}
-
-{% block sub_container %}
-    <div class="sub_container">sub_container</div>
-{% endblock %}
---DATA--
-return []
---EXPECT--
-<div class="container">    <div class="overridden_sub_container">overridden sub_container</div>
-</div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance2.test b/vendor/twig/twig/tests/Fixtures/tags/use/inheritance2.test
deleted file mode 100644
index accec5094b1aae0c68a0975ecc98135d31962c5a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance2.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "ancestor.twig" %}
-{% use "parent.twig" %}
-
-{{ block('container') }}
---TEMPLATE(parent.twig)--
-{% block sub_container %}
-    <div class="overridden_sub_container">overridden sub_container</div>
-{% endblock %}
---TEMPLATE(ancestor.twig)--
-{% block container %}
-    <div class="container">{{ block('sub_container') }}</div>
-{% endblock %}
-
-{% block sub_container %}
-    <div class="sub_container">sub_container</div>
-{% endblock %}
---DATA--
-return []
---EXPECT--
-<div class="container">    <div class="overridden_sub_container">overridden sub_container</div>
-</div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/use/multiple.test
deleted file mode 100644
index 85a63958dfc46b6474f0a5c43c3d2d5a20476a40..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/multiple.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" %}
-{% use "bar.twig" %}
-
-{{ block('content') }}
-{{ block('foo') }}
-{{ block('bar') }}
---TEMPLATE(foo.twig)--
-{% block content 'foo' %}
-{% block foo 'foo' %}
---TEMPLATE(bar.twig)--
-{% block content 'bar' %}
-{% block bar 'bar' %}
---DATA--
-return []
---EXPECT--
-bar
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/multiple_aliases.test b/vendor/twig/twig/tests/Fixtures/tags/use/multiple_aliases.test
deleted file mode 100644
index 413bdfa4ddf33657c870cfaf2ae5edc05f207657..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/multiple_aliases.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" with content as foo_content %}
-{% use "bar.twig" %}
-
-{{ block('content') }}
-{{ block('foo') }}
-{{ block('bar') }}
-{{ block('foo_content') }}
---TEMPLATE(foo.twig)--
-{% block content 'foo' %}
-{% block foo 'foo' %}
---TEMPLATE(bar.twig)--
-{% block content 'bar' %}
-{% block bar 'bar' %}
---DATA--
-return []
---EXPECT--
-bar
-foo
-bar
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block.test b/vendor/twig/twig/tests/Fixtures/tags/use/parent_block.test
deleted file mode 100644
index 49328f6e87b0bca7d4f14b8ca8acf6df16740c43..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use 'file2.html.twig' with foobar as base_base_foobar %}
-{% block foobar %}
-    {{- block('base_base_foobar') -}}
-    Content of block (second override)
-{% endblock foobar %}
---TEMPLATE(file2.html.twig)--
-{% use 'file1.html.twig' with foobar as base_foobar %}
-{% block foobar %}
-    {{- block('base_foobar') -}}
-    Content of block (first override)
-{% endblock foobar %}
---TEMPLATE(file1.html.twig)--
-{% block foobar -%}
-    Content of block
-{% endblock foobar %}
---DATA--
-return []
---EXPECT--
-Content of block
-Content of block (first override)
-Content of block (second override)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block2.test b/vendor/twig/twig/tests/Fixtures/tags/use/parent_block2.test
deleted file mode 100644
index 274baa82166ab99704d66b93a69fef40a6803348..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block2.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use 'file2.html.twig'%}
-{% block foobar %}
-    {{- parent() -}}
-    Content of block (second override)
-{% endblock foobar %}
---TEMPLATE(file2.html.twig)--
-{% use 'file1.html.twig' %}
-{% block foobar %}
-    {{- parent() -}}
-    Content of block (first override)
-{% endblock foobar %}
---TEMPLATE(file1.html.twig)--
-{% block foobar -%}
-    Content of block
-{% endblock foobar %}
---DATA--
-return []
---EXPECT--
-Content of block
-Content of block (first override)
-Content of block (second override)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block3.test b/vendor/twig/twig/tests/Fixtures/tags/use/parent_block3.test
deleted file mode 100644
index f6f221273f2b65c450284f4197c36e8219048a1c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block3.test
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use 'file2.html.twig' %}
-{% use 'file1.html.twig' with foo %}
-{% block foo %}
-    {{- parent() -}}
-    Content of foo (second override)
-{% endblock foo %}
-{% block bar %}
-    {{- parent() -}}
-    Content of bar (second override)
-{% endblock bar %}
---TEMPLATE(file2.html.twig)--
-{% use 'file1.html.twig' %}
-{% block foo %}
-    {{- parent() -}}
-    Content of foo (first override)
-{% endblock foo %}
-{% block bar %}
-    {{- parent() -}}
-    Content of bar (first override)
-{% endblock bar %}
---TEMPLATE(file1.html.twig)--
-{% block foo -%}
-    Content of foo
-{% endblock foo %}
-{% block bar -%}
-    Content of bar
-{% endblock bar %}
---DATA--
-return []
---EXPECT--
-Content of foo
-Content of foo (first override)
-Content of foo (second override)
-Content of bar
-Content of bar (second override)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/use_with_parent.test b/vendor/twig/twig/tests/Fixtures/tags/use/use_with_parent.test
deleted file mode 100644
index fad9a2d18964989910271ac57eb6db61e7c60baf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/use_with_parent.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag with a parent block
---TEMPLATE--
-{% extends "parent.twig" %}
-
-{% use 'blocks.twig' %}
-
-{% block body %}
-    {{ parent() -}}
-    CHILD
-    {{ block('content') }}
-{% endblock %}
---TEMPLATE(parent.twig)--
-{% block body %}
-    PARENT
-{% endblock %}
---TEMPLATE(blocks.twig)--
-{% block content 'BLOCK' %}
---DATA--
-return []
---EXPECT--
-PARENT
-CHILD
-    BLOCK
diff --git a/vendor/twig/twig/tests/Fixtures/tags/verbatim/basic.test b/vendor/twig/twig/tests/Fixtures/tags/verbatim/basic.test
deleted file mode 100644
index 9b60abc49fd79e11e2cd3331a36879f77a30ac24..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/verbatim/basic.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"verbatim" tag
---TEMPLATE--
-{% verbatim %}
-{{ foo }}
-{% endverbatim %}
---DATA--
-return []
---EXPECT--
-{{ foo }}
diff --git a/vendor/twig/twig/tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test b/vendor/twig/twig/tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test
deleted file mode 100644
index 2177538d51b40f88ab26e1e90b042ff2cfa95af3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"verbatim" tag
---TEMPLATE--
-{% verbatim %}
-{{ foo }}
-{% endraw %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected end of file: Unclosed "verbatim" block in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/verbatim/whitespace_control.test b/vendor/twig/twig/tests/Fixtures/tags/verbatim/whitespace_control.test
deleted file mode 100644
index 501922bddd29eca528ccc8dae049e60bf2f3f526..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/verbatim/whitespace_control.test
+++ /dev/null
@@ -1,56 +0,0 @@
---TEST--
-"verbatim" tag
---TEMPLATE--
-1***
-
-{%- verbatim %}
-    {{ 'bla' }}
-{% endverbatim %}
-
-1***
-2***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{% endverbatim %}
-
-2***
-3***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{% endverbatim -%}
-
-3***
-4***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{%- endverbatim %}
-
-4***
-5***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{%- endverbatim -%}
-
-5***
---DATA--
-return []
---EXPECT--
-1***
-    {{ 'bla' }}
-
-
-1***
-2***{{ 'bla' }}
-
-
-2***
-3***{{ 'bla' }}
-3***
-4***{{ 'bla' }}
-
-4***
-5***{{ 'bla' }}5***
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/basic.test b/vendor/twig/twig/tests/Fixtures/tags/with/basic.test
deleted file mode 100644
index 7c2abd0f9bb20e194a80a24383df28f7a8c013fd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/basic.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"with" tag
---TEMPLATE--
-{% with %}
-    {% set bar = 'BAZ' %}
-    {{ foo }}{{ bar }}
-{% endwith %}
-{{ foo }}{{ bar }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---EXPECT--
-fooBAZ
-foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/expression.test b/vendor/twig/twig/tests/Fixtures/tags/with/expression.test
deleted file mode 100644
index e4433d44c8c614e8f3ed48b271d7e3f270057c39..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/expression.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with expression
---TEMPLATE--
-{% with {foo: 'foo', bar: 'BAZ'} %}
-    {{ foo }}{{ bar }}
-{% endwith %}
---DATA--
-return ['foo' => 'baz']
---EXPECT--
-fooBAZ
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/globals.test b/vendor/twig/twig/tests/Fixtures/tags/with/globals.test
deleted file mode 100644
index b030e7eff3fe8895331b30563b5cadcaa1b6e4ef..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/globals.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag
---TEMPLATE--
-{% with [] only %}
-    {{ global }}
-{% endwith %}
---DATA--
-return []
---EXPECT--
-global
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/iterable.test b/vendor/twig/twig/tests/Fixtures/tags/with/iterable.test
deleted file mode 100644
index 1b0cbc63e5e92135239a75ce698b73815d394809..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/iterable.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with an iterable expression
---TEMPLATE--
-{% with vars %}
-    {{ foo }}{{ bar }}
-{% endwith %}
---DATA--
-return ['vars' => new ArrayObject(['foo' => 'baz', 'bar' => 'qux'])]
---EXPECT--
-bazqux
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/nested.test b/vendor/twig/twig/tests/Fixtures/tags/with/nested.test
deleted file mode 100644
index 33ca390b2a8c034bb59206748b5f0c794199c146..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/nested.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-nested "with" tags
---TEMPLATE--
-{% set foo, bar = 'foo', 'bar' %}
-{% with {bar: 'BAZ'} %}
-    {% with {foo: 'FOO'} %}
-        {{ foo }}{{ bar }}
-    {% endwith %}
-{% endwith %}
-{{ foo }}{{ bar }}
---DATA--
-return []
---EXPECT--
-FOOBAZ
-    foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/with_no_hash.test b/vendor/twig/twig/tests/Fixtures/tags/with/with_no_hash.test
deleted file mode 100644
index 7083050b42e08ab997234fb7eabbd2418f555857..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/with_no_hash.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with an expression that is not a hash
---TEMPLATE--
-{% with vars %}
-    {{ foo }}{{ bar }}
-{% endwith %}
---DATA--
-return ['vars' => 'no-hash']
---EXCEPTION--
-Twig\Error\RuntimeError: Variables passed to the "with" tag must be a hash in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/with_only.test b/vendor/twig/twig/tests/Fixtures/tags/with/with_only.test
deleted file mode 100644
index 1aca34fc15572ae3082d0da98371b1b1d229d224..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/with_only.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with expression and only
---TEMPLATE--
-{% with {foo: 'foo', bar: 'BAZ'} only %}
-    {{ foo }}{{ bar }}{{ baz }}
-{% endwith %}
---DATA--
-return ['foo' => 'baz', 'baz' => 'baz']
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "baz" does not exist in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tests/array.test b/vendor/twig/twig/tests/Fixtures/tests/array.test
deleted file mode 100644
index 7c9a6c80aa9fa992ba0e92fd4d9e25cbbd728a03..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/array.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-array index test
---TEMPLATE--
-{% for key, value in days %}
-{{ key }}
-{% endfor %}
---DATA--
-return ['days' => [
-    1  => ['money' => 9],
-    2  => ['money' => 21],
-    3  => ['money' => 38],
-    4  => ['money' => 6],
-    18 => ['money' => 6],
-    19 => ['money' => 3],
-    31 => ['money' => 11],
-]]
---EXPECT--
-1
-2
-3
-4
-18
-19
-31
diff --git a/vendor/twig/twig/tests/Fixtures/tests/constant.test b/vendor/twig/twig/tests/Fixtures/tests/constant.test
deleted file mode 100644
index d4a9be7764b2324f8e510e01b93c481995d318d5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/constant.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"const" test
---TEMPLATE--
-{{ 8 is constant('E_NOTICE') ? 'ok' : 'no' }}
-{{ 'bar' is constant('Twig\\Tests\\TwigTestFoo::BAR_NAME') ? 'ok' : 'no' }}
-{{ value is constant('Twig\\Tests\\TwigTestFoo::BAR_NAME') ? 'ok' : 'no' }}
-{{ 2 is constant('ARRAY_AS_PROPS', object) ? 'ok' : 'no' }}
---DATA--
-return ['value' => 'bar', 'object' => new \ArrayObject(['hi'])]
---EXPECT--
-ok
-ok
-ok
-ok
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined.test b/vendor/twig/twig/tests/Fixtures/tests/defined.test
deleted file mode 100644
index 1648c66fbaac4bb5ef3c0914d23aa56a51f1c3c0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined.test
+++ /dev/null
@@ -1,129 +0,0 @@
---TEST--
-"defined" test
---TEMPLATE--
-{{ definedVar                     is     defined ? 'ok' : 'ko' }}
-{{ definedVar                     is not defined ? 'ko' : 'ok' }}
-{{ undefinedVar                   is     defined ? 'ko' : 'ok' }}
-{{ undefinedVar                   is not defined ? 'ok' : 'ko' }}
-{{ zeroVar                        is     defined ? 'ok' : 'ko' }}
-{{ nullVar                        is     defined ? 'ok' : 'ko' }}
-{{ nested.definedVar              is     defined ? 'ok' : 'ko' }}
-{{ nested['definedVar']           is     defined ? 'ok' : 'ko' }}
-{{ nested.definedVar              is not defined ? 'ko' : 'ok' }}
-{{ nested.undefinedVar            is     defined ? 'ko' : 'ok' }}
-{{ nested['undefinedVar']         is     defined ? 'ko' : 'ok' }}
-{{ nested.undefinedVar            is not defined ? 'ok' : 'ko' }}
-{{ nested.zeroVar                 is     defined ? 'ok' : 'ko' }}
-{{ nested.nullVar                 is     defined ? 'ok' : 'ko' }}
-{{ nested.definedArray.0          is     defined ? 'ok' : 'ko' }}
-{{ nested['definedArray'][0]      is     defined ? 'ok' : 'ko' }}
-{{ object.foo                     is     defined ? 'ok' : 'ko' }}
-{{ object.undefinedMethod         is     defined ? 'ko' : 'ok' }}
-{{ object.getFoo()                is     defined ? 'ok' : 'ko' }}
-{{ object.getFoo('a')             is     defined ? 'ok' : 'ko' }}
-{{ object.undefinedMethod()       is     defined ? 'ko' : 'ok' }}
-{{ object.undefinedMethod('a')    is     defined ? 'ko' : 'ok' }}
-{{ object.self.foo                is     defined ? 'ok' : 'ko' }}
-{{ object.self.undefinedMethod    is     defined ? 'ko' : 'ok' }}
-{{ object.undefinedMethod.self    is     defined ? 'ko' : 'ok' }}
-{{ 0                              is     defined ? 'ok' : 'ko' }}
-{{ "foo"                          is     defined ? 'ok' : 'ko' }}
-{{ true                           is     defined ? 'ok' : 'ko' }}
-{{ false                          is     defined ? 'ok' : 'ko' }}
-{{ null                           is     defined ? 'ok' : 'ko' }}
-{{ [1, 2]                         is     defined ? 'ok' : 'ko' }}
-{{ { foo: "bar" }                 is     defined ? 'ok' : 'ko' }}
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'nullVar'    => null,
-    'nested'      => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---EXPECT--
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'nullVar'    => null,
-    'nested'      => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_attribute.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_attribute.test
deleted file mode 100644
index 5fd2fe3f2d2c601d0dd9d942a2acc813da3eeab2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_attribute.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"defined" support for attribute
---TEMPLATE--
-{{ attribute(nested, "definedVar")     is     defined ? 'ok' : 'ko' }}
-{{ attribute(nested, "undefinedVar")   is not defined ? 'ok' : 'ko' }}
-{{ attribute(nested, definedVarName)   is     defined ? 'ok' : 'ko' }}
-{{ attribute(nested, undefinedVarName) is not defined ? 'ok' : 'ko' }}
---DATA--
-return [
-    'nested' => [
-        'definedVar' => 'defined',
-    ],
-    'definedVarName' => 'definedVar',
-    'undefinedVarName' => 'undefinedVar',
-]
---EXPECT--
-ok
-ok
-ok
-ok
---DATA--
-return [
-    'nested' => [
-        'definedVar' => 'defined',
-    ],
-    'definedVarName' => 'definedVar',
-    'undefinedVarName' => 'undefinedVar',
-]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks.test
deleted file mode 100644
index c8b90f8c9c421738db103af758378c59a8f557a0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks.test
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-"defined" support for blocks
---TEMPLATE--
-{% extends 'parent' %}
-{% block icon %}icon{% endblock %}
-{% block body %}
-    {{ parent() }}
-    {{ block('foo') is defined ? 'ok' : 'ko' }}
-    {{ block('footer') is defined ? 'ok' : 'ko' }}
-    {{ block('icon') is defined ? 'ok' : 'ko' }}
-    {{ block('block1') is defined ? 'ok' : 'ko' }}
-    {%- embed 'embed' %}
-        {% block content %}content{% endblock %}
-    {% endembed %}
-{% endblock %}
-{% use 'blocks' %}
---TEMPLATE(parent)--
-{% block body %}
-  {{ block('icon') is defined ? 'ok' : 'ko' -}}
-{% endblock %}
-{% block footer %}{% endblock %}
---TEMPLATE(embed)--
-{{ block('icon') is defined ? 'ok' : 'ko' }}
-{{ block('content') is defined ? 'ok' : 'ko' }}
-{{ block('block1') is defined ? 'ok' : 'ko' }}
---TEMPLATE(blocks)--
-{% block block1 %}{%endblock %}
---DATA--
-return []
---EXPECT--
-ok
-    ko
-    ok
-    ok
-    ok
-ko
-ok
-ko
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks_with_template.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks_with_template.test
deleted file mode 100644
index 68540de7aa364f3865ba4ba2be43182b4be74cb7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks_with_template.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"defined" support for blocks with a template argument
---TEMPLATE--
-{{ block('foo', 'included.twig') is defined ? 'ok' : 'ko' }}
-{{ block('foo', included_loaded) is defined ? 'ok' : 'ko' }}
-{{ block('foo', included_loaded_internal) is defined ? 'ok' : 'ko' }}
---TEMPLATE(included.twig)--
-{% block foo %}FOO{% endblock %}
---DATA--
-return [
-    'included_loaded' => $twig->load('included.twig'),
-    'included_loaded_internal' => $twig->load('included.twig'),
-]
---EXPECT--
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_constants.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_constants.test
deleted file mode 100644
index 62172e4f1f5e6153d11e1a22d2c9d4ff14dce1ab..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_constants.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"defined" support for constants
---TEMPLATE--
-{{ constant('DATE_W3C') is defined ? 'ok' : 'ko' }}
-{{ constant('ARRAY_AS_PROPS', object) is defined ? 'ok' : 'ko' }}
-{{ constant('FOOBAR') is not defined ? 'ok' : 'ko' }}
-{{ constant('FOOBAR', object) is not defined ? 'ok' : 'ko' }}
---DATA--
-return ['expect' => DATE_W3C, 'object' => new \ArrayObject(['hi'])]
---EXPECT--
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_on_complex_expr.test b/vendor/twig/twig/tests/Fixtures/tests/defined_on_complex_expr.test
deleted file mode 100644
index 2d0615832f4f1416177c94eee35b9acdc83d2af2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_on_complex_expr.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"defined" support for "complex" expressions
---TEMPLATE--
-{{ (1 + 2) is defined ? 'ok' : 'ko' }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: The "defined" test only works with simple variables in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tests/dynamic_test.test b/vendor/twig/twig/tests/Fixtures/tests/dynamic_test.test
deleted file mode 100644
index 41625f6af1e71af15d36c83a3a7a815311d532df..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/dynamic_test.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-dynamic test
---TEMPLATE--
-{{ 'bar' is test_bar ? '1' :'0' }}
-{{ 'foo' is test_foo ? '1' :'0' }}
-{{ 'bar' is test_foo ? '1' :'0' }}
-{{ 'foo' is test_bar ? '1' :'0' }}
---DATA--
-return []
---EXPECT--
-1
-1
-0
-0
diff --git a/vendor/twig/twig/tests/Fixtures/tests/empty.test b/vendor/twig/twig/tests/Fixtures/tests/empty.test
deleted file mode 100644
index ffcd518708d1f57cd14092a14f9e696d416173d5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/empty.test
+++ /dev/null
@@ -1,54 +0,0 @@
---TEST--
-"empty" test
---TEMPLATE--
-{{ string_empty is empty ? 'ok' : 'ko' }}
-{{ string_zero is empty ? 'ko' : 'ok' }}
-{{ value_null is empty ? 'ok' : 'ko' }}
-{{ value_false is empty ? 'ok' : 'ko' }}
-{{ value_int_zero is empty ? 'ko' : 'ok' }}
-{{ array_empty is empty ? 'ok' : 'ko' }}
-{{ array_not_empty is empty ? 'ko' : 'ok' }}
-{{ magically_callable is empty ? 'ko' : 'ok' }}
-{{ countable_empty is empty ? 'ok' : 'ko' }}
-{{ countable_not_empty is empty ? 'ko' : 'ok' }}
-{{ tostring_empty is empty ? 'ok' : 'ko' }}
-{{ tostring_not_empty is empty ? 'ko' : 'ok' }}
-{{ markup_empty is empty ? 'ok' : 'ko' }}
-{{ markup_not_empty is empty ? 'ko' : 'ok' }}
-{{ iterator is empty ? 'ko' : 'ok' }}
-{{ empty_iterator is empty ? 'ok' : 'ko' }}
-{{ callback_iterator is empty ? 'ko' : 'ok' }}
-{{ empty_callback_iterator is empty ? 'ok' : 'ko' }}
---DATA--
-return [
-    'string_empty' => '', 'string_zero' => '0',
-    'value_null' => null, 'value_false' => false, 'value_int_zero' => 0,
-    'array_empty' => [], 'array_not_empty' => [1, 2],
-    'magically_callable' => new \Twig\Tests\MagicCallStub(),
-    'countable_empty' => new \Twig\Tests\CountableStub([]), 'countable_not_empty' => new \Twig\Tests\CountableStub([1, 2]),
-    'tostring_empty' => new \Twig\Tests\ToStringStub(''), 'tostring_not_empty' => new \Twig\Tests\ToStringStub('0' /* edge case of using "0" as the string */),
-    'markup_empty' => new \Twig\Markup('', 'UTF-8'), 'markup_not_empty' => new \Twig\Markup('test', 'UTF-8'),
-    'iterator' => $iter = new \ArrayIterator(['bar', 'foo']),
-    'empty_iterator' => new \ArrayIterator(),
-    'callback_iterator' => new \CallbackFilterIterator($iter, function ($el) { return true; }),
-    'empty_callback_iterator' => new \CallbackFilterIterator($iter, function ($el) { return false; }),
-]
---EXPECT--
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/even.test b/vendor/twig/twig/tests/Fixtures/tests/even.test
deleted file mode 100644
index 5c73b01e908feb6c8b10a1a8f263113ced04da2b..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/even.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"even" test
---TEMPLATE--
-{{ 1 is even ? 'ko' : 'ok' }}
-{{ 2 is even ? 'ok' : 'ko' }}
-{{ 1 is not even ? 'ok' : 'ko' }}
-{{ 2 is not even ? 'ko' : 'ok' }}
---DATA--
-return []
---EXPECT--
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/in.test b/vendor/twig/twig/tests/Fixtures/tests/in.test
deleted file mode 100644
index f7b172e8d0cea5b39bd2eb837822905ecb75d13d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/in.test
+++ /dev/null
@@ -1,118 +0,0 @@
---TEST--
-Twig supports the in operator
---TEMPLATE--
-{{ bar in foo ? 'OK' : 'KO' }}
-{{ not (bar in foo) ? 'KO' : 'OK' }}
-{{ bar not in foo ? 'KO' : 'OK' }}
-{{ 'a' in bar ? 'OK' : 'KO' }}
-{{ 'c' not in bar ? 'OK' : 'KO' }}
-{{ '' in bar ? 'OK' : 'KO' }}
-{{ '' in '' ? 'OK' : 'KO' }}
-{{ '0' not in '' ? 'OK' : 'KO' }}
-{{ 'a' not in '0' ? 'OK' : 'KO' }}
-{{ '0' in '0' ? 'OK' : 'KO' }}
-
-{{ false in [0, 1] ? 'OK' : 'KO' }}
-{{ true in [0, 1] ? 'OK' : 'KO' }}
-{{ '0' in [0, 1] ? 'OK' : 'KO' }}
-{{ '0' in [1, 0] ? 'OK' : 'KO' }}
-{{ '' in [0, 1] ? 'OK' : 'KO' }}
-{{ '' in [1, 0] ? 'OK' : 'KO' }}
-{{ 0 in ['', 1] ? 'OK' : 'KO' }}
-{{ 0 in [1, ''] ? 'OK' : 'KO' }}
-
-{{ '' in 'foo' ? 'OK' : 'KO' }}
-{{ 0 in 'foo' ? 'KO' : 'OK' }}
-{{ false in 'foo' ? 'KO' : 'OK' }}
-{{ false in '100' ? 'KO' : 'OK' }}
-{{ true in '100' ? 'KO' : 'OK' }}
-
-{{ [] in [true, false] ? 'OK' : 'KO' }}
-{{ [] in [true, ''] ? 'KO' : 'OK' }}
-{{ [] in [true, []] ? 'OK' : 'KO' }}
-
-{{ resource ? 'OK' : 'KO' }}
-{{ resource in 'foo'~resource ? 'KO' : 'OK' }}
-{{ object in 'stdClass' ? 'KO' : 'OK' }}
-{{ [] in 'Array' ? 'KO' : 'OK' }}
-{{ dir_object in 'foo'~dir_object ? 'KO' : 'OK' }}
-
-{{ ''~resource in resource ? 'KO' : 'OK' }}
-{{ 'stdClass' in object ? 'KO' : 'OK' }}
-{{ 'Array' in [] ? 'KO' : 'OK' }}
-{{ ''~dir_object in dir_object ? 'KO' : 'OK' }}
-
-{{ resource in [''~resource] ? 'KO' : 'OK' }}
-{{ resource in [resource + 1 - 1] ? 'KO' : 'OK' }}
-{{ dir_object in [''~dir_object] ? 'KO' : 'OK' }}
-
-{{ 5 in 125 ? 'KO' : 'OK' }}
-{{ 5 in '125' ? 'OK' : 'KO' }}
-{{ '5' in 125 ? 'KO' : 'OK' }}
-{{ '5' in '125' ? 'OK' : 'KO' }}
-
-{{ 5.5 in 125.5 ? 'KO' : 'OK' }}
-{{ 5.5 in '125.5' ? 'OK' : 'KO' }}
-{{ '5.5' in 125.5 ? 'KO' : 'OK' }}
-
-{{ safe in ['foo', 'bar'] ? 'OK' : 'KO' }}
-{{ 'fo' in safe ? 'OK' : 'KO' }}
---DATA--
-return ['bar' => 'bar', 'foo' => ['bar' => 'bar'], 'dir_object' => new \SplFileInfo(dirname(__FILE__)), 'object' => new \stdClass(), 'resource' => opendir(dirname(__FILE__)), 'safe' => new \Twig\Markup('foo', 'UTF-8')]
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/tests/in_with_objects.test b/vendor/twig/twig/tests/Fixtures/tests/in_with_objects.test
deleted file mode 100644
index 1f9fc6393a2380bd440c30023e5d7616010d838c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/in_with_objects.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Twig supports the in operator when using objects
---TEMPLATE--
-{% if object in object_list %}
-TRUE
-{% endif %}
---DATA--
-$foo = new Twig\Tests\TwigTestFoo();
-$foo1 = new Twig\Tests\TwigTestFoo();
-
-$foo->position = $foo1;
-$foo1->position = $foo;
-
-return [
-    'object'      => $foo,
-    'object_list' => [$foo1, $foo],
-]
---EXPECT--
-TRUE
diff --git a/vendor/twig/twig/tests/Fixtures/tests/iterable.test b/vendor/twig/twig/tests/Fixtures/tests/iterable.test
deleted file mode 100644
index 75b5756e1e64a651ed02156ea63c2a091fc6f013..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/iterable.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"iterable" test
---TEMPLATE--
-{{ foo is iterable ? 'ok' : 'ko' }}
-{{ traversable is iterable ? 'ok' : 'ko' }}
-{{ obj is iterable ? 'ok' : 'ko' }}
-{{ val is iterable ? 'ok' : 'ko' }}
---DATA--
-return [
-    'foo' => [],
-    'traversable' => new \ArrayIterator([]),
-    'obj' => new \stdClass(),
-    'val' => 'test',
-]
---EXPECT--
-ok
-ok
-ko
-ko
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/tests/null_coalesce.test b/vendor/twig/twig/tests/Fixtures/tests/null_coalesce.test
deleted file mode 100644
index 7af3255d61d3b5e9552f49261d0722af36ced0bd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/null_coalesce.test
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Twig supports the ?? operator
---TEMPLATE--
-{{ 'OK' ?? 'KO' }}
-{{ null ?? 'OK' }}
-{{ bar ?? 'KO' }}
-{{ baz ?? 'OK' }}
-{{ foo.bar ?? 'KO' }}
-{{ foo.missing ?? 'OK' }}
-{{ foo.bar.baz.missing ?? 'OK' }}
-{{ foo['bar'] ?? 'KO' }}
-{{ foo['missing'] ?? 'OK' }}
-{{ nope ?? nada ?? 'OK' }}
-{{ 1 + nope ?? nada ?? 2 }}
-{{ 1 + nope ?? 3 + nada ?? 2 }}
---DATA--
-return ['bar' => 'OK', 'foo' => ['bar' => 'OK']]
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-3
-6
diff --git a/vendor/twig/twig/tests/Fixtures/tests/odd.test b/vendor/twig/twig/tests/Fixtures/tests/odd.test
deleted file mode 100644
index ec88bb519c1f6ac42c15ff62b584e346ef30fad2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/tests/odd.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"odd" test
---TEMPLATE--
-{{ 1 is odd ? 'ok' : 'ko' }}
-{{ 2 is odd ? 'ko' : 'ok' }}
---DATA--
-return []
---EXPECT--
-ok
-ok
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_block.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_block.test
deleted file mode 100644
index 346a11076c34d71854091957e7070255375ae00f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_block.test
+++ /dev/null
@@ -1,68 +0,0 @@
---TEST--
-Whitespace trimming on tags.
---TEMPLATE--
-Trim on control tag:
-{% for i in range(1, 9) -%}
-	{{ i }}
-{%- endfor %}
-
-
-Trim on output tag:
-{% for i in range(1, 9) %}
-	{{- i -}}
-{% endfor %}
-
-
-Trim comments:
-      
-{#- Invisible -#}
-       
-After the comment.
-
-Trim leading space:
-{% if leading %}
-
-		{{- leading }}
-{% endif %}
-
-{%- if leading %}
-	{{- leading }}
-
-{%- endif %}
-
-
-Trim trailing space:
-{% if trailing -%}          
-	{{ trailing -}}
-
-{% endif -%}
-
-Combined:
-
-{%- if both -%}
-<ul>
-	<li>    {{- both -}}   </li>
-</ul>
-
-{%- endif -%}
-
-end
---DATA--
-return ['leading' => 'leading space', 'trailing' => 'trailing space', 'both' => 'both']
---EXPECT--
-Trim on control tag:
-123456789
-
-Trim on output tag:
-123456789
-
-Trim comments:After the comment.
-
-Trim leading space:
-leading space
-leading space
-
-Trim trailing space:
-trailing spaceCombined:<ul>
-	<li>both</li>
-</ul>end
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_delimiter_as_strings.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_delimiter_as_strings.test
deleted file mode 100644
index a58818dde479345cab39f568bfc0422a172d24ca..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_delimiter_as_strings.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Whitespace trimming as strings.
---TEMPLATE--
-{{ 5 * '{#-'|length }}
-{{ '{{-'|length * 5 + '{%-'|length }}
---DATA--
-return []
---EXPECT--
-15
-18
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_left.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_left.test
deleted file mode 100644
index 75d0f80319367777be0cc602a4f164b51abbfdd4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_left.test
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-Whitespace trimming on tags (left side).
---TEMPLATE--
-**{% if true %}
-foo
-    
-    	    {%- endif %}**
-
-**
-
-	    {{- 'foo' }}**
-
-**
-    
-	
-{#- comment #}**
-
-**{% verbatim %}
-foo
-    
-    	    {%- endverbatim %}**
---DATA--
-return []
---EXPECT--
-**foo**
-
-**foo**
-
-****
-
-**
-foo**
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_left.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_left.test
deleted file mode 100644
index e5e845f08b77b76657bfe7e23ebaa97b9ce58090..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_left.test
+++ /dev/null
@@ -1,33 +0,0 @@
---TEST--
-Line whitespace trimming on tags (left side).
---TEMPLATE--
-**{% if true %}
-foo
-    	    {%~ endif %}**
-
-**
-	    {{~ 'foo' }}**
-
-**
-	{#~ comment #}**
-
-**{% verbatim %}
-foo
-    
-    	    {%~ endverbatim %}**
---DATA--
-return []
---EXPECT--
-**foo
-**
-
-**
-foo**
-
-**
-**
-
-**
-foo
-    
-**
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_right.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_right.test
deleted file mode 100644
index e7b510c85d8e1d21f6c30c3edabbb6bf140b0824..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_right.test
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-Line whitespace trimming on tags (right side).
---TEMPLATE--
-**{% if true ~%}    	    
-foo{% endif %}**
-
-**{{ 'foo' ~}}    	    
-foo
-**
-
-**{# comment ~#}	    
-	foo
-**
-
-**{% verbatim ~%}	    
-    foo{% endverbatim %}**
---DATA--
-return []
---EXPECT--
-**
-foo**
-
-**foo
-foo
-**
-
-**
-	foo
-**
-
-**
-    foo**
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_right.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_right.test
deleted file mode 100644
index 0ec3b0ceaa90904207471a422da3668b54832f09..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_right.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-Whitespace trimming on tags (right side).
---TEMPLATE--
-**{% if true -%}
-    
-    	    foo{% endif %}**
-
-**{{ 'foo' -}}
-	    
-**
-
-**{# comment -#}    
-	
-**
-
-**{% verbatim -%}    
-    	    
-foo{% endverbatim %}**
---DATA--
-return []
---EXPECT--
-**foo**
-
-**foo**
-
-****
-
-**foo**
diff --git a/vendor/twig/twig/tests/IntegrationTest.php b/vendor/twig/twig/tests/IntegrationTest.php
deleted file mode 100644
index 243aadb2bfec439c897bc17cf0349ac155edc2b0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/IntegrationTest.php
+++ /dev/null
@@ -1,386 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Extension\AbstractExtension;
-use Twig\Extension\DebugExtension;
-use Twig\Extension\SandboxExtension;
-use Twig\Extension\StringLoaderExtension;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\PrintNode;
-use Twig\Sandbox\SecurityPolicy;
-use Twig\Test\IntegrationTestCase;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-// This function is defined to check that escaping strategies
-// like html works even if a function with the same name is defined.
-function html()
-{
-    return 'foo';
-}
-
-class IntegrationTest extends IntegrationTestCase
-{
-    public function getExtensions()
-    {
-        $policy = new SecurityPolicy([], [], [], [], ['dump']);
-
-        return [
-            new DebugExtension(),
-            new SandboxExtension($policy, false),
-            new StringLoaderExtension(),
-            new TwigTestExtension(),
-        ];
-    }
-
-    public function getFixturesDir()
-    {
-        return __DIR__.'/Fixtures/';
-    }
-}
-
-function test_foo($value = 'foo')
-{
-    return $value;
-}
-
-class TwigTestFoo implements \Iterator
-{
-    const BAR_NAME = 'bar';
-
-    public $position = 0;
-    public $array = [1, 2];
-
-    public function bar($param1 = null, $param2 = null)
-    {
-        return 'bar'.($param1 ? '_'.$param1 : '').($param2 ? '-'.$param2 : '');
-    }
-
-    public function getFoo()
-    {
-        return 'foo';
-    }
-
-    public function getSelf()
-    {
-        return $this;
-    }
-
-    public function is()
-    {
-        return 'is';
-    }
-
-    public function in()
-    {
-        return 'in';
-    }
-
-    public function not()
-    {
-        return 'not';
-    }
-
-    public function strToLower($value)
-    {
-        return strtolower($value);
-    }
-
-    public function rewind()
-    {
-        $this->position = 0;
-    }
-
-    public function current()
-    {
-        return $this->array[$this->position];
-    }
-
-    public function key()
-    {
-        return 'a';
-    }
-
-    public function next()
-    {
-        ++$this->position;
-    }
-
-    public function valid()
-    {
-        return isset($this->array[$this->position]);
-    }
-}
-
-class TwigTestTokenParser_§ extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new PrintNode(new ConstantExpression('§', -1), -1);
-    }
-
-    public function getTag()
-    {
-        return '§';
-    }
-}
-
-class TwigTestExtension extends AbstractExtension
-{
-    public function getTokenParsers()
-    {
-        return [
-            new TwigTestTokenParser_§(),
-        ];
-    }
-
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('§', [$this, '§Filter']),
-            new TwigFilter('escape_and_nl2br', [$this, 'escape_and_nl2br'], ['needs_environment' => true, 'is_safe' => ['html']]),
-            new TwigFilter('nl2br', [$this, 'nl2br'], ['pre_escape' => 'html', 'is_safe' => ['html']]),
-            new TwigFilter('escape_something', [$this, 'escape_something'], ['is_safe' => ['something']]),
-            new TwigFilter('preserves_safety', [$this, 'preserves_safety'], ['preserves_safety' => ['html']]),
-            new TwigFilter('static_call_string', 'Twig\Tests\TwigTestExtension::staticCall'),
-            new TwigFilter('static_call_array', ['Twig\Tests\TwigTestExtension', 'staticCall']),
-            new TwigFilter('magic_call', [$this, 'magicCall']),
-            new TwigFilter('magic_call_string', 'Twig\Tests\TwigTestExtension::magicStaticCall'),
-            new TwigFilter('magic_call_array', ['Twig\Tests\TwigTestExtension', 'magicStaticCall']),
-            new TwigFilter('*_path', [$this, 'dynamic_path']),
-            new TwigFilter('*_foo_*_bar', [$this, 'dynamic_foo']),
-        ];
-    }
-
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('§', [$this, '§Function']),
-            new TwigFunction('safe_br', [$this, 'br'], ['is_safe' => ['html']]),
-            new TwigFunction('unsafe_br', [$this, 'br']),
-            new TwigFunction('static_call_string', 'Twig\Tests\TwigTestExtension::staticCall'),
-            new TwigFunction('static_call_array', ['Twig\Tests\TwigTestExtension', 'staticCall']),
-            new TwigFunction('*_path', [$this, 'dynamic_path']),
-            new TwigFunction('*_foo_*_bar', [$this, 'dynamic_foo']),
-        ];
-    }
-
-    public function getTests()
-    {
-        return [
-            new TwigTest('multi word', [$this, 'is_multi_word']),
-            new TwigTest('test_*', [$this, 'dynamic_test']),
-        ];
-    }
-
-    public function §Filter($value)
-    {
-        return "§{$value}§";
-    }
-
-    public function §Function($value)
-    {
-        return "§{$value}§";
-    }
-
-    /**
-     * nl2br which also escapes, for testing escaper filters.
-     */
-    public function escape_and_nl2br($env, $value, $sep = '<br />')
-    {
-        return $this->nl2br(twig_escape_filter($env, $value, 'html'), $sep);
-    }
-
-    /**
-     * nl2br only, for testing filters with pre_escape.
-     */
-    public function nl2br($value, $sep = '<br />')
-    {
-        // not secure if $value contains html tags (not only entities)
-        // don't use
-        return str_replace("\n", "$sep\n", $value);
-    }
-
-    public function dynamic_path($element, $item)
-    {
-        return $element.'/'.$item;
-    }
-
-    public function dynamic_foo($foo, $bar, $item)
-    {
-        return $foo.'/'.$bar.'/'.$item;
-    }
-
-    public function dynamic_test($element, $item)
-    {
-        return $element === $item;
-    }
-
-    public function escape_something($value)
-    {
-        return strtoupper($value);
-    }
-
-    public function preserves_safety($value)
-    {
-        return strtoupper($value);
-    }
-
-    public static function staticCall($value)
-    {
-        return "*$value*";
-    }
-
-    public function br()
-    {
-        return '<br />';
-    }
-
-    public function is_multi_word($value)
-    {
-        return false !== strpos($value, ' ');
-    }
-
-    public function __call($method, $arguments)
-    {
-        if ('magicCall' !== $method) {
-            throw new \BadMethodCallException('Unexpected call to __call');
-        }
-
-        return 'magic_'.$arguments[0];
-    }
-
-    public static function __callStatic($method, $arguments)
-    {
-        if ('magicStaticCall' !== $method) {
-            throw new \BadMethodCallException('Unexpected call to __callStatic');
-        }
-
-        return 'static_magic_'.$arguments[0];
-    }
-}
-
-/**
- * This class is used in tests for the "length" filter and "empty" test. It asserts that __call is not
- * used to convert such objects to strings.
- */
-class MagicCallStub
-{
-    public function __call($name, $args)
-    {
-        throw new \Exception('__call shall not be called');
-    }
-}
-
-class ToStringStub
-{
-    /**
-     * @var string
-     */
-    private $string;
-
-    public function __construct($string)
-    {
-        $this->string = $string;
-    }
-
-    public function __toString()
-    {
-        return $this->string;
-    }
-}
-
-/**
- * This class is used in tests for the length filter and empty test to show
- * that when \Countable is implemented, it is preferred over the __toString()
- * method.
- */
-class CountableStub implements \Countable
-{
-    private $count;
-
-    public function __construct($count)
-    {
-        $this->count = $count;
-    }
-
-    public function count()
-    {
-        return $this->count;
-    }
-
-    public function __toString()
-    {
-        throw new \Exception('__toString shall not be called on \Countables');
-    }
-}
-
-/**
- * This class is used in tests for the length filter.
- */
-class IteratorAggregateStub implements \IteratorAggregate
-{
-    private $data;
-
-    public function __construct(array $data)
-    {
-        $this->data = $data;
-    }
-
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->data);
-    }
-}
-
-class SimpleIteratorForTesting implements \Iterator
-{
-    private $data = [1, 2, 3, 4, 5, 6, 7];
-    private $key = 0;
-
-    public function current()
-    {
-        return $this->key;
-    }
-
-    public function next()
-    {
-        ++$this->key;
-    }
-
-    public function key()
-    {
-        return $this->key;
-    }
-
-    public function valid()
-    {
-        return isset($this->data[$this->key]);
-    }
-
-    public function rewind()
-    {
-        $this->key = 0;
-    }
-
-    public function __toString()
-    {
-        // for testing, make sure string length returned is not the same as the `iterator_count`
-        return str_repeat('X', iterator_count($this) + 10);
-    }
-}
diff --git a/vendor/twig/twig/tests/LegacyFixtures/autoescape/filename.legacy.test b/vendor/twig/twig/tests/LegacyFixtures/autoescape/filename.legacy.test
deleted file mode 100644
index d25f75e8ee0ae0242b28fe86804867013cbf058f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/LegacyFixtures/autoescape/filename.legacy.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"filename" autoescape strategy
---TEMPLATE--
-{{ br -}}
-{{ include('index.html.twig') -}}
-{{ include('index.txt.twig') -}}
---TEMPLATE(index.html.twig)--
-{{ br -}}
---TEMPLATE(index.txt.twig)--
-{{ br -}}
---DATA--
-return ['br' => '<br />']
---CONFIG--
-return ['autoescape' => 'filename']
---EXPECT--
-&lt;br /&gt;
-&lt;br /&gt;
-<br />
diff --git a/vendor/twig/twig/tests/LegacyFixtures/functions/undefined_block.legacy.test b/vendor/twig/twig/tests/LegacyFixtures/functions/undefined_block.legacy.test
deleted file mode 100644
index e52c3b259239b7478720f5d7169c3a5b38977415..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/LegacyFixtures/functions/undefined_block.legacy.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"block" function with undefined block
---TEMPLATE--
-{% extends "base.twig" %}
-{% block foo %}{{ parent() }}{{ block('unknown') }}{{ block('bar') }}{% endblock %}
---TEMPLATE(base.twig)--
-{% block foo %}Foo{% endblock %}
-{% block bar %}Bar{% endblock %}
---DATA--
-return []
---EXPECT--
-FooBarBar
diff --git a/vendor/twig/twig/tests/LegacyFixtures/test.legacy.test b/vendor/twig/twig/tests/LegacyFixtures/test.legacy.test
deleted file mode 100644
index 4bd1f6ac0a5e288dd050ba1e95e829e3c69093fc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/LegacyFixtures/test.legacy.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Old test classes usage
---TEMPLATE--
-{{ 'foo' is multi word ? 'yes' : 'no' }}
---DATA--
-return []
---EXPECT--
-no
diff --git a/vendor/twig/twig/tests/LegacyIntegrationTest.php b/vendor/twig/twig/tests/LegacyIntegrationTest.php
deleted file mode 100644
index db556f31bf7e124264a30306823a7098e1469bdc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/LegacyIntegrationTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Extension\AbstractExtension;
-use Twig\Test\IntegrationTestCase;
-
-class LegacyIntegrationTest extends IntegrationTestCase
-{
-    public function getExtensions()
-    {
-        return [
-            new LegacyTwigTestExtension(),
-        ];
-    }
-
-    public function getFixturesDir()
-    {
-        return __DIR__.'/LegacyFixtures/';
-    }
-
-    public function getTests($name, $legacyTests = false)
-    {
-        if (!$legacyTests) {
-            return [['', '', '', [], '', []]];
-        }
-
-        return parent::getTests($name, true);
-    }
-}
-
-class LegacyTwigTestExtension extends AbstractExtension
-{
-    public function getTests()
-    {
-        return [
-            'multi word' => new \Twig_Test_Method($this, 'is_multi_word'),
-        ];
-    }
-
-    public function is_multi_word($value)
-    {
-        return false !== strpos($value, ' ');
-    }
-
-    public function getName()
-    {
-        return 'legacy_integration_test';
-    }
-}
diff --git a/vendor/twig/twig/tests/LexerTest.php b/vendor/twig/twig/tests/LexerTest.php
deleted file mode 100644
index 8bd2de5cf9b1de1f4816934790aa5d83f495d0cf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/LexerTest.php
+++ /dev/null
@@ -1,378 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Lexer;
-use Twig\Source;
-use Twig\Token;
-
-class LexerTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testLegacyConstructorSignature()
-    {
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize('{{ foo }}', 'foo');
-        $this->assertEquals('foo', $stream->getFilename());
-        $this->assertEquals('{{ foo }}', $stream->getSource());
-    }
-
-    public function testNameLabelForTag()
-    {
-        $template = '{% § %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $this->assertSame('§', $stream->expect(Token::NAME_TYPE)->getValue());
-    }
-
-    public function testNameLabelForFunction()
-    {
-        $template = '{{ §() }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        $stream->expect(Token::VAR_START_TYPE);
-        $this->assertSame('§', $stream->expect(Token::NAME_TYPE)->getValue());
-    }
-
-    public function testBracketsNesting()
-    {
-        $template = '{{ {"a":{"b":"c"}} }}';
-
-        $this->assertEquals(2, $this->countToken($template, Token::PUNCTUATION_TYPE, '{'));
-        $this->assertEquals(2, $this->countToken($template, Token::PUNCTUATION_TYPE, '}'));
-    }
-
-    protected function countToken($template, $type, $value = null)
-    {
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        $count = 0;
-        while (!$stream->isEOF()) {
-            $token = $stream->next();
-            if ($type === $token->getType()) {
-                if (null === $value || $value === $token->getValue()) {
-                    ++$count;
-                }
-            }
-        }
-
-        return $count;
-    }
-
-    public function testLineDirective()
-    {
-        $template = "foo\n"
-            ."bar\n"
-            ."{% line 10 %}\n"
-            ."{{\n"
-            ."baz\n"
-            ."}}\n";
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        // foo\nbar\n
-        $this->assertSame(1, $stream->expect(Token::TEXT_TYPE)->getLine());
-        // \n (after {% line %})
-        $this->assertSame(10, $stream->expect(Token::TEXT_TYPE)->getLine());
-        // {{
-        $this->assertSame(11, $stream->expect(Token::VAR_START_TYPE)->getLine());
-        // baz
-        $this->assertSame(12, $stream->expect(Token::NAME_TYPE)->getLine());
-    }
-
-    public function testLineDirectiveInline()
-    {
-        $template = "foo\n"
-            ."bar{% line 10 %}{{\n"
-            ."baz\n"
-            ."}}\n";
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        // foo\nbar
-        $this->assertSame(1, $stream->expect(Token::TEXT_TYPE)->getLine());
-        // {{
-        $this->assertSame(10, $stream->expect(Token::VAR_START_TYPE)->getLine());
-        // baz
-        $this->assertSame(11, $stream->expect(Token::NAME_TYPE)->getLine());
-    }
-
-    public function testLongComments()
-    {
-        $template = '{# '.str_repeat('*', 100000).' #}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testLongVerbatim()
-    {
-        $template = '{% verbatim %}'.str_repeat('*', 100000).'{% endverbatim %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testLongVar()
-    {
-        $template = '{{ '.str_repeat('x', 100000).' }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testLongBlock()
-    {
-        $template = '{% '.str_repeat('x', 100000).' %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testBigNumbers()
-    {
-        $template = '{{ 922337203685477580700 }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->next();
-        $node = $stream->next();
-        $this->assertEquals('922337203685477580700', $node->getValue());
-    }
-
-    public function testStringWithEscapedDelimiter()
-    {
-        $tests = [
-            "{{ 'foo \' bar' }}" => 'foo \' bar',
-            '{{ "foo \" bar" }}' => 'foo " bar',
-        ];
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        foreach ($tests as $template => $expected) {
-            $stream = $lexer->tokenize(new Source($template, 'index'));
-            $stream->expect(Token::VAR_START_TYPE);
-            $stream->expect(Token::STRING_TYPE, $expected);
-
-            // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-            // can be executed without throwing any exceptions
-            $this->addToAssertionCount(1);
-        }
-    }
-
-    public function testStringWithInterpolation()
-    {
-        $template = 'foo {{ "bar #{ baz + 1 }" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::TEXT_TYPE, 'foo ');
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar ');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'baz');
-        $stream->expect(Token::OPERATOR_TYPE, '+');
-        $stream->expect(Token::NUMBER_TYPE, '1');
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithEscapedInterpolation()
-    {
-        $template = '{{ "bar \#{baz+1}" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar #{baz+1}');
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithHash()
-    {
-        $template = '{{ "bar # baz" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar # baz');
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithUnterminatedInterpolation()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unclosed """');
-
-        $template = '{{ "bar #{x" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-    }
-
-    public function testStringWithNestedInterpolations()
-    {
-        $template = '{{ "bar #{ "foo#{bar}" }" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar ');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'foo');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'bar');
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithNestedInterpolationsInBlock()
-    {
-        $template = '{% foo "bar #{ "foo#{bar}" }" %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'foo');
-        $stream->expect(Token::STRING_TYPE, 'bar ');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'foo');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'bar');
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testOperatorEndingWithALetterAtTheEndOfALine()
-    {
-        $template = "{{ 1 and\n0}}";
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::NUMBER_TYPE, 1);
-        $stream->expect(Token::OPERATOR_TYPE, 'and');
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testUnterminatedVariable()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unclosed "variable" in "index" at line 3');
-
-        $template = '
-
-{{
-
-bar
-
-
-';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-    }
-
-    public function testUnterminatedBlock()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unclosed "block" in "index" at line 3');
-
-        $template = '
-
-{%
-
-bar
-
-
-';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-    }
-
-    public function testOverridingSyntax()
-    {
-        $template = '[# comment #]{# variable #}/# if true #/true/# endif #/';
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), [
-            'tag_comment' => ['[#', '#]'],
-            'tag_block' => ['/#', '#/'],
-            'tag_variable' => ['{#', '#}'],
-        ]);
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'variable');
-        $stream->expect(Token::VAR_END_TYPE);
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'if');
-        $stream->expect(Token::NAME_TYPE, 'true');
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $stream->expect(Token::TEXT_TYPE, 'true');
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'endif');
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-}
diff --git a/vendor/twig/twig/tests/Loader/ArrayTest.php b/vendor/twig/twig/tests/Loader/ArrayTest.php
deleted file mode 100644
index ab670b58aa21962c9c52a5e5f9a5881064f26ce0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/ArrayTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-namespace Twig\Tests\Loader;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Loader\ArrayLoader;
-
-class ArrayTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testGetSource()
-    {
-        $loader = new ArrayLoader(['foo' => 'bar']);
-
-        $this->assertEquals('bar', $loader->getSource('foo'));
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetSourceWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->getSource('foo');
-    }
-
-    public function testGetSourceContextWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->getSourceContext('foo');
-    }
-
-    public function testGetCacheKey()
-    {
-        $loader = new ArrayLoader(['foo' => 'bar']);
-
-        $this->assertEquals('foo:bar', $loader->getCacheKey('foo'));
-    }
-
-    public function testGetCacheKeyWhenTemplateHasDuplicateContent()
-    {
-        $loader = new ArrayLoader([
-            'foo' => 'bar',
-            'baz' => 'bar',
-        ]);
-
-        $this->assertEquals('foo:bar', $loader->getCacheKey('foo'));
-        $this->assertEquals('baz:bar', $loader->getCacheKey('baz'));
-    }
-
-    public function testGetCacheKeyIsProtectedFromEdgeCollisions()
-    {
-        $loader = new ArrayLoader([
-            'foo__' => 'bar',
-            'foo' => '__bar',
-        ]);
-
-        $this->assertEquals('foo__:bar', $loader->getCacheKey('foo__'));
-        $this->assertEquals('foo:__bar', $loader->getCacheKey('foo'));
-    }
-
-    public function testGetCacheKeyWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->getCacheKey('foo');
-    }
-
-    public function testSetTemplate()
-    {
-        $loader = new ArrayLoader([]);
-        $loader->setTemplate('foo', 'bar');
-
-        $this->assertEquals('bar', $loader->getSourceContext('foo')->getCode());
-    }
-
-    public function testIsFresh()
-    {
-        $loader = new ArrayLoader(['foo' => 'bar']);
-        $this->assertTrue($loader->isFresh('foo', time()));
-    }
-
-    public function testIsFreshWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->isFresh('foo', time());
-    }
-
-    public function testTemplateReference()
-    {
-        $name = new Twig_Test_Loader_TemplateReference('foo');
-        $loader = new ArrayLoader(['foo' => 'bar']);
-
-        $loader->getCacheKey($name);
-        $loader->getSourceContext($name);
-        $loader->isFresh($name, time());
-        $loader->setTemplate($name, 'foo:bar');
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without crashing PHP
-        $this->addToAssertionCount(1);
-    }
-}
-
-class Twig_Test_Loader_TemplateReference
-{
-    private $name;
-
-    public function __construct($name)
-    {
-        $this->name = $name;
-    }
-
-    public function __toString()
-    {
-        return $this->name;
-    }
-}
diff --git a/vendor/twig/twig/tests/Loader/ChainTest.php b/vendor/twig/twig/tests/Loader/ChainTest.php
deleted file mode 100644
index d89e2cc23f99bdec75eb8873508e17eecc3100f1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/ChainTest.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?php
-
-namespace Twig\Tests\Loader;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\ChainLoader;
-use Twig\Loader\ExistsLoaderInterface;
-use Twig\Loader\FilesystemLoader;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Source;
-
-class ChainTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testGetSource()
-    {
-        $loader = new ChainLoader([
-            new ArrayLoader(['foo' => 'bar']),
-            new ArrayLoader(['foo' => 'foobar', 'bar' => 'foo']),
-        ]);
-
-        $this->assertEquals('bar', $loader->getSource('foo'));
-        $this->assertEquals('foo', $loader->getSource('bar'));
-    }
-
-    public function testGetSourceContext()
-    {
-        $path = __DIR__.'/../Fixtures';
-        $loader = new ChainLoader([
-            new ArrayLoader(['foo' => 'bar']),
-            new ArrayLoader(['errors/index.html' => 'baz']),
-            new FilesystemLoader([$path]),
-        ]);
-
-        $this->assertEquals('foo', $loader->getSourceContext('foo')->getName());
-        $this->assertSame('', $loader->getSourceContext('foo')->getPath());
-
-        $this->assertEquals('errors/index.html', $loader->getSourceContext('errors/index.html')->getName());
-        $this->assertSame('', $loader->getSourceContext('errors/index.html')->getPath());
-        $this->assertEquals('baz', $loader->getSourceContext('errors/index.html')->getCode());
-
-        $this->assertEquals('errors/base.html', $loader->getSourceContext('errors/base.html')->getName());
-        $this->assertEquals(realpath($path.'/errors/base.html'), realpath($loader->getSourceContext('errors/base.html')->getPath()));
-        $this->assertNotEquals('baz', $loader->getSourceContext('errors/base.html')->getCode());
-    }
-
-    public function testGetSourceContextWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ChainLoader([]);
-
-        $loader->getSourceContext('foo');
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetSourceWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ChainLoader([]);
-
-        $loader->getSource('foo');
-    }
-
-    public function testGetCacheKey()
-    {
-        $loader = new ChainLoader([
-            new ArrayLoader(['foo' => 'bar']),
-            new ArrayLoader(['foo' => 'foobar', 'bar' => 'foo']),
-        ]);
-
-        $this->assertEquals('foo:bar', $loader->getCacheKey('foo'));
-        $this->assertEquals('bar:foo', $loader->getCacheKey('bar'));
-    }
-
-    public function testGetCacheKeyWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ChainLoader([]);
-
-        $loader->getCacheKey('foo');
-    }
-
-    public function testAddLoader()
-    {
-        $loader = new ChainLoader();
-        $loader->addLoader(new ArrayLoader(['foo' => 'bar']));
-
-        $this->assertEquals('bar', $loader->getSourceContext('foo')->getCode());
-    }
-
-    public function testExists()
-    {
-        $loader1 = $this->createMock('Twig\Tests\Loader\ChainTestLoaderWithExistsInterface');
-        $loader1->expects($this->once())->method('exists')->willReturn(false);
-        $loader1->expects($this->never())->method('getSourceContext');
-
-        // can be removed in 2.0
-        $loader2 = $this->createMock('Twig\Tests\Loader\ChainTestLoaderInterface');
-        //$loader2 = $this->createMock(['\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface']);
-        $loader2->expects($this->once())->method('getSourceContext')->willReturn(new Source('content', 'index'));
-
-        $loader = new ChainLoader();
-        $loader->addLoader($loader1);
-        $loader->addLoader($loader2);
-
-        $this->assertTrue($loader->exists('foo'));
-    }
-}
-
-interface ChainTestLoaderInterface extends LoaderInterface, SourceContextLoaderInterface
-{
-}
-
-interface ChainTestLoaderWithExistsInterface extends LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface
-{
-}
diff --git a/vendor/twig/twig/tests/Loader/FilesystemTest.php b/vendor/twig/twig/tests/Loader/FilesystemTest.php
deleted file mode 100644
index 3307a9b7e932d73862ec977d80b7d2a3597c3ad5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/FilesystemTest.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-
-namespace Twig\Tests\Loader;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Loader\FilesystemLoader;
-
-class FilesystemTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetSourceContext()
-    {
-        $path = __DIR__.'/../Fixtures';
-        $loader = new FilesystemLoader([$path]);
-        $this->assertEquals('errors/index.html', $loader->getSourceContext('errors/index.html')->getName());
-        $this->assertEquals(realpath($path.'/errors/index.html'), realpath($loader->getSourceContext('errors/index.html')->getPath()));
-    }
-
-    /**
-     * @dataProvider getSecurityTests
-     */
-    public function testSecurity($template)
-    {
-        $loader = new FilesystemLoader([__DIR__.'/../Fixtures']);
-
-        try {
-            $loader->getCacheKey($template);
-            $this->fail();
-        } catch (LoaderError $e) {
-            $this->assertStringNotContainsString('Unable to find template', $e->getMessage());
-        }
-    }
-
-    public function getSecurityTests()
-    {
-        return [
-            ["AutoloaderTest\0.php"],
-            ['..\\AutoloaderTest.php'],
-            ['..\\\\\\AutoloaderTest.php'],
-            ['../AutoloaderTest.php'],
-            ['..////AutoloaderTest.php'],
-            ['./../AutoloaderTest.php'],
-            ['.\\..\\AutoloaderTest.php'],
-            ['././././././../AutoloaderTest.php'],
-            ['.\\./.\\./.\\./../AutoloaderTest.php'],
-            ['foo/../../AutoloaderTest.php'],
-            ['foo\\..\\..\\AutoloaderTest.php'],
-            ['foo/../bar/../../AutoloaderTest.php'],
-            ['foo/bar/../../../AutoloaderTest.php'],
-            ['filters/../../AutoloaderTest.php'],
-            ['filters//..//..//AutoloaderTest.php'],
-            ['filters\\..\\..\\AutoloaderTest.php'],
-            ['filters\\\\..\\\\..\\\\AutoloaderTest.php'],
-            ['filters\\//../\\/\\..\\AutoloaderTest.php'],
-            ['/../AutoloaderTest.php'],
-        ];
-    }
-
-    /**
-     * @dataProvider getBasePaths
-     */
-    public function testPaths($basePath, $cacheKey, $rootPath)
-    {
-        $loader = new FilesystemLoader([$basePath.'/normal', $basePath.'/normal_bis'], $rootPath);
-        $loader->setPaths([$basePath.'/named', $basePath.'/named_bis'], 'named');
-        $loader->addPath($basePath.'/named_ter', 'named');
-        $loader->addPath($basePath.'/normal_ter');
-        $loader->prependPath($basePath.'/normal_final');
-        $loader->prependPath($basePath.'/named/../named_quater', 'named');
-        $loader->prependPath($basePath.'/named_final', 'named');
-
-        $this->assertEquals([
-            $basePath.'/normal_final',
-            $basePath.'/normal',
-            $basePath.'/normal_bis',
-            $basePath.'/normal_ter',
-        ], $loader->getPaths());
-        $this->assertEquals([
-            $basePath.'/named_final',
-            $basePath.'/named/../named_quater',
-            $basePath.'/named',
-            $basePath.'/named_bis',
-            $basePath.'/named_ter',
-        ], $loader->getPaths('named'));
-
-        // do not use realpath here as it would make the test unuseful
-        $this->assertEquals($cacheKey, str_replace('\\', '/', $loader->getCacheKey('@named/named_absolute.html')));
-        $this->assertEquals("path (final)\n", $loader->getSourceContext('index.html')->getCode());
-        $this->assertEquals("path (final)\n", $loader->getSourceContext('@__main__/index.html')->getCode());
-        $this->assertEquals("named path (final)\n", $loader->getSourceContext('@named/index.html')->getCode());
-    }
-
-    public function getBasePaths()
-    {
-        return [
-            [
-                __DIR__.'/Fixtures',
-                'tests/Loader/Fixtures/named_quater/named_absolute.html',
-                null,
-            ],
-            [
-                __DIR__.'/Fixtures/../Fixtures',
-                'tests/Loader/Fixtures/named_quater/named_absolute.html',
-                null,
-            ],
-            [
-                'tests/Loader/Fixtures',
-                'tests/Loader/Fixtures/named_quater/named_absolute.html',
-                getcwd(),
-            ],
-            [
-                'Fixtures',
-                'Fixtures/named_quater/named_absolute.html',
-                getcwd().'/tests/Loader',
-            ],
-            [
-                'Fixtures',
-                'Fixtures/named_quater/named_absolute.html',
-                getcwd().'/tests/../tests/Loader',
-            ],
-        ];
-    }
-
-    public function testEmptyConstructor()
-    {
-        $loader = new FilesystemLoader();
-        $this->assertEquals([], $loader->getPaths());
-    }
-
-    public function testGetNamespaces()
-    {
-        $loader = new FilesystemLoader(sys_get_temp_dir());
-        $this->assertEquals([FilesystemLoader::MAIN_NAMESPACE], $loader->getNamespaces());
-
-        $loader->addPath(sys_get_temp_dir(), 'named');
-        $this->assertEquals([FilesystemLoader::MAIN_NAMESPACE, 'named'], $loader->getNamespaces());
-    }
-
-    public function testFindTemplateExceptionNamespace()
-    {
-        $basePath = __DIR__.'/Fixtures';
-
-        $loader = new FilesystemLoader([$basePath.'/normal']);
-        $loader->addPath($basePath.'/named', 'named');
-
-        try {
-            $loader->getSourceContext('@named/nowhere.html');
-        } catch (\Exception $e) {
-            $this->assertInstanceOf('\Twig\Error\LoaderError', $e);
-            $this->assertStringContainsString('Unable to find template "@named/nowhere.html"', $e->getMessage());
-        }
-    }
-
-    public function testFindTemplateWithCache()
-    {
-        $basePath = __DIR__.'/Fixtures';
-
-        $loader = new FilesystemLoader([$basePath.'/normal']);
-        $loader->addPath($basePath.'/named', 'named');
-
-        // prime the cache for index.html in the named namespace
-        $namedSource = $loader->getSourceContext('@named/index.html')->getCode();
-        $this->assertEquals("named path\n", $namedSource);
-
-        // get index.html from the main namespace
-        $this->assertEquals("path\n", $loader->getSourceContext('index.html')->getCode());
-    }
-
-    public function testLoadTemplateAndRenderBlockWithCache()
-    {
-        $loader = new FilesystemLoader([]);
-        $loader->addPath(__DIR__.'/Fixtures/themes/theme2');
-        $loader->addPath(__DIR__.'/Fixtures/themes/theme1');
-        $loader->addPath(__DIR__.'/Fixtures/themes/theme1', 'default_theme');
-
-        $twig = new Environment($loader);
-
-        $template = $twig->load('blocks.html.twig');
-        $this->assertSame('block from theme 1', $template->renderBlock('b1', []));
-
-        $template = $twig->load('blocks.html.twig');
-        $this->assertSame('block from theme 2', $template->renderBlock('b2', []));
-    }
-
-    public function getArrayInheritanceTests()
-    {
-        return [
-            'valid array inheritance' => ['array_inheritance_valid_parent.html.twig'],
-            'array inheritance with null first template' => ['array_inheritance_null_parent.html.twig'],
-            'array inheritance with empty first template' => ['array_inheritance_empty_parent.html.twig'],
-            'array inheritance with non-existent first template' => ['array_inheritance_nonexistent_parent.html.twig'],
-        ];
-    }
-
-    /**
-     * @dataProvider getArrayInheritanceTests
-     *
-     * @param $templateName string Template name with array inheritance
-     */
-    public function testArrayInheritance($templateName)
-    {
-        $loader = new FilesystemLoader([]);
-        $loader->addPath(__DIR__.'/Fixtures/inheritance');
-
-        $twig = new Environment($loader);
-
-        $template = $twig->load($templateName);
-        $this->assertSame('VALID Child', $template->renderBlock('body', []));
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testLoadTemplateFromPhar()
-    {
-        $loader = new FilesystemLoader([]);
-        // phar-sample.phar was created with the following script:
-        // $f = new Phar('phar-test.phar');
-        // $f->addFromString('hello.twig', 'hello from phar');
-        $loader->addPath('phar://'.__DIR__.'/Fixtures/phar/phar-sample.phar');
-        $this->assertSame('hello from phar', $loader->getSourceContext('hello.twig')->getCode());
-    }
-
-    public function testTemplateExistsAlwaysReturnsBool()
-    {
-        $loader = new FilesystemLoader([]);
-        $this->assertFalse($loader->exists("foo\0.twig"));
-        $this->assertFalse($loader->exists('../foo.twig'));
-        $this->assertFalse($loader->exists('@foo'));
-        $this->assertFalse($loader->exists('foo'));
-        $this->assertFalse($loader->exists('@foo/bar.twig'));
-
-        $loader->addPath(__DIR__.'/Fixtures/normal');
-        $this->assertTrue($loader->exists('index.html'));
-        $loader->addPath(__DIR__.'/Fixtures/normal', 'foo');
-        $this->assertTrue($loader->exists('@foo/index.html'));
-    }
-}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig
deleted file mode 100644
index 6977ebf66cd2e3570953196b801fcfe216b9a630..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends ['','parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig
deleted file mode 100644
index 5b50a8b211c8d1f487aa6d49ee23b6b74f40feca..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends ['nonexistent.html.twig','parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig
deleted file mode 100644
index a16b3adedb835a534e175b9685f8b557aef93aac..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends [null,'parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig
deleted file mode 100644
index 4940dad4167c426bfcbe83220b38f215983f1eba..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends ['parent.html.twig','spare_parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/parent.html.twig
deleted file mode 100644
index d594c0ed49dd21d7b045723d6af779ee7e6a2e37..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/parent.html.twig
+++ /dev/null
@@ -1 +0,0 @@
-{% block body %}VALID{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/spare_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/spare_parent.html.twig
deleted file mode 100644
index 70b7360a2c037b179c11a493a1fd4ad68d2204dd..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/spare_parent.html.twig
+++ /dev/null
@@ -1 +0,0 @@
-{% block body %}SPARE PARENT{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named/index.html
deleted file mode 100644
index 9e5449c7c50ee5c04705925262a39c58ba6a8b27..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_bis/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named_bis/index.html
deleted file mode 100644
index d3a272b19d640cf0163dc4913408a5f8946c3cad..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_bis/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (bis)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_final/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named_final/index.html
deleted file mode 100644
index 9f05d15075c697baad20e91143f3774b3d5c91e7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_final/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (final)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_quater/named_absolute.html b/vendor/twig/twig/tests/Loader/Fixtures/named_quater/named_absolute.html
deleted file mode 100644
index b1fb5f5d7cacdd89a85d6c30059ce2663364c489..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_quater/named_absolute.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (quater)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_ter/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named_ter/index.html
deleted file mode 100644
index 24fb68ad2e9be450bb6ddecffd040523bdad7918..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_ter/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (ter)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal/index.html
deleted file mode 100644
index e7a8fd4d0a8d87356d50e1f950a5be802aa2b1a3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal_bis/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal_bis/index.html
deleted file mode 100644
index bfa916049ff601250716d8dd9e6585c98d659d22..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal_bis/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path (bis)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal_final/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal_final/index.html
deleted file mode 100644
index 73a089bbda5b1c45b20bd06934402a60e4d4975a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal_final/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path (final)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal_ter/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal_ter/index.html
deleted file mode 100644
index b7ad97d8f480bf9cd8cf80146aef1ee548d19961..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal_ter/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path (ter)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/phar/phar-sample.phar b/vendor/twig/twig/tests/Loader/Fixtures/phar/phar-sample.phar
deleted file mode 100644
index 092bbfae3e4c98b308dc98bf7653ead68ae3ee6e..0000000000000000000000000000000000000000
Binary files a/vendor/twig/twig/tests/Loader/Fixtures/phar/phar-sample.phar and /dev/null differ
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme1/blocks.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/themes/theme1/blocks.html.twig
deleted file mode 100644
index dd0cbc2e712d9833a96172813b24f8297b544f7d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme1/blocks.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% block b1 %}block from theme 1{% endblock %}
-
-{% block b2 %}block from theme 1{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme2/blocks.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/themes/theme2/blocks.html.twig
deleted file mode 100644
index 07cf9db0dea5cbca6dfeab4093c8c376a6e93603..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme2/blocks.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% use '@default_theme/blocks.html.twig' %}
-
-{% block b2 %}block from theme 2{% endblock %}
diff --git a/vendor/twig/twig/tests/NativeExtensionTest.php b/vendor/twig/twig/tests/NativeExtensionTest.php
deleted file mode 100644
index 3399292e386402927b47d7d3633765bf8926d19c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/NativeExtensionTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class NativeExtensionTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     */
-    public function testGetProperties()
-    {
-        if (\PHP_VERSION_ID >= 70000) {
-            $this->markTestSkipped('Extension is not available on PHP 7+');
-        }
-
-        $twig = new Environment(new ArrayLoader(['index' => '{{ d1.date }}{{ d2.date }}']), [
-            'debug' => true,
-            'cache' => false,
-            'autoescape' => false,
-        ]);
-
-        $d1 = new \DateTime();
-        $d2 = new \DateTime();
-        $output = $twig->render('index', compact('d1', 'd2'));
-
-        // If it fails, PHP will crash.
-        $this->assertEquals($output, $d1->date.$d2->date);
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/AutoEscapeTest.php b/vendor/twig/twig/tests/Node/AutoEscapeTest.php
deleted file mode 100644
index d0f641c083c0b36ee1247c9d738fa2a6e756cd65..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/AutoEscapeTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\AutoEscapeNode;
-use Twig\Node\Node;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class AutoEscapeTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new Node([new TextNode('foo', 1)]);
-        $node = new AutoEscapeNode(true, $body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertTrue($node->getAttribute('value'));
-    }
-
-    public function getTests()
-    {
-        $body = new Node([new TextNode('foo', 1)]);
-        $node = new AutoEscapeNode(true, $body, 1);
-
-        return [
-            [$node, "// line 1\necho \"foo\";"],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/BlockReferenceTest.php b/vendor/twig/twig/tests/Node/BlockReferenceTest.php
deleted file mode 100644
index 63dc0707c78bf5673060d03bfd1bc0fd4756554e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/BlockReferenceTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\BlockReferenceNode;
-use Twig\Test\NodeTestCase;
-
-class BlockReferenceTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new BlockReferenceNode('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        return [
-            [new BlockReferenceNode('foo', 1), <<<EOF
-// line 1
-\$this->displayBlock('foo', \$context, \$blocks);
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/BlockTest.php b/vendor/twig/twig/tests/Node/BlockTest.php
deleted file mode 100644
index 235cbaf84fd4f830a61b02e8ebf3ce823a97e060..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/BlockTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\BlockNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class BlockTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $node = new BlockNode('foo', $body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $body = new TextNode('foo', 1);
-        $node = new BlockNode('foo', $body, 1);
-
-        return [
-            [$node, <<<EOF
-// line 1
-public function block_foo(\$context, array \$blocks = [])
-{
-    echo "foo";
-}
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/DeprecatedTest.php b/vendor/twig/twig/tests/Node/DeprecatedTest.php
deleted file mode 100644
index f4d1cb3b4dafd65d4c069d3cbfadbb6d2c6ba0ae..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/DeprecatedTest.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\DeprecatedNode;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\IfNode;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigFunction;
-
-class DeprecatedTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $node = new DeprecatedNode($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('expr'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new ConstantExpression('This section is deprecated', 1);
-        $node = new DeprecatedNode($expr, 1, 'deprecated');
-        $node->setTemplateName('foo.twig');
-
-        $tests[] = [$node, <<<EOF
-// line 1
-@trigger_error("This section is deprecated"." (\"foo.twig\" at line 1).", E_USER_DEPRECATED);
-EOF
-        ];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new DeprecatedNode($expr, 2, 'deprecated'),
-        ], [], 1);
-        $node = new IfNode($t, null, 1);
-        $node->setTemplateName('foo.twig');
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    // line 2
-    @trigger_error("This section is deprecated"." (\"foo.twig\" at line 2).", E_USER_DEPRECATED);
-}
-EOF
-        ];
-
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addFunction(new TwigFunction('foo', 'foo', []));
-
-        $expr = new FunctionExpression('foo', new Node(), 1);
-        $node = new DeprecatedNode($expr, 1, 'deprecated');
-        $node->setTemplateName('foo.twig');
-
-        $compiler = $this->getCompiler($environment);
-        $varName = $compiler->getVarName();
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$$varName = foo();
-@trigger_error(\$$varName." (\"foo.twig\" at line 1).", E_USER_DEPRECATED);
-EOF
-        , $environment];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/DoTest.php b/vendor/twig/twig/tests/Node/DoTest.php
deleted file mode 100644
index aaebba5f7952418c486b4b7d163f7fef32483753..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/DoTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\DoNode;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class DoTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $node = new DoNode($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('expr'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new ConstantExpression('foo', 1);
-        $node = new DoNode($expr, 1);
-        $tests[] = [$node, "// line 1\n\"foo\";"];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/ArrayTest.php b/vendor/twig/twig/tests/Node/Expression/ArrayTest.php
deleted file mode 100644
index cfd9c67f3cbd70143b07af929c3565c84cfa2de7..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/ArrayTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ArrayTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $elements = [new ConstantExpression('foo', 1), $foo = new ConstantExpression('bar', 1)];
-        $node = new ArrayExpression($elements, 1);
-
-        $this->assertEquals($foo, $node->getNode(1));
-    }
-
-    public function getTests()
-    {
-        $elements = [
-            new ConstantExpression('foo', 1),
-            new ConstantExpression('bar', 1),
-
-            new ConstantExpression('bar', 1),
-            new ConstantExpression('foo', 1),
-        ];
-        $node = new ArrayExpression($elements, 1);
-
-        return [
-            [$node, '["foo" => "bar", "bar" => "foo"]'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/AssignNameTest.php b/vendor/twig/twig/tests/Node/Expression/AssignNameTest.php
deleted file mode 100644
index 80dbe94c6c0b613bf2e48ca8032ffa7526acf572..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/AssignNameTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Test\NodeTestCase;
-
-class AssignNameTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new AssignNameExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $node = new AssignNameExpression('foo', 1);
-
-        return [
-            [$node, '$context["foo"]'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/AddTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/AddTest.php
deleted file mode 100644
index 5cff2bcff1de1599964c151722f360f81ac39bd3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/AddTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\AddBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class AddTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AddBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AddBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 + 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/AndTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/AndTest.php
deleted file mode 100644
index d83aed04d964c73aed57cdbbf379c35471b26f4d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/AndTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\AndBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class AndTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AndBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AndBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 && 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/ConcatTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/ConcatTest.php
deleted file mode 100644
index 0eff603ba282a8bcf23d18435c6095c4a9f99fb5..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/ConcatTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\ConcatBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ConcatTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ConcatBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ConcatBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 . 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/DivTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/DivTest.php
deleted file mode 100644
index 20cf4646f850e1f922d4aa9bf48627805f5fe623..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/DivTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\DivBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class DivTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new DivBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new DivBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 / 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/FloorDivTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/FloorDivTest.php
deleted file mode 100644
index 826859851bbb97b4e285bf3c7560a434e7e65ae0..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/FloorDivTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\FloorDivBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class FloorDivTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new FloorDivBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new FloorDivBinary($left, $right, 1);
-
-        return [
-            [$node, '(int) floor((1 / 2))'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/ModTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/ModTest.php
deleted file mode 100644
index 2069ef08950d31b313e09d4710f2ca3094bd7cc1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/ModTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\ModBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ModTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ModBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ModBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 % 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/MulTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/MulTest.php
deleted file mode 100644
index c50dfc12b1bb35e04b78dfdedb9513b266c0934d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/MulTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\MulBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class MulTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new MulBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new MulBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 * 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/OrTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/OrTest.php
deleted file mode 100644
index 94df7c0b165fa2e1451117c1d25301a77a77fe1c..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/OrTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\OrBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class OrTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new OrBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new OrBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 || 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/SubTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/SubTest.php
deleted file mode 100644
index 04eebe290d601466b1d73cc5de3ab870cbd472ae..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/SubTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\SubBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class SubTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new SubBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new SubBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 - 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/CallTest.php b/vendor/twig/twig/tests/Node/Expression/CallTest.php
deleted file mode 100644
index 1ffb4c7b6f46e4bf9cf375e2a96a4a5a5830c143..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/CallTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\CallExpression;
-
-class CallTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetArguments()
-    {
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $this->assertEquals(['U', null], $node->getArguments('date', ['format' => 'U', 'timestamp' => null]));
-    }
-
-    public function testGetArgumentsWhenPositionalArgumentsAfterNamedArguments()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Positional arguments cannot be used after named arguments for function "date".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['timestamp' => 123456, 'Y-m-d']);
-    }
-
-    public function testGetArgumentsWhenArgumentIsDefinedTwice()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Argument "format" is defined twice for function "date".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['Y-m-d', 'format' => 'U']);
-    }
-
-    public function testGetArgumentsWithWrongNamedArgumentName()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown argument "unknown" for function "date(format, timestamp)".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['Y-m-d', 'timestamp' => null, 'unknown' => '']);
-    }
-
-    public function testGetArgumentsWithWrongNamedArgumentNames()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown arguments "unknown1", "unknown2" for function "date(format, timestamp)".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['Y-m-d', 'timestamp' => null, 'unknown1' => '', 'unknown2' => '']);
-    }
-
-    public function testResolveArgumentsWithMissingValueForOptionalArgument()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Argument "case_sensitivity" could not be assigned for function "substr_compare(main_str, str, offset, length, case_sensitivity)" because it is mapped to an internal PHP function which cannot determine default value for optional argument "length".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'substr_compare']);
-        $node->getArguments('substr_compare', ['abcd', 'bc', 'offset' => 1, 'case_sensitivity' => true]);
-    }
-
-    public function testResolveArgumentsOnlyNecessaryArgumentsForCustomFunction()
-    {
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'custom_function']);
-
-        $this->assertEquals(['arg1'], $node->getArguments([$this, 'customFunction'], ['arg1' => 'arg1']));
-    }
-
-    public function testGetArgumentsForStaticMethod()
-    {
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'custom_static_function']);
-        $this->assertEquals(['arg1'], $node->getArguments(__CLASS__.'::customStaticFunction', ['arg1' => 'arg1']));
-    }
-
-    public function testResolveArgumentsWithMissingParameterForArbitraryArguments()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessage('The last parameter of "Twig\\Tests\\Node\\Expression\\CallTest::customFunctionWithArbitraryArguments" for function "foo" must be an array with default value, eg. "array $arg = []".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'foo', 'is_variadic' => true]);
-        $node->getArguments([$this, 'customFunctionWithArbitraryArguments'], []);
-    }
-
-    public static function customStaticFunction($arg1, $arg2 = 'default', $arg3 = [])
-    {
-    }
-
-    public function customFunction($arg1, $arg2 = 'default', $arg3 = [])
-    {
-    }
-
-    public function customFunctionWithArbitraryArguments()
-    {
-    }
-
-    public function testResolveArgumentsWithMissingParameterForArbitraryArgumentsOnFunction()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessageRegExp('#^The last parameter of "Twig\\\\Tests\\\\Node\\\\Expression\\\\custom_Twig_Tests_Node_Expression_CallTest_function" for function "foo" must be an array with default value, eg\\. "array \\$arg \\= \\[\\]"\\.$#');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'foo', 'is_variadic' => true]);
-        $node->getArguments('Twig\Tests\Node\Expression\custom_Twig_Tests_Node_Expression_CallTest_function', []);
-    }
-
-    public function testResolveArgumentsWithMissingParameterForArbitraryArgumentsOnObject()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessageRegExp('#^The last parameter of "Twig\\\\Tests\\\\Node\\\\Expression\\\\CallableTestClass\\:\\:__invoke" for function "foo" must be an array with default value, eg\\. "array \\$arg \\= \\[\\]"\\.$#');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'foo', 'is_variadic' => true]);
-        $node->getArguments(new CallableTestClass(), []);
-    }
-}
-
-class Node_Expression_Call extends CallExpression
-{
-    public function getArguments($callable, $arguments)
-    {
-        return parent::getArguments($callable, $arguments);
-    }
-}
-
-class CallableTestClass
-{
-    public function __invoke($required)
-    {
-    }
-}
-
-function custom_Twig_Tests_Node_Expression_CallTest_function($required)
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/ConditionalTest.php b/vendor/twig/twig/tests/Node/Expression/ConditionalTest.php
deleted file mode 100644
index 004e9c9513e894d4a730f2ebaa822b47b3a75249..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/ConditionalTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ConditionalTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr1 = new ConstantExpression(1, 1);
-        $expr2 = new ConstantExpression(2, 1);
-        $expr3 = new ConstantExpression(3, 1);
-        $node = new ConditionalExpression($expr1, $expr2, $expr3, 1);
-
-        $this->assertEquals($expr1, $node->getNode('expr1'));
-        $this->assertEquals($expr2, $node->getNode('expr2'));
-        $this->assertEquals($expr3, $node->getNode('expr3'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr1 = new ConstantExpression(1, 1);
-        $expr2 = new ConstantExpression(2, 1);
-        $expr3 = new ConstantExpression(3, 1);
-        $node = new ConditionalExpression($expr1, $expr2, $expr3, 1);
-        $tests[] = [$node, '((1) ? (2) : (3))'];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/ConstantTest.php b/vendor/twig/twig/tests/Node/Expression/ConstantTest.php
deleted file mode 100644
index 920892e942d5f58bcbe7528bee50db5496c9c467..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/ConstantTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ConstantTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new ConstantExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('value'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $node = new ConstantExpression('foo', 1);
-        $tests[] = [$node, '"foo"'];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/FilterTest.php b/vendor/twig/twig/tests/Node/Expression/FilterTest.php
deleted file mode 100644
index d7e38f3171d2d03047591160d3e767c51edc1906..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/FilterTest.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigFilter;
-
-class FilterTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $name = new ConstantExpression('upper', 1);
-        $args = new Node();
-        $node = new FilterExpression($expr, $name, $args, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-        $this->assertEquals($name, $node->getNode('filter'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-    }
-
-    public function getTests()
-    {
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addFilter(new TwigFilter('bar', 'bar', ['needs_environment' => true]));
-        $environment->addFilter(new TwigFilter('barbar', 'Twig\Tests\Node\Expression\twig_tests_filter_barbar', ['needs_context' => true, 'is_variadic' => true]));
-
-        $tests = [];
-
-        $expr = new ConstantExpression('foo', 1);
-        $node = $this->createFilter($expr, 'upper');
-        $node = $this->createFilter($node, 'number_format', [new ConstantExpression(2, 1), new ConstantExpression('.', 1), new ConstantExpression(',', 1)]);
-
-        if (\function_exists('mb_get_info')) {
-            $tests[] = [$node, 'twig_number_format_filter($this->env, twig_upper_filter($this->env, "foo"), 2, ".", ",")'];
-        } else {
-            $tests[] = [$node, 'twig_number_format_filter($this->env, strtoupper("foo"), 2, ".", ",")'];
-        }
-
-        // named arguments
-        $date = new ConstantExpression(0, 1);
-        $node = $this->createFilter($date, 'date', [
-            'timezone' => new ConstantExpression('America/Chicago', 1),
-            'format' => new ConstantExpression('d/m/Y H:i:s P', 1),
-        ]);
-        $tests[] = [$node, 'twig_date_format_filter($this->env, 0, "d/m/Y H:i:s P", "America/Chicago")'];
-
-        // skip an optional argument
-        $date = new ConstantExpression(0, 1);
-        $node = $this->createFilter($date, 'date', [
-            'timezone' => new ConstantExpression('America/Chicago', 1),
-        ]);
-        $tests[] = [$node, 'twig_date_format_filter($this->env, 0, null, "America/Chicago")'];
-
-        // underscores vs camelCase for named arguments
-        $string = new ConstantExpression('abc', 1);
-        $node = $this->createFilter($string, 'reverse', [
-            'preserve_keys' => new ConstantExpression(true, 1),
-        ]);
-        $tests[] = [$node, 'twig_reverse_filter($this->env, "abc", true)'];
-        $node = $this->createFilter($string, 'reverse', [
-            'preserveKeys' => new ConstantExpression(true, 1),
-        ]);
-        $tests[] = [$node, 'twig_reverse_filter($this->env, "abc", true)'];
-
-        // filter as an anonymous function
-        if (\PHP_VERSION_ID >= 50300) {
-            $node = $this->createFilter(new ConstantExpression('foo', 1), 'anonymous');
-            $tests[] = [$node, 'call_user_func_array($this->env->getFilter(\'anonymous\')->getCallable(), ["foo"])'];
-        }
-
-        // needs environment
-        $node = $this->createFilter($string, 'bar');
-        $tests[] = [$node, 'bar($this->env, "abc")', $environment];
-
-        $node = $this->createFilter($string, 'bar', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'bar($this->env, "abc", "bar")', $environment];
-
-        // arbitrary named arguments
-        $node = $this->createFilter($string, 'barbar');
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc")', $environment];
-
-        $node = $this->createFilter($string, 'barbar', ['foo' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc", null, null, ["foo" => "bar"])', $environment];
-
-        $node = $this->createFilter($string, 'barbar', ['arg2' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc", null, "bar")', $environment];
-
-        $node = $this->createFilter($string, 'barbar', [
-            new ConstantExpression('1', 1),
-            new ConstantExpression('2', 1),
-            new ConstantExpression('3', 1),
-            'foo' => new ConstantExpression('bar', 1),
-        ]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc", "1", "2", [0 => "3", "foo" => "bar"])', $environment];
-
-        return $tests;
-    }
-
-    public function testCompileWithWrongNamedArgumentName()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown argument "foobar" for filter "date(format, timezone)" at line 1.');
-
-        $date = new ConstantExpression(0, 1);
-        $node = $this->createFilter($date, 'date', [
-            'foobar' => new ConstantExpression('America/Chicago', 1),
-        ]);
-
-        $compiler = $this->getCompiler();
-        $compiler->compile($node);
-    }
-
-    public function testCompileWithMissingNamedArgument()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Value for argument "from" is required for filter "replace" at line 1.');
-
-        $value = new ConstantExpression(0, 1);
-        $node = $this->createFilter($value, 'replace', [
-            'to' => new ConstantExpression('foo', 1),
-        ]);
-
-        $compiler = $this->getCompiler();
-        $compiler->compile($node);
-    }
-
-    protected function createFilter($node, $name, array $arguments = [])
-    {
-        $name = new ConstantExpression($name, 1);
-        $arguments = new Node($arguments);
-
-        return new FilterExpression($node, $name, $arguments, 1);
-    }
-
-    protected function getEnvironment()
-    {
-        if (\PHP_VERSION_ID >= 50300) {
-            return include 'PHP53/FilterInclude.php';
-        }
-
-        return parent::getEnvironment();
-    }
-}
-
-function twig_tests_filter_barbar($context, $string, $arg1 = null, $arg2 = null, array $args = [])
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/FunctionTest.php b/vendor/twig/twig/tests/Node/Expression/FunctionTest.php
deleted file mode 100644
index 489f17ab41d5d77de305f3026062f45cd871353d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/FunctionTest.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigFunction;
-
-class FunctionTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $name = 'function';
-        $args = new Node();
-        $node = new FunctionExpression($name, $args, 1);
-
-        $this->assertEquals($name, $node->getAttribute('name'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-    }
-
-    public function getTests()
-    {
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addFunction(new TwigFunction('foo', 'foo', []));
-        $environment->addFunction(new TwigFunction('bar', 'bar', ['needs_environment' => true]));
-        $environment->addFunction(new TwigFunction('foofoo', 'foofoo', ['needs_context' => true]));
-        $environment->addFunction(new TwigFunction('foobar', 'foobar', ['needs_environment' => true, 'needs_context' => true]));
-        $environment->addFunction(new TwigFunction('barbar', 'Twig\Tests\Node\Expression\twig_tests_function_barbar', ['is_variadic' => true]));
-
-        $tests = [];
-
-        $node = $this->createFunction('foo');
-        $tests[] = [$node, 'foo()', $environment];
-
-        $node = $this->createFunction('foo', [new ConstantExpression('bar', 1), new ConstantExpression('foobar', 1)]);
-        $tests[] = [$node, 'foo("bar", "foobar")', $environment];
-
-        $node = $this->createFunction('bar');
-        $tests[] = [$node, 'bar($this->env)', $environment];
-
-        $node = $this->createFunction('bar', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'bar($this->env, "bar")', $environment];
-
-        $node = $this->createFunction('foofoo');
-        $tests[] = [$node, 'foofoo($context)', $environment];
-
-        $node = $this->createFunction('foofoo', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'foofoo($context, "bar")', $environment];
-
-        $node = $this->createFunction('foobar');
-        $tests[] = [$node, 'foobar($this->env, $context)', $environment];
-
-        $node = $this->createFunction('foobar', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'foobar($this->env, $context, "bar")', $environment];
-
-        // named arguments
-        $node = $this->createFunction('date', [
-            'timezone' => new ConstantExpression('America/Chicago', 1),
-            'date' => new ConstantExpression(0, 1),
-        ]);
-        $tests[] = [$node, 'twig_date_converter($this->env, 0, "America/Chicago")'];
-
-        // arbitrary named arguments
-        $node = $this->createFunction('barbar');
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar()', $environment];
-
-        $node = $this->createFunction('barbar', ['foo' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar(null, null, ["foo" => "bar"])', $environment];
-
-        $node = $this->createFunction('barbar', ['arg2' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar(null, "bar")', $environment];
-
-        $node = $this->createFunction('barbar', [
-            new ConstantExpression('1', 1),
-            new ConstantExpression('2', 1),
-            new ConstantExpression('3', 1),
-            'foo' => new ConstantExpression('bar', 1),
-        ]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar("1", "2", [0 => "3", "foo" => "bar"])', $environment];
-
-        // function as an anonymous function
-        if (\PHP_VERSION_ID >= 50300) {
-            $node = $this->createFunction('anonymous', [new ConstantExpression('foo', 1)]);
-            $tests[] = [$node, 'call_user_func_array($this->env->getFunction(\'anonymous\')->getCallable(), ["foo"])'];
-        }
-
-        return $tests;
-    }
-
-    protected function createFunction($name, array $arguments = [])
-    {
-        return new FunctionExpression($name, new Node($arguments), 1);
-    }
-
-    protected function getEnvironment()
-    {
-        if (\PHP_VERSION_ID >= 50300) {
-            return include 'PHP53/FunctionInclude.php';
-        }
-
-        return parent::getEnvironment();
-    }
-}
-
-function twig_tests_function_barbar($arg1 = null, $arg2 = null, array $args = [])
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/GetAttrTest.php b/vendor/twig/twig/tests/Node/Expression/GetAttrTest.php
deleted file mode 100644
index 5f9a0a79d86f2f2d42d082ec257d4388ba3c6185..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/GetAttrTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Template;
-use Twig\Test\NodeTestCase;
-
-class GetAttrTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new NameExpression('foo', 1);
-        $attr = new ConstantExpression('bar', 1);
-        $args = new ArrayExpression([], 1);
-        $args->addElement(new NameExpression('foo', 1));
-        $args->addElement(new ConstantExpression('bar', 1));
-        $node = new GetAttrExpression($expr, $attr, $args, Template::ARRAY_CALL, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-        $this->assertEquals($attr, $node->getNode('attribute'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-        $this->assertEquals(Template::ARRAY_CALL, $node->getAttribute('type'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new NameExpression('foo', 1);
-        $attr = new ConstantExpression('bar', 1);
-        $args = new ArrayExpression([], 1);
-        $node = new GetAttrExpression($expr, $attr, $args, Template::ANY_CALL, 1);
-        $tests[] = [$node, sprintf('%s%s, "bar", [])', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1))];
-
-        $node = new GetAttrExpression($expr, $attr, $args, Template::ARRAY_CALL, 1);
-        $tests[] = [$node, sprintf('%s%s, "bar", [], "array")', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1))];
-
-        $args = new ArrayExpression([], 1);
-        $args->addElement(new NameExpression('foo', 1));
-        $args->addElement(new ConstantExpression('bar', 1));
-        $node = new GetAttrExpression($expr, $attr, $args, Template::METHOD_CALL, 1);
-        $tests[] = [$node, sprintf('%s%s, "bar", [0 => %s, 1 => "bar"], "method")', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1), $this->getVariableGetter('foo'))];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/NameTest.php b/vendor/twig/twig/tests/Node/Expression/NameTest.php
deleted file mode 100644
index 738f28ae04941e4173f2b59b1cb8383292196060..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/NameTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\NameExpression;
-use Twig\Test\NodeTestCase;
-
-class NameTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new NameExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $node = new NameExpression('foo', 1);
-        $context = new NameExpression('_context', 1);
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]);
-        $env1 = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => false]);
-
-        if (\PHP_VERSION_ID >= 70000) {
-            $output = '($context["foo"] ?? $this->getContext($context, "foo"))';
-        } elseif (\PHP_VERSION_ID >= 50400) {
-            $output = '(isset($context["foo"]) ? $context["foo"] : $this->getContext($context, "foo"))';
-        } else {
-            $output = '$this->getContext($context, "foo")';
-        }
-
-        return [
-            [$node, "// line 1\n".$output, $env],
-            [$node, $this->getVariableGetter('foo', 1), $env1],
-            [$context, "// line 1\n\$context"],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/NullCoalesceTest.php b/vendor/twig/twig/tests/Node/Expression/NullCoalesceTest.php
deleted file mode 100644
index bbfff5763baa11755a1fb22a0e74b6fa4cf61ab8..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/NullCoalesceTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\NullCoalesceExpression;
-use Twig\Test\NodeTestCase;
-
-class NullCoalesceTest extends NodeTestCase
-{
-    public function getTests()
-    {
-        $tests = [];
-
-        $left = new NameExpression('foo', 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new NullCoalesceExpression($left, $right, 1);
-        if (\PHP_VERSION_ID >= 70000) {
-            $tests[] = [$node, "((// line 1\n\$context[\"foo\"]) ?? (2))"];
-        } elseif (\PHP_VERSION_ID >= 50400) {
-            $tests[] = [$node, "(((// line 1\n(isset(\$context[\"foo\"]) || array_key_exists(\"foo\", \$context)) &&  !(null === (isset(\$context[\"foo\"]) ? \$context[\"foo\"] : null)))) ? ((isset(\$context[\"foo\"]) ? \$context[\"foo\"] : null)) : (2))"];
-        } else {
-            $tests[] = [$node, "(((// line 1\n(isset(\$context[\"foo\"]) || array_key_exists(\"foo\", \$context)) &&  !(null === \$this->getContext(\$context, \"foo\")))) ? (\$this->getContext(\$context, \"foo\")) : (2))"];
-        }
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/PHP53/FilterInclude.php b/vendor/twig/twig/tests/Node/Expression/PHP53/FilterInclude.php
deleted file mode 100644
index fc8f51776106e39a06f097bf17c10b54b0671ac3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/PHP53/FilterInclude.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\PHP53;
-
-$env = new \Twig\Environment(new \Twig\Loader\ArrayLoader([]));
-$env->addFilter(new \Twig\TwigFilter('anonymous', function () {}));
-
-return $env;
diff --git a/vendor/twig/twig/tests/Node/Expression/PHP53/FunctionInclude.php b/vendor/twig/twig/tests/Node/Expression/PHP53/FunctionInclude.php
deleted file mode 100644
index b364001cdeec1f66dc0add427f5f4e214a99b431..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/PHP53/FunctionInclude.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\PHP53;
-
-$env = new \Twig\Environment(new \Twig\Loader\ArrayLoader([]));
-$env->addFunction(new \Twig\TwigFunction('anonymous', function () {}));
-
-return $env;
diff --git a/vendor/twig/twig/tests/Node/Expression/PHP53/TestInclude.php b/vendor/twig/twig/tests/Node/Expression/PHP53/TestInclude.php
deleted file mode 100644
index b2bf2cede50398e62e346a0772aa0f089cd5037e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/PHP53/TestInclude.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\PHP53;
-
-$env = new \Twig\Environment(new \Twig\Loader\ArrayLoader([]));
-$env->addTest(new \Twig\TwigTest('anonymous', function () {}));
-
-return $env;
diff --git a/vendor/twig/twig/tests/Node/Expression/ParentTest.php b/vendor/twig/twig/tests/Node/Expression/ParentTest.php
deleted file mode 100644
index 1a67b77fe40bf5bd0d7e7386656e13ffb0ac703d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/ParentTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ParentExpression;
-use Twig\Test\NodeTestCase;
-
-class ParentTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new ParentExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-        $tests[] = [new ParentExpression('foo', 1), '$this->renderParentBlock("foo", $context, $blocks)'];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/TestTest.php b/vendor/twig/twig/tests/Node/Expression/TestTest.php
deleted file mode 100644
index 11e1596ca401d10dbcf6b6145e00d1e045e92569..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/TestTest.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Test\NullTest;
-use Twig\Node\Expression\TestExpression;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigTest;
-
-class TestTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $name = new ConstantExpression('null', 1);
-        $args = new Node();
-        $node = new TestExpression($expr, $name, $args, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-        $this->assertEquals($name, $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addTest(new TwigTest('barbar', 'Twig\Tests\Node\Expression\twig_tests_test_barbar', ['is_variadic' => true, 'need_context' => true]));
-
-        $tests = [];
-
-        $expr = new ConstantExpression('foo', 1);
-        $node = new NullTest($expr, 'null', new Node([]), 1);
-        $tests[] = [$node, '(null === "foo")'];
-
-        // test as an anonymous function
-        if (\PHP_VERSION_ID >= 50300) {
-            $node = $this->createTest(new ConstantExpression('foo', 1), 'anonymous', [new ConstantExpression('foo', 1)]);
-            $tests[] = [$node, 'call_user_func_array($this->env->getTest(\'anonymous\')->getCallable(), ["foo", "foo"])'];
-        }
-
-        // arbitrary named arguments
-        $string = new ConstantExpression('abc', 1);
-        $node = $this->createTest($string, 'barbar');
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc")', $environment];
-
-        $node = $this->createTest($string, 'barbar', ['foo' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc", null, null, ["foo" => "bar"])', $environment];
-
-        $node = $this->createTest($string, 'barbar', ['arg2' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc", null, "bar")', $environment];
-
-        $node = $this->createTest($string, 'barbar', [
-            new ConstantExpression('1', 1),
-            new ConstantExpression('2', 1),
-            new ConstantExpression('3', 1),
-            'foo' => new ConstantExpression('bar', 1),
-        ]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc", "1", "2", [0 => "3", "foo" => "bar"])', $environment];
-
-        return $tests;
-    }
-
-    protected function createTest($node, $name, array $arguments = [])
-    {
-        return new TestExpression($node, $name, new Node($arguments), 1);
-    }
-
-    protected function getEnvironment()
-    {
-        if (\PHP_VERSION_ID >= 50300) {
-            return include 'PHP53/TestInclude.php';
-        }
-
-        return parent::getEnvironment();
-    }
-}
-
-function twig_tests_test_barbar($string, $arg1 = null, $arg2 = null, array $args = [])
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Unary/NegTest.php b/vendor/twig/twig/tests/Node/Expression/Unary/NegTest.php
deleted file mode 100644
index fcbf66ece8fdd7b7fa8554406d6a7ac204cc3ca2..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Unary/NegTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Unary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Unary\NegUnary;
-use Twig\Test\NodeTestCase;
-
-class NegTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression(1, 1);
-        $node = new NegUnary($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-    }
-
-    public function getTests()
-    {
-        $node = new ConstantExpression(1, 1);
-        $node = new NegUnary($node, 1);
-
-        return [
-            [$node, '-1'],
-            [new NegUnary($node, 1), '- -1'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Unary/NotTest.php b/vendor/twig/twig/tests/Node/Expression/Unary/NotTest.php
deleted file mode 100644
index 8197111e17a4d22a6df6045b09e6375d117a3cec..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Unary/NotTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Unary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Unary\NotUnary;
-use Twig\Test\NodeTestCase;
-
-class NotTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression(1, 1);
-        $node = new NotUnary($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-    }
-
-    public function getTests()
-    {
-        $node = new ConstantExpression(1, 1);
-        $node = new NotUnary($node, 1);
-
-        return [
-            [$node, '!1'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Unary/PosTest.php b/vendor/twig/twig/tests/Node/Expression/Unary/PosTest.php
deleted file mode 100644
index 780e339e0cfdbd043c17ae79ba0fb94661248dd4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/Expression/Unary/PosTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Unary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Unary\PosUnary;
-use Twig\Test\NodeTestCase;
-
-class PosTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression(1, 1);
-        $node = new PosUnary($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-    }
-
-    public function getTests()
-    {
-        $node = new ConstantExpression(1, 1);
-        $node = new PosUnary($node, 1);
-
-        return [
-            [$node, '+1'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/ForTest.php b/vendor/twig/twig/tests/Node/ForTest.php
deleted file mode 100644
index d960ed6196bfcd94dde8d2b7597b812b508db3d4..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/ForTest.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\ForNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Test\NodeTestCase;
-
-class ForTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $keyTarget = new AssignNameExpression('key', 1);
-        $valueTarget = new AssignNameExpression('item', 1);
-        $seq = new NameExpression('items', 1);
-        $ifexpr = new ConstantExpression(true, 1);
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', false);
-
-        $this->assertEquals($keyTarget, $node->getNode('key_target'));
-        $this->assertEquals($valueTarget, $node->getNode('value_target'));
-        $this->assertEquals($seq, $node->getNode('seq'));
-        $this->assertTrue($node->getAttribute('ifexpr'));
-        $this->assertInstanceOf('\Twig\Node\IfNode', $node->getNode('body'));
-        $this->assertEquals($body, $node->getNode('body')->getNode('tests')->getNode(1)->getNode(0));
-        $this->assertFalse($node->hasNode('else'));
-
-        $else = new PrintNode(new NameExpression('foo', 1), 1);
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', false);
-        $this->assertEquals($else, $node->getNode('else'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $keyTarget = new AssignNameExpression('key', 1);
-        $valueTarget = new AssignNameExpression('item', 1);
-        $seq = new NameExpression('items', 1);
-        $ifexpr = null;
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', false);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('items')});
-foreach (\$context['_seq'] as \$context["key"] => \$context["item"]) {
-    echo {$this->getVariableGetter('foo')};
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['key'], \$context['item'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        $keyTarget = new AssignNameExpression('k', 1);
-        $valueTarget = new AssignNameExpression('v', 1);
-        $seq = new NameExpression('values', 1);
-        $ifexpr = null;
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', true);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('values')});
-\$context['loop'] = [
-  'parent' => \$context['_parent'],
-  'index0' => 0,
-  'index'  => 1,
-  'first'  => true,
-];
-if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof \Countable)) {
-    \$length = count(\$context['_seq']);
-    \$context['loop']['revindex0'] = \$length - 1;
-    \$context['loop']['revindex'] = \$length;
-    \$context['loop']['length'] = \$length;
-    \$context['loop']['last'] = 1 === \$length;
-}
-foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) {
-    echo {$this->getVariableGetter('foo')};
-    ++\$context['loop']['index0'];
-    ++\$context['loop']['index'];
-    \$context['loop']['first'] = false;
-    if (isset(\$context['loop']['length'])) {
-        --\$context['loop']['revindex0'];
-        --\$context['loop']['revindex'];
-        \$context['loop']['last'] = 0 === \$context['loop']['revindex0'];
-    }
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        $keyTarget = new AssignNameExpression('k', 1);
-        $valueTarget = new AssignNameExpression('v', 1);
-        $seq = new NameExpression('values', 1);
-        $ifexpr = new ConstantExpression(true, 1);
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', true);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('values')});
-\$context['loop'] = [
-  'parent' => \$context['_parent'],
-  'index0' => 0,
-  'index'  => 1,
-  'first'  => true,
-];
-foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) {
-    if (true) {
-        echo {$this->getVariableGetter('foo')};
-        ++\$context['loop']['index0'];
-        ++\$context['loop']['index'];
-        \$context['loop']['first'] = false;
-    }
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        $keyTarget = new AssignNameExpression('k', 1);
-        $valueTarget = new AssignNameExpression('v', 1);
-        $seq = new NameExpression('values', 1);
-        $ifexpr = null;
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = new PrintNode(new NameExpression('foo', 1), 1);
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', true);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('values')});
-\$context['_iterated'] = false;
-\$context['loop'] = [
-  'parent' => \$context['_parent'],
-  'index0' => 0,
-  'index'  => 1,
-  'first'  => true,
-];
-if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof \Countable)) {
-    \$length = count(\$context['_seq']);
-    \$context['loop']['revindex0'] = \$length - 1;
-    \$context['loop']['revindex'] = \$length;
-    \$context['loop']['length'] = \$length;
-    \$context['loop']['last'] = 1 === \$length;
-}
-foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) {
-    echo {$this->getVariableGetter('foo')};
-    \$context['_iterated'] = true;
-    ++\$context['loop']['index0'];
-    ++\$context['loop']['index'];
-    \$context['loop']['first'] = false;
-    if (isset(\$context['loop']['length'])) {
-        --\$context['loop']['revindex0'];
-        --\$context['loop']['revindex'];
-        \$context['loop']['last'] = 0 === \$context['loop']['revindex0'];
-    }
-}
-if (!\$context['_iterated']) {
-    echo {$this->getVariableGetter('foo')};
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/IfTest.php b/vendor/twig/twig/tests/Node/IfTest.php
deleted file mode 100644
index d5a6eac8ab499ce67774ee62e786756e193ef5f3..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/IfTest.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\IfNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Test\NodeTestCase;
-
-class IfTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-        ], [], 1);
-        $else = null;
-        $node = new IfNode($t, $else, 1);
-
-        $this->assertEquals($t, $node->getNode('tests'));
-        $this->assertFalse($node->hasNode('else'));
-
-        $else = new PrintNode(new NameExpression('bar', 1), 1);
-        $node = new IfNode($t, $else, 1);
-        $this->assertEquals($else, $node->getNode('else'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-        ], [], 1);
-        $else = null;
-        $node = new IfNode($t, $else, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    echo {$this->getVariableGetter('foo')};
-}
-EOF
-        ];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-            new ConstantExpression(false, 1),
-            new PrintNode(new NameExpression('bar', 1), 1),
-        ], [], 1);
-        $else = null;
-        $node = new IfNode($t, $else, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    echo {$this->getVariableGetter('foo')};
-} elseif (false) {
-    echo {$this->getVariableGetter('bar')};
-}
-EOF
-        ];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-        ], [], 1);
-        $else = new PrintNode(new NameExpression('bar', 1), 1);
-        $node = new IfNode($t, $else, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    echo {$this->getVariableGetter('foo')};
-} else {
-    echo {$this->getVariableGetter('bar')};
-}
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/ImportTest.php b/vendor/twig/twig/tests/Node/ImportTest.php
deleted file mode 100644
index dbb49ab92ad325968329e91f00f7703fbf4a5e09..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/ImportTest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\ImportNode;
-use Twig\Test\NodeTestCase;
-
-class ImportTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $macro = new ConstantExpression('foo.twig', 1);
-        $var = new AssignNameExpression('macro', 1);
-        $node = new ImportNode($macro, $var, 1);
-
-        $this->assertEquals($macro, $node->getNode('expr'));
-        $this->assertEquals($var, $node->getNode('var'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $macro = new ConstantExpression('foo.twig', 1);
-        $var = new AssignNameExpression('macro', 1);
-        $node = new ImportNode($macro, $var, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context["macro"] = \$this->loadTemplate("foo.twig", null, 1)->unwrap();
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/IncludeTest.php b/vendor/twig/twig/tests/Node/IncludeTest.php
deleted file mode 100644
index ab1fdf0bfe018fc132448f9f0aa2d9cbf9080bd9..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/IncludeTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\IncludeNode;
-use Twig\Test\NodeTestCase;
-
-class IncludeTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo.twig', 1);
-        $node = new IncludeNode($expr, null, false, false, 1);
-
-        $this->assertFalse($node->hasNode('variables'));
-        $this->assertEquals($expr, $node->getNode('expr'));
-        $this->assertFalse($node->getAttribute('only'));
-
-        $vars = new ArrayExpression([new ConstantExpression('foo', 1), new ConstantExpression(true, 1)], 1);
-        $node = new IncludeNode($expr, $vars, true, false, 1);
-        $this->assertEquals($vars, $node->getNode('variables'));
-        $this->assertTrue($node->getAttribute('only'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new ConstantExpression('foo.twig', 1);
-        $node = new IncludeNode($expr, null, false, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate("foo.twig", null, 1)->display(\$context);
-EOF
-        ];
-
-        $expr = new ConditionalExpression(
-                        new ConstantExpression(true, 1),
-                        new ConstantExpression('foo', 1),
-                        new ConstantExpression('foo', 1),
-                        0
-                    );
-        $node = new IncludeNode($expr, null, false, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate(((true) ? ("foo") : ("foo")), null, 1)->display(\$context);
-EOF
-        ];
-
-        $expr = new ConstantExpression('foo.twig', 1);
-        $vars = new ArrayExpression([new ConstantExpression('foo', 1), new ConstantExpression(true, 1)], 1);
-        $node = new IncludeNode($expr, $vars, false, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate("foo.twig", null, 1)->display(twig_array_merge(\$context, ["foo" => true]));
-EOF
-        ];
-
-        $node = new IncludeNode($expr, $vars, true, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate("foo.twig", null, 1)->display(twig_to_array(["foo" => true]));
-EOF
-        ];
-
-        $node = new IncludeNode($expr, $vars, true, true, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$__internal_%s = null;
-try {
-    \$__internal_%s =     \$this->loadTemplate("foo.twig", null, 1);
-} catch (LoaderError \$e) {
-    // ignore missing template
-}
-if (\$__internal_%s) {
-    \$__internal_%s->display(twig_to_array(["foo" => true]));
-}
-EOF
-        , null, true];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/MacroTest.php b/vendor/twig/twig/tests/Node/MacroTest.php
deleted file mode 100644
index 82fc9999da24647dd24f4ccd9365be926cecefcb..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/MacroTest.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\MacroNode;
-use Twig\Node\Node;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class MacroTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $arguments = new Node([new NameExpression('foo', 1)], [], 1);
-        $node = new MacroNode('foo', $body, $arguments, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertEquals($arguments, $node->getNode('arguments'));
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $body = new TextNode('foo', 1);
-        $arguments = new Node([
-            'foo' => new ConstantExpression(null, 1),
-            'bar' => new ConstantExpression('Foo', 1),
-        ], [], 1);
-        $node = new MacroNode('foo', $body, $arguments, 1);
-
-        if (\PHP_VERSION_ID >= 50600) {
-            $declaration = ', ...$__varargs__';
-            $varargs = '$__varargs__';
-        } else {
-            $declaration = '';
-            $varargs = 'func_num_args() > 2 ? array_slice(func_get_args(), 2) : []';
-        }
-
-        return [
-            [$node, <<<EOF
-// line 1
-public function getfoo(\$__foo__ = null, \$__bar__ = "Foo"$declaration)
-{
-    \$context = \$this->env->mergeGlobals([
-        "foo" => \$__foo__,
-        "bar" => \$__bar__,
-        "varargs" => $varargs,
-    ]);
-
-    \$blocks = [];
-
-    ob_start(function () { return ''; });
-    try {
-        echo "foo";
-    } catch (\Exception \$e) {
-        ob_end_clean();
-
-        throw \$e;
-    } catch (\Throwable \$e) {
-        ob_end_clean();
-
-        throw \$e;
-    }
-
-    return ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset());
-}
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/ModuleTest.php b/vendor/twig/twig/tests/Node/ModuleTest.php
deleted file mode 100644
index aa000d39b2de7b4d90d83a6c8a27bba16451994e..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/ModuleTest.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\ImportNode;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\Node\SetNode;
-use Twig\Node\TextNode;
-use Twig\Source;
-use Twig\Test\NodeTestCase;
-
-class ModuleTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $parent = new ConstantExpression('layout.twig', 1);
-        $blocks = new Node();
-        $macros = new Node();
-        $traits = new Node();
-        $source = new Source('{{ foo }}', 'foo.twig');
-        $node = new ModuleNode($body, $parent, $blocks, $macros, $traits, new Node([]), $source);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertEquals($blocks, $node->getNode('blocks'));
-        $this->assertEquals($macros, $node->getNode('macros'));
-        $this->assertEquals($parent, $node->getNode('parent'));
-        $this->assertEquals($source->getName(), $node->getTemplateName());
-    }
-
-    public function getTests()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-
-        $tests = [];
-
-        $body = new TextNode('foo', 1);
-        $extends = null;
-        $blocks = new Node();
-        $macros = new Node();
-        $traits = new Node();
-        $source = new Source('{{ foo }}', 'foo.twig');
-
-        $node = new ModuleNode($body, $extends, $blocks, $macros, $traits, new Node([]), $source);
-        $tests[] = [$node, <<<EOF
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* foo.twig */
-class __TwigTemplate_%x extends \Twig\Template
-{
-    public function __construct(Environment \$env)
-    {
-        parent::__construct(\$env);
-
-        \$this->parent = false;
-
-        \$this->blocks = [
-        ];
-    }
-
-    protected function doDisplay(array \$context, array \$blocks = [])
-    {
-        // line 1
-        echo "foo";
-    }
-
-    public function getTemplateName()
-    {
-        return "foo.twig";
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  30 => 1,);
-    }
-
-    /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
-    public function getSource()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
-
-        return \$this->getSourceContext()->getCode();
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "foo.twig", "");
-    }
-}
-EOF
-        , $twig, true];
-
-        $import = new ImportNode(new ConstantExpression('foo.twig', 1), new AssignNameExpression('macro', 1), 2);
-
-        $body = new Node([$import]);
-        $extends = new ConstantExpression('layout.twig', 1);
-
-        $node = new ModuleNode($body, $extends, $blocks, $macros, $traits, new Node([]), $source);
-        $tests[] = [$node, <<<EOF
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* foo.twig */
-class __TwigTemplate_%x extends \Twig\Template
-{
-    public function __construct(Environment \$env)
-    {
-        parent::__construct(\$env);
-
-        \$this->blocks = [
-        ];
-    }
-
-    protected function doGetParent(array \$context)
-    {
-        // line 1
-        return "layout.twig";
-    }
-
-    protected function doDisplay(array \$context, array \$blocks = [])
-    {
-        // line 2
-        \$context["macro"] = \$this->loadTemplate("foo.twig", "foo.twig", 2)->unwrap();
-        // line 1
-        \$this->parent = \$this->loadTemplate("layout.twig", "foo.twig", 1);
-        \$this->parent->display(\$context, array_merge(\$this->blocks, \$blocks));
-    }
-
-    public function getTemplateName()
-    {
-        return "foo.twig";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  36 => 1,  34 => 2,  28 => 1,);
-    }
-
-    /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
-    public function getSource()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
-
-        return \$this->getSourceContext()->getCode();
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "foo.twig", "");
-    }
-}
-EOF
-        , $twig, true];
-
-        $set = new SetNode(false, new Node([new AssignNameExpression('foo', 4)]), new Node([new ConstantExpression('foo', 4)]), 4);
-        $body = new Node([$set]);
-        $extends = new ConditionalExpression(
-                        new ConstantExpression(true, 2),
-                        new ConstantExpression('foo', 2),
-                        new ConstantExpression('foo', 2),
-                        2
-                    );
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['debug' => true]);
-        $node = new ModuleNode($body, $extends, $blocks, $macros, $traits, new Node([]), $source);
-        $tests[] = [$node, <<<EOF
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* foo.twig */
-class __TwigTemplate_%x extends \Twig\Template
-{
-    protected function doGetParent(array \$context)
-    {
-        // line 2
-        return \$this->loadTemplate(((true) ? ("foo") : ("foo")), "foo.twig", 2);
-    }
-
-    protected function doDisplay(array \$context, array \$blocks = [])
-    {
-        // line 4
-        \$context["foo"] = "foo";
-        // line 2
-        \$this->getParent(\$context)->display(\$context, array_merge(\$this->blocks, \$blocks));
-    }
-
-    public function getTemplateName()
-    {
-        return "foo.twig";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  28 => 2,  26 => 4,  20 => 2,);
-    }
-
-    /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
-    public function getSource()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
-
-        return \$this->getSourceContext()->getCode();
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("{{ foo }}", "foo.twig", "");
-    }
-}
-EOF
-        , $twig, true];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/PrintTest.php b/vendor/twig/twig/tests/Node/PrintTest.php
deleted file mode 100644
index 49f8eb49840262aba3deb971792e01669dd771ad..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/PrintTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\PrintNode;
-use Twig\Test\NodeTestCase;
-
-class PrintTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $node = new PrintNode($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('expr'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-        $tests[] = [new PrintNode(new ConstantExpression('foo', 1), 1), "// line 1\necho \"foo\";"];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/SandboxTest.php b/vendor/twig/twig/tests/Node/SandboxTest.php
deleted file mode 100644
index b81781e8b45c7e03043cbeac66a3670a037cabed..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/SandboxTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\SandboxNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class SandboxTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $node = new SandboxNode($body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $body = new TextNode('foo', 1);
-        $node = new SandboxNode($body, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (!\$alreadySandboxed = \$this->sandbox->isSandboxed()) {
-    \$this->sandbox->enableSandbox();
-}
-echo "foo";
-if (!\$alreadySandboxed) {
-    \$this->sandbox->disableSandbox();
-}
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/SetTest.php b/vendor/twig/twig/tests/Node/SetTest.php
deleted file mode 100644
index 370af95f2cdaf204e53ac2ccc2bc19095ea14eea..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/SetTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Node\SetNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class SetTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new Node([new ConstantExpression('foo', 1)], [], 1);
-        $node = new SetNode(false, $names, $values, 1);
-
-        $this->assertEquals($names, $node->getNode('names'));
-        $this->assertEquals($values, $node->getNode('values'));
-        $this->assertFalse($node->getAttribute('capture'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new Node([new ConstantExpression('foo', 1)], [], 1);
-        $node = new SetNode(false, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context["foo"] = "foo";
-EOF
-        ];
-
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new Node([new PrintNode(new ConstantExpression('foo', 1), 1)], [], 1);
-        $node = new SetNode(true, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-ob_start(function () { return ''; });
-echo "foo";
-\$context["foo"] = ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset());
-EOF
-        ];
-
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new TextNode('foo', 1);
-        $node = new SetNode(true, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context["foo"] = ('' === \$tmp = "foo") ? '' : new Markup(\$tmp, \$this->env->getCharset());
-EOF
-        ];
-
-        $names = new Node([new AssignNameExpression('foo', 1), new AssignNameExpression('bar', 1)], [], 1);
-        $values = new Node([new ConstantExpression('foo', 1), new NameExpression('bar', 1)], [], 1);
-        $node = new SetNode(false, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-list(\$context["foo"], \$context["bar"]) = ["foo", {$this->getVariableGetter('bar')}];
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/SpacelessTest.php b/vendor/twig/twig/tests/Node/SpacelessTest.php
deleted file mode 100644
index 5f3c81442ed29840d82710a8059e6446b5c3eb8a..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/SpacelessTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Node;
-use Twig\Node\SpacelessNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class SpacelessTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new Node([new TextNode('<div>   <div>   foo   </div>   </div>', 1)]);
-        $node = new SpacelessNode($body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-    }
-
-    public function getTests()
-    {
-        $body = new Node([new TextNode('<div>   <div>   foo   </div>   </div>', 1)]);
-        $node = new SpacelessNode($body, 1);
-
-        return [
-            [$node, <<<EOF
-// line 1
-ob_start(function () { return ''; });
-echo "<div>   <div>   foo   </div>   </div>";
-echo trim(preg_replace('/>\s+</', '><', ob_get_clean()));
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/TextTest.php b/vendor/twig/twig/tests/Node/TextTest.php
deleted file mode 100644
index ace191213d8e0ea8671a5059c9be60b0eff07118..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Node/TextTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class TextTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new TextNode('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('data'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-        $tests[] = [new TextNode('foo', 1), "// line 1\necho \"foo\";"];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/NodeTraverserTest.php b/vendor/twig/twig/tests/NodeTraverserTest.php
deleted file mode 100644
index 7136ae7f6cc32e1c8993c17e63f49cfce4ed1f14..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/NodeTraverserTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Node;
-use Twig\NodeTraverser;
-use Twig\NodeVisitor\NodeVisitorInterface;
-
-class NodeTraverserTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testNodeIsNullWhenTraversing()
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $traverser = new NodeTraverser($env, [new IdentityVisitor()]);
-        $n = new Node([new Node([]), null, new Node([])]);
-        $this->assertCount(3, $traverser->traverse($n));
-    }
-}
-
-class IdentityVisitor implements NodeVisitorInterface
-{
-    public function enterNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function leaveNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/twig/twig/tests/NodeVisitor/OptimizerTest.php b/vendor/twig/twig/tests/NodeVisitor/OptimizerTest.php
deleted file mode 100644
index 6bcc828264c99c2923c9a8defe09c49516e6230d..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/NodeVisitor/OptimizerTest.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-namespace Twig\Tests\NodeVisitor;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\ForNode;
-use Twig\Source;
-
-class OptimizerTest extends \PHPUnit\Framework\TestCase
-{
-    public function testRenderBlockOptimizer()
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-
-        $stream = $env->parse($env->tokenize(new Source('{{ block("foo") }}', 'index')));
-
-        $node = $stream->getNode('body')->getNode(0);
-
-        $this->assertInstanceOf('\Twig\Node\Expression\BlockReferenceExpression', $node);
-        $this->assertTrue($node->getAttribute('output'));
-    }
-
-    public function testRenderParentBlockOptimizer()
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-
-        $stream = $env->parse($env->tokenize(new Source('{% extends "foo" %}{% block content %}{{ parent() }}{% endblock %}', 'index')));
-
-        $node = $stream->getNode('blocks')->getNode('content')->getNode(0)->getNode('body');
-
-        $this->assertInstanceOf('\Twig\Node\Expression\ParentExpression', $node);
-        $this->assertTrue($node->getAttribute('output'));
-    }
-
-    /**
-     * @dataProvider getTestsForForOptimizer
-     */
-    public function testForOptimizer($template, $expected)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false]);
-
-        $stream = $env->parse($env->tokenize(new Source($template, 'index')));
-
-        foreach ($expected as $target => $withLoop) {
-            $this->assertTrue($this->checkForConfiguration($stream, $target, $withLoop), sprintf('variable %s is %soptimized', $target, $withLoop ? 'not ' : ''));
-        }
-    }
-
-    public function getTestsForForOptimizer()
-    {
-        return [
-            ['{% for i in foo %}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{{ loop.index }}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{% for j in foo %}{% endfor %}{% endfor %}', ['i' => false, 'j' => false]],
-
-            ['{% for i in foo %}{% include "foo" %}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{% include "foo" only %}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{% include "foo" with { "foo": "bar" } only %}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{% include "foo" with { "foo": loop.index } only %}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ loop.index }}{% endfor %}{% endfor %}', ['i' => false, 'j' => true]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ loop.parent.loop.index }}{% endfor %}{% endfor %}', ['i' => true, 'j' => true]],
-
-            ['{% for i in foo %}{% set l = loop %}{% for j in foo %}{{ l.index }}{% endfor %}{% endfor %}', ['i' => true, 'j' => false]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ foo.parent.loop.index }}{% endfor %}{% endfor %}', ['i' => false, 'j' => false]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ loop["parent"].loop.index }}{% endfor %}{% endfor %}', ['i' => true, 'j' => true]],
-
-            ['{% for i in foo %}{{ include("foo") }}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{{ include("foo", with_context = false) }}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{{ include("foo", with_context = true) }}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{{ include("foo", { "foo": "bar" }, with_context = false) }}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{{ include("foo", { "foo": loop.index }, with_context = false) }}{% endfor %}', ['i' => true]],
-        ];
-    }
-
-    public function checkForConfiguration(\Twig_NodeInterface $node = null, $target, $withLoop)
-    {
-        if (null === $node) {
-            return;
-        }
-
-        foreach ($node as $n) {
-            if ($n instanceof ForNode) {
-                if ($target === $n->getNode('value_target')->getAttribute('name')) {
-                    return $withLoop == $n->getAttribute('with_loop');
-                }
-            }
-
-            $ret = $this->checkForConfiguration($n, $target, $withLoop);
-            if (null !== $ret) {
-                return $ret;
-            }
-        }
-    }
-}
diff --git a/vendor/twig/twig/tests/ParserTest.php b/vendor/twig/twig/tests/ParserTest.php
deleted file mode 100644
index 917d5deaa7d065f096dbe3c6df2cfd9024bf1a86..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/ParserTest.php
+++ /dev/null
@@ -1,218 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\MacroNode;
-use Twig\Node\Node;
-use Twig\Node\SetNode;
-use Twig\Node\TextNode;
-use Twig\Parser;
-use Twig\Source;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-use Twig\TokenStream;
-
-class ParserTest extends \PHPUnit\Framework\TestCase
-{
-    public function testSetMacroThrowsExceptionOnReservedMethods()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $parser = $this->getParser();
-        $parser->setMacro('parent', new MacroNode('foo', new Node(), new Node(), 1));
-    }
-
-    public function testUnknownTag()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foo" tag. Did you mean "for" at line 1?');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'foo', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]);
-        $parser = new Parser(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $parser->parse($stream);
-    }
-
-    public function testUnknownTagWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" tag at line 1.');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'foobar', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]);
-        $parser = new Parser(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $parser->parse($stream);
-    }
-
-    /**
-     * @dataProvider getFilterBodyNodesData
-     */
-    public function testFilterBodyNodes($input, $expected)
-    {
-        $parser = $this->getParser();
-
-        $this->assertEquals($expected, $parser->filterBodyNodes($input));
-    }
-
-    public function getFilterBodyNodesData()
-    {
-        return [
-            [
-                new Node([new TextNode('   ', 1)]),
-                new Node([]),
-            ],
-            [
-                $input = new Node([new SetNode(false, new Node(), new Node(), 1)]),
-                $input,
-            ],
-            [
-                $input = new Node([new SetNode(true, new Node(), new Node([new Node([new TextNode('foo', 1)])]), 1)]),
-                $input,
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider getFilterBodyNodesDataThrowsException
-     */
-    public function testFilterBodyNodesThrowsException($input)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $parser = $this->getParser();
-
-        $parser->filterBodyNodes($input);
-    }
-
-    public function getFilterBodyNodesDataThrowsException()
-    {
-        return [
-            [new TextNode('foo', 1)],
-            [new Node([new Node([new TextNode('foo', 1)])])],
-        ];
-    }
-
-    /**
-     * @dataProvider getFilterBodyNodesWithBOMData
-     */
-    public function testFilterBodyNodesWithBOM($emptyNode)
-    {
-        $this->assertNull($this->getParser()->filterBodyNodes(new TextNode(\chr(0xEF).\chr(0xBB).\chr(0xBF).$emptyNode, 1)));
-    }
-
-    public function getFilterBodyNodesWithBOMData()
-    {
-        return [
-            [' '],
-            ["\t"],
-            ["\n"],
-            ["\n\t\n   "],
-        ];
-    }
-
-    public function testParseIsReentrant()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), [
-            'autoescape' => false,
-            'optimizations' => 0,
-        ]);
-        $twig->addTokenParser(new TestTokenParser());
-
-        $parser = new Parser($twig);
-
-        $parser->parse(new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'test', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::VAR_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'foo', 1),
-            new Token(Token::VAR_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]));
-
-        $this->assertNull($parser->getParent());
-    }
-
-    public function testGetVarName()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), [
-            'autoescape' => false,
-            'optimizations' => 0,
-        ]);
-
-        $twig->parse($twig->tokenize(new Source(<<<EOF
-{% from _self import foo %}
-
-{% macro foo() %}
-    {{ foo }}
-{% endmacro %}
-EOF
-        , 'index')));
-
-        // The getVarName() must not depend on the template loaders,
-        // If this test does not throw any exception, that's good.
-        // see https://github.com/symfony/symfony/issues/4218
-        $this->addToAssertionCount(1);
-    }
-
-    protected function getParser()
-    {
-        $parser = new TestParser(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $parser->setParent(new Node());
-        $parser->stream = new TokenStream([]);
-
-        return $parser;
-    }
-}
-
-class TestParser extends Parser
-{
-    public $stream;
-
-    public function filterBodyNodes(\Twig_NodeInterface $node)
-    {
-        return parent::filterBodyNodes($node);
-    }
-}
-
-class TestTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        // simulate the parsing of another template right in the middle of the parsing of the current template
-        $this->parser->parse(new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'extends', 1),
-            new Token(Token::STRING_TYPE, 'base', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]));
-
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new Node([]);
-    }
-
-    public function getTag()
-    {
-        return 'test';
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/AbstractTest.php b/vendor/twig/twig/tests/Profiler/Dumper/AbstractTest.php
deleted file mode 100644
index a55bfa0d38b7cffe938210c6c05d423c4588f524..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/AbstractTest.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Profile;
-
-abstract class AbstractTest extends \PHPUnit\Framework\TestCase
-{
-    protected function getProfile()
-    {
-        $profile = new Profile('main');
-        $subProfiles = [
-            $this->getIndexProfile(
-                [
-                    $this->getEmbeddedBlockProfile(),
-                    $this->getEmbeddedTemplateProfile(
-                        [
-                            $this->getIncludedTemplateProfile(),
-                        ]
-                    ),
-                    $this->getMacroProfile(),
-                    $this->getEmbeddedTemplateProfile(
-                        [
-                            $this->getIncludedTemplateProfile(),
-                        ]
-                    ),
-                ]
-            ),
-        ];
-
-        $p = new \ReflectionProperty($profile, 'profiles');
-        $p->setAccessible(true);
-        $p->setValue($profile, $subProfiles);
-
-        return $profile;
-    }
-
-    private function getIndexProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('main', 1, 'template', 'index.twig', $subProfiles);
-    }
-
-    private function getEmbeddedBlockProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('body', 0.0001, 'block', 'embedded.twig', $subProfiles);
-    }
-
-    private function getEmbeddedTemplateProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('main', 0.0001, 'template', 'embedded.twig', $subProfiles);
-    }
-
-    private function getIncludedTemplateProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('main', 0.0001, 'template', 'included.twig', $subProfiles);
-    }
-
-    private function getMacroProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('foo', 0.0001, 'macro', 'index.twig', $subProfiles);
-    }
-
-    /**
-     * @param string $name
-     * @param float  $duration
-     * @param bool   $isTemplate
-     * @param string $type
-     * @param string $templateName
-     * @param array  $subProfiles
-     *
-     * @return Profile
-     */
-    private function generateProfile($name, $duration, $type, $templateName, array $subProfiles = [])
-    {
-        $profile = new Profile($templateName, $type, $name);
-
-        $p = new \ReflectionProperty($profile, 'profiles');
-        $p->setAccessible(true);
-        $p->setValue($profile, $subProfiles);
-
-        $starts = new \ReflectionProperty($profile, 'starts');
-        $starts->setAccessible(true);
-        $starts->setValue($profile, [
-            'wt' => 0,
-            'mu' => 0,
-            'pmu' => 0,
-        ]);
-        $ends = new \ReflectionProperty($profile, 'ends');
-        $ends->setAccessible(true);
-        $ends->setValue($profile, [
-            'wt' => $duration,
-            'mu' => 0,
-            'pmu' => 0,
-        ]);
-
-        return $profile;
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/BlackfireTest.php b/vendor/twig/twig/tests/Profiler/Dumper/BlackfireTest.php
deleted file mode 100644
index b1c2cd7d1f008c3646bd21f4c3e7c123cc69e534..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/BlackfireTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Dumper\BlackfireDumper;
-
-class BlackfireTest extends AbstractTest
-{
-    public function testDump()
-    {
-        $dumper = new BlackfireDumper();
-
-        $this->assertStringMatchesFormat(<<<EOF
-file-format: BlackfireProbe
-cost-dimensions: wt mu pmu
-request-start: %d.%d
-
-main()//1 %d %d %d
-main()==>index.twig//1 %d %d %d
-index.twig==>embedded.twig::block(body)//1 %d %d 0
-index.twig==>embedded.twig//2 %d %d %d
-embedded.twig==>included.twig//2 %d %d %d
-index.twig==>index.twig::macro(foo)//1 %d %d %d
-EOF
-        , $dumper->dump($this->getProfile()));
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/HtmlTest.php b/vendor/twig/twig/tests/Profiler/Dumper/HtmlTest.php
deleted file mode 100644
index 20a1ab439c56ebc36c6a7f38abf09fc75e5a61f1..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/HtmlTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Dumper\HtmlDumper;
-
-class HtmlTest extends AbstractTest
-{
-    public function testDump()
-    {
-        $dumper = new HtmlDumper();
-        $this->assertStringMatchesFormat(<<<EOF
-<pre>main <span style="color: #d44">%d.%dms/%d%</span>
-â”” <span style="background-color: #ffd">index.twig</span> <span style="color: #d44">%d.%dms/%d%</span>
-  â”” embedded.twig::block(<span style="background-color: #dfd">body</span>)
-  â”” <span style="background-color: #ffd">embedded.twig</span>
-  │ └ <span style="background-color: #ffd">included.twig</span>
-  â”” index.twig::macro(<span style="background-color: #ddf">foo</span>)
-  â”” <span style="background-color: #ffd">embedded.twig</span>
-    â”” <span style="background-color: #ffd">included.twig</span>
-</pre>
-EOF
-        , $dumper->dump($this->getProfile()));
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/TextTest.php b/vendor/twig/twig/tests/Profiler/Dumper/TextTest.php
deleted file mode 100644
index 8240e356bd26a74224e0cb72bffdb89db28c1b7f..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/TextTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Dumper\TextDumper;
-
-class TextTest extends AbstractTest
-{
-    public function testDump()
-    {
-        $dumper = new TextDumper();
-        $this->assertStringMatchesFormat(<<<EOF
-main %d.%dms/%d%
-â”” index.twig %d.%dms/%d%
-  â”” embedded.twig::block(body)
-  â”” embedded.twig
-  │ └ included.twig
-  â”” index.twig::macro(foo)
-  â”” embedded.twig
-    â”” included.twig
-
-EOF
-        , $dumper->dump($this->getProfile()));
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/ProfileTest.php b/vendor/twig/twig/tests/Profiler/ProfileTest.php
deleted file mode 100644
index 0b7fd272f2a1a4bc57c321e3033830585d18c082..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Profiler/ProfileTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Profile;
-
-class ProfileTest extends \PHPUnit\Framework\TestCase
-{
-    public function testConstructor()
-    {
-        $profile = new Profile('template', 'type', 'name');
-
-        $this->assertEquals('template', $profile->getTemplate());
-        $this->assertEquals('type', $profile->getType());
-        $this->assertEquals('name', $profile->getName());
-    }
-
-    public function testIsRoot()
-    {
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertTrue($profile->isRoot());
-
-        $profile = new Profile('template', Profile::TEMPLATE);
-        $this->assertFalse($profile->isRoot());
-    }
-
-    public function testIsTemplate()
-    {
-        $profile = new Profile('template', Profile::TEMPLATE);
-        $this->assertTrue($profile->isTemplate());
-
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertFalse($profile->isTemplate());
-    }
-
-    public function testIsBlock()
-    {
-        $profile = new Profile('template', Profile::BLOCK);
-        $this->assertTrue($profile->isBlock());
-
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertFalse($profile->isBlock());
-    }
-
-    public function testIsMacro()
-    {
-        $profile = new Profile('template', Profile::MACRO);
-        $this->assertTrue($profile->isMacro());
-
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertFalse($profile->isMacro());
-    }
-
-    public function testGetAddProfile()
-    {
-        $profile = new Profile();
-        $profile->addProfile($a = new Profile());
-        $profile->addProfile($b = new Profile());
-
-        $this->assertSame([$a, $b], $profile->getProfiles());
-        $this->assertSame([$a, $b], iterator_to_array($profile));
-    }
-
-    public function testGetDuration()
-    {
-        $profile = new Profile();
-        usleep(1);
-        $profile->leave();
-
-        $this->assertTrue($profile->getDuration() > 0, sprintf('Expected duration > 0, got: %f', $profile->getDuration()));
-    }
-
-    public function testSerialize()
-    {
-        $profile = new Profile('template', 'type', 'name');
-        $profile1 = new Profile('template1', 'type1', 'name1');
-        $profile->addProfile($profile1);
-        $profile->leave();
-        $profile1->leave();
-
-        $profile2 = unserialize(serialize($profile));
-        $profiles = $profile->getProfiles();
-        $this->assertCount(1, $profiles);
-        $profile3 = $profiles[0];
-
-        $this->assertEquals($profile->getTemplate(), $profile2->getTemplate());
-        $this->assertEquals($profile->getType(), $profile2->getType());
-        $this->assertEquals($profile->getName(), $profile2->getName());
-        $this->assertEquals($profile->getDuration(), $profile2->getDuration());
-
-        $this->assertEquals($profile1->getTemplate(), $profile3->getTemplate());
-        $this->assertEquals($profile1->getType(), $profile3->getType());
-        $this->assertEquals($profile1->getName(), $profile3->getName());
-    }
-
-    public function testReset()
-    {
-        $profile = new Profile();
-        usleep(1);
-        $profile->leave();
-        $profile->reset();
-
-        $this->assertEquals(0, $profile->getDuration());
-    }
-}
diff --git a/vendor/twig/twig/tests/TemplateTest.php b/vendor/twig/twig/tests/TemplateTest.php
deleted file mode 100644
index 41f8d1b043399efe3617d5874964e813463d5d50..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/TemplateTest.php
+++ /dev/null
@@ -1,809 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Error\RuntimeError;
-use Twig\Extension\SandboxExtension;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityPolicy;
-use Twig\Template;
-
-class TemplateTest extends \PHPUnit\Framework\TestCase
-{
-    public function testDisplayBlocksAcceptTemplateOnlyAsBlocks()
-    {
-        $this->expectException('\LogicException');
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $template = new TemplateForTest($twig);
-        $template->displayBlock('foo', [], ['foo' => [new \stdClass(), 'foo']]);
-    }
-
-    /**
-     * @dataProvider getAttributeExceptions
-     */
-    public function testGetAttributeExceptions($template, $message)
-    {
-        $templates = ['index' => $template];
-        $env = new Environment(new ArrayLoader($templates), ['strict_variables' => true]);
-        $template = $env->load('index');
-
-        $context = [
-            'string' => 'foo',
-            'null' => null,
-            'empty_array' => [],
-            'array' => ['foo' => 'foo'],
-            'array_access' => new TemplateArrayAccessObject(),
-            'magic_exception' => new TemplateMagicPropertyObjectWithException(),
-            'object' => new \stdClass(),
-        ];
-
-        try {
-            $template->render($context);
-            $this->fail('Accessing an invalid attribute should throw an exception.');
-        } catch (RuntimeError $e) {
-            $this->assertSame(sprintf($message, 'index'), $e->getMessage());
-        }
-    }
-
-    public function getAttributeExceptions()
-    {
-        return [
-            ['{{ string["a"] }}', 'Impossible to access a key ("a") on a string variable ("foo") in "%s" at line 1.'],
-            ['{{ null["a"] }}', 'Impossible to access a key ("a") on a null variable in "%s" at line 1.'],
-            ['{{ empty_array["a"] }}', 'Key "a" does not exist as the array is empty in "%s" at line 1.'],
-            ['{{ array["a"] }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1.'],
-            ['{{ array_access["a"] }}', 'Key "a" in object with ArrayAccess of class "Twig\Tests\TemplateArrayAccessObject" does not exist in "%s" at line 1.'],
-            ['{{ string.a }}', 'Impossible to access an attribute ("a") on a string variable ("foo") in "%s" at line 1.'],
-            ['{{ string.a() }}', 'Impossible to invoke a method ("a") on a string variable ("foo") in "%s" at line 1.'],
-            ['{{ null.a }}', 'Impossible to access an attribute ("a") on a null variable in "%s" at line 1.'],
-            ['{{ null.a() }}', 'Impossible to invoke a method ("a") on a null variable in "%s" at line 1.'],
-            ['{{ array.a() }}', 'Impossible to invoke a method ("a") on an array in "%s" at line 1.'],
-            ['{{ empty_array.a }}', 'Key "a" does not exist as the array is empty in "%s" at line 1.'],
-            ['{{ array.a }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1.'],
-            ['{{ attribute(array, -10) }}', 'Key "-10" for array with keys "foo" does not exist in "%s" at line 1.'],
-            ['{{ array_access.a }}', 'Neither the property "a" nor one of the methods "a()", "geta()"/"isa()" or "__call()" exist and have public access in class "Twig\Tests\TemplateArrayAccessObject" in "%s" at line 1.'],
-            ['{% from _self import foo %}{% macro foo(obj) %}{{ obj.missing_method() }}{% endmacro %}{{ foo(array_access) }}', 'Neither the property "missing_method" nor one of the methods "missing_method()", "getmissing_method()"/"ismissing_method()" or "__call()" exist and have public access in class "Twig\Tests\TemplateArrayAccessObject" in "%s" at line 1.'],
-            ['{{ magic_exception.test }}', 'An exception has been thrown during the rendering of a template ("Hey! Don\'t try to isset me!") in "%s" at line 1.'],
-            ['{{ object["a"] }}', 'Impossible to access a key "a" on an object of class "stdClass" that does not implement ArrayAccess interface in "%s" at line 1.'],
-        ];
-    }
-
-    /**
-     * @dataProvider getGetAttributeWithSandbox
-     */
-    public function testGetAttributeWithSandbox($object, $item, $allowed)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $policy = new SecurityPolicy([], [], [/*method*/], [/*prop*/], []);
-        $twig->addExtension(new SandboxExtension($policy, !$allowed));
-        $template = new TemplateForTest($twig);
-
-        try {
-            $template->getAttribute($object, $item, [], 'any');
-
-            if (!$allowed) {
-                $this->fail();
-            } else {
-                $this->addToAssertionCount(1);
-            }
-        } catch (SecurityError $e) {
-            if ($allowed) {
-                $this->fail();
-            } else {
-                $this->addToAssertionCount(1);
-            }
-
-            $this->assertStringContainsString('is not allowed', $e->getMessage());
-        }
-    }
-
-    public function getGetAttributeWithSandbox()
-    {
-        return [
-            [new TemplatePropertyObject(), 'defined', false],
-            [new TemplatePropertyObject(), 'defined', true],
-            [new TemplateMethodObject(), 'defined', false],
-            [new TemplateMethodObject(), 'defined', true],
-        ];
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetAttributeWithTemplateAsObject()
-    {
-        // to be removed in 2.0
-        $twig = new Environment($this->createMock('Twig\Tests\TemplateTestLoaderInterface'));
-        //$twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface'));
-
-        $template = new TemplateForTest($twig, 'index.twig');
-        $template1 = new TemplateForTest($twig, 'index1.twig');
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'string'));
-        $this->assertEquals('some_string', $template->getAttribute($template1, 'string'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'true'));
-        $this->assertEquals('1', $template->getAttribute($template1, 'true'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'zero'));
-        $this->assertEquals('0', $template->getAttribute($template1, 'zero'));
-
-        $this->assertNotInstanceof('\Twig\Markup', $template->getAttribute($template1, 'empty'));
-        $this->assertSame('', $template->getAttribute($template1, 'empty'));
-
-        $this->assertFalse($template->getAttribute($template1, 'env', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'environment', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'getEnvironment', [], Template::METHOD_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'displayWithErrorHandling', [], Template::METHOD_CALL, true));
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling "string" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "string" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "true" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "true" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "zero" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "zero" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "empty" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "empty" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "renderBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name") instead).
-     * @expectedDeprecation Calling "displayBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name") instead).
-     * @expectedDeprecation Calling "hasBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use "block("name") is defined" instead).
-     * @expectedDeprecation Calling "render" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index.twig") instead).
-     * @expectedDeprecation Calling "display" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index.twig") instead).
-     * @expectedDeprecation Calling "renderBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name", template) instead).
-     * @expectedDeprecation Calling "displayBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name", template) instead).
-     * @expectedDeprecation Calling "hasBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use "block("name", template) is defined" instead).
-     * @expectedDeprecation Calling "render" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index1.twig") instead).
-     * @expectedDeprecation Calling "display" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index1.twig") instead).
-     */
-    public function testGetAttributeWithTemplateAsObjectForDeprecations()
-    {
-        // to be removed in 2.0
-        $twig = new Environment($this->createMock('Twig\Tests\TemplateTestLoaderInterface'));
-        //$twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface'));
-
-        $template = new TemplateForTest($twig, 'index.twig');
-        $template1 = new TemplateForTest($twig, 'index1.twig');
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'string'));
-        $this->assertEquals('some_string', $template->getAttribute($template1, 'string'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'true'));
-        $this->assertEquals('1', $template->getAttribute($template1, 'true'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'zero'));
-        $this->assertEquals('0', $template->getAttribute($template1, 'zero'));
-
-        $this->assertNotInstanceof('\Twig\Markup', $template->getAttribute($template1, 'empty'));
-        $this->assertSame('', $template->getAttribute($template1, 'empty'));
-
-        $blocks = ['name' => [$template1, 'block_name']];
-
-        // trigger some deprecation notice messages to check them with @expectedDeprecation
-        $template->getAttribute($template, 'renderBlock', ['name', [], $blocks]);
-        $template->getAttribute($template, 'displayBlock', ['name', [], $blocks]);
-        $template->getAttribute($template, 'hasBlock', ['name', []]);
-        $template->getAttribute($template, 'render', [[]]);
-        $template->getAttribute($template, 'display', [[]]);
-
-        $template->getAttribute($template1, 'renderBlock', ['name', [], $blocks]);
-        $template->getAttribute($template1, 'displayBlock', ['name', [], $blocks]);
-        $template->getAttribute($template1, 'hasBlock', ['name', []]);
-        $template->getAttribute($template1, 'render', [[]]);
-        $template->getAttribute($template1, 'display', [[]]);
-
-        $this->assertFalse($template->getAttribute($template1, 'env', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'environment', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'getEnvironment', [], Template::METHOD_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'displayWithErrorHandling', [], Template::METHOD_CALL, true));
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Silent display of undefined block "unknown" in template "index.twig" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block('unknown') is defined" expression to test for block existence.
-     * @expectedDeprecation Silent display of undefined block "unknown" in template "index.twig" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block('unknown') is defined" expression to test for block existence.
-     */
-    public function testRenderBlockWithUndefinedBlock()
-    {
-        $twig = new Environment($this->createMock('Twig\Tests\TemplateTestLoaderInterface'));
-
-        $template = new TemplateForTest($twig, 'index.twig');
-        $template->renderBlock('unknown', []);
-        $template->displayBlock('unknown', []);
-    }
-
-    public function testGetAttributeOnArrayWithConfusableKey()
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $array = ['Zero', 'One', -1 => 'MinusOne', '' => 'EmptyString', '1.5' => 'FloatButString', '01' => 'IntegerButStringWithLeadingZeros'];
-
-        $this->assertSame('Zero', $array[false]);
-        $this->assertSame('One', $array[true]);
-        $this->assertSame('One', $array[1.5]);
-        $this->assertSame('One', $array['1']);
-        $this->assertSame('MinusOne', $array[-1.5]);
-        $this->assertSame('FloatButString', $array['1.5']);
-        $this->assertSame('IntegerButStringWithLeadingZeros', $array['01']);
-        $this->assertSame('EmptyString', $array[null]);
-
-        $this->assertSame('Zero', $template->getAttribute($array, false), 'false is treated as 0 when accessing an array (equals PHP behavior)');
-        $this->assertSame('One', $template->getAttribute($array, true), 'true is treated as 1 when accessing an array (equals PHP behavior)');
-        $this->assertSame('One', $template->getAttribute($array, 1.5), 'float is casted to int when accessing an array (equals PHP behavior)');
-        $this->assertSame('One', $template->getAttribute($array, '1'), '"1" is treated as integer 1 when accessing an array (equals PHP behavior)');
-        $this->assertSame('MinusOne', $template->getAttribute($array, -1.5), 'negative float is casted to int when accessing an array (equals PHP behavior)');
-        $this->assertSame('FloatButString', $template->getAttribute($array, '1.5'), '"1.5" is treated as-is when accessing an array (equals PHP behavior)');
-        $this->assertSame('IntegerButStringWithLeadingZeros', $template->getAttribute($array, '01'), '"01" is treated as-is when accessing an array (equals PHP behavior)');
-        $this->assertSame('EmptyString', $template->getAttribute($array, null), 'null is treated as "" when accessing an array (equals PHP behavior)');
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttribute($defined, $value, $object, $item, $arguments, $type)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type));
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttributeStrict($defined, $value, $object, $item, $arguments, $type, $exceptionMessage = null)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]));
-
-        if ($defined) {
-            $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type));
-        } else {
-            $this->expectException('\Twig\Error\RuntimeError');
-            if (null !== $exceptionMessage) {
-                $this->expectExceptionMessage($exceptionMessage);
-            }
-            $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type));
-        }
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttributeDefined($defined, $value, $object, $item, $arguments, $type)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $this->assertEquals($defined, $template->getAttribute($object, $item, $arguments, $type, true));
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttributeDefinedStrict($defined, $value, $object, $item, $arguments, $type)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]));
-
-        $this->assertEquals($defined, $template->getAttribute($object, $item, $arguments, $type, true));
-    }
-
-    public function testGetAttributeCallExceptions()
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $object = new TemplateMagicMethodExceptionObject();
-
-        $this->assertNull($template->getAttribute($object, 'foo'));
-    }
-
-    public function getGetAttributeTests()
-    {
-        $array = [
-            'defined' => 'defined',
-            'zero' => 0,
-            'null' => null,
-            '1' => 1,
-            'bar' => true,
-            'baz' => 'baz',
-            '09' => '09',
-            '+4' => '+4',
-        ];
-
-        $objectArray = new TemplateArrayAccessObject();
-        $arrayObject = new \ArrayObject($array);
-        $stdObject = (object) $array;
-        $magicPropertyObject = new TemplateMagicPropertyObject();
-        $propertyObject = new TemplatePropertyObject();
-        $propertyObject1 = new TemplatePropertyObjectAndIterator();
-        $propertyObject2 = new TemplatePropertyObjectAndArrayAccess();
-        $propertyObject3 = new TemplatePropertyObjectDefinedWithUndefinedValue();
-        $methodObject = new TemplateMethodObject();
-        $magicMethodObject = new TemplateMagicMethodObject();
-
-        $anyType = Template::ANY_CALL;
-        $methodType = Template::METHOD_CALL;
-        $arrayType = Template::ARRAY_CALL;
-
-        $basicTests = [
-            // array(defined, value, property to fetch)
-            [true,  'defined', 'defined'],
-            [false, null,      'undefined'],
-            [false, null,      'protected'],
-            [true,  0,         'zero'],
-            [true,  1,         1],
-            [true,  1,         1.0],
-            [true,  null,      'null'],
-            [true,  true,      'bar'],
-            [true,  'baz',     'baz'],
-            [true,  '09',      '09'],
-            [true,  '+4',      '+4'],
-        ];
-        $testObjects = [
-            // array(object, type of fetch)
-            [$array,               $arrayType],
-            [$objectArray,         $arrayType],
-            [$arrayObject,         $anyType],
-            [$stdObject,           $anyType],
-            [$magicPropertyObject, $anyType],
-            [$methodObject,        $methodType],
-            [$methodObject,        $anyType],
-            [$propertyObject,      $anyType],
-            [$propertyObject1,     $anyType],
-            [$propertyObject2,     $anyType],
-        ];
-
-        $tests = [];
-        foreach ($testObjects as $testObject) {
-            foreach ($basicTests as $test) {
-                // properties cannot be numbers
-                if (($testObject[0] instanceof \stdClass || $testObject[0] instanceof TemplatePropertyObject) && is_numeric($test[2])) {
-                    continue;
-                }
-
-                if ('+4' === $test[2] && $methodObject === $testObject[0]) {
-                    continue;
-                }
-
-                $tests[] = [$test[0], $test[1], $testObject[0], $test[2], [], $testObject[1]];
-            }
-        }
-
-        // additional properties tests
-        $tests = array_merge($tests, [
-            [true, null, $propertyObject3, 'foo', [], $anyType],
-        ]);
-
-        // additional method tests
-        $tests = array_merge($tests, [
-            [true, 'defined', $methodObject, 'defined',    [], $methodType],
-            [true, 'defined', $methodObject, 'DEFINED',    [], $methodType],
-            [true, 'defined', $methodObject, 'getDefined', [], $methodType],
-            [true, 'defined', $methodObject, 'GETDEFINED', [], $methodType],
-            [true, 'static',  $methodObject, 'static',     [], $methodType],
-            [true, 'static',  $methodObject, 'getStatic',  [], $methodType],
-
-            [true, '__call_undefined', $magicMethodObject, 'undefined', [], $methodType],
-            [true, '__call_UNDEFINED', $magicMethodObject, 'UNDEFINED', [], $methodType],
-        ]);
-
-        // add the same tests for the any type
-        foreach ($tests as $test) {
-            if ($anyType !== $test[5]) {
-                $test[5] = $anyType;
-                $tests[] = $test;
-            }
-        }
-
-        $methodAndPropObject = new TemplateMethodAndPropObject();
-
-        // additional method tests
-        $tests = array_merge($tests, [
-            [true, 'a', $methodAndPropObject, 'a', [], $anyType],
-            [true, 'a', $methodAndPropObject, 'a', [], $methodType],
-            [false, null, $methodAndPropObject, 'a', [], $arrayType],
-
-            [true, 'b_prop', $methodAndPropObject, 'b', [], $anyType],
-            [true, 'b', $methodAndPropObject, 'B', [], $anyType],
-            [true, 'b', $methodAndPropObject, 'b', [], $methodType],
-            [true, 'b', $methodAndPropObject, 'B', [], $methodType],
-            [false, null, $methodAndPropObject, 'b', [], $arrayType],
-
-            [false, null, $methodAndPropObject, 'c', [], $anyType],
-            [false, null, $methodAndPropObject, 'c', [], $methodType],
-            [false, null, $methodAndPropObject, 'c', [], $arrayType],
-        ]);
-
-        $arrayAccess = new TemplateArrayAccess();
-        $tests = array_merge($tests, [
-            [true, ['foo' => 'bar'], $arrayAccess, 'vars', [], $anyType],
-        ]);
-
-        // tests when input is not an array or object
-        $tests = array_merge($tests, [
-            [false, null, 42, 'a', [], $anyType, 'Impossible to access an attribute ("a") on a integer variable ("42") in "index.twig".'],
-            [false, null, 'string', 'a', [], $anyType, 'Impossible to access an attribute ("a") on a string variable ("string") in "index.twig".'],
-            [false, null, [], 'a', [], $anyType, 'Key "a" does not exist as the array is empty in "index.twig".'],
-        ]);
-
-        return $tests;
-    }
-
-    public function testGetIsMethods()
-    {
-        $this->expectException('\Twig\Error\RuntimeError');
-
-        $getIsObject = new TemplateGetIsMethods();
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]));
-        // first time should not create a cache for "get"
-        $this->assertNull($template->getAttribute($getIsObject, 'get'));
-        // 0 should be in the method cache now, so this should fail
-        $this->assertNull($template->getAttribute($getIsObject, 0));
-    }
-}
-
-class TemplateForTest extends Template
-{
-    private $name;
-
-    public function __construct(Environment $env, $name = 'index.twig')
-    {
-        parent::__construct($env);
-        self::$cache = [];
-        $this->name = $name;
-    }
-
-    public function getZero()
-    {
-        return 0;
-    }
-
-    public function getEmpty()
-    {
-        return '';
-    }
-
-    public function getString()
-    {
-        return 'some_string';
-    }
-
-    public function getTrue()
-    {
-        return true;
-    }
-
-    public function getTemplateName()
-    {
-        return $this->name;
-    }
-
-    public function getDebugInfo()
-    {
-        return [];
-    }
-
-    protected function doGetParent(array $context)
-    {
-        return false;
-    }
-
-    protected function doDisplay(array $context, array $blocks = [])
-    {
-    }
-
-    public function getAttribute($object, $item, array $arguments = [], $type = Template::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false)
-    {
-        if (\function_exists('twig_template_get_attributes')) {
-            return twig_template_get_attributes($this, $object, $item, $arguments, $type, $isDefinedTest, $ignoreStrictCheck);
-        } else {
-            return parent::getAttribute($object, $item, $arguments, $type, $isDefinedTest, $ignoreStrictCheck);
-        }
-    }
-
-    public function block_name($context, array $blocks = [])
-    {
-    }
-}
-
-class TemplateArrayAccessObject implements \ArrayAccess
-{
-    protected $protected = 'protected';
-
-    public $attributes = [
-        'defined' => 'defined',
-        'zero' => 0,
-        'null' => null,
-        '1' => 1,
-        'bar' => true,
-        'baz' => 'baz',
-        '09' => '09',
-        '+4' => '+4',
-    ];
-
-    public function offsetExists($name)
-    {
-        return \array_key_exists($name, $this->attributes);
-    }
-
-    public function offsetGet($name)
-    {
-        return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : null;
-    }
-
-    public function offsetSet($name, $value)
-    {
-    }
-
-    public function offsetUnset($name)
-    {
-    }
-}
-
-class TemplateMagicPropertyObject
-{
-    public $defined = 'defined';
-
-    public $attributes = [
-        'zero' => 0,
-        'null' => null,
-        '1' => 1,
-        'bar' => true,
-        'baz' => 'baz',
-        '09' => '09',
-        '+4' => '+4',
-    ];
-
-    protected $protected = 'protected';
-
-    public function __isset($name)
-    {
-        return \array_key_exists($name, $this->attributes);
-    }
-
-    public function __get($name)
-    {
-        return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : null;
-    }
-}
-
-class TemplateMagicPropertyObjectWithException
-{
-    public function __isset($key)
-    {
-        throw new \Exception('Hey! Don\'t try to isset me!');
-    }
-}
-
-class TemplatePropertyObject
-{
-    public $defined = 'defined';
-    public $zero = 0;
-    public $null = null;
-    public $bar = true;
-    public $baz = 'baz';
-
-    protected $protected = 'protected';
-}
-
-class TemplatePropertyObjectAndIterator extends TemplatePropertyObject implements \IteratorAggregate
-{
-    public function getIterator()
-    {
-        return new \ArrayIterator(['foo', 'bar']);
-    }
-}
-
-class TemplatePropertyObjectAndArrayAccess extends TemplatePropertyObject implements \ArrayAccess
-{
-    private $data = [
-        'defined' => 'defined',
-        'zero' => 0,
-        'null' => null,
-        'bar' => true,
-        'foo' => true,
-        'baz' => 'baz',
-        'baf' => 'baf',
-    ];
-
-    public function offsetExists($offset)
-    {
-        return \array_key_exists($offset, $this->data);
-    }
-
-    public function offsetGet($offset)
-    {
-        return $this->offsetExists($offset) ? $this->data[$offset] : 'n/a';
-    }
-
-    public function offsetSet($offset, $value)
-    {
-    }
-
-    public function offsetUnset($offset)
-    {
-    }
-}
-
-class TemplatePropertyObjectDefinedWithUndefinedValue
-{
-    public $foo;
-
-    public function __construct()
-    {
-        $this->foo = @$notExist;
-    }
-}
-
-class TemplateMethodObject
-{
-    public function getDefined()
-    {
-        return 'defined';
-    }
-
-    public function get1()
-    {
-        return 1;
-    }
-
-    public function get09()
-    {
-        return '09';
-    }
-
-    public function getZero()
-    {
-        return 0;
-    }
-
-    public function getNull()
-    {
-    }
-
-    public function isBar()
-    {
-        return true;
-    }
-
-    public function isBaz()
-    {
-        return 'should never be returned';
-    }
-
-    public function getBaz()
-    {
-        return 'baz';
-    }
-
-    protected function getProtected()
-    {
-        return 'protected';
-    }
-
-    public static function getStatic()
-    {
-        return 'static';
-    }
-}
-
-class TemplateGetIsMethods
-{
-    public function get()
-    {
-    }
-
-    public function is()
-    {
-    }
-}
-
-class TemplateMethodAndPropObject
-{
-    private $a = 'a_prop';
-
-    public function getA()
-    {
-        return 'a';
-    }
-
-    public $b = 'b_prop';
-
-    public function getB()
-    {
-        return 'b';
-    }
-
-    private $c = 'c_prop';
-
-    private function getC()
-    {
-        return 'c';
-    }
-}
-
-class TemplateArrayAccess implements \ArrayAccess
-{
-    public $vars = [
-        'foo' => 'bar',
-    ];
-    private $children = [];
-
-    public function offsetExists($offset)
-    {
-        return \array_key_exists($offset, $this->children);
-    }
-
-    public function offsetGet($offset)
-    {
-        return $this->children[$offset];
-    }
-
-    public function offsetSet($offset, $value)
-    {
-        $this->children[$offset] = $value;
-    }
-
-    public function offsetUnset($offset)
-    {
-        unset($this->children[$offset]);
-    }
-}
-
-class TemplateMagicMethodObject
-{
-    public function __call($method, $arguments)
-    {
-        return '__call_'.$method;
-    }
-}
-
-class TemplateMagicMethodExceptionObject
-{
-    public function __call($method, $arguments)
-    {
-        throw new \BadMethodCallException(sprintf('Unknown method "%s".', $method));
-    }
-}
-
-class CExtDisablingNodeVisitor implements NodeVisitorInterface
-{
-    public function enterNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        if ($node instanceof GetAttrExpression) {
-            $node->setAttribute('disable_c_ext', true);
-        }
-
-        return $node;
-    }
-
-    public function leaveNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-// to be removed in 2.0
-interface TemplateTestLoaderInterface extends LoaderInterface, SourceContextLoaderInterface
-{
-}
diff --git a/vendor/twig/twig/tests/TemplateWrapperTest.php b/vendor/twig/twig/tests/TemplateWrapperTest.php
deleted file mode 100644
index b4a0958b501c126ee7fe1728bb40c652439a7764..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/TemplateWrapperTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class TemplateWrapperTest extends \PHPUnit\Framework\TestCase
-{
-    public function testHasGetBlocks()
-    {
-        $twig = new Environment(new ArrayLoader([
-            'index' => '{% block foo %}{% endblock %}',
-            'index_with_use' => '{% use "imported" %}{% block foo %}{% endblock %}',
-            'index_with_extends' => '{% extends "extended" %}{% block foo %}{% endblock %}',
-            'imported' => '{% block imported %}{% endblock %}',
-            'extended' => '{% block extended %}{% endblock %}',
-        ]));
-
-        $wrapper = $twig->load('index');
-        $this->assertTrue($wrapper->hasBlock('foo'));
-        $this->assertFalse($wrapper->hasBlock('bar'));
-        $this->assertEquals(['foo'], $wrapper->getBlockNames());
-
-        $wrapper = $twig->load('index_with_use');
-        $this->assertTrue($wrapper->hasBlock('foo'));
-        $this->assertTrue($wrapper->hasBlock('imported'));
-        $this->assertEquals(['imported', 'foo'], $wrapper->getBlockNames());
-
-        $wrapper = $twig->load('index_with_extends');
-        $this->assertTrue($wrapper->hasBlock('foo'));
-        $this->assertTrue($wrapper->hasBlock('extended'));
-        $this->assertEquals(['foo', 'extended'], $wrapper->getBlockNames());
-    }
-
-    public function testRenderBlock()
-    {
-        $twig = new Environment(new ArrayLoader([
-            'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}',
-        ]));
-        $twig->addGlobal('bar', 'BAR');
-
-        $wrapper = $twig->load('index');
-        $this->assertEquals('FOOBAR', $wrapper->renderBlock('foo', ['foo' => 'FOO']));
-    }
-
-    public function testDisplayBlock()
-    {
-        $twig = new Environment(new ArrayLoader([
-            'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}',
-        ]));
-        $twig->addGlobal('bar', 'BAR');
-
-        $wrapper = $twig->load('index');
-
-        ob_start();
-        $wrapper->displayBlock('foo', ['foo' => 'FOO']);
-
-        $this->assertEquals('FOOBAR', ob_get_clean());
-    }
-}
diff --git a/vendor/twig/twig/tests/TokenStreamTest.php b/vendor/twig/twig/tests/TokenStreamTest.php
deleted file mode 100644
index c98e0f0720d256a7465b1b17345344b7bb7bdccf..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/TokenStreamTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Token;
-use Twig\TokenStream;
-
-class TokenStreamTest extends \PHPUnit\Framework\TestCase
-{
-    protected static $tokens;
-
-    protected function setUp()
-    {
-        self::$tokens = [
-            new Token(Token::TEXT_TYPE, 1, 1),
-            new Token(Token::TEXT_TYPE, 2, 1),
-            new Token(Token::TEXT_TYPE, 3, 1),
-            new Token(Token::TEXT_TYPE, 4, 1),
-            new Token(Token::TEXT_TYPE, 5, 1),
-            new Token(Token::TEXT_TYPE, 6, 1),
-            new Token(Token::TEXT_TYPE, 7, 1),
-            new Token(Token::EOF_TYPE, 0, 1),
-        ];
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyConstructorSignature()
-    {
-        $stream = new TokenStream([], 'foo', '{{ foo }}');
-        $this->assertEquals('foo', $stream->getFilename());
-        $this->assertEquals('{{ foo }}', $stream->getSource());
-        $this->assertEquals('foo', $stream->getSourceContext()->getName());
-        $this->assertEquals('{{ foo }}', $stream->getSourceContext()->getCode());
-    }
-
-    public function testNext()
-    {
-        $stream = new TokenStream(self::$tokens);
-        $repr = [];
-        while (!$stream->isEOF()) {
-            $token = $stream->next();
-
-            $repr[] = $token->getValue();
-        }
-        $this->assertEquals('1, 2, 3, 4, 5, 6, 7', implode(', ', $repr), '->next() advances the pointer and returns the current token');
-    }
-
-    public function testEndOfTemplateNext()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unexpected end of template');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, 1, 1),
-        ]);
-        while (!$stream->isEOF()) {
-            $stream->next();
-        }
-    }
-
-    public function testEndOfTemplateLook()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unexpected end of template');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, 1, 1),
-        ]);
-        while (!$stream->isEOF()) {
-            $stream->look();
-            $stream->next();
-        }
-    }
-}
diff --git a/vendor/twig/twig/tests/Util/DeprecationCollectorTest.php b/vendor/twig/twig/tests/Util/DeprecationCollectorTest.php
deleted file mode 100644
index e360dbb141a47186d0454109162ae3a19de5aebc..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/Util/DeprecationCollectorTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Twig\Tests\Util;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\TwigFunction;
-use Twig\Util\DeprecationCollector;
-
-class DeprecationCollectorTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     */
-    public function testCollect()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addFunction(new TwigFunction('deprec', [$this, 'deprec'], ['deprecated' => true]));
-
-        $collector = new DeprecationCollector($twig);
-        $deprecations = $collector->collect(new Twig_Tests_Util_Iterator());
-
-        $this->assertEquals(['Twig Function "deprec" is deprecated in deprec.twig at line 1.'], $deprecations);
-    }
-
-    public function deprec()
-    {
-    }
-}
-
-class Twig_Tests_Util_Iterator implements \IteratorAggregate
-{
-    public function getIterator()
-    {
-        return new \ArrayIterator([
-            'ok.twig' => '{{ foo }}',
-            'deprec.twig' => '{{ deprec("foo") }}',
-        ]);
-    }
-}
diff --git a/vendor/twig/twig/tests/escapingTest.php b/vendor/twig/twig/tests/escapingTest.php
deleted file mode 100644
index 84759ebb48436ce9038cd9691112f4e49d005dd6..0000000000000000000000000000000000000000
--- a/vendor/twig/twig/tests/escapingTest.php
+++ /dev/null
@@ -1,327 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/**
- * This class is adapted from code coming from Zend Framework.
- *
- * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (https://www.zend.com)
- * @license   https://framework.zend.com/license/new-bsd New BSD License
- */
-class Twig_Test_EscapingTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * All character encodings supported by htmlspecialchars().
-     */
-    protected $htmlSpecialChars = [
-        '\'' => '&#039;',
-        '"' => '&quot;',
-        '<' => '&lt;',
-        '>' => '&gt;',
-        '&' => '&amp;',
-    ];
-
-    protected $htmlAttrSpecialChars = [
-        '\'' => '&#x27;',
-        /* Characters beyond ASCII value 255 to unicode escape */
-        'Ä€' => '&#x0100;',
-        '😀' => '&#x1F600;',
-        /* Immune chars excluded */
-        ',' => ',',
-        '.' => '.',
-        '-' => '-',
-        '_' => '_',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '&#x0D;',
-        "\n" => '&#x0A;',
-        "\t" => '&#x09;',
-        "\0" => '&#xFFFD;', // should use Unicode replacement char
-        /* Encode chars as named entities where possible */
-        '<' => '&lt;',
-        '>' => '&gt;',
-        '&' => '&amp;',
-        '"' => '&quot;',
-        /* Encode spaces for quoteless attribute protection */
-        ' ' => '&#x20;',
-    ];
-
-    protected $jsSpecialChars = [
-        /* HTML special chars - escape without exception to hex */
-        '<' => '\\u003C',
-        '>' => '\\u003E',
-        '\'' => '\\u0027',
-        '"' => '\\u0022',
-        '&' => '\\u0026',
-        '/' => '\\/',
-        /* Characters beyond ASCII value 255 to unicode escape */
-        'Ä€' => '\\u0100',
-        '😀' => '\\uD83D\\uDE00',
-        /* Immune chars excluded */
-        ',' => ',',
-        '.' => '.',
-        '_' => '_',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '\r',
-        "\n" => '\n',
-        "\x08" => '\b',
-        "\t" => '\t',
-        "\x0C" => '\f',
-        "\0" => '\\u0000',
-        /* Encode spaces for quoteless attribute protection */
-        ' ' => '\\u0020',
-    ];
-
-    protected $urlSpecialChars = [
-        /* HTML special chars - escape without exception to percent encoding */
-        '<' => '%3C',
-        '>' => '%3E',
-        '\'' => '%27',
-        '"' => '%22',
-        '&' => '%26',
-        /* Characters beyond ASCII value 255 to hex sequence */
-        'Ä€' => '%C4%80',
-        /* Punctuation and unreserved check */
-        ',' => '%2C',
-        '.' => '.',
-        '_' => '_',
-        '-' => '-',
-        ':' => '%3A',
-        ';' => '%3B',
-        '!' => '%21',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '%0D',
-        "\n" => '%0A',
-        "\t" => '%09',
-        "\0" => '%00',
-        /* PHP quirks from the past */
-        ' ' => '%20',
-        '~' => '~',
-        '+' => '%2B',
-    ];
-
-    protected $cssSpecialChars = [
-        /* HTML special chars - escape without exception to hex */
-        '<' => '\\3C ',
-        '>' => '\\3E ',
-        '\'' => '\\27 ',
-        '"' => '\\22 ',
-        '&' => '\\26 ',
-        /* Characters beyond ASCII value 255 to unicode escape */
-        'Ä€' => '\\100 ',
-        /* Immune chars excluded */
-        ',' => '\\2C ',
-        '.' => '\\2E ',
-        '_' => '\\5F ',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '\\D ',
-        "\n" => '\\A ',
-        "\t" => '\\9 ',
-        "\0" => '\\0 ',
-        /* Encode spaces for quoteless attribute protection */
-        ' ' => '\\20 ',
-    ];
-
-    protected $env;
-
-    protected function setUp()
-    {
-        $this->env = new \Twig\Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-    }
-
-    public function testHtmlEscapingConvertsSpecialChars()
-    {
-        foreach ($this->htmlSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'html'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testHtmlAttributeEscapingConvertsSpecialChars()
-    {
-        foreach ($this->htmlAttrSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'html_attr'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testJavascriptEscapingConvertsSpecialChars()
-    {
-        foreach ($this->jsSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'js'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testJavascriptEscapingReturnsStringIfZeroLength()
-    {
-        $this->assertEquals('', twig_escape_filter($this->env, '', 'js'));
-    }
-
-    public function testJavascriptEscapingReturnsStringIfContainsOnlyDigits()
-    {
-        $this->assertEquals('123', twig_escape_filter($this->env, '123', 'js'));
-    }
-
-    public function testCssEscapingConvertsSpecialChars()
-    {
-        foreach ($this->cssSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'css'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testCssEscapingReturnsStringIfZeroLength()
-    {
-        $this->assertEquals('', twig_escape_filter($this->env, '', 'css'));
-    }
-
-    public function testCssEscapingReturnsStringIfContainsOnlyDigits()
-    {
-        $this->assertEquals('123', twig_escape_filter($this->env, '123', 'css'));
-    }
-
-    public function testUrlEscapingConvertsSpecialChars()
-    {
-        foreach ($this->urlSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'url'), 'Failed to escape: '.$key);
-        }
-    }
-
-    /**
-     * Range tests to confirm escaped range of characters is within OWASP recommendation.
-     */
-
-    /**
-     * Only testing the first few 2 ranges on this prot. function as that's all these
-     * other range tests require.
-     */
-    public function testUnicodeCodepointConversionToUtf8()
-    {
-        $expected = ' ~Þ™';
-        $codepoints = [0x20, 0x7e, 0x799];
-        $result = '';
-        foreach ($codepoints as $value) {
-            $result .= $this->codepointToUtf8($value);
-        }
-        $this->assertEquals($expected, $result);
-    }
-
-    /**
-     * Convert a Unicode Codepoint to a literal UTF-8 character.
-     *
-     * @param int $codepoint Unicode codepoint in hex notation
-     *
-     * @return string UTF-8 literal string
-     */
-    protected function codepointToUtf8($codepoint)
-    {
-        if ($codepoint < 0x80) {
-            return \chr($codepoint);
-        }
-        if ($codepoint < 0x800) {
-            return \chr($codepoint >> 6 & 0x3f | 0xc0)
-                .\chr($codepoint & 0x3f | 0x80);
-        }
-        if ($codepoint < 0x10000) {
-            return \chr($codepoint >> 12 & 0x0f | 0xe0)
-                .\chr($codepoint >> 6 & 0x3f | 0x80)
-                .\chr($codepoint & 0x3f | 0x80);
-        }
-        if ($codepoint < 0x110000) {
-            return \chr($codepoint >> 18 & 0x07 | 0xf0)
-                .\chr($codepoint >> 12 & 0x3f | 0x80)
-                .\chr($codepoint >> 6 & 0x3f | 0x80)
-                .\chr($codepoint & 0x3f | 0x80);
-        }
-        throw new \Exception('Codepoint requested outside of Unicode range.');
-    }
-
-    public function testJavascriptEscapingEscapesOwaspRecommendedRanges()
-    {
-        $immune = [',', '.', '_']; // Exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
-            if ($chr >= 0x30 && $chr <= 0x39
-            || $chr >= 0x41 && $chr <= 0x5A
-            || $chr >= 0x61 && $chr <= 0x7A) {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'js'));
-            } else {
-                $literal = $this->codepointToUtf8($chr);
-                if (\in_array($literal, $immune)) {
-                    $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'js'));
-                } else {
-                    $this->assertNotEquals(
-                        $literal,
-                        twig_escape_filter($this->env, $literal, 'js'),
-                        "$literal should be escaped!");
-                }
-            }
-        }
-    }
-
-    public function testHtmlAttributeEscapingEscapesOwaspRecommendedRanges()
-    {
-        $immune = [',', '.', '-', '_']; // Exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
-            if ($chr >= 0x30 && $chr <= 0x39
-            || $chr >= 0x41 && $chr <= 0x5A
-            || $chr >= 0x61 && $chr <= 0x7A) {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'html_attr'));
-            } else {
-                $literal = $this->codepointToUtf8($chr);
-                if (\in_array($literal, $immune)) {
-                    $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'html_attr'));
-                } else {
-                    $this->assertNotEquals(
-                        $literal,
-                        twig_escape_filter($this->env, $literal, 'html_attr'),
-                        "$literal should be escaped!");
-                }
-            }
-        }
-    }
-
-    public function testCssEscapingEscapesOwaspRecommendedRanges()
-    {
-        // CSS has no exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
-            if ($chr >= 0x30 && $chr <= 0x39
-            || $chr >= 0x41 && $chr <= 0x5A
-            || $chr >= 0x61 && $chr <= 0x7A) {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'css'));
-            } else {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertNotEquals(
-                    $literal,
-                    twig_escape_filter($this->env, $literal, 'css'),
-                    "$literal should be escaped!");
-            }
-        }
-    }
-}