diff --git a/.appveyor.yml b/.appveyor.yml
index f61289ad691ffd22bea93ff6fd0edcd7635528a7..492a836667285e2f0e4009a11b985795d197b27e 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -8,6 +8,7 @@ environment:
   matrix:
     - PHP_VERSION: "7.2"
     - PHP_VERSION: "7.3"
+    - PHP_VERSION: "7.4"
 
 install:
   - ps: Invoke-WebRequest "https://raw.githubusercontent.com/ChadSikorra/ps-install-php/master/Install-PHP.ps1" -OutFile "Install-PHP.ps1"
diff --git a/.gitignore b/.gitignore
index 6bde92f3c292f98a806c0a51719f9fce8c006029..d5e68ae74f68f03ecef05d3baa1279c1ef2fe035 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
 /www/assets/js/*.map
 /www/assets/css/*.css
 /www/assets/css/*.map
+.phpunit.result.cache
 
 !/config/.gitkeep
 !/metadata/.gitkeep
diff --git a/.travis.yml b/.travis.yml
index 19c197da2c2847895b0106b9f428766a6aabb937..20266611c2d2b595e60ce04f96111b7ab668e94f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,13 +32,13 @@ script:
 jobs:
   fast_finish: true
   allow_failures:
-    - php: 7.2
+    - php: 7.3
       env: Psalm
-    - php: 7.2
+    - php: 7.3
       env: Security check (composer install)
-    - php: 7.2
+    - php: 7.3
       env: Security check (composer update)
-    - php: 7.2
+    - php: 7.3
       env: PHP Codesniffer
 
   include:
@@ -117,6 +117,7 @@ jobs:
         - composer update
       script:
         - vendor/bin/psalm
+        - vendor/bin/psalter --issues=UnnecessaryVarAnnotation --dry-run
 
     - stage: quality
       php: 7.3
diff --git a/composer.json b/composer.json
index 9512ba875e581cfa6603a26e47daf695c8151787..2b9c145183993c797bfcf78880deffc38d294e84 100644
--- a/composer.json
+++ b/composer.json
@@ -75,28 +75,28 @@
         "simplesamlphp/simplesamlphp-module-statistics": "^0.9",
         "simplesamlphp/simplesamlphp-module-sqlauth": "^0.9",
         "simplesamlphp/twig-configurable-i18n": "^2.1",
-        "symfony/cache": "^3.4 || ^4.0",
-        "symfony/config": "^3.4 || ^4.0",
-        "symfony/console": "^3.4 || ^4.0",
-        "symfony/dependency-injection": "^3.4 || ^4.0",
-        "symfony/finder": "^3.4 || ^4.0",
-        "symfony/framework-bundle": "^3.4 || ^4.0",
-        "symfony/http-foundation": "^3.4 || ^4.0",
-        "symfony/http-kernel": "^3.4 || ^4.0",
-        "symfony/routing": "^3.4 || ^4.0",
-        "symfony/yaml": "^3.4 || ^4.0",
-        "twig/twig": "~1.0 || ~2.0",
-        "webmozart/assert": "~1.5",
+        "symfony/cache": "^4.0",
+        "symfony/config": "^4.0",
+        "symfony/console": "^4.0",
+        "symfony/dependency-injection": "^4.0",
+        "symfony/finder": "^4.0",
+        "symfony/framework-bundle": "^4.0",
+        "symfony/http-foundation": "^4.0",
+        "symfony/http-kernel": "^4.0",
+        "symfony/routing": "^4.0",
+        "symfony/yaml": "^4.0",
+        "twig/twig": "~2.0",
+        "webmozart/assert": "~1.7",
         "whitehat101/apr1-md5": "~1.0"
     },
     "require-dev": {
         "ext-curl": "*",
         "mikey179/vfsstream": "~1.6",
-        "phpunit/phpunit": "~6.3",
+        "phpunit/phpunit": "~8.5",
         "sensiolabs/security-checker": "^5.0.3",
         "simplesamlphp/simplesamlphp-test-framework": "^0.1.0",
         "squizlabs/php_codesniffer": "^3.5",
-        "vimeo/psalm": "~3.2"
+        "vimeo/psalm": "^3.8"
     },
     "suggest": {
         "predis/predis": "Needed if a Redis server is used to store session information",
diff --git a/composer.lock b/composer.lock
index 4d5e361b8f28e9d3a96fccbdaa85223139718242..e54e4a73e1e9e1d5769945f26d379ee868462cf8 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,11 +1,10 @@
 {
     "_readme": [
         "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "hash": "0db7a68cb99ee8f7804f6e2fe4499e2e",
-    "content-hash": "1d87df89c6f632a5e3814d8253a726fe",
+    "content-hash": "8665019f383f4dce5678660e6a78f8b7",
     "packages": [
         {
             "name": "gettext/gettext",
@@ -67,7 +66,7 @@
                 "po",
                 "translation"
             ],
-            "time": "2019-12-02 10:21:14"
+            "time": "2019-12-02T10:21:14+00:00"
         },
         {
             "name": "gettext/languages",
@@ -128,52 +127,7 @@
                 "translations",
                 "unicode"
             ],
-            "time": "2019-11-13 10:30:21"
-        },
-        {
-            "name": "paragonie/random_compat",
-            "version": "v9.99.99",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/paragonie/random_compat.git",
-                "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
-                "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "4.*|5.*",
-                "vimeo/psalm": "^1"
-            },
-            "suggest": {
-                "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
-            },
-            "type": "library",
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Paragon Initiative Enterprises",
-                    "email": "security@paragonie.com",
-                    "homepage": "https://paragonie.com"
-                }
-            ],
-            "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
-            "keywords": [
-                "csprng",
-                "polyfill",
-                "pseudorandom",
-                "random"
-            ],
-            "time": "2018-07-02 15:55:56"
+            "time": "2019-11-13T10:30:21+00:00"
         },
         {
             "name": "phpfastcache/riak-client",
@@ -245,7 +199,7 @@
                 "nosql",
                 "riak"
             ],
-            "time": "2017-11-23 21:33:15"
+            "time": "2017-11-23T21:33:15+00:00"
         },
         {
             "name": "phpmailer/phpmailer",
@@ -307,7 +261,7 @@
                 }
             ],
             "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
-            "time": "2019-12-10 11:17:38"
+            "time": "2019-12-10T11:17:38+00:00"
         },
         {
             "name": "psr/cache",
@@ -353,7 +307,7 @@
                 "psr",
                 "psr-6"
             ],
-            "time": "2016-08-06 20:24:11"
+            "time": "2016-08-06T20:24:11+00:00"
         },
         {
             "name": "psr/container",
@@ -402,7 +356,7 @@
                 "container-interop",
                 "psr"
             ],
-            "time": "2017-02-14 16:28:37"
+            "time": "2017-02-14T16:28:37+00:00"
         },
         {
             "name": "psr/log",
@@ -449,55 +403,7 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2019-11-01 11:05:21"
-        },
-        {
-            "name": "psr/simple-cache",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/simple-cache.git",
-                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
-                "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\SimpleCache\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interfaces for simple caching",
-            "keywords": [
-                "cache",
-                "caching",
-                "psr",
-                "psr-16",
-                "simple-cache"
-            ],
-            "time": "2017-10-23 01:57:42"
+            "time": "2019-11-01T11:05:21+00:00"
         },
         {
             "name": "robrichards/xmlseclibs",
@@ -535,7 +441,7 @@
                 "xml",
                 "xmldsig"
             ],
-            "time": "2019-11-05 11:44:22"
+            "time": "2019-11-05T11:44:22+00:00"
         },
         {
             "name": "simplesamlphp/composer-module-installer",
@@ -566,53 +472,49 @@
             },
             "notification-url": "https://packagist.org/downloads/",
             "description": "A Composer plugin that allows installing SimpleSAMLphp modules through Composer.",
-            "time": "2017-04-24 07:12:50"
+            "time": "2017-04-24T07:12:50+00:00"
         },
         {
             "name": "simplesamlphp/saml2",
-            "version": "v3.4.3",
+            "version": "v4.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/simplesamlphp/saml2.git",
-                "reference": "221fe97057fc4d918913b7e908b24da2a804d84c"
+                "reference": "1038c3335cb707058d6e49520e756765ddf7c741"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/221fe97057fc4d918913b7e908b24da2a804d84c",
-                "reference": "221fe97057fc4d918913b7e908b24da2a804d84c",
+                "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/1038c3335cb707058d6e49520e756765ddf7c741",
+                "reference": "1038c3335cb707058d6e49520e756765ddf7c741",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-openssl": "*",
                 "ext-zlib": "*",
-                "php": ">=5.4",
-                "psr/log": "~1.0",
+                "php": ">=7.2",
+                "psr/log": "~1.1",
                 "robrichards/xmlseclibs": "^3.0.4",
-                "webmozart/assert": "^1.4"
+                "webmozart/assert": "^1.5"
             },
             "require-dev": {
-                "mockery/mockery": "~0.9",
-                "phpmd/phpmd": "~2.6",
-                "phpunit/phpunit": "~5.7",
-                "sebastian/phpcpd": "~2.0",
-                "sensiolabs/security-checker": "~4.1",
-                "simplesamlphp/simplesamlphp-test-framework": "0.0.11",
-                "squizlabs/php_codesniffer": "~3.2"
+                "mockery/mockery": "~1.2",
+                "phpunit/phpunit": "^8.3",
+                "sebastian/phpcpd": "~4.1",
+                "sensiolabs/security-checker": "~6.0",
+                "simplesamlphp/simplesamlphp-test-framework": "~0.1.0",
+                "squizlabs/php_codesniffer": "~3.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "v3.1.x-dev"
+                    "dev-master": "v4.0.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "SAML2\\": "src/"
-                },
-                "files": [
-                    "src/_autoload.php"
-                ]
+                "psr-4": {
+                    "SAML2\\": "src/SAML2"
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -625,7 +527,7 @@
                 }
             ],
             "description": "SAML2 PHP library from SimpleSAMLphp",
-            "time": "2019-12-15 09:42:17"
+            "time": "2020-02-02T10:18:54+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-adfs",
@@ -670,7 +572,7 @@
                 "adfs",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 08:45:21"
+            "time": "2019-12-03T08:45:21+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-authcrypt",
@@ -716,7 +618,7 @@
                 "authcrypt",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 08:56:36"
+            "time": "2019-12-03T08:56:36+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-authfacebook",
@@ -765,7 +667,7 @@
                 "facebook",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 08:58:26"
+            "time": "2019-12-03T08:58:26+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-authorize",
@@ -810,7 +712,7 @@
                 "authorize",
                 "simplesamlphp"
             ],
-            "time": "2019-12-13 07:49:26"
+            "time": "2019-12-13T07:49:26+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-authtwitter",
@@ -860,7 +762,7 @@
                 "simplesamlphp",
                 "twitter"
             ],
-            "time": "2019-12-03 09:00:09"
+            "time": "2019-12-03T09:00:09+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-authwindowslive",
@@ -911,7 +813,7 @@
                 "windows",
                 "windowslive"
             ],
-            "time": "2019-12-03 09:01:13"
+            "time": "2019-12-03T09:01:13+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-authx509",
@@ -965,7 +867,7 @@
                 "simplesamlphp",
                 "x509"
             ],
-            "time": "2019-12-03 08:48:01"
+            "time": "2019-12-03T08:48:01+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-authyubikey",
@@ -1014,7 +916,7 @@
                 "authyubikey",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 08:52:49"
+            "time": "2019-12-03T08:52:49+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-cas",
@@ -1061,7 +963,7 @@
                 "cas",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 09:03:06"
+            "time": "2019-12-03T09:03:06+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-cdc",
@@ -1110,7 +1012,7 @@
                 "cdc",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 09:04:11"
+            "time": "2019-12-03T09:04:11+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-consent",
@@ -1155,7 +1057,7 @@
                 "consent",
                 "simplesamlphp"
             ],
-            "time": "2019-12-13 07:55:51"
+            "time": "2019-12-13T07:55:51+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-consentadmin",
@@ -1204,26 +1106,26 @@
                 "consentadmin",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 09:06:40"
+            "time": "2019-12-03T09:06:40+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-discopower",
-            "version": "v0.9.3",
+            "version": "v0.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/simplesamlphp/simplesamlphp-module-discopower.git",
-                "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb"
+                "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/c892926e8186d0a2c638f7032dfc30540c1f92fb",
-                "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb",
+                "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/006c0617610f1bae11cf4d17e8ce4c509239a60e",
+                "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.6",
                 "simplesamlphp/composer-module-installer": "~1.1",
-                "webmozart/assert": "~1.4 <1.6"
+                "webmozart/assert": "~1.4"
             },
             "require-dev": {
                 "phpunit/phpunit": "~5.7",
@@ -1251,7 +1153,7 @@
                 "discovery",
                 "simplesamlphp"
             ],
-            "time": "2019-12-13 07:51:43"
+            "time": "2019-11-27T20:34:37+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-exampleattributeserver",
@@ -1296,7 +1198,7 @@
                 "exampleattributeserver",
                 "simplesamlphp"
             ],
-            "time": "2019-05-28 12:37:15"
+            "time": "2019-05-28T12:37:15+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-expirycheck",
@@ -1342,7 +1244,7 @@
                 "expirycheck",
                 "simplesamlphp"
             ],
-            "time": "2019-12-14 13:20:46"
+            "time": "2019-12-14T13:20:46+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-ldap",
@@ -1394,7 +1296,7 @@
                 "ldap",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 12:01:56"
+            "time": "2019-12-03T12:01:56+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-memcachemonitor",
@@ -1441,7 +1343,7 @@
                 "memcachemonitor",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 09:19:35"
+            "time": "2019-12-03T09:19:35+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-memcookie",
@@ -1489,7 +1391,7 @@
                 "cookies",
                 "simplesamlphp"
             ],
-            "time": "2019-08-08 18:33:47"
+            "time": "2019-08-08T18:33:47+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-metarefresh",
@@ -1534,7 +1436,7 @@
                 "metarefresh",
                 "simplesamlphp"
             ],
-            "time": "2019-12-15 09:44:34"
+            "time": "2019-12-15T09:44:34+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-negotiate",
@@ -1584,7 +1486,7 @@
                 "negotiate",
                 "simplesamlphp"
             ],
-            "time": "2019-11-20 08:50:01"
+            "time": "2019-11-20T08:50:01+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-oauth",
@@ -1628,7 +1530,7 @@
                 "oauth1",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 09:22:08"
+            "time": "2019-12-03T09:22:08+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-preprodwarning",
@@ -1674,7 +1576,7 @@
                 "preprodwarning",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 09:17:47"
+            "time": "2019-12-03T09:17:47+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-radius",
@@ -1720,7 +1622,7 @@
                 "radius",
                 "simplesamlphp"
             ],
-            "time": "2019-10-03 18:13:07"
+            "time": "2019-10-03T18:13:07+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-riak",
@@ -1766,7 +1668,7 @@
                 "riak",
                 "simplesamlphp"
             ],
-            "time": "2019-12-03 08:28:45"
+            "time": "2019-12-03T08:28:45+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-sanitycheck",
@@ -1812,7 +1714,7 @@
                 "sanitycheck",
                 "simplesamlphp"
             ],
-            "time": "2019-05-28 12:19:05"
+            "time": "2019-05-28T12:19:05+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-smartattributes",
@@ -1857,7 +1759,7 @@
                 "simplesamlphp",
                 "smartattributes"
             ],
-            "time": "2019-12-03 09:24:09"
+            "time": "2019-12-03T09:24:09+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-sqlauth",
@@ -1903,7 +1805,7 @@
                 "simplesamlphp",
                 "sqlauth"
             ],
-            "time": "2019-12-03 09:07:09"
+            "time": "2019-12-03T09:07:09+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-statistics",
@@ -1950,7 +1852,7 @@
                 "simplesamlphp",
                 "statistics"
             ],
-            "time": "2019-12-03 08:42:27"
+            "time": "2019-12-03T08:42:27+00:00"
         },
         {
             "name": "simplesamlphp/twig-configurable-i18n",
@@ -1998,46 +1900,55 @@
                 "translation",
                 "twig"
             ],
-            "time": "2019-07-09 08:35:44"
+            "time": "2019-07-09T08:35:44+00:00"
         },
         {
             "name": "symfony/cache",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/cache.git",
-                "reference": "3d9f46a6960fd5cd7f030f86adc5b4b63bcfa4e3"
+                "reference": "0198a01c8d918d6d717f96dfdcba9582bc5f6468"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/cache/zipball/3d9f46a6960fd5cd7f030f86adc5b4b63bcfa4e3",
-                "reference": "3d9f46a6960fd5cd7f030f86adc5b4b63bcfa4e3",
+                "url": "https://api.github.com/repos/symfony/cache/zipball/0198a01c8d918d6d717f96dfdcba9582bc5f6468",
+                "reference": "0198a01c8d918d6d717f96dfdcba9582bc5f6468",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
+                "php": "^7.1.3",
                 "psr/cache": "~1.0",
                 "psr/log": "~1.0",
-                "psr/simple-cache": "^1.0",
-                "symfony/polyfill-apcu": "~1.1"
+                "symfony/cache-contracts": "^1.1.7|^2",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/var-exporter": "^4.2|^5.0"
             },
             "conflict": {
-                "symfony/var-dumper": "<3.3"
+                "doctrine/dbal": "<2.5",
+                "symfony/dependency-injection": "<3.4",
+                "symfony/http-kernel": "<4.4",
+                "symfony/var-dumper": "<4.4"
             },
             "provide": {
                 "psr/cache-implementation": "1.0",
-                "psr/simple-cache-implementation": "1.0"
+                "psr/simple-cache-implementation": "1.0",
+                "symfony/cache-implementation": "1.0"
             },
             "require-dev": {
                 "cache/integration-tests": "dev-master",
                 "doctrine/cache": "~1.6",
-                "doctrine/dbal": "~2.4",
-                "predis/predis": "~1.0"
+                "doctrine/dbal": "~2.5",
+                "predis/predis": "~1.1",
+                "psr/simple-cache": "^1.0",
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.1|^5.0",
+                "symfony/var-dumper": "^4.4|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2068,45 +1979,39 @@
                 "caching",
                 "psr6"
             ],
-            "time": "2019-12-01 10:45:41"
+            "time": "2020-01-29T14:35:06+00:00"
         },
         {
-            "name": "symfony/class-loader",
-            "version": "v3.4.36",
+            "name": "symfony/cache-contracts",
+            "version": "v2.0.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/class-loader.git",
-                "reference": "e212b06996819a2bce026a63da03b7182d05a690"
+                "url": "https://github.com/symfony/cache-contracts.git",
+                "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/class-loader/zipball/e212b06996819a2bce026a63da03b7182d05a690",
-                "reference": "e212b06996819a2bce026a63da03b7182d05a690",
+                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16",
+                "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
-            },
-            "require-dev": {
-                "symfony/finder": "~2.8|~3.0|~4.0",
-                "symfony/polyfill-apcu": "~1.1"
+                "php": "^7.2.5",
+                "psr/cache": "^1.0"
             },
             "suggest": {
-                "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM"
+                "symfony/cache-implementation": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "2.0-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\ClassLoader\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
+                    "Symfony\\Contracts\\Cache\\": ""
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -2114,46 +2019,54 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony ClassLoader Component",
+            "description": "Generic abstractions related to caching",
             "homepage": "https://symfony.com",
-            "time": "2019-08-20 13:31:17"
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "time": "2019-11-18T17:27:11+00:00"
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "a599a867d0e4a07c342b5f1e656b3915a540ddbe"
+                "reference": "4d3979f54472637169080f802dc82197e21fdcce"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/a599a867d0e4a07c342b5f1e656b3915a540ddbe",
-                "reference": "a599a867d0e4a07c342b5f1e656b3915a540ddbe",
+                "url": "https://api.github.com/repos/symfony/config/zipball/4d3979f54472637169080f802dc82197e21fdcce",
+                "reference": "4d3979f54472637169080f802dc82197e21fdcce",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/filesystem": "~2.8|~3.0|~4.0",
+                "php": "^7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.0",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "conflict": {
-                "symfony/dependency-injection": "<3.3",
-                "symfony/finder": "<3.3"
+                "symfony/finder": "<3.4"
             },
             "require-dev": {
-                "symfony/dependency-injection": "~3.3|~4.0",
-                "symfony/event-dispatcher": "~3.3|~4.0",
-                "symfony/finder": "~3.3|~4.0",
-                "symfony/yaml": "~3.0|~4.0"
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/yaml": "To use the yaml reference dumper"
@@ -2161,7 +2074,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2188,29 +2101,32 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-12-01 10:45:41"
+            "time": "2020-01-04T13:00:46+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "1ee23b3b659b06c622f2bd2492a229e416eb4586"
+                "reference": "f512001679f37e6a042b51897ed24a2f05eba656"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/1ee23b3b659b06c622f2bd2492a229e416eb4586",
-                "reference": "1ee23b3b659b06c622f2bd2492a229e416eb4586",
+                "url": "https://api.github.com/repos/symfony/console/zipball/f512001679f37e6a042b51897ed24a2f05eba656",
+                "reference": "f512001679f37e6a042b51897ed24a2f05eba656",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/debug": "~2.8|~3.0|~4.0",
-                "symfony/polyfill-mbstring": "~1.0"
+                "php": "^7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/service-contracts": "^1.1|^2"
             },
             "conflict": {
                 "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
                 "symfony/process": "<3.3"
             },
             "provide": {
@@ -2218,11 +2134,12 @@
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/config": "~3.3|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
-                "symfony/lock": "~3.4|~4.0",
-                "symfony/process": "~3.3|~4.0"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
             },
             "suggest": {
                 "psr/log": "For using the console logger",
@@ -2233,7 +2150,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2260,36 +2177,36 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-12-01 10:04:45"
+            "time": "2020-01-25T12:44:29+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "f72e33fdb1170b326e72c3157f0cd456351dd086"
+                "reference": "20236471058bbaa9907382500fc14005c84601f0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/f72e33fdb1170b326e72c3157f0cd456351dd086",
-                "reference": "f72e33fdb1170b326e72c3157f0cd456351dd086",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/20236471058bbaa9907382500fc14005c84601f0",
+                "reference": "20236471058bbaa9907382500fc14005c84601f0",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
+                "php": "^7.1.3",
                 "psr/log": "~1.0"
             },
             "conflict": {
-                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+                "symfony/http-kernel": "<3.4"
             },
             "require-dev": {
-                "symfony/http-kernel": "~2.8|~3.0|~4.0"
+                "symfony/http-kernel": "^3.4|^4.0|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2316,39 +2233,41 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-24 15:33:53"
+            "time": "2020-01-25T12:44:29+00:00"
         },
         {
             "name": "symfony/dependency-injection",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dependency-injection.git",
-                "reference": "0d201916bfb3af939fec3c0c8815ea16c60ac1a2"
+                "reference": "ec60a7d12f5e8ab0f99456adce724717d9c1784a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/0d201916bfb3af939fec3c0c8815ea16c60ac1a2",
-                "reference": "0d201916bfb3af939fec3c0c8815ea16c60ac1a2",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ec60a7d12f5e8ab0f99456adce724717d9c1784a",
+                "reference": "ec60a7d12f5e8ab0f99456adce724717d9c1784a",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "psr/container": "^1.0"
+                "php": "^7.1.3",
+                "psr/container": "^1.0",
+                "symfony/service-contracts": "^1.1.6|^2"
             },
             "conflict": {
-                "symfony/config": "<3.3.7",
-                "symfony/finder": "<3.3",
+                "symfony/config": "<4.3|>=5.0",
+                "symfony/finder": "<3.4",
                 "symfony/proxy-manager-bridge": "<3.4",
                 "symfony/yaml": "<3.4"
             },
             "provide": {
-                "psr/container-implementation": "1.0"
+                "psr/container-implementation": "1.0",
+                "symfony/service-implementation": "1.0"
             },
             "require-dev": {
-                "symfony/config": "~3.3|~4.0",
-                "symfony/expression-language": "~2.8|~3.0|~4.0",
-                "symfony/yaml": "~3.4|~4.0"
+                "symfony/config": "^4.3",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/config": "",
@@ -2360,7 +2279,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2387,34 +2306,97 @@
             ],
             "description": "Symfony DependencyInjection Component",
             "homepage": "https://symfony.com",
-            "time": "2019-12-01 08:33:36"
+            "time": "2020-01-31T09:49:27+00:00"
+        },
+        {
+            "name": "symfony/error-handler",
+            "version": "v4.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/error-handler.git",
+                "reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/d2721499ffcaf246a743e01cdf6696d3d5dd74c1",
+                "reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "psr/log": "~1.0",
+                "symfony/debug": "^4.4",
+                "symfony/var-dumper": "^4.4|^5.0"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "^4.4|^5.0",
+                "symfony/serializer": "^4.4|^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.4-dev"
+                }
+            },
+            "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",
+            "time": "2020-01-27T09:48:47+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "f9031c22ec127d4a2450760f81a8677fe8a10177"
+                "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f9031c22ec127d4a2450760f81a8677fe8a10177",
-                "reference": "f9031c22ec127d4a2450760f81a8677fe8a10177",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b",
+                "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
             },
             "conflict": {
-                "symfony/dependency-injection": "<3.3"
+                "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": "~2.8|~3.0|~4.0",
-                "symfony/dependency-injection": "~3.3|~4.0",
-                "symfony/expression-language": "~2.8|~3.0|~4.0",
-                "symfony/stopwatch": "~2.8|~3.0|~4.0"
+                "symfony/config": "^3.4|^4.0|^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/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/dependency-injection": "",
@@ -2423,7 +2405,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2450,30 +2432,88 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-24 15:33:53"
+            "time": "2020-01-10T21:54:01+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.7",
+            "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": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                }
+            },
+            "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"
+            ],
+            "time": "2019-09-17T09:54:03+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.36",
+            "version": "v5.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "00cdad0936d06fab136944bc2342b762b1c3a4a2"
+                "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/00cdad0936d06fab136944bc2342b762b1c3a4a2",
-                "reference": "00cdad0936d06fab136944bc2342b762b1c3a4a2",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/3afadc0f57cd74f86379d073e694b0f2cda2a88c",
+                "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
+                "php": "^7.2.5",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -2500,29 +2540,29 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-11-25 16:36:22"
+            "time": "2020-01-21T08:40:24+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "290ae21279b37bfd287cdcce640d51204e84afdf"
+                "reference": "3a50be43515590faf812fbd7708200aabc327ec3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/290ae21279b37bfd287cdcce640d51204e84afdf",
-                "reference": "290ae21279b37bfd287cdcce640d51204e84afdf",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/3a50be43515590faf812fbd7708200aabc327ec3",
+                "reference": "3a50be43515590faf812fbd7708200aabc327ec3",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^7.1.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2549,80 +2589,96 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-11-17 21:55:15"
+            "time": "2020-01-04T13:00:46+00:00"
         },
         {
             "name": "symfony/framework-bundle",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/framework-bundle.git",
-                "reference": "0d61117c7a770da0bd8bbe7ccfa34d8063f272ea"
+                "reference": "afc96daad6049cbed34312b34005d33fc670d022"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/0d61117c7a770da0bd8bbe7ccfa34d8063f272ea",
-                "reference": "0d61117c7a770da0bd8bbe7ccfa34d8063f272ea",
+                "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/afc96daad6049cbed34312b34005d33fc670d022",
+                "reference": "afc96daad6049cbed34312b34005d33fc670d022",
                 "shasum": ""
             },
             "require": {
                 "ext-xml": "*",
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/cache": "~3.4.31|^4.3.4",
-                "symfony/class-loader": "~3.2",
-                "symfony/config": "^3.4.31|^4.3.4",
-                "symfony/debug": "~2.8|~3.0|~4.0",
-                "symfony/dependency-injection": "^3.4.24|^4.2.5",
-                "symfony/event-dispatcher": "~3.4|~4.0",
-                "symfony/filesystem": "~2.8|~3.0|~4.0",
-                "symfony/finder": "~2.8|~3.0|~4.0",
-                "symfony/http-foundation": "^3.4.13|~4.3",
-                "symfony/http-kernel": "^3.4.31|^4.3.4",
+                "php": "^7.1.3",
+                "symfony/cache": "^4.4|^5.0",
+                "symfony/config": "^4.3.4|^5.0",
+                "symfony/dependency-injection": "^4.4.1|^5.0.1",
+                "symfony/error-handler": "^4.4.1|^5.0.1",
+                "symfony/filesystem": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^4.4|^5.0",
+                "symfony/http-kernel": "^4.4",
                 "symfony/polyfill-mbstring": "~1.0",
-                "symfony/routing": "^3.4.5|^4.0.5"
+                "symfony/routing": "^4.4|^5.0"
             },
             "conflict": {
+                "doctrine/persistence": "<1.3",
                 "phpdocumentor/reflection-docblock": "<3.0",
                 "phpdocumentor/type-resolver": "<0.2.1",
                 "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
-                "symfony/asset": "<3.3",
-                "symfony/console": "<3.4",
-                "symfony/form": "<3.4",
-                "symfony/property-info": "<3.3",
-                "symfony/serializer": "<3.3",
+                "symfony/asset": "<3.4",
+                "symfony/browser-kit": "<4.3",
+                "symfony/console": "<4.3",
+                "symfony/dom-crawler": "<4.3",
+                "symfony/dotenv": "<4.3.6",
+                "symfony/form": "<4.3.5",
+                "symfony/http-client": "<4.4",
+                "symfony/lock": "<4.4",
+                "symfony/mailer": "<4.4",
+                "symfony/messenger": "<4.4",
+                "symfony/mime": "<4.4",
+                "symfony/property-info": "<3.4",
+                "symfony/security-bundle": "<4.4",
+                "symfony/serializer": "<4.4",
                 "symfony/stopwatch": "<3.4",
-                "symfony/translation": "<3.4",
-                "symfony/validator": "<3.4",
-                "symfony/workflow": "<3.3"
+                "symfony/translation": "<4.4",
+                "symfony/twig-bridge": "<4.1.1",
+                "symfony/twig-bundle": "<4.4",
+                "symfony/validator": "<4.4",
+                "symfony/web-profiler-bundle": "<4.4",
+                "symfony/workflow": "<4.3.6"
             },
             "require-dev": {
                 "doctrine/annotations": "~1.7",
                 "doctrine/cache": "~1.0",
-                "fig/link-util": "^1.0",
+                "paragonie/sodium_compat": "^1.8",
                 "phpdocumentor/reflection-docblock": "^3.0|^4.0",
-                "symfony/asset": "~3.3|~4.0",
-                "symfony/browser-kit": "~2.8|~3.0|~4.0",
-                "symfony/console": "~3.4.31|^4.3.4",
-                "symfony/css-selector": "~2.8|~3.0|~4.0",
-                "symfony/dom-crawler": "~2.8|~3.0|~4.0",
-                "symfony/expression-language": "~2.8|~3.0|~4.0",
-                "symfony/form": "^3.4.31|^4.3.4",
-                "symfony/lock": "~3.4|~4.0",
+                "symfony/asset": "^3.4|^4.0|^5.0",
+                "symfony/browser-kit": "^4.3|^5.0",
+                "symfony/console": "^4.3.4|^5.0",
+                "symfony/css-selector": "^3.4|^4.0|^5.0",
+                "symfony/dom-crawler": "^4.3|^5.0",
+                "symfony/dotenv": "^4.3.6|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/form": "^4.3.5|^5.0",
+                "symfony/http-client": "^4.4|^5.0",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/mailer": "^4.4|^5.0",
+                "symfony/messenger": "^4.4|^5.0",
+                "symfony/mime": "^4.4|^5.0",
                 "symfony/polyfill-intl-icu": "~1.0",
-                "symfony/process": "~2.8|~3.0|~4.0",
-                "symfony/property-info": "~3.3|~4.0",
-                "symfony/security-core": "~3.2|~4.0",
-                "symfony/security-csrf": "^2.8.31|^3.3.13|~4.0",
-                "symfony/serializer": "~3.3|~4.0",
-                "symfony/stopwatch": "~3.4|~4.0",
-                "symfony/templating": "~2.8|~3.0|~4.0",
-                "symfony/translation": "~3.4|~4.0",
-                "symfony/validator": "~3.4|~4.0",
-                "symfony/var-dumper": "~3.3|~4.0",
-                "symfony/web-link": "~3.3|~4.0",
-                "symfony/workflow": "~3.3|~4.0",
-                "symfony/yaml": "~3.2|~4.0",
-                "twig/twig": "~1.34|~2.4"
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/property-info": "^3.4|^4.0|^5.0",
+                "symfony/security-csrf": "^3.4|^4.0|^5.0",
+                "symfony/security-http": "^3.4|^4.0|^5.0",
+                "symfony/serializer": "^4.4|^5.0",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0",
+                "symfony/templating": "^3.4|^4.0|^5.0",
+                "symfony/translation": "^4.4|^5.0",
+                "symfony/twig-bundle": "^4.4|^5.0",
+                "symfony/validator": "^4.4|^5.0",
+                "symfony/web-link": "^4.4|^5.0",
+                "symfony/workflow": "^4.3.6|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0",
+                "twig/twig": "^1.41|^2.10|^3.0"
             },
             "suggest": {
                 "ext-apcu": "For best performance of the system caches",
@@ -2637,7 +2693,7 @@
             "type": "symfony-bundle",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2664,34 +2720,35 @@
             ],
             "description": "Symfony FrameworkBundle",
             "homepage": "https://symfony.com",
-            "time": "2019-11-23 20:30:33"
+            "time": "2020-01-30T16:24:07+00:00"
         },
         {
             "name": "symfony/http-foundation",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-foundation.git",
-                "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593"
+                "reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d2d0cfe8e319d9df44c4cca570710fcf221d4593",
-                "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/491a20dfa87e0b3990170593bc2de0bb34d828a5",
+                "reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-mbstring": "~1.1",
-                "symfony/polyfill-php70": "~1.6"
+                "php": "^7.1.3",
+                "symfony/mime": "^4.3|^5.0",
+                "symfony/polyfill-mbstring": "~1.1"
             },
             "require-dev": {
-                "symfony/expression-language": "~2.8|~3.0|~4.0"
+                "predis/predis": "~1.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2718,35 +2775,37 @@
             ],
             "description": "Symfony HttpFoundation Component",
             "homepage": "https://symfony.com",
-            "time": "2019-11-28 12:52:59"
+            "time": "2020-01-31T09:11:17+00:00"
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "c42c8339acb28cfff0fb1786948db4d23d609ff7"
+                "reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c42c8339acb28cfff0fb1786948db4d23d609ff7",
-                "reference": "c42c8339acb28cfff0fb1786948db4d23d609ff7",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/62116a9c8fb15faabb158ad9cb785c353c2572e5",
+                "reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
+                "php": "^7.1.3",
                 "psr/log": "~1.0",
-                "symfony/debug": "^3.3.3|~4.0",
-                "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
-                "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-php56": "~1.8"
+                "symfony/error-handler": "^4.4",
+                "symfony/event-dispatcher": "^4.4",
+                "symfony/http-foundation": "^4.4|^5.0",
+                "symfony/polyfill-ctype": "^1.8",
+                "symfony/polyfill-php73": "^1.9"
             },
             "conflict": {
-                "symfony/config": "<2.8",
-                "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4",
-                "symfony/var-dumper": "<3.3",
+                "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": {
@@ -2754,34 +2813,32 @@
             },
             "require-dev": {
                 "psr/cache": "~1.0",
-                "symfony/browser-kit": "~2.8|~3.0|~4.0",
-                "symfony/class-loader": "~2.8|~3.0",
-                "symfony/config": "~2.8|~3.0|~4.0",
-                "symfony/console": "~2.8|~3.0|~4.0",
-                "symfony/css-selector": "~2.8|~3.0|~4.0",
-                "symfony/dependency-injection": "^3.4.10|^4.0.10",
-                "symfony/dom-crawler": "~2.8|~3.0|~4.0",
-                "symfony/expression-language": "~2.8|~3.0|~4.0",
-                "symfony/finder": "~2.8|~3.0|~4.0",
-                "symfony/process": "~2.8|~3.0|~4.0",
-                "symfony/routing": "~3.4|~4.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": "~3.3|~4.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": "",
-                "symfony/finder": "",
-                "symfony/var-dumper": ""
+                "symfony/dependency-injection": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2808,37 +2865,46 @@
             ],
             "description": "Symfony HttpKernel Component",
             "homepage": "https://symfony.com",
-            "time": "2019-12-01 13:50:37"
+            "time": "2020-01-31T12:45:06+00:00"
         },
         {
-            "name": "symfony/polyfill-apcu",
-            "version": "v1.13.1",
+            "name": "symfony/mime",
+            "version": "v5.0.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-apcu.git",
-                "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116"
+                "url": "https://github.com/symfony/mime.git",
+                "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a8e961c841b9ec52927a87914f8820a1ad8f8116",
-                "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/2a3c7fee1f1a0961fa9cf360d5da553d05095e59",
+                "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": "^7.2.5",
+                "symfony/polyfill-intl-idn": "^1.10",
+                "symfony/polyfill-mbstring": "^1.0"
+            },
+            "conflict": {
+                "symfony/mailer": "<4.4"
+            },
+            "require-dev": {
+                "egulias/email-validator": "^2.1.10",
+                "symfony/dependency-injection": "^4.4|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.13-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Polyfill\\Apcu\\": ""
+                    "Symfony\\Component\\Mime\\": ""
                 },
-                "files": [
-                    "bootstrap.php"
+                "exclude-from-classmap": [
+                    "/Tests/"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2847,37 +2913,34 @@
             ],
             "authors": [
                 {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
+            "description": "A library to manipulate MIME messages",
             "homepage": "https://symfony.com",
             "keywords": [
-                "apcu",
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
+                "mime",
+                "mime-type"
             ],
-            "time": "2019-11-27 13:56:44"
+            "time": "2020-01-04T14:08:26+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.13.1",
+            "version": "v1.14.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3"
+                "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
-                "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
+                "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
                 "shasum": ""
             },
             "require": {
@@ -2889,7 +2952,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.13-dev"
+                    "dev-master": "1.14-dev"
                 }
             },
             "autoload": {
@@ -2922,37 +2985,39 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2019-11-27 13:56:44"
+            "time": "2020-01-13T11:15:53+00:00"
         },
         {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.13.1",
+            "name": "symfony/polyfill-intl-idn",
+            "version": "v1.14.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
+                "url": "https://github.com/symfony/polyfill-intl-idn.git",
+                "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
-                "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a",
+                "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=5.3.3",
+                "symfony/polyfill-mbstring": "^1.3",
+                "symfony/polyfill-php72": "^1.10"
             },
             "suggest": {
-                "ext-mbstring": "For best performance"
+                "ext-intl": "For best performance"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.13-dev"
+                    "dev-master": "1.14-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
+                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
                 },
                 "files": [
                     "bootstrap.php"
@@ -2964,52 +3029,55 @@
             ],
             "authors": [
                 {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
+                    "name": "Laurent Bassin",
+                    "email": "laurent@bassin.info"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill for the Mbstring extension",
+            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
-                "mbstring",
+                "idn",
+                "intl",
                 "polyfill",
                 "portable",
                 "shim"
             ],
-            "time": "2019-11-27 14:18:11"
+            "time": "2020-01-17T12:01:36+00:00"
         },
         {
-            "name": "symfony/polyfill-php56",
-            "version": "v1.13.1",
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.14.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-php56.git",
-                "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4"
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
-                "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2",
+                "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3",
-                "symfony/polyfill-util": "~1.0"
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.13-dev"
+                    "dev-master": "1.14-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Polyfill\\Php56\\": ""
+                    "Symfony\\Polyfill\\Mbstring\\": ""
                 },
                 "files": [
                     "bootstrap.php"
@@ -3029,49 +3097,46 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
+            "description": "Symfony polyfill for the Mbstring extension",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
+                "mbstring",
                 "polyfill",
                 "portable",
                 "shim"
             ],
-            "time": "2019-11-27 13:56:44"
+            "time": "2020-01-13T11:15:53+00:00"
         },
         {
-            "name": "symfony/polyfill-php70",
-            "version": "v1.13.1",
+            "name": "symfony/polyfill-php72",
+            "version": "v1.14.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-php70.git",
-                "reference": "af23c7bb26a73b850840823662dda371484926c4"
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4",
-                "reference": "af23c7bb26a73b850840823662dda371484926c4",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
+                "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
                 "shasum": ""
             },
             "require": {
-                "paragonie/random_compat": "~1.0|~2.0|~9.99",
                 "php": ">=5.3.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.13-dev"
+                    "dev-master": "1.14-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Polyfill\\Php70\\": ""
+                    "Symfony\\Polyfill\\Php72\\": ""
                 },
                 "files": [
                     "bootstrap.php"
-                ],
-                "classmap": [
-                    "Resources/stubs"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -3088,7 +3153,7 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+            "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
@@ -3096,20 +3161,20 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-11-27 13:56:44"
+            "time": "2020-01-13T11:15:53+00:00"
         },
         {
-            "name": "symfony/polyfill-util",
-            "version": "v1.13.1",
+            "name": "symfony/polyfill-php73",
+            "version": "v1.14.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-util.git",
-                "reference": "964a67f293b66b95883a5ed918a65354fcd2258f"
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f",
-                "reference": "964a67f293b66b95883a5ed918a65354fcd2258f",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675",
+                "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675",
                 "shasum": ""
             },
             "require": {
@@ -3118,13 +3183,19 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.13-dev"
+                    "dev-master": "1.14-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Polyfill\\Util\\": ""
-                }
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -3140,46 +3211,46 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony utilities for portability of PHP codes",
+            "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
             "homepage": "https://symfony.com",
             "keywords": [
-                "compat",
                 "compatibility",
                 "polyfill",
+                "portable",
                 "shim"
             ],
-            "time": "2019-11-27 13:56:44"
+            "time": "2020-01-13T11:15:53+00:00"
         },
         {
             "name": "symfony/routing",
-            "version": "v3.4.36",
+            "version": "v4.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "b689ccd48e234ea404806d94b07eeb45f9f6f06a"
+                "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/b689ccd48e234ea404806d94b07eeb45f9f6f06a",
-                "reference": "b689ccd48e234ea404806d94b07eeb45f9f6f06a",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/7bf4e38573728e317b926ca4482ad30470d0e86a",
+                "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^7.1.3"
             },
             "conflict": {
-                "symfony/config": "<3.3.1",
-                "symfony/dependency-injection": "<3.3",
+                "symfony/config": "<4.2",
+                "symfony/dependency-injection": "<3.4",
                 "symfony/yaml": "<3.4"
             },
             "require-dev": {
-                "doctrine/annotations": "~1.0",
+                "doctrine/annotations": "~1.2",
                 "psr/log": "~1.0",
-                "symfony/config": "^3.3.1|~4.0",
-                "symfony/dependency-injection": "~3.3|~4.0",
-                "symfony/expression-language": "~2.8|~3.0|~4.0",
-                "symfony/http-foundation": "~2.8|~3.0|~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",
@@ -3191,7 +3262,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -3224,48 +3295,39 @@
                 "uri",
                 "url"
             ],
-            "time": "2019-12-01 08:33:36"
+            "time": "2020-01-08T17:29:02+00:00"
         },
         {
-            "name": "symfony/yaml",
-            "version": "v3.4.36",
+            "name": "symfony/service-contracts",
+            "version": "v2.0.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/yaml.git",
-                "reference": "dab657db15207879217fc81df4f875947bf68804"
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "144c5e51266b281231e947b51223ba14acf1a749"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/dab657db15207879217fc81df4f875947bf68804",
-                "reference": "dab657db15207879217fc81df4f875947bf68804",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
+                "reference": "144c5e51266b281231e947b51223ba14acf1a749",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-ctype": "~1.8"
-            },
-            "conflict": {
-                "symfony/console": "<3.4"
-            },
-            "require-dev": {
-                "symfony/console": "~3.4|~4.0"
+                "php": "^7.2.5",
+                "psr/container": "^1.0"
             },
             "suggest": {
-                "symfony/console": "For validating YAML files using the lint command"
+                "symfony/service-implementation": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "2.0-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\Yaml\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
+                    "Symfony\\Contracts\\Service\\": ""
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -3273,8 +3335,210 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "time": "2019-11-18T17:27:11+00:00"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v5.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "923591cfb78a935f0c98968fedfad05bfda9d01f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/923591cfb78a935f0c98968fedfad05bfda9d01f",
+                "reference": "923591cfb78a935f0c98968fedfad05bfda9d01f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "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",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "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"
+            ],
+            "time": "2020-01-25T15:56:29+00:00"
+        },
+        {
+            "name": "symfony/var-exporter",
+            "version": "v5.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-exporter.git",
+                "reference": "960f9ac0fdbd642461ed29d7717aeb2a94d428b9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/960f9ac0fdbd642461ed29d7717aeb2a94d428b9",
+                "reference": "960f9ac0fdbd642461ed29d7717aeb2a94d428b9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5"
+            },
+            "require-dev": {
+                "symfony/var-dumper": "^4.4|^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\VarExporter\\": ""
+                },
+                "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": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "clone",
+                "construct",
+                "export",
+                "hydrate",
+                "instantiate",
+                "serialize"
+            ],
+            "time": "2020-01-04T14:08:26+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v4.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "cd014e425b3668220adb865f53bff64b3ad21767"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/cd014e425b3668220adb865f53bff64b3ad21767",
+                "reference": "cd014e425b3668220adb865f53bff64b3ad21767",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
                 },
                 {
                     "name": "Symfony Community",
@@ -3283,7 +3547,7 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-24 15:33:53"
+            "time": "2020-01-21T11:12:16+00:00"
         },
         {
             "name": "twig/extensions",
@@ -3338,20 +3602,20 @@
                 "i18n",
                 "text"
             ],
-            "time": "2018-12-05 18:34:18"
+            "time": "2018-12-05T18:34:18+00:00"
         },
         {
             "name": "twig/twig",
-            "version": "v2.12.3",
+            "version": "v2.12.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/Twig.git",
-                "reference": "97b6311585cae66a26833b14b33785f5797f7d39"
+                "reference": "18772e0190734944277ee97a02a9a6c6555fcd94"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/Twig/zipball/97b6311585cae66a26833b14b33785f5797f7d39",
-                "reference": "97b6311585cae66a26833b14b33785f5797f7d39",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94",
+                "reference": "18772e0190734944277ee97a02a9a6c6555fcd94",
                 "shasum": ""
             },
             "require": {
@@ -3403,35 +3667,33 @@
             "keywords": [
                 "templating"
             ],
-            "time": "2019-12-28 07:12:03"
+            "time": "2020-02-11T15:31:23+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.5.0",
+            "version": "1.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4"
+                "reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4",
-                "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
+                "reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
                 "shasum": ""
             },
             "require": {
                 "php": "^5.3.3 || ^7.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
+            "conflict": {
+                "vimeo/psalm": "<3.6.0"
+            },
             "require-dev": {
                 "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -3453,7 +3715,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2019-08-24 08:43:50"
+            "time": "2020-02-14T12:15:55+00:00"
         },
         {
             "name": "whitehat101/apr1-md5",
@@ -3497,22 +3759,22 @@
                 "MD5",
                 "apr1"
             ],
-            "time": "2015-02-11 11:06:42"
+            "time": "2015-02-11T11:06:42+00:00"
         }
     ],
     "packages-dev": [
         {
             "name": "amphp/amp",
-            "version": "v2.4.0",
+            "version": "v2.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/amphp/amp.git",
-                "reference": "13930a582947831bb66ff1aeac28672fd91c38ea"
+                "reference": "2ac3b550c4997f2ec304faa63c8b2885079a2dc4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/amphp/amp/zipball/13930a582947831bb66ff1aeac28672fd91c38ea",
-                "reference": "13930a582947831bb66ff1aeac28672fd91c38ea",
+                "url": "https://api.github.com/repos/amphp/amp/zipball/2ac3b550c4997f2ec304faa63c8b2885079a2dc4",
+                "reference": "2ac3b550c4997f2ec304faa63c8b2885079a2dc4",
                 "shasum": ""
             },
             "require": {
@@ -3576,20 +3838,20 @@
                 "non-blocking",
                 "promise"
             ],
-            "time": "2019-11-11 19:32:05"
+            "time": "2020-02-10T18:10:57+00:00"
         },
         {
             "name": "amphp/byte-stream",
-            "version": "v1.7.1",
+            "version": "v1.7.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/amphp/byte-stream.git",
-                "reference": "9d8205686a004948475dc43f8a88d2fa5e75a113"
+                "reference": "1e52f1752b2e20e2a7e464476ef887a2388e3832"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/9d8205686a004948475dc43f8a88d2fa5e75a113",
-                "reference": "9d8205686a004948475dc43f8a88d2fa5e75a113",
+                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/1e52f1752b2e20e2a7e464476ef887a2388e3832",
+                "reference": "1e52f1752b2e20e2a7e464476ef887a2388e3832",
                 "shasum": ""
             },
             "require": {
@@ -3635,7 +3897,7 @@
                 "non-blocking",
                 "stream"
             ],
-            "time": "2019-10-27 14:33:41"
+            "time": "2020-01-29T18:22:23+00:00"
         },
         {
             "name": "composer/ca-bundle",
@@ -3691,7 +3953,68 @@
                 "ssl",
                 "tls"
             ],
-            "time": "2020-01-13 10:02:55"
+            "time": "2020-01-13T10:02:55+00:00"
+        },
+        {
+            "name": "composer/semver",
+            "version": "1.5.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/semver.git",
+                "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de",
+                "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.2 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.5 || ^5.0.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\Semver\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nils Adermann",
+                    "email": "naderman@naderman.de",
+                    "homepage": "http://www.naderman.de"
+                },
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                },
+                {
+                    "name": "Rob Bast",
+                    "email": "rob.bast@gmail.com",
+                    "homepage": "http://robbast.nl"
+                }
+            ],
+            "description": "Semver library that offers utilities, version constraint parsing and validation.",
+            "keywords": [
+                "semantic",
+                "semver",
+                "validation",
+                "versioning"
+            ],
+            "time": "2020-01-13T12:06:48+00:00"
         },
         {
             "name": "composer/xdebug-handler",
@@ -3735,36 +4058,38 @@
                 "Xdebug",
                 "performance"
             ],
-            "time": "2019-11-06 16:40:04"
+            "time": "2019-11-06T16:40:04+00:00"
         },
         {
             "name": "doctrine/instantiator",
-            "version": "1.0.5",
+            "version": "1.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+                "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
+                "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3,<8.0-DEV"
+                "php": "^7.1"
             },
             "require-dev": {
-                "athletic/athletic": "~0.1.8",
+                "doctrine/coding-standard": "^6.0",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.2.x-dev"
                 }
             },
             "autoload": {
@@ -3784,31 +4109,31 @@
                 }
             ],
             "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
             "keywords": [
                 "constructor",
                 "instantiate"
             ],
-            "time": "2015-06-14 21:17:01"
+            "time": "2019-10-21T16:45:58+00:00"
         },
         {
             "name": "felixfbecker/advanced-json-rpc",
-            "version": "v3.0.4",
+            "version": "v3.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
-                "reference": "23366dd0cab0a0f3fd3016bf3c0b36dec74348e7"
+                "reference": "a407a6cb0325cd489c6dff57afcba6baeccc0483"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/23366dd0cab0a0f3fd3016bf3c0b36dec74348e7",
-                "reference": "23366dd0cab0a0f3fd3016bf3c0b36dec74348e7",
+                "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/a407a6cb0325cd489c6dff57afcba6baeccc0483",
+                "reference": "a407a6cb0325cd489c6dff57afcba6baeccc0483",
                 "shasum": ""
             },
             "require": {
                 "netresearch/jsonmapper": "^1.0",
                 "php": ">=7.0",
-                "phpdocumentor/reflection-docblock": "^4.0.0"
+                "phpdocumentor/reflection-docblock": "^4.0.0 || ^5.0.0"
             },
             "require-dev": {
                 "phpunit/phpunit": "^6.0.0"
@@ -3830,7 +4155,7 @@
                 }
             ],
             "description": "A more advanced JSONRPC implementation",
-            "time": "2019-09-12 22:41:08"
+            "time": "2020-02-11T20:48:40+00:00"
         },
         {
             "name": "felixfbecker/language-server-protocol",
@@ -3877,7 +4202,7 @@
                 "php",
                 "server"
             ],
-            "time": "2019-06-23 21:03:50"
+            "time": "2019-06-23T21:03:50+00:00"
         },
         {
             "name": "mikey179/vfsstream",
@@ -3923,85 +4248,32 @@
             ],
             "description": "Virtual file system to mock the real file system in unit tests.",
             "homepage": "http://vfs.bovigo.org/",
-            "time": "2019-10-30 15:31:00"
-        },
-        {
-            "name": "muglug/package-versions-56",
-            "version": "1.2.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/muglug/PackageVersions.git",
-                "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/muglug/PackageVersions/zipball/a67bed26deaaf9269a348e53063bc8d4dcc60ffd",
-                "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.0",
-                "php": "^5.6 || ^7.0"
-            },
-            "require-dev": {
-                "composer/composer": "^1.3",
-                "ext-zip": "*",
-                "phpunit/phpunit": "^5.7.5"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "Muglug\\PackageVersions\\Installer",
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Muglug\\PackageVersions\\": "src/PackageVersions"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                },
-                {
-                    "name": "Abdul Malik Ikhsan",
-                    "email": "samsonasik@gmail.com"
-                },
-                {
-                    "name": "Matt Brown",
-                    "email": "github@muglug.com"
-                }
-            ],
-            "description": "A backport of ocramius/package-versions that supports php ^5.6. Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
-            "time": "2018-03-26 03:22:13"
+            "time": "2019-10-30T15:31:00+00:00"
         },
         {
             "name": "myclabs/deep-copy",
-            "version": "1.7.0",
+            "version": "1.9.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+                "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
+                "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.6 || ^7.0"
+                "php": "^7.1"
+            },
+            "replace": {
+                "myclabs/deep-copy": "self.version"
             },
             "require-dev": {
                 "doctrine/collections": "^1.0",
                 "doctrine/common": "^2.6",
-                "phpunit/phpunit": "^4.1"
+                "phpunit/phpunit": "^7.1"
             },
             "type": "library",
             "autoload": {
@@ -4024,7 +4296,7 @@
                 "object",
                 "object graph"
             ],
-            "time": "2017-10-19 19:58:43"
+            "time": "2020-01-17T21:11:47+00:00"
         },
         {
             "name": "netresearch/jsonmapper",
@@ -4070,7 +4342,7 @@
                 }
             ],
             "description": "Map nested JSON structures onto PHP classes",
-            "time": "2019-08-15 19:41:25"
+            "time": "2019-08-15T19:41:25+00:00"
         },
         {
             "name": "nikic/php-parser",
@@ -4122,20 +4394,70 @@
                 "parser",
                 "php"
             ],
-            "time": "2019-11-08 13:50:10"
+            "time": "2019-11-08T13:50:10+00:00"
+        },
+        {
+            "name": "ocramius/package-versions",
+            "version": "1.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Ocramius/PackageVersions.git",
+                "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d",
+                "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0",
+                "php": "^7.1.0"
+            },
+            "require-dev": {
+                "composer/composer": "^1.6.3",
+                "doctrine/coding-standard": "^5.0.1",
+                "ext-zip": "*",
+                "infection/infection": "^0.7.1",
+                "phpunit/phpunit": "^7.5.17"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "PackageVersions\\Installer",
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PackageVersions\\": "src/PackageVersions"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com"
+                }
+            ],
+            "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+            "time": "2019-11-15T16:17:10+00:00"
         },
         {
             "name": "openlss/lib-array2xml",
-            "version": "0.5.1",
+            "version": "1.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nullivex/lib-array2xml.git",
-                "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0"
+                "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/c8b5998a342d7861f2e921403f44e0a2f3ef2be0",
-                "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0",
+                "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+                "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
                 "shasum": ""
             },
             "require": {
@@ -4154,43 +4476,43 @@
             "authors": [
                 {
                     "name": "Bryan Tong",
-                    "email": "contact@nullivex.com",
-                    "homepage": "http://bryantong.com"
+                    "email": "bryan@nullivex.com",
+                    "homepage": "https://www.nullivex.com"
                 },
                 {
                     "name": "Tony Butler",
                     "email": "spudz76@gmail.com",
-                    "homepage": "http://openlss.org"
+                    "homepage": "https://www.nullivex.com"
                 }
             ],
             "description": "Array2XML conversion library credit to lalit.org",
-            "homepage": "http://openlss.org",
+            "homepage": "https://www.nullivex.com",
             "keywords": [
                 "array",
                 "array conversion",
                 "xml",
                 "xml conversion"
             ],
-            "time": "2016-11-10 19:10:18"
+            "time": "2019-03-29T20:06:56+00:00"
         },
         {
             "name": "phar-io/manifest",
-            "version": "1.0.1",
+            "version": "1.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phar-io/manifest.git",
-                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+                "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
-                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+                "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-phar": "*",
-                "phar-io/version": "^1.0.1",
+                "phar-io/version": "^2.0",
                 "php": "^5.6 || ^7.0"
             },
             "type": "library",
@@ -4226,20 +4548,20 @@
                 }
             ],
             "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
-            "time": "2017-03-05 18:14:27"
+            "time": "2018-07-08T19:23:20+00:00"
         },
         {
             "name": "phar-io/version",
-            "version": "1.0.1",
+            "version": "2.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phar-io/version.git",
-                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+                "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
-                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+                "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+                "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
                 "shasum": ""
             },
             "require": {
@@ -4273,90 +4595,37 @@
                 }
             ],
             "description": "Library for handling version information and constraints",
-            "time": "2017-03-05 17:38:23"
-        },
-        {
-            "name": "php-cs-fixer/diff",
-            "version": "v1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/PHP-CS-Fixer/diff.git",
-                "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756",
-                "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^5.7.23 || ^6.4.3",
-                "symfony/process": "^3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "SpacePossum"
-                }
-            ],
-            "description": "sebastian/diff v2 backport support for PHP5.6",
-            "homepage": "https://github.com/PHP-CS-Fixer",
-            "keywords": [
-                "diff"
-            ],
-            "time": "2018-02-15 16:58:55"
+            "time": "2018-07-08T19:19:57+00:00"
         },
         {
             "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
+            "version": "2.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+                "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
+                "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5"
+                "php": ">=7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.6"
+                "phpunit/phpunit": "~6"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -4378,45 +4647,42 @@
                 "reflection",
                 "static analysis"
             ],
-            "time": "2017-09-11 18:02:19"
+            "time": "2018-08-07T13:53:10+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.4",
+            "version": "5.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
+                "reference": "a48807183a4b819072f26e347bbd0b5199a9d15f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
-                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/a48807183a4b819072f26e347bbd0b5199a9d15f",
+                "reference": "a48807183a4b819072f26e347bbd0b5199a9d15f",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
-                "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
-                "webmozart/assert": "^1.0"
+                "ext-filter": "^7.1",
+                "php": "^7.2",
+                "phpdocumentor/reflection-common": "^2.0",
+                "phpdocumentor/type-resolver": "^1.0",
+                "webmozart/assert": "^1"
             },
             "require-dev": {
-                "doctrine/instantiator": "^1.0.5",
-                "mockery/mockery": "^1.0",
-                "phpdocumentor/type-resolver": "0.4.*",
-                "phpunit/phpunit": "^6.4"
+                "doctrine/instantiator": "^1",
+                "mockery/mockery": "^1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.x-dev"
+                    "dev-master": "5.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -4427,37 +4693,42 @@
                 {
                     "name": "Mike van Riel",
                     "email": "me@mikevanriel.com"
+                },
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "account@ijaap.nl"
                 }
             ],
             "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
-            "time": "2019-12-28 18:55:12"
+            "time": "2020-02-09T09:16:15+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "0.5.1",
+            "version": "1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
-                "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
+                "php": "^7.1",
+                "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
-                "mockery/mockery": "^1.0",
-                "phpunit/phpunit": "^6.4"
+                "ext-tokenizer": "^7.1",
+                "mockery/mockery": "~1",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
@@ -4475,91 +4746,29 @@
                     "email": "me@mikevanriel.com"
                 }
             ],
-            "time": "2017-12-30 13:23:38"
-        },
-        {
-            "name": "phpmyadmin/sql-parser",
-            "version": "4.5.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpmyadmin/sql-parser.git",
-                "reference": "b00f1c29ff80d0b68afaaa67a2d6b01ae74310f7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/b00f1c29ff80d0b68afaaa67a2d6b01ae74310f7",
-                "reference": "b00f1c29ff80d0b68afaaa67a2d6b01ae74310f7",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0",
-                "symfony/polyfill-mbstring": "^1.3"
-            },
-            "conflict": {
-                "phpmyadmin/motranslator": "<3.0"
-            },
-            "require-dev": {
-                "phpunit/php-code-coverage": "*",
-                "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5",
-                "sami/sami": "^4.0",
-                "squizlabs/php_codesniffer": "~2.9 || ~3.4"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance",
-                "phpmyadmin/motranslator": "Translate messages to your favorite locale"
-            },
-            "bin": [
-                "bin/highlight-query",
-                "bin/lint-query",
-                "bin/tokenize-query"
-            ],
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "PhpMyAdmin\\SqlParser\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "GPL-2.0-or-later"
-            ],
-            "authors": [
-                {
-                    "name": "The phpMyAdmin Team",
-                    "email": "developers@phpmyadmin.net",
-                    "homepage": "https://www.phpmyadmin.net/team/"
-                }
-            ],
-            "description": "A validating SQL lexer and parser with a focus on MySQL dialect.",
-            "homepage": "https://github.com/phpmyadmin/sql-parser",
-            "keywords": [
-                "analysis",
-                "lexer",
-                "parser",
-                "sql"
-            ],
-            "time": "2020-01-07 23:22:41"
+            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2019-08-22T18:11:29+00:00"
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.10.1",
+            "version": "v1.10.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc"
+                "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
-                "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9",
+                "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9",
                 "shasum": ""
             },
             "require": {
                 "doctrine/instantiator": "^1.0.2",
                 "php": "^5.3|^7.0",
                 "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
-                "sebastian/comparator": "^1.2.3|^2.0|^3.0",
-                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
                 "phpspec/phpspec": "^2.5 || ^3.2",
@@ -4601,44 +4810,44 @@
                 "spy",
                 "stub"
             ],
-            "time": "2019-12-22 21:05:45"
+            "time": "2020-01-20T15:57:02+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "5.3.2",
+            "version": "7.0.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
+                "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
-                "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf",
+                "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-xmlwriter": "*",
-                "php": "^7.0",
-                "phpunit/php-file-iterator": "^1.4.2",
+                "php": "^7.2",
+                "phpunit/php-file-iterator": "^2.0.2",
                 "phpunit/php-text-template": "^1.2.1",
-                "phpunit/php-token-stream": "^2.0.1",
+                "phpunit/php-token-stream": "^3.1.1",
                 "sebastian/code-unit-reverse-lookup": "^1.0.1",
-                "sebastian/environment": "^3.0",
+                "sebastian/environment": "^4.2.2",
                 "sebastian/version": "^2.0.1",
-                "theseer/tokenizer": "^1.1"
+                "theseer/tokenizer": "^1.1.3"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.0"
+                "phpunit/phpunit": "^8.2.2"
             },
             "suggest": {
-                "ext-xdebug": "^2.5.5"
+                "ext-xdebug": "^2.7.2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "5.3.x-dev"
+                    "dev-master": "7.0-dev"
                 }
             },
             "autoload": {
@@ -4664,29 +4873,32 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2018-04-06 15:36:58"
+            "time": "2019-11-20T13:55:58+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
-            "version": "1.4.5",
+            "version": "2.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+                "reference": "050bedf145a257b1ff02746c31894800e5122946"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
+                "reference": "050bedf145a257b1ff02746c31894800e5122946",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": "^7.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.4.x-dev"
+                    "dev-master": "2.0.x-dev"
                 }
             },
             "autoload": {
@@ -4701,7 +4913,7 @@
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
+                    "email": "sebastian@phpunit.de",
                     "role": "lead"
                 }
             ],
@@ -4711,7 +4923,7 @@
                 "filesystem",
                 "iterator"
             ],
-            "time": "2017-11-27 13:52:08"
+            "time": "2018-09-13T20:33:42+00:00"
         },
         {
             "name": "phpunit/php-text-template",
@@ -4752,32 +4964,32 @@
             "keywords": [
                 "template"
             ],
-            "time": "2015-06-21 13:50:34"
+            "time": "2015-06-21T13:50:34+00:00"
         },
         {
             "name": "phpunit/php-timer",
-            "version": "1.0.9",
+            "version": "2.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+                "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
+                "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0"
+                "php": "^7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0-dev"
+                    "dev-master": "2.1-dev"
                 }
             },
             "autoload": {
@@ -4792,7 +5004,7 @@
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
+                    "email": "sebastian@phpunit.de",
                     "role": "lead"
                 }
             ],
@@ -4801,33 +5013,33 @@
             "keywords": [
                 "timer"
             ],
-            "time": "2017-02-26 11:10:40"
+            "time": "2019-06-07T04:22:29+00:00"
         },
         {
             "name": "phpunit/php-token-stream",
-            "version": "2.0.2",
+            "version": "3.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "791198a2c6254db10131eecfe8c06670700904db"
+                "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
-                "reference": "791198a2c6254db10131eecfe8c06670700904db",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
+                "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
                 "shasum": ""
             },
             "require": {
                 "ext-tokenizer": "*",
-                "php": "^7.0"
+                "php": "^7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.2.4"
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0-dev"
+                    "dev-master": "3.1-dev"
                 }
             },
             "autoload": {
@@ -4850,57 +5062,56 @@
             "keywords": [
                 "tokenizer"
             ],
-            "time": "2017-11-27 05:48:46"
+            "time": "2019-09-17T06:23:10+00:00"
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.14",
+            "version": "8.5.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
+                "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
-                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0",
+                "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0",
                 "shasum": ""
             },
             "require": {
+                "doctrine/instantiator": "^1.2.0",
                 "ext-dom": "*",
                 "ext-json": "*",
                 "ext-libxml": "*",
                 "ext-mbstring": "*",
                 "ext-xml": "*",
-                "myclabs/deep-copy": "^1.6.1",
-                "phar-io/manifest": "^1.0.1",
-                "phar-io/version": "^1.0",
-                "php": "^7.0",
-                "phpspec/prophecy": "^1.7",
-                "phpunit/php-code-coverage": "^5.3",
-                "phpunit/php-file-iterator": "^1.4.3",
+                "ext-xmlwriter": "*",
+                "myclabs/deep-copy": "^1.9.1",
+                "phar-io/manifest": "^1.0.3",
+                "phar-io/version": "^2.0.1",
+                "php": "^7.2",
+                "phpspec/prophecy": "^1.8.1",
+                "phpunit/php-code-coverage": "^7.0.7",
+                "phpunit/php-file-iterator": "^2.0.2",
                 "phpunit/php-text-template": "^1.2.1",
-                "phpunit/php-timer": "^1.0.9",
-                "phpunit/phpunit-mock-objects": "^5.0.9",
-                "sebastian/comparator": "^2.1",
-                "sebastian/diff": "^2.0",
-                "sebastian/environment": "^3.1",
-                "sebastian/exporter": "^3.1",
-                "sebastian/global-state": "^2.0",
+                "phpunit/php-timer": "^2.1.2",
+                "sebastian/comparator": "^3.0.2",
+                "sebastian/diff": "^3.0.2",
+                "sebastian/environment": "^4.2.2",
+                "sebastian/exporter": "^3.1.1",
+                "sebastian/global-state": "^3.0.0",
                 "sebastian/object-enumerator": "^3.0.3",
-                "sebastian/resource-operations": "^1.0",
+                "sebastian/resource-operations": "^2.0.1",
+                "sebastian/type": "^1.1.3",
                 "sebastian/version": "^2.0.1"
             },
-            "conflict": {
-                "phpdocumentor/reflection-docblock": "3.0.2",
-                "phpunit/dbunit": "<3.0"
-            },
             "require-dev": {
                 "ext-pdo": "*"
             },
             "suggest": {
+                "ext-soap": "*",
                 "ext-xdebug": "*",
-                "phpunit/php-invoker": "^1.1"
+                "phpunit/php-invoker": "^2.0.0"
             },
             "bin": [
                 "phpunit"
@@ -4908,7 +5119,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "6.5.x-dev"
+                    "dev-master": "8.5-dev"
                 }
             },
             "autoload": {
@@ -4934,67 +5145,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2019-02-01 05:22:47"
-        },
-        {
-            "name": "phpunit/phpunit-mock-objects",
-            "version": "5.0.10",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
-                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.5",
-                "php": "^7.0",
-                "phpunit/php-text-template": "^1.2.1",
-                "sebastian/exporter": "^3.1"
-            },
-            "conflict": {
-                "phpunit/phpunit": "<6.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.5.11"
-            },
-            "suggest": {
-                "ext-soap": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Mock Object library for PHPUnit",
-            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-            "keywords": [
-                "mock",
-                "xunit"
-            ],
-            "abandoned": true,
-            "time": "2018-08-09 05:50:03"
+            "time": "2020-01-08T08:49:49+00:00"
         },
         {
             "name": "sebastian/code-unit-reverse-lookup",
@@ -5039,34 +5190,34 @@
             ],
             "description": "Looks up which function or method a line of code belongs to",
             "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
-            "time": "2017-03-04 06:30:41"
+            "time": "2017-03-04T06:30:41+00:00"
         },
         {
             "name": "sebastian/comparator",
-            "version": "2.1.3",
+            "version": "3.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+                "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
-                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+                "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
-                "sebastian/diff": "^2.0 || ^3.0",
+                "php": "^7.1",
+                "sebastian/diff": "^3.0",
                 "sebastian/exporter": "^3.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.4"
+                "phpunit/phpunit": "^7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.1.x-dev"
+                    "dev-master": "3.0-dev"
                 }
             },
             "autoload": {
@@ -5103,32 +5254,33 @@
                 "compare",
                 "equality"
             ],
-            "time": "2018-02-01 13:46:46"
+            "time": "2018-07-12T15:12:46+00:00"
         },
         {
             "name": "sebastian/diff",
-            "version": "2.0.1",
+            "version": "3.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
+                "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
-                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+                "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": "^7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.2"
+                "phpunit/phpunit": "^7.5 || ^8.0",
+                "symfony/process": "^2 || ^3.3 || ^4"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0-dev"
+                    "dev-master": "3.0-dev"
                 }
             },
             "autoload": {
@@ -5153,34 +5305,40 @@
             "description": "Diff implementation",
             "homepage": "https://github.com/sebastianbergmann/diff",
             "keywords": [
-                "diff"
+                "diff",
+                "udiff",
+                "unidiff",
+                "unified diff"
             ],
-            "time": "2017-08-03 08:09:46"
+            "time": "2019-02-04T06:01:07+00:00"
         },
         {
             "name": "sebastian/environment",
-            "version": "3.1.0",
+            "version": "4.2.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+                "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
-                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
+                "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": "^7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.1"
+                "phpunit/phpunit": "^7.5"
+            },
+            "suggest": {
+                "ext-posix": "*"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.1.x-dev"
+                    "dev-master": "4.2-dev"
                 }
             },
             "autoload": {
@@ -5205,7 +5363,7 @@
                 "environment",
                 "hhvm"
             ],
-            "time": "2017-07-01 08:51:00"
+            "time": "2019-11-20T08:46:58+00:00"
         },
         {
             "name": "sebastian/exporter",
@@ -5272,27 +5430,30 @@
                 "export",
                 "exporter"
             ],
-            "time": "2019-09-14 09:02:43"
+            "time": "2019-09-14T09:02:43+00:00"
         },
         {
             "name": "sebastian/global-state",
-            "version": "2.0.0",
+            "version": "3.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+                "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
-                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
+                "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": "^7.2",
+                "sebastian/object-reflector": "^1.1.1",
+                "sebastian/recursion-context": "^3.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.0"
+                "ext-dom": "*",
+                "phpunit/phpunit": "^8.0"
             },
             "suggest": {
                 "ext-uopz": "*"
@@ -5300,7 +5461,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0-dev"
+                    "dev-master": "3.0-dev"
                 }
             },
             "autoload": {
@@ -5323,7 +5484,7 @@
             "keywords": [
                 "global state"
             ],
-            "time": "2017-04-27 15:39:26"
+            "time": "2019-02-01T05:30:01+00:00"
         },
         {
             "name": "sebastian/object-enumerator",
@@ -5370,7 +5531,7 @@
             ],
             "description": "Traverses array structures and object graphs to enumerate all referenced objects",
             "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
-            "time": "2017-08-03 12:35:26"
+            "time": "2017-08-03T12:35:26+00:00"
         },
         {
             "name": "sebastian/object-reflector",
@@ -5415,7 +5576,7 @@
             ],
             "description": "Allows reflection of object attributes, including inherited and non-public ones",
             "homepage": "https://github.com/sebastianbergmann/object-reflector/",
-            "time": "2017-03-29 09:07:27"
+            "time": "2017-03-29T09:07:27+00:00"
         },
         {
             "name": "sebastian/recursion-context",
@@ -5468,29 +5629,29 @@
             ],
             "description": "Provides functionality to recursively process PHP variables",
             "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-            "time": "2017-03-03 06:23:57"
+            "time": "2017-03-03T06:23:57+00:00"
         },
         {
             "name": "sebastian/resource-operations",
-            "version": "1.0.0",
+            "version": "2.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/resource-operations.git",
-                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+                "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
-                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+                "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.6.0"
+                "php": "^7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.0-dev"
                 }
             },
             "autoload": {
@@ -5510,7 +5671,53 @@
             ],
             "description": "Provides a list of PHP built-in functions that operate on resources",
             "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
-            "time": "2015-07-28 20:34:47"
+            "time": "2018-10-04T04:07:39+00:00"
+        },
+        {
+            "name": "sebastian/type",
+            "version": "1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/type.git",
+                "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3",
+                "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Collection of value objects that represent the types of the PHP type system",
+            "homepage": "https://github.com/sebastianbergmann/type",
+            "time": "2019-07-02T08:10:15+00:00"
         },
         {
             "name": "sebastian/version",
@@ -5553,7 +5760,7 @@
             ],
             "description": "Library that helps with managing the version number of Git-hosted PHP projects",
             "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2016-10-03 07:35:21"
+            "time": "2016-10-03T07:35:21+00:00"
         },
         {
             "name": "sensiolabs/security-checker",
@@ -5599,7 +5806,7 @@
                 }
             ],
             "description": "A security checker for your composer.lock",
-            "time": "2018-12-19 17:14:59"
+            "time": "2018-12-19T17:14:59+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-test-framework",
@@ -5652,20 +5859,20 @@
             "keywords": [
                 "test-framework"
             ],
-            "time": "2019-12-30 21:14:30"
+            "time": "2019-12-30T21:14:30+00:00"
         },
         {
             "name": "squizlabs/php_codesniffer",
-            "version": "3.5.3",
+            "version": "3.5.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb"
+                "reference": "dceec07328401de6211037abbb18bda423677e26"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb",
-                "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dceec07328401de6211037abbb18bda423677e26",
+                "reference": "dceec07328401de6211037abbb18bda423677e26",
                 "shasum": ""
             },
             "require": {
@@ -5703,7 +5910,7 @@
                 "phpcs",
                 "standards"
             ],
-            "time": "2019-12-04 04:46:47"
+            "time": "2020-01-30T22:20:29+00:00"
         },
         {
             "name": "theseer/tokenizer",
@@ -5743,36 +5950,41 @@
                 }
             ],
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "time": "2019-06-13 22:48:21"
+            "time": "2019-06-13T22:48:21+00:00"
         },
         {
             "name": "vimeo/psalm",
-            "version": "3.2.12",
+            "version": "3.8.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/vimeo/psalm.git",
-                "reference": "fe0f352132f798512ced19faf75cbfc84e4aabe7"
+                "reference": "e6ec5fa22a7b9e61670a24d07b3119aff80dcd89"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/vimeo/psalm/zipball/fe0f352132f798512ced19faf75cbfc84e4aabe7",
-                "reference": "fe0f352132f798512ced19faf75cbfc84e4aabe7",
+                "url": "https://api.github.com/repos/vimeo/psalm/zipball/e6ec5fa22a7b9e61670a24d07b3119aff80dcd89",
+                "reference": "e6ec5fa22a7b9e61670a24d07b3119aff80dcd89",
                 "shasum": ""
             },
             "require": {
                 "amphp/amp": "^2.1",
                 "amphp/byte-stream": "^1.5",
+                "composer/semver": "^1.4",
                 "composer/xdebug-handler": "^1.1",
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
                 "felixfbecker/advanced-json-rpc": "^3.0.3",
-                "felixfbecker/language-server-protocol": "^1.2",
-                "muglug/package-versions-56": "1.2.4",
+                "felixfbecker/language-server-protocol": "^1.4",
                 "netresearch/jsonmapper": "^1.0",
-                "nikic/php-parser": "^4.0.2 || ^4.1",
-                "openlss/lib-array2xml": "^0.0.10||^0.5.1",
-                "php": "^7.0",
-                "php-cs-fixer/diff": "^1.2",
-                "phpmyadmin/sql-parser": "^4.0",
-                "symfony/console": "^3.3||^4.0",
+                "nikic/php-parser": "^4.3",
+                "ocramius/package-versions": "^1.2",
+                "openlss/lib-array2xml": "^1.0",
+                "php": "^7.1.3|^8",
+                "sebastian/diff": "^3.0 || ^4.0",
+                "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
                 "webmozart/glob": "^4.1",
                 "webmozart/path-util": "^2.3"
             },
@@ -5781,18 +5993,24 @@
             },
             "require-dev": {
                 "bamarni/composer-bin-plugin": "^1.2",
-                "phpunit/phpunit": "^6.0 || ^7.0",
-                "psalm/plugin-phpunit": "^0.5.5",
-                "squizlabs/php_codesniffer": "3.4.0"
+                "ext-curl": "*",
+                "phpmyadmin/sql-parser": "^5.0",
+                "phpspec/prophecy": ">=1.9.0",
+                "phpunit/phpunit": "^7.5.16 || ^8.0",
+                "psalm/plugin-phpunit": "^0.6",
+                "slevomat/coding-standard": "^5.0",
+                "squizlabs/php_codesniffer": "^3.5",
+                "symfony/process": "^4.3"
             },
             "suggest": {
                 "ext-igbinary": "^2.0.5"
             },
             "bin": [
                 "psalm",
-                "psalter",
                 "psalm-language-server",
-                "psalm-plugin"
+                "psalm-plugin",
+                "psalm-refactor",
+                "psalter"
             ],
             "type": "library",
             "extra": {
@@ -5806,7 +6024,11 @@
                 "psr-4": {
                     "Psalm\\Plugin\\": "src/Psalm/Plugin",
                     "Psalm\\": "src/Psalm"
-                }
+                },
+                "files": [
+                    "src/functions.php",
+                    "src/spl_object_id.php"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -5823,7 +6045,7 @@
                 "inspection",
                 "php"
             ],
-            "time": "2019-05-13 15:00:17"
+            "time": "2020-02-07T17:15:50+00:00"
         },
         {
             "name": "webmozart/glob",
@@ -5870,7 +6092,7 @@
                 }
             ],
             "description": "A PHP implementation of Ant's glob.",
-            "time": "2015-12-29 11:14:33"
+            "time": "2015-12-29T11:14:33+00:00"
         },
         {
             "name": "webmozart/path-util",
@@ -5916,7 +6138,7 @@
                 }
             ],
             "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
-            "time": "2015-12-17 08:42:14"
+            "time": "2015-12-17T08:42:14+00:00"
         }
     ],
     "aliases": [],
@@ -5925,7 +6147,7 @@
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": {
-        "php": ">=7.0",
+        "php": ">=7.2",
         "ext-spl": "*",
         "ext-zlib": "*",
         "ext-pcre": "*",
diff --git a/config-templates/config.php b/config-templates/config.php
index dc4280072051d418426572b56fa9d93766143ec7..56c06aa9365dbb71e2b342e2867be52f63e1b268 100644
--- a/config-templates/config.php
+++ b/config-templates/config.php
@@ -462,19 +462,8 @@ $config = [
      * In example when you are setting up a federation bridge.
      */
     'enable.saml20-idp' => false,
-    'enable.shib13-idp' => false,
     'enable.adfs-idp' => false,
 
-    /*
-     * Whether SimpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication
-     * responses.
-     *
-     * The default is to sign the assertion element, but that can be overridden by setting this
-     * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the
-     * same name to the metadata of the SP.
-     */
-    'shib13.signresponse' => true,
-
 
 
     /***********
@@ -927,7 +916,6 @@ $config = [
 
     /*
      * Authentication processing filters that will be executed for all IdPs
-     * Both Shibboleth and SAML 2.0
      */
     'authproc.idp' => [
         /* Enable the authproc filter below to add URN prefixes to all attributes
@@ -983,7 +971,6 @@ $config = [
 
     /*
      * Authentication processing filters that will be executed for all SPs
-     * Both Shibboleth and SAML 2.0
      */
     'authproc.sp' => [
         /*
diff --git a/docs/simplesamlphp-authproc.md b/docs/simplesamlphp-authproc.md
index 4e42b7fe7064b770143d676ac48035a159f77e44..cf249bc2d0e62154b8e4686ea4d340a2378844cd 100644
--- a/docs/simplesamlphp-authproc.md
+++ b/docs/simplesamlphp-authproc.md
@@ -38,9 +38,9 @@ How to configure Auth Proc Filters
 
   * Globally in `config.php`
   * On the SP: Specific for only the SP in `authsources.php`
-  * On the SP: Specific for only one remote IdP in `saml20-idp-remote` or `shib13-idp-remote`
-  * On the IdP: Specific for only one hosted IdP in `saml20-idp-hosted` or `shib13-idp-hosted`
-  * On the IdP: Specific for only one remote SP in `saml20-sp-remote` or `shib13-sp-remote`
+  * On the SP: Specific for only one remote IdP in `saml20-idp-remote`
+  * On the IdP: Specific for only one hosted IdP in `saml20-idp-hosted`
+  * On the IdP: Specific for only one remote SP in `saml20-sp-remote`
 
 The configuration of *Auth Proc Filters* is a list of filters with priority as *index*. Here is an example of *Auth Proc Filters* configured in `config.php`:
 
diff --git a/docs/simplesamlphp-errorhandling.md b/docs/simplesamlphp-errorhandling.md
index ddefac164874fca8a905af5e2478ab1ddb42986e..5dc6fa8ea8aff13317aa7f2d548500b01526029a 100644
--- a/docs/simplesamlphp-errorhandling.md
+++ b/docs/simplesamlphp-errorhandling.md
@@ -225,7 +225,7 @@ Example code for this function, which implements the same functionality as \Simp
     public static function show(\SimpleSAML\Configuration $config, array $data) {
         $t = new \SimpleSAML\XHTML\Template($config, 'error.php', 'errors');
         $t->data = array_merge($t->data, $data);
-        $t->show();
+        $t->send();
         exit;
     }
 
diff --git a/docs/simplesamlphp-googleapps.md b/docs/simplesamlphp-googleapps.md
index 30cab47945824061a94ef5e6b0cab755f8e6f6aa..d74a04dbf972f67ed000c6c597101f8847f3a665 100644
--- a/docs/simplesamlphp-googleapps.md
+++ b/docs/simplesamlphp-googleapps.md
@@ -35,7 +35,6 @@ In this example we will setup this server as an IdP for Google Apps for Educatio
 Edit `config.php`, and enable the SAML 2.0 IdP:
 
     'enable.saml20-idp' => true,
-    'enable.shib13-idp' => false,
 
 ## Setting up a signing certificate
 
diff --git a/docs/simplesamlphp-idp-more.md b/docs/simplesamlphp-idp-more.md
index bb5ead1ac8bde0e79d9bdaa90299862db60d6163..a89c2c8af59512112812e076726dea06f25e4bf8 100644
--- a/docs/simplesamlphp-idp-more.md
+++ b/docs/simplesamlphp-idp-more.md
@@ -57,31 +57,6 @@ For compatibility with certain SPs, SimpleSAMLphp will also accept the
 `RelayState` and `ConsumerURL`, respectively.
 
 
-### IdP first with SAML 1.1
-
-A SAML 1.1 SP does not send an authentication request to the IdP, but instead triggers IdP initiated authentication directly.
-If you want to do it manually, you can access the following URL:
-
-	https://idp.example.org/simplesaml/shib13/idp/SSOService.php?providerId=urn:mace:feide.no:someservice&shire=https://sp.example.org/acs-endpoint&target=https://sp.example.org/somepage
-
-The parameters are as follows:
-
-`providerID`
-:   The entityID of the SP.
-    This parameter is required.
-
-`shire`
-:   The AssertionConsumerService endpoint of the SP.
-    This parameter is required.
-
-`target`
-:   The target parameter the SP should receive with the authentication response.
-    This is often the page the user should be sent to after authentication.
-    This parameter is optional for the IdP, but must be specified if the SP you are targeting is running SimpleSAMLphp.
-
-:   *Note*: This parameter must be sent as `target` (with lowercase letters) when starting the authentication, while it is sent as `TARGET` (with uppercase letters) in the authentication response.
-
-
 IdP-initiated logout
 --------------------
 
diff --git a/docs/simplesamlphp-reference-idp-hosted.md b/docs/simplesamlphp-reference-idp-hosted.md
index 3a6b47934b868487996c680f56b6ff66b96d0ffd..8291a610b1f70eb3ff4b3ff78ec7b3b57d1b1d5b 100644
--- a/docs/simplesamlphp-reference-idp-hosted.md
+++ b/docs/simplesamlphp-reference-idp-hosted.md
@@ -3,8 +3,7 @@ IdP hosted metadata reference
 
 <!-- {{TOC}} -->
 
-This is a reference for the metadata files
-`metadata/saml20-idp-hosted.php` and `metadata/shib13-idp-hosted.php`.
+This is a reference for the metadata file `metadata/saml20-idp-hosted.php`.
 Both files have the following format:
 
     <?php
@@ -396,28 +395,6 @@ messages from that SP.
      'redirect.sign' => true,
 
 
-Shibboleth 1.3 options
-----------------------
-
-The following options for Shibboleth 1.3 IdP's are avaiblable:
-
-`scopedattributes`
-:   Array with names of attributes which should be scoped. Scoped
-    attributes will receive a `Scope`-attribute on the
-    `AttributeValue`-element. The value of the Scope-attribute will
-    be taken from the attribute value:
-
-:   `<AttributeValue>someuser@example.org</AttributeValue>`
-
-:   will be transformed into
-
-:   `<AttributeValue Scope="example.org">someuser</AttributeValue>`
-
-:   By default, no attributes are scoped. Note that this option also
-    exists in the SP-remote metadata, and any value in the SP-remote
-    metadata overrides the one configured in the IdP metadata.
-
-
 Metadata extensions
 -------------------
 
@@ -434,7 +411,7 @@ Examples
 
 These are some examples of IdP metadata
 
-### Minimal SAML 2.0 / Shibboleth 1.3 IdP ###
+### Minimal SAML 2.0 IdP ###
 
     <?php
     /*
diff --git a/docs/simplesamlphp-reference-idp-remote.md b/docs/simplesamlphp-reference-idp-remote.md
index 95b4eda3e9d0b049267cf551a5d9b04f32986a60..30059f2c8b8ffa76b092343d7c3ca5c1535f421e 100644
--- a/docs/simplesamlphp-reference-idp-remote.md
+++ b/docs/simplesamlphp-reference-idp-remote.md
@@ -3,7 +3,7 @@ IdP remote metadata reference
 
 <!-- {{TOC}} -->
 
-This is a reference for metadata options available for `metadata/saml20-idp-remote.php` and `metadata/shib13-idp-remote.php`. Both files have the following format:
+This is a reference for metadata options available for `metadata/saml20-idp-remote.php`. The file has the following format:
 
     <?php
     /* The index of the array is the entity ID of this IdP. */
diff --git a/docs/simplesamlphp-reference-sp-remote.md b/docs/simplesamlphp-reference-sp-remote.md
index 423df7b37f76366b4aa64cae63ba016b75b509e8..fb71d24c00a1c78bccb8096263b6c23e2e8713fc 100644
--- a/docs/simplesamlphp-reference-sp-remote.md
+++ b/docs/simplesamlphp-reference-sp-remote.md
@@ -3,8 +3,7 @@ SP remote metadata reference
 
 <!-- {{TOC}} -->
 
-This is a reference for metadata options available for
-`metadata/saml20-sp-remote.php` and `metadata/shib13-sp-remote.php`.
+This is a reference for metadata options available for `metadata/saml20-sp-remote.php`.
 Both files have the following format:
 
     <?php
@@ -21,8 +20,7 @@ Both files have the following format:
 Common options
 --------------
 
-The following options are common between both the SAML 2.0 protocol
-and Shibboleth 1.3 protocol:
+The following options can be set:
 
 `attributes`
 :   This should indicate which attributes an SP should receive. It is
@@ -108,12 +106,6 @@ and Shibboleth 1.3 protocol:
     SP-remote metadata has the highest priority. The default value is
     `eduPersonPrincipalName`.
 
-
-SAML 2.0 options
-----------------
-
-The following SAML 2.0 options are available:
-
 `AssertionConsumerService`
 :   The URL of the AssertionConsumerService endpoint for this SP.
     This option is required - without it you will not be able to send
@@ -378,44 +370,3 @@ idp is in the intersection the discoveryservice will go directly to the idp.
 
 
      'IDPList' => ['https://idp1.wayf.dk', 'https://idp2.wayf.dk'],
-     
-
-Shibboleth 1.3 options
-----------------------
-
-The following options for Shibboleth 1.3 SP's are avaiblable:
-
-`audience`
-:   The value which should be given in the `<Audience>`-element in the
-    `<AudienceRestrictionCondition>`-element in the response. The
-    default value is the entity ID of the SP.
-
-`AssertionConsumerService`
-:   The URL of the AssertionConsumerService endpoint for this SP.
-    This endpoint must accept the SAML responses encoded with the
-    `urn:oasis:names:tc:SAML:1.0:profiles:browser-post` encoding.
-    This option is required - without it you will not be able to send
-    responses back to the SP.
-
-:   The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints).
-
-`NameQualifier`
-:   What the value of the `NameQualifier`-attribute of the
-    `<NameIdentifier>`-element should be. The default value is the
-    entity ID of the SP.
-
-`scopedattributes`
-:   Array with names of attributes which should be scoped. Scoped
-    attributes will receive a `Scope`-attribute on the
-    `AttributeValue`-element. The value of the Scope-attribute will
-    be taken from the attribute value:
-
-:   `<AttributeValue>someuser@example.org</AttributeValue>`
-
-:   will be transformed into
-
-:   `<AttributeValue Scope="example.org">someuser</AttributeValue>`
-
-:   By default, no attributes are scoped. This option overrides the
-    option with the same name in the `shib13-idp-hosted.php` metadata
-    file.
diff --git a/docs/simplesamlphp-sp.md b/docs/simplesamlphp-sp.md
index 1572e797595ba516ac778794fa0cb7f911426885..45ddf79f64b1ef6b2e3e49a300ee4761fb97e05a 100644
--- a/docs/simplesamlphp-sp.md
+++ b/docs/simplesamlphp-sp.md
@@ -65,7 +65,7 @@ Then edit your `authsources.php` entry, and add references to your certificate:
 Adding IdPs to the SP
 ---------------------
 
-The service provider you are configuring needs to know about the identity providers you are going to connect to it. This is configured by metadata stored in `metadata/saml20-idp-remote.php` and `metadata/shib13-idp-remote.php`.
+The service provider you are configuring needs to know about the identity providers you are going to connect to it. This is configured by metadata stored in `metadata/saml20-idp-remote.php`.
 This is a minimal example of a `metadata/saml20-idp-remote.php` metadata file:
 
     <?php
diff --git a/extra/simplesamlphp.spec b/extra/simplesamlphp.spec
index b06ae0ef937307cb84bada90597480ba9291a700..6a744a6e4aa8aae19fa5f962b3fec9267978f57b 100644
--- a/extra/simplesamlphp.spec
+++ b/extra/simplesamlphp.spec
@@ -78,10 +78,6 @@ tar cf - . | (cd %{buildroot}%{_prefix}simplesamlphp; tar xfp -)
 %config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/saml20-idp-hosted.php
 %config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/saml20-idp-remote.php
 %config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/saml20-sp-remote.php
-%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-idp-hosted.php
-%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-idp-remote.php
-%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-sp-hosted.php
-%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-sp-remote.php
 %dir %attr(0770, root, apache) /var/lib/simplesamlphp/log
 %dir %attr(0770, root, apache) /var/lib/simplesamlphp/data
 %dir %attr(0750, root, apache) /var/lib/simplesamlphp/cert
diff --git a/lib/SimpleSAML/Auth/DefaultAuth.php b/lib/SimpleSAML/Auth/DefaultAuth.php
deleted file mode 100644
index 192868f31635dbbbb8ca0ff4cd158d233fed3388..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Auth/DefaultAuth.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Auth;
-
-use SimpleSAML\Module\saml\Auth\Source\SP;
-use SimpleSAML\Session;
-use SimpleSAML\Utils;
-
-/**
- * Implements the default behaviour for authentication.
- *
- * This class contains an implementation for default behaviour when authenticating. It will
- * save the session information it got from the authentication client in the users session.
- *
- * @author Olav Morken, UNINETT AS.
- * @package SimpleSAMLphp
- *
- * @deprecated This class will be removed in SSP 2.0.
- */
-
-class DefaultAuth
-{
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Use Source::initLogin() instead.
-     * @param string $authId
-     * @param string $return
-     * @param string|null $errorURL
-     * @param array $params
-     * @return void
-     */
-    public static function initLogin(
-        $authId,
-        $return,
-        $errorURL = null,
-        array $params = []
-    ) {
-
-        $as = self::getAuthSource($authId);
-        $as->initLogin($return, $errorURL, $params);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use
-     * State::getPersistentAuthData() instead.
-     * @param array &$state
-     * @return array
-     */
-    public static function extractPersistentAuthState(array &$state)
-    {
-        return State::getPersistentAuthData($state);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use Source::loginCompleted() instead.
-     * @param array $state
-     * @return void
-     */
-    public static function loginCompleted($state)
-    {
-        Source::loginCompleted($state);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0.
-     * @param string $returnURL
-     * @param string $authority
-     * @return void
-     */
-    public static function initLogoutReturn($returnURL, $authority)
-    {
-        assert(is_string($returnURL));
-        assert(is_string($authority));
-
-        $session = Session::getSessionFromRequest();
-
-        $state = $session->getAuthData($authority, 'LogoutState');
-        $session->doLogout($authority);
-
-        $state['\SimpleSAML\Auth\DefaultAuth.ReturnURL'] = $returnURL;
-        $state['LogoutCompletedHandler'] = [get_class(), 'logoutCompleted'];
-
-        $as = Source::getById($authority);
-        if ($as === null) {
-            // The authority wasn't an authentication source...
-            self::logoutCompleted($state);
-        }
-
-        $as->logout($state);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0.
-     * @param string $returnURL
-     * @param string $authority
-     * @return void
-     */
-    public static function initLogout($returnURL, $authority)
-    {
-        assert(is_string($returnURL));
-        assert(is_string($authority));
-
-        self::initLogoutReturn($returnURL, $authority);
-
-        Utils\HTTP::redirectTrustedURL($returnURL);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0.
-     * @param array $state
-     * @return void
-     */
-    public static function logoutCompleted($state)
-    {
-        assert(is_array($state));
-        assert(array_key_exists('\SimpleSAML\Auth\DefaultAuth.ReturnURL', $state));
-
-        Utils\HTTP::redirectTrustedURL($state['\SimpleSAML\Auth\DefaultAuth.ReturnURL']);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use Source::logoutCallback() instead.
-     * @param array $state
-     * @return void
-     */
-    public static function logoutCallback($state)
-    {
-        Source::logoutCallback($state);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use
-     * \SimpleSAML\Module\saml\Auth\Source\SP::handleUnsolicitedAuth() instead.
-     * @param string $authId
-     * @param array $state
-     * @param string $redirectTo
-     * @return void
-     */
-    public static function handleUnsolicitedAuth($authId, array $state, $redirectTo)
-    {
-        SP::handleUnsolicitedAuth($authId, $state, $redirectTo);
-    }
-
-
-    /**
-     * Return an authentication source by ID.
-     *
-     * @param string $id The id of the authentication source.
-     * @return Source The authentication source.
-     * @throws \Exception If the $id does not correspond with an authentication source.
-     */
-    private static function getAuthSource($id)
-    {
-        $as = Source::getById($id);
-        if ($as === null) {
-            throw new \Exception('Invalid authentication source: ' . $id);
-        }
-        return $as;
-    }
-}
diff --git a/lib/SimpleSAML/Auth/LDAP.php b/lib/SimpleSAML/Auth/LDAP.php
deleted file mode 100644
index 3977274e94fc4fe71edc18d37750cb256897c1cc..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Auth/LDAP.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Auth;
-
-\SimpleSAML\Logger::warning("The class \SimpleSAML\Auth\LDAP has been moved to the ldap module, please use \SimpleSAML\Module\saml\Auth\Ldap instead.");
-
-/**
- * @deprecated To be removed in 2.0
- */
-if (class_exists('\SimpleSAML\Module\ldap\Auth\Ldap')) {
-    class_alias(\SimpleSAML\Module\ldap\Auth\Ldap::class, 'SimpleSAML\Auth\LDAP');
-} else {
-    throw new \Exception('The ldap module is either missing or disabled');
-}
diff --git a/lib/SimpleSAML/Auth/ProcessingChain.php b/lib/SimpleSAML/Auth/ProcessingChain.php
index 468940c71c41aa5be1d5a92eac6c468b90020139..5ae89b31ab3d2d84b1739fe0df532f0df48e4eb1 100644
--- a/lib/SimpleSAML/Auth/ProcessingChain.php
+++ b/lib/SimpleSAML/Auth/ProcessingChain.php
@@ -200,12 +200,6 @@ class ProcessingChain
         $state[self::FILTERS_INDEX] = $this->filters;
 
         try {
-            // TODO: remove this in SSP 2.0
-            if (!array_key_exists('UserID', $state)) {
-                // No unique user ID present. Attempt to add one.
-                self::addUserID($state);
-            }
-
             while (count($state[self::FILTERS_INDEX]) > 0) {
                 $filter = array_shift($state[self::FILTERS_INDEX]);
                 $filter->process($state);
@@ -303,19 +297,10 @@ class ProcessingChain
 
         $state[self::FILTERS_INDEX] = $this->filters;
 
-        // TODO: remove this in SSP 2.0
-        if (!array_key_exists('UserID', $state)) {
-            // No unique user ID present. Attempt to add one.
-            self::addUserID($state);
-        }
-
         while (count($state[self::FILTERS_INDEX]) > 0) {
             $filter = array_shift($state[self::FILTERS_INDEX]);
             try {
                 $filter->process($state);
-            } catch (Error\NoPassive $e) {
-                // @deprecated will be removed in 2.0
-                // Ignore \SimpleSAML\Error\NoPassive exceptions
             } catch (Module\saml\Error\NoPassive $e) {
                 // Ignore \SimpleSAML\Module\saml\Error\NoPassive exceptions
             }
@@ -335,50 +320,4 @@ class ProcessingChain
 
         return State::loadState($id, self::COMPLETED_STAGE);
     }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0.
-     * @param array &$state
-     * @return void
-     */
-    private static function addUserID(array &$state)
-    {
-        Assert::keyExists($state, 'Attributes');
-
-        if (isset($state['Destination']['userid.attribute'])) {
-            $attributeName = $state['Destination']['userid.attribute'];
-            Logger::debug("The 'userid.attribute' option has been deprecated.");
-        } elseif (isset($state['Source']['userid.attribute'])) {
-            $attributeName = $state['Source']['userid.attribute'];
-            Logger::debug("The 'userid.attribute' option has been deprecated.");
-        } else {
-            // Default attribute
-            $attributeName = 'eduPersonPrincipalName';
-        }
-
-        if (!array_key_exists($attributeName, $state['Attributes'])) {
-            return;
-        }
-
-        $uid = $state['Attributes'][$attributeName];
-        if (count($uid) === 0) {
-            Logger::warning('Empty user id attribute [' . $attributeName . '].');
-            return;
-        }
-
-        if (count($uid) > 1) {
-            Logger::warning('Multiple attribute values for user id attribute [' . $attributeName . '].');
-            return;
-        }
-
-        // TODO: the attribute value should be trimmed
-        $uid = $uid[0];
-
-        if (empty($uid)) {
-            Logger::warning('Empty value in attribute ' . $attributeName . ". on user. Cannot set UserID.");
-            return;
-        }
-        $state['UserID'] = $uid;
-    }
 }
diff --git a/lib/SimpleSAML/Auth/ProcessingFilter.php b/lib/SimpleSAML/Auth/ProcessingFilter.php
index 8622b987bccb17d720551d0e5c9edbd9c3dcf62f..f3bf7cfeb666f46c067677f2b5dd56d0ffe4fce7 100644
--- a/lib/SimpleSAML/Auth/ProcessingFilter.php
+++ b/lib/SimpleSAML/Auth/ProcessingFilter.php
@@ -67,6 +67,7 @@ abstract class ProcessingFilter
      * When a filter returns from this function, it is assumed to have completed its task.
      *
      * @param array &$request  The request we are currently processing.
+     * @return void
      */
     abstract public function process(&$request);
 }
diff --git a/lib/SimpleSAML/Auth/TimeLimitedToken.php b/lib/SimpleSAML/Auth/TimeLimitedToken.php
deleted file mode 100644
index 12b2096c7c807ed29278524c070bdb77448d7f4b..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Auth/TimeLimitedToken.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Auth;
-
-use SimpleSAML\Utils;
-
-/**
- * A class that generates and verifies time-limited tokens.
- *
- * @deprecated  This class was deprecated in 1.18 and will be removed in a future release
- */
-
-class TimeLimitedToken
-{
-    /**
-     * @var string
-     */
-    protected $secretSalt;
-
-    /**
-     * @var int
-     */
-    protected $lifetime;
-
-    /**
-     * @var int
-     */
-    protected $skew;
-
-    /**
-     * @var string
-     */
-    protected $algo;
-
-
-    /**
-     * Create a new time-limited token.
-     *
-     * @param int $lifetime Token lifetime in seconds. Defaults to 900 (15 min).
-     * @param string $secretSalt A random and unique salt per installation. Defaults to the salt in the configuration.
-     * @param int $skew The allowed time skew (in seconds) to correct clock deviations. Defaults to 1 second.
-     * @param string $algo The hash algorithm to use to generate the tokens. Defaults to SHA-256.
-     *
-     * @throws \InvalidArgumentException if the given parameters are invalid.
-     */
-    public function __construct($lifetime = 900, $secretSalt = null, $skew = 1, $algo = 'sha256')
-    {
-        if ($secretSalt === null) {
-            $secretSalt = Utils\Config::getSecretSalt();
-        }
-
-        if (!in_array($algo, hash_algos(), true)) {
-            throw new \InvalidArgumentException('Invalid hash algorithm "' . $algo . '"');
-        }
-
-        $this->secretSalt = $secretSalt;
-        $this->lifetime = $lifetime;
-        $this->skew = $skew;
-        $this->algo = $algo;
-    }
-
-
-    /**
-     * Add some given data to the current token. This data will be needed later too for token validation.
-     *
-     * This mechanism can be used to provide context for a token, such as a user identifier of the only subject
-     * authorised to use it. Note also that multiple data can be added to the token. This means that upon validation,
-     * not only the same data must be added, but also in the same order.
-     *
-     * @param string $data The data to incorporate into the current token.
-     * @return void
-     */
-    public function addVerificationData($data)
-    {
-        $this->secretSalt .= '|' . $data;
-    }
-
-
-    /**
-     * Calculates a token value for a given offset.
-     *
-     * @param int $offset The offset to use.
-     * @param int|null $time The time stamp to which the offset is relative to. Defaults to the current time.
-     *
-     * @return string The token for the given time and offset.
-     */
-    private function calculateTokenValue(int $offset, int $time = null): string
-    {
-        if ($time === null) {
-            $time = time();
-        }
-        // a secret salt that should be randomly generated for each installation
-        return hash(
-            $this->algo,
-            $offset . ':' . floor(($time - $offset) / ($this->lifetime + $this->skew)) . ':' . $this->secretSalt
-        );
-    }
-
-
-    /**
-     * Generates a token that contains an offset and a token value, using the current offset.
-     *
-     * @return string A time-limited token with the offset respect to the beginning of its time slot prepended.
-     */
-    public function generate()
-    {
-        $time = time();
-        $current_offset = ($time - $this->skew) % ($this->lifetime + $this->skew);
-        return dechex($current_offset) . '-' . $this->calculateTokenValue($current_offset, $time);
-    }
-
-
-    /**
-     * @see generate
-     * @deprecated This method will be removed in SSP 2.0. Use generate() instead.
-     * @return string
-     */
-    public function generate_token()
-    {
-        return $this->generate();
-    }
-
-
-    /**
-     * Validates a token by calculating the token value for the provided offset and comparing it.
-     *
-     * @param string $token The token to validate.
-     *
-     * @return bool True if the given token is currently valid, false otherwise.
-     */
-    public function validate($token)
-    {
-        $splittoken = explode('-', $token);
-        if (count($splittoken) !== 2) {
-            return false;
-        }
-        $offset = intval(hexdec($splittoken[0]));
-        $value = $splittoken[1];
-        return ($this->calculateTokenValue($offset) === $value);
-    }
-
-
-    /**
-     * @see validate
-     * @deprecated This method will be removed in SSP 2.0. Use validate() instead.
-     * @param string $token
-     * @return bool
-     */
-    public function validate_token($token)
-    {
-        return $this->validate($token);
-    }
-}
diff --git a/lib/SimpleSAML/Bindings/Shib13/Artifact.php b/lib/SimpleSAML/Bindings/Shib13/Artifact.php
deleted file mode 100644
index f1b6741c6904bdedc453964579d9ca280df42828..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Bindings/Shib13/Artifact.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * Implementation of the Shibboleth 1.3 Artifact binding.
- *
- * @package SimpleSAMLphp
- * @deprecated This class will be removed in a future release
- */
-
-namespace SimpleSAML\Bindings\Shib13;
-
-use SAML2\DOMDocumentFactory;
-use SimpleSAML\Configuration;
-use SimpleSAML\Error;
-use SimpleSAML\Utils;
-use Webmozart\Assert\Assert;
-
-class Artifact
-{
-    /**
-     * Parse the query string, and extract the SAMLart parameters.
-     *
-     * This function is required because each query contains multiple
-     * artifact with the same parameter name.
-     *
-     * @return array  The artifacts.
-     */
-    private static function getArtifacts(): array
-    {
-        Assert::keyExists($_SERVER, 'QUERY_STRING');
-
-        // We need to process the query string manually, to capture all SAMLart parameters
-
-        $artifacts = [];
-
-        $elements = explode('&', $_SERVER['QUERY_STRING']);
-        foreach ($elements as $element) {
-            list($name, $value) = explode('=', $element, 2);
-            $name = urldecode($name);
-            $value = urldecode($value);
-
-            if ($name === 'SAMLart') {
-                $artifacts[] = $value;
-            }
-        }
-
-        return $artifacts;
-    }
-
-
-    /**
-     * Build the request we will send to the IdP.
-     *
-     * @param array $artifacts  The artifacts we will request.
-     * @return string  The request, as an XML string.
-     */
-    private static function buildRequest(array $artifacts): string
-    {
-        $msg = '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">'.
-            '<SOAP-ENV:Body>'.
-            '<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"'.
-            ' RequestID="'.Utils\Random::generateID().'"'.
-            ' MajorVersion="1" MinorVersion="1"'.
-            ' IssueInstant="'.Utils\Time::generateTimestamp().'"'.
-            '>';
-
-        foreach ($artifacts as $a) {
-            $msg .= '<samlp:AssertionArtifact>'.htmlspecialchars($a).'</samlp:AssertionArtifact>';
-        }
-
-        $msg .= '</samlp:Request>'.
-            '</SOAP-ENV:Body>'.
-            '</SOAP-ENV:Envelope>';
-
-        return $msg;
-    }
-
-
-    /**
-     * Extract the response element from the SOAP response.
-     *
-     * @param string $soapResponse The SOAP response.
-     * @return string The <saml1p:Response> element, as a string.
-     * @throws Error\Exception
-     */
-    private static function extractResponse(string $soapResponse): string
-    {
-        try {
-            $doc = DOMDocumentFactory::fromString($soapResponse);
-        } catch (\Exception $e) {
-            throw new Error\Exception('Error parsing SAML 1 artifact response.');
-        }
-
-        $soapEnvelope = $doc->firstChild;
-        if (!Utils\XML::isDOMNodeOfType($soapEnvelope, 'Envelope', 'http://schemas.xmlsoap.org/soap/envelope/')) {
-            throw new Error\Exception('Expected artifact response to contain a <soap:Envelope> element.');
-        }
-
-        $soapBody = Utils\XML::getDOMChildren($soapEnvelope, 'Body', 'http://schemas.xmlsoap.org/soap/envelope/');
-        if (count($soapBody) === 0) {
-            throw new Error\Exception('Couldn\'t find <soap:Body> in <soap:Envelope>.');
-        }
-        $soapBody = $soapBody[0];
-
-
-        $responseElement = Utils\XML::getDOMChildren($soapBody, 'Response', 'urn:oasis:names:tc:SAML:1.0:protocol');
-        if (count($responseElement) === 0) {
-            throw new Error\Exception('Couldn\'t find <saml1p:Response> in <soap:Body>.');
-        }
-        $responseElement = $responseElement[0];
-
-        /*
-         * Save the <saml1p:Response> element. Note that we need to import it
-         * into a new document, in order to preserve namespace declarations.
-         */
-        $newDoc = DOMDocumentFactory::create();
-        $newDoc->appendChild($newDoc->importNode($responseElement, true));
-        $responseXML = $newDoc->saveXML();
-
-        return $responseXML;
-    }
-
-
-    /**
-     * This function receives a SAML 1.1 artifact.
-     *
-     * @param \SimpleSAML\Configuration $spMetadata The metadata of the SP.
-     * @param \SimpleSAML\Configuration $idpMetadata The metadata of the IdP.
-     * @return string The <saml1p:Response> element, as an XML string.
-     * @throws Error\Exception
-     */
-    public static function receive(Configuration $spMetadata, Configuration $idpMetadata)
-    {
-        $artifacts = self::getArtifacts();
-        $request = self::buildRequest($artifacts);
-
-        Utils\XML::debugSAMLMessage($request, 'out');
-
-        /** @var array $url */
-        $url = $idpMetadata->getDefaultEndpoint(
-            'ArtifactResolutionService',
-            ['urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding']
-        );
-        $url = $url['Location'];
-
-        $peerPublicKeys = $idpMetadata->getPublicKeys('signing', true);
-        $certData = '';
-        foreach ($peerPublicKeys as $key) {
-            if ($key['type'] !== 'X509Certificate') {
-                continue;
-            }
-            $certData .= "-----BEGIN CERTIFICATE-----\n".
-                chunk_split($key['X509Certificate'], 64).
-                "-----END CERTIFICATE-----\n";
-        }
-
-        $file = Utils\System::getTempDir().DIRECTORY_SEPARATOR.sha1($certData).'.crt';
-        if (!file_exists($file)) {
-            Utils\System::writeFile($file, $certData);
-        }
-
-        $spKeyCertFile = Utils\Config::getCertPath($spMetadata->getString('privatekey'));
-
-        $opts = [
-            'ssl' => [
-                'verify_peer' => true,
-                'cafile' => $file,
-                'local_cert' => $spKeyCertFile,
-                'capture_peer_cert' => true,
-                'capture_peer_chain' => true,
-            ],
-            'http' => [
-                'method' => 'POST',
-                'content' => $request,
-                'header' => 'SOAPAction: http://www.oasis-open.org/committees/security'."\r\n".
-                    'Content-Type: text/xml',
-            ],
-        ];
-
-        // Fetch the artifact
-        /** @var string $response */
-        $response = Utils\HTTP::fetch($url, $opts);
-        Utils\XML::debugSAMLMessage($response, 'in');
-
-        // Find the response in the SOAP message
-        $response = self::extractResponse($response);
-
-        return $response;
-    }
-}
diff --git a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php
deleted file mode 100644
index 82e491ad4dba74236797b2951a561c2a58f26515..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * Implementation of the Shibboleth 1.3 HTTP-POST binding.
- *
- * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
- * @package SimpleSAMLphp
- * @deprecated This class will be removed in a future release
- */
-
-namespace SimpleSAML\Bindings\Shib13;
-
-use SAML2\DOMDocumentFactory;
-use SimpleSAML\Configuration;
-use SimpleSAML\Metadata\MetaDataStorageHandler;
-use SimpleSAML\Utils;
-use SimpleSAML\XML\Shib13\AuthnResponse;
-use SimpleSAML\XML\Signer;
-use Webmozart\Assert\Assert;
-
-class HTTPPost
-{
-    /**
-     * @var \SimpleSAML\Configuration
-     */
-    private $configuration;
-
-    /**
-     * @var \SimpleSAML\Metadata\MetaDataStorageHandler
-     */
-    private $metadata;
-
-
-    /**
-     * Constructor for the \SimpleSAML\Bindings\Shib13\HTTPPost class.
-     *
-     * @param \SimpleSAML\Configuration                   $configuration The configuration to use.
-     * @param \SimpleSAML\Metadata\MetaDataStorageHandler $metadatastore A store where to find metadata.
-     */
-    public function __construct(
-        Configuration $configuration,
-        MetaDataStorageHandler $metadatastore
-    ) {
-        $this->configuration = $configuration;
-        $this->metadata = $metadatastore;
-    }
-
-
-    /**
-     * Send an authenticationResponse using HTTP-POST.
-     *
-     * @param string                    $response The response which should be sent.
-     * @param \SimpleSAML\Configuration $idpmd The metadata of the IdP which is sending the response.
-     * @param \SimpleSAML\Configuration $spmd The metadata of the SP which is receiving the response.
-     * @param string|null               $relayState The relaystate for the SP.
-     * @param string                    $shire The shire which should receive the response.
-     * @return void
-     */
-    public function sendResponse(
-        $response,
-        Configuration $idpmd,
-        Configuration $spmd,
-        $relayState,
-        $shire
-    ) {
-        Utils\XML::checkSAMLMessage($response, 'saml11');
-
-        $privatekey = Utils\Crypto::loadPrivateKey($idpmd, true);
-        $publickey = Utils\Crypto::loadPublicKey($idpmd, true);
-
-        $responsedom = DOMDocumentFactory::fromString(str_replace("\r", "", $response));
-
-        $responseroot = $responsedom->getElementsByTagName('Response')->item(0);
-        $firstassertionroot = $responsedom->getElementsByTagName('Assertion')->item(0);
-
-        /* Determine what we should sign - either the Response element or the Assertion. The default is to sign the
-         * Assertion, but that can be overridden by the 'signresponse' option in the SP metadata or
-         * 'saml20.signresponse' in the global configuration.
-         *
-         * TODO: neither 'signresponse' nor 'shib13.signresponse' are valid options any longer. Remove!
-         */
-        if ($spmd->hasValue('signresponse')) {
-            $signResponse = $spmd->getBoolean('signresponse');
-        } else {
-            $signResponse = $this->configuration->getBoolean('shib13.signresponse', true);
-        }
-
-        // check if we have an assertion to sign. Force to sign the response if not
-        if ($firstassertionroot === null) {
-            $signResponse = true;
-        }
-
-        $signer = new Signer([
-            'privatekey_array' => $privatekey,
-            'publickey_array'  => $publickey,
-            'id'               => ($signResponse ? 'ResponseID' : 'AssertionID'),
-        ]);
-
-        if ($idpmd->hasValue('certificatechain')) {
-            $signer->addCertificate($idpmd->getString('certificatechain'));
-        }
-
-        if ($signResponse) {
-            // sign the response - this must be done after encrypting the assertion
-            // we insert the signature before the saml2p:Status element
-            $statusElements = Utils\XML::getDOMChildren($responseroot, 'Status', '@saml1p');
-            Assert::same(count($statusElements), 1);
-            $signer->sign($responseroot, $responseroot, $statusElements[0]);
-        } else {
-            // Sign the assertion
-            $signer->sign($firstassertionroot, $firstassertionroot);
-        }
-
-        $response = $responsedom->saveXML();
-
-        Utils\XML::debugSAMLMessage($response, 'out');
-
-        Utils\HTTP::submitPOSTData($shire, [
-            'TARGET'       => $relayState,
-            'SAMLResponse' => base64_encode($response),
-        ]);
-    }
-
-
-    /**
-     * Decode a received response.
-     *
-     * @param array $post POST data received.
-     * @return \SimpleSAML\XML\Shib13\AuthnResponse The response decoded into an object.
-     * @throws \Exception If there is no SAMLResponse parameter.
-     */
-    public function decodeResponse($post)
-    {
-        Assert::isArray($post);
-
-        if (!array_key_exists('SAMLResponse', $post)) {
-            throw new \Exception('Missing required SAMLResponse parameter.');
-        }
-        $rawResponse = $post['SAMLResponse'];
-        $samlResponseXML = base64_decode($rawResponse);
-
-        Utils\XML::debugSAMLMessage($samlResponseXML, 'in');
-
-        Utils\XML::checkSAMLMessage($samlResponseXML, 'saml11');
-
-        $samlResponse = new AuthnResponse();
-        $samlResponse->setXML($samlResponseXML);
-
-        if (array_key_exists('TARGET', $post)) {
-            $samlResponse->setRelayState($post['TARGET']);
-        }
-
-        return $samlResponse;
-    }
-}
diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php
index 7a58db7c38be548de8dde35a30903e499a008a9e..c9c9f90827889f9054fb5e4a6aa622ec8f1ee869 100644
--- a/lib/SimpleSAML/Configuration.php
+++ b/lib/SimpleSAML/Configuration.php
@@ -355,71 +355,6 @@ class Configuration implements Utils\ClearableState
     }
 
 
-    /**
-     * Initialize a instance name with the given configuration file.
-     *
-     * TODO: remove.
-     *
-     * @param string $path
-     * @param string $instancename
-     * @param string $configfilename
-     * @return \SimpleSAML\Configuration
-     *
-     * @see setConfigDir()
-     * @deprecated This function is superseeded by the setConfigDir function.
-     */
-    public static function init($path, $instancename = 'simplesaml', $configfilename = 'config.php')
-    {
-        Assert::string($path);
-        Assert::string($instancename);
-        Assert::string($configfilename);
-
-        if ($instancename === 'simplesaml') {
-            // for backwards compatibility
-            self::setConfigDir($path, 'simplesaml');
-        }
-
-        // check if we already have loaded the given config - return the existing instance if we have
-        if (array_key_exists($instancename, self::$instance)) {
-            return self::$instance[$instancename];
-        }
-
-        self::$instance[$instancename] = self::loadFromFile($path . '/' . $configfilename, true);
-        return self::$instance[$instancename];
-    }
-
-
-    /**
-     * Load a configuration file which is located in the same directory as this configuration file.
-     *
-     * TODO: remove.
-     *
-     * @param string $instancename
-     * @param string $filename
-     * @return \SimpleSAML\Configuration
-     *
-     * @see getConfig()
-     * @deprecated This function is superseeded by the getConfig() function.
-     */
-    public function copyFromBase($instancename, $filename)
-    {
-        Assert::string($instancename);
-        Assert::string($filename);
-        Assert::notNull($this->filename);
-
-        // check if we already have loaded the given config - return the existing instance if we have
-        if (array_key_exists($instancename, self::$instance)) {
-            return self::$instance[$instancename];
-        }
-
-        /** @var string $this->filename */
-        $dir = dirname($this->filename);
-
-        self::$instance[$instancename] = self::loadFromFile($dir . '/' . $filename, true);
-        return self::$instance[$instancename];
-    }
-
-
     /**
      * Retrieve the current version of SimpleSAMLphp.
      *
@@ -491,35 +426,6 @@ class Configuration implements Utils\ClearableState
     }
 
 
-    /**
-     * Retrieve the absolute path of the SimpleSAMLphp installation, relative to the root of the website.
-     *
-     * For example: simplesaml/
-     *
-     * The path will always end with a '/' and never have a leading slash.
-     *
-     * @return string The absolute path relative to the root of the website.
-     *
-     * @throws \SimpleSAML\Error\CriticalConfigurationError If the format of 'baseurlpath' is incorrect.
-     *
-     * @deprecated This method will be removed in SimpleSAMLphp 2.0. Please use getBasePath() instead.
-     */
-    public function getBaseURL()
-    {
-        if (!$this->deprecated_base_url_used) {
-            $this->deprecated_base_url_used = true;
-            Logger::warning(
-                "\SimpleSAML\Configuration::getBaseURL() is deprecated, please use getBasePath() instead."
-            );
-        }
-        if (preg_match('/^\*(.*)$/D', $this->getString('baseurlpath', 'simplesaml/'), $matches)) {
-            // deprecated behaviour, will be removed in the future
-            return Utils\HTTP::getFirstPathElement(false) . $matches[1];
-        }
-        return ltrim($this->getBasePath(), '/');
-    }
-
-
     /**
      * Retrieve the absolute path pointing to the SimpleSAMLphp installation.
      *
@@ -1015,51 +921,6 @@ class Configuration implements Utils\ClearableState
     }
 
 
-    /**
-     * Retrieve an array of arrays as an array of \SimpleSAML\Configuration objects.
-     *
-     * This function will retrieve an option containing an array of arrays, and create an array of
-     * \SimpleSAML\Configuration objects from that array. The indexes in the new array will be the same as the original
-     * indexes, but the values will be \SimpleSAML\Configuration objects.
-     *
-     * An exception will be thrown if this option isn't an array of arrays, or if this option isn't found, and no
-     * default value is given.
-     *
-     * @param string $name The name of the option.
-     *
-     * @return array The array of \SimpleSAML\Configuration objects.
-     *
-     * @throws \Exception If the value of this element is not an array.
-     *
-     * @deprecated Very specific function, will be removed in a future release; use getConfigItem or getArray instead
-     */
-    public function getConfigList($name)
-    {
-        Assert::string($name);
-
-        $ret = $this->getValue($name, []);
-
-        if (!is_array($ret)) {
-            throw new \Exception(
-                $this->location . ': The option ' . var_export($name, true) .
-                ' is not an array.'
-            );
-        }
-
-        $out = [];
-        foreach ($ret as $index => $config) {
-            $newLoc = $this->location . '[' . var_export($name, true) . '][' .
-                var_export($index, true) . ']';
-            if (!is_array($config)) {
-                throw new \Exception($newLoc . ': The value of this element was expected to be an array.');
-            }
-            $out[$index] = self::loadFromArray($config, $newLoc);
-        }
-
-        return $out;
-    }
-
-
     /**
      * Retrieve list of options.
      *
@@ -1111,10 +972,6 @@ class Configuration implements Utils\ClearableState
                 return Constants::BINDING_HTTP_POST;
             case 'saml20-idp-remote:ArtifactResolutionService':
                 return Constants::BINDING_SOAP;
-            case 'shib13-idp-remote:SingleSignOnService':
-                return 'urn:mace:shibboleth:1.0:profiles:AuthnRequest';
-            case 'shib13-sp-remote:AssertionConsumerService':
-                return 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post';
             default:
                 throw new \Exception('Missing default binding for ' . $endpointType . ' in ' . $set);
         }
diff --git a/lib/SimpleSAML/Error/Error.php b/lib/SimpleSAML/Error/Error.php
index ffa004f4ebe82233a1502abba40a82075f0f08fc..1f0e87d970857716f4a7eafdd54c0cfa6560cf7d 100644
--- a/lib/SimpleSAML/Error/Error.php
+++ b/lib/SimpleSAML/Error/Error.php
@@ -270,7 +270,7 @@ class Error extends Exception
         } else {
             $t = new Template($config, 'error.php', 'errors');
             $t->data = array_merge($t->data, $data);
-            $t->show();
+            $t->send();
         }
 
         exit;
diff --git a/lib/SimpleSAML/Error/NoPassive.php b/lib/SimpleSAML/Error/NoPassive.php
deleted file mode 100644
index 5687adffd47abc0211f492a38d498192e440947d..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Error/NoPassive.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Error;
-
-/**
- * Class NoPassive
- *
- * @deprecated This class has been deprecated and will be removed in SimpleSAMLphp 2.0. Please use
- * \SimpleSAML\Module\saml\Error\NoPassive instead.
- *
- * @see \SimpleSAML\Module\saml\Error\NoPassive
- */
-
-class NoPassive extends Exception
-{
-}
diff --git a/lib/SimpleSAML/Error/ProxyCountExceeded.php b/lib/SimpleSAML/Error/ProxyCountExceeded.php
deleted file mode 100644
index a92844f2ee691b95c7610ca7720142962f4d8896..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Error/ProxyCountExceeded.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Error;
-
-/**
- * Class ProxyCountExceeded
- *
- * @deprecated This class has been deprecated and will be removed in SimpleSAMLphp 2.0. Please use
- * \SimpleSAML\Module\saml\Error\ProxyCountExceeded instead.
- *
- * @see \SimpleSAML\Module\saml\Error\ProxyCountExceeded
- */
-
-class ProxyCountExceeded extends Exception
-{
-}
diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php
index 5590304f0010fbd92cbdcc4b4d8c1cf7a3663672..d91231183b9ea1f4629f60461b175e46d7aaf74b 100644
--- a/lib/SimpleSAML/IdP.php
+++ b/lib/SimpleSAML/IdP.php
@@ -80,11 +80,6 @@ class IdP
                 throw new Error\Exception('enable.saml20-idp disabled in config.php.');
             }
             $this->config = $metadata->getMetaDataConfig(substr($id, 6), 'saml20-idp-hosted');
-        } elseif (substr($id, 0, 6) === 'saml1:') {
-            if (!$globalConfig->getBoolean('enable.shib13-idp', false)) {
-                throw new Error\Exception('enable.shib13-idp disabled in config.php.');
-            }
-            $this->config = $metadata->getMetaDataConfig(substr($id, 6), 'shib13-idp-hosted');
         } elseif (substr($id, 0, 5) === 'adfs:') {
             if (!$globalConfig->getBoolean('enable.adfs-idp', false)) {
                 throw new Error\Exception('enable.adfs-idp disabled in config.php.');
@@ -188,11 +183,7 @@ class IdP
             try {
                 $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'saml20-sp-remote');
             } catch (\Exception $e) {
-                try {
-                    $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'shib13-sp-remote');
-                } catch (\Exception $e) {
-                    return null;
-                }
+                return null;
             }
         } else {
             if ($prefix === 'adfs') {
diff --git a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php
index b95fc62feee9ea9d8554333486bb8c57269d34c0..6c7b2e7d5f1079b2515a5a68e227e55a258714ef 100644
--- a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php
+++ b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php
@@ -110,6 +110,6 @@ class IFrameLogoutHandler implements LogoutHandlerInterface
             $t->data['errorMsg'] = $error->getMessage();
         }
 
-        $t->show();
+        $t->send();
     }
 }
diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php
index 4d441c21b0e53e4aa3398be9483a8df6a7d7c0dd..d8a77a749f18591fd3538d4c6278c8bc461176b8 100644
--- a/lib/SimpleSAML/Locale/Translate.php
+++ b/lib/SimpleSAML/Locale/Translate.php
@@ -240,76 +240,6 @@ class Translate
         return $tag;
     }
 
-    /**
-     * Translate a tag into the current language, with a fallback to english.
-     *
-     * This function is used to look up a translation tag in dictionaries, and return the translation into the current
-     * language. If no translation into the current language can be found, english will be tried, and if that fails,
-     * placeholder text will be returned.
-     *
-     * An array can be passed as the tag. In that case, the array will be assumed to be on the form (language => text),
-     * and will be used as the source of translations.
-     *
-     * This function can also do replacements into the translated tag. It will search the translated tag for the keys
-     * provided in $replacements, and replace any found occurrences with the value of the key.
-     *
-     * @param string|array $tag A tag name for the translation which should be looked up, or an array with
-     * (language => text) mappings. The array version will go away in 2.0
-     * @param array        $replacements An associative array of keys that should be replaced with values in the
-     *     translated string.
-     * @param boolean      $fallbackdefault Default translation to use as a fallback if no valid translation was found.
-     * @param array $oldreplacements
-     * @param bool $striptags
-     * @deprecated Not used in twig, gettext
-     *
-     * @return string  The translated tag, or a placeholder value if the tag wasn't found.
-     */
-    public function t(
-        $tag,
-        $replacements = [],
-        // TODO: remove this for 2.0. Assume true
-        $fallbackdefault = true,
-        // TODO: remove this for 2.0
-        $oldreplacements = [],
-        // TODO: remove this for 2.0
-        $striptags = false
-    ) {
-        $backtrace = debug_backtrace();
-        $where = $backtrace[0]['file'] . ':' . $backtrace[0]['line'];
-        if (!$fallbackdefault) {
-            Logger::warning(
-                'Deprecated use of new SimpleSAML\Locale\Translate::t(...) at ' . $where .
-                '. This parameter will go away, the fallback will become' .
-                ' identical to the $tag in 2.0.'
-            );
-        }
-
-        if (is_array($tag)) {
-            $tagData = $tag;
-            Logger::warning(
-                'Deprecated use of new SimpleSAML\Locale\Translate::t(...) at ' . $where .
-                '. The $tag-parameter can only be a string in 2.0.'
-            );
-        } else {
-            $tagData = $this->getTag($tag);
-            if ($tagData === null) {
-                // tag not found
-                Logger::info('Translate: Looking up [' . $tag . ']: not translated at all.');
-                return $this->getStringNotTranslated($tag, $fallbackdefault);
-            }
-        }
-
-        $translated = $this->getPreferredTranslation($tagData);
-
-        foreach ($replacements as $k => $v) {
-            // try to translate if no replacement is given
-            if ($v == null) {
-                $v = $this->t($k);
-            }
-            $translated = str_replace($k, $v, $translated);
-        }
-        return $translated;
-    }
 
     /**
      * Return the string that should be used when no translation was found.
diff --git a/lib/SimpleSAML/Memcache.php b/lib/SimpleSAML/Memcache.php
index 84b5b83f48be6a7b9a52349a54c1ccc7e784b428..196608bc7c3b8560f02bce98f0fda7dcc0a5ca01 100644
--- a/lib/SimpleSAML/Memcache.php
+++ b/lib/SimpleSAML/Memcache.php
@@ -29,7 +29,7 @@ class Memcache
     /**
      * Cache of the memcache servers we are using.
      *
-     * @var \Memcache[]|\Memcached[]|null
+     * @var \Memcached[]|null
      */
     private static $serverGroups = null;
 
@@ -215,7 +215,7 @@ class Memcache
      *    The timeout for contacting this server, in seconds.
      *    The default value is 3 seconds.
      *
-     * @param \Memcache|\Memcached $memcache The Memcache object we should add this server to.
+     * @param \Memcached $memcache The Memcache object we should add this server to.
      * @param array    $server An associative array with the configuration options for the server to add.
      * @return void
      *
@@ -293,11 +293,7 @@ class Memcache
         }
 
         // add this server to the Memcache object
-        if ($memcache instanceof \Memcached) {
-            $memcache->addServer($hostname, $port);
-        } else {
-            $memcache->addServer($hostname, $port, true, $weight, $timeout, $timeout, true);
-        }
+        $memcache->addServer($hostname, $port);
     }
 
 
@@ -307,29 +303,14 @@ class Memcache
      *
      * @param array $group Array of servers which should be created as a group.
      *
-     * @return \Memcache|\Memcached A Memcache object of the servers in the group
+     * @return \Memcached A Memcache object of the servers in the group
      *
      * @throws \Exception If the servers configuration is invalid.
      */
     private static function loadMemcacheServerGroup(array $group)
     {
-        if (class_exists(\Memcached::class)) {
-            $memcache = new \Memcached();
-            self::$extension = \Memcached::class;
-        } elseif (class_exists(\Memcache::class)) {
-            $memcache = new \Memcache();
-            self::$extension = \Memcache::class;
-        } else {
-            throw new \Exception(
-                'Missing Memcached implementation. You must install either the Memcache or Memcached extension.'
-            );
-        }
-
-        if (self::$extension === \Memcache::class) {
-            Logger::warning(
-                "The use of PHP-extension memcache is deprecated. Please migrate to the memcached extension."
-            );
-        }
+        $memcache = new \Memcached();
+        self::$extension = \Memcached::class;
 
         // iterate over all the servers in the group and add them to the Memcache object
         foreach ($group as $index => $server) {
@@ -354,7 +335,7 @@ class Memcache
             self::addMemcacheServer($memcache, $server);
         }
 
-        /** @var \Memcache|\Memcached */
+        /** @var \Memcached */
         return $memcache;
     }
 
@@ -363,7 +344,7 @@ class Memcache
      * This function gets a list of all configured memcache servers. This list is initialized based
      * on the content of 'memcache_store.servers' in the configuration.
      *
-     * @return \Memcache[]|\Memcached[] Array with Memcache objects.
+     * @return \Memcached[] Array with Memcache objects.
      *
      * @throws \Exception If the servers configuration is invalid.
      */
@@ -422,7 +403,7 @@ class Memcache
      * set in the configuration, then we will use a default value of 0.
      * 0 means that the item will never expire.
      *
-     * @return integer The value which should be passed in the set(...) calls to the memcache objects.
+     * @return int The value which should be passed in the set(...) calls to the memcache objects.
      *
      * @throws \Exception If the option 'memcache_store.expires' has a negative value.
      */
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
index c284deec700137d53f31faf19d3a95d21fed8d48..292cdee7c89463c2fb681bb46a1c416adca19659 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
@@ -130,10 +130,6 @@ class MetaDataStorageHandler implements \SimpleSAML\Utils\ClearableState
                 case 'SingleLogoutServiceBinding':
                     return Constants::BINDING_HTTP_REDIRECT;
             }
-        } elseif ($set == 'shib13-idp-hosted') {
-            if ($property === 'SingleSignOnService') {
-                return $baseurl . 'shib13/idp/SSOService.php';
-            }
         }
 
         throw new \Exception('Could not generate metadata property ' . $property . ' for set ' . $set . '.');
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php
index fb123fcb43046eb4c32af62a3cb0c2b34c2c6e78..b1921c9a30b9a37f2f11658e2e2818271b2d93f5 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php
@@ -114,7 +114,6 @@ class MetaDataStorageHandlerFlatFile extends MetaDataStorageSource
             return $this->cachedMetadata[$set];
         }
 
-        /** @var array|null $metadataSet */
         $metadataSet = $this->load($set);
         if ($metadataSet === null) {
             $metadataSet = [];
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
index d6c08b0e9cdda475d5d87531603b794f65c8d572..27d185d7bea11a2c8435d25cd170b5284d20b6e9 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
@@ -44,10 +44,6 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
         'saml20-idp-hosted',
         'saml20-idp-remote',
         'saml20-sp-remote',
-        'shib13-idp-hosted',
-        'shib13-idp-remote',
-        'shib13-sp-hosted',
-        'shib13-sp-remote'
     ];
 
 
@@ -134,7 +130,6 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
             $metadataSet = [];
         }
 
-        /** @var array $metadataSet */
         foreach ($metadataSet as $entityId => &$entry) {
             $entry = $this->updateEntityID($set, $entityId, $entry);
         }
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php
index d1ae78c84b7511a583c6b0ee7ab49c473193aecc..523b52e34574d6a6d1c745b24828cd717994edbc 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php
@@ -65,16 +65,6 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource
             throw new \Exception("Neither source file path/URI nor string data provided");
         }
         foreach ($entities as $entityId => $entity) {
-            $md = $entity->getMetadata1xSP();
-            if ($md !== null) {
-                $SP1x[$entityId] = $md;
-            }
-
-            $md = $entity->getMetadata1xIdP();
-            if ($md !== null) {
-                $IdP1x[$entityId] = $md;
-            }
-
             $md = $entity->getMetadata20SP();
             if ($md !== null) {
                 $SP20[$entityId] = $md;
@@ -92,8 +82,6 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource
         }
 
         $this->metadata = [
-            'shib13-sp-remote'          => $SP1x,
-            'shib13-idp-remote'         => $IdP1x,
             'saml20-sp-remote'          => $SP20,
             'saml20-idp-remote'         => $IdP20,
             'attributeauthority-remote' => $AAD,
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php
index 481572288dca6fe0b82e4912c749296be6db93b2..9a32daa8e1af79597ff5e726665fcff0ecc11e5e 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php
@@ -335,10 +335,6 @@ abstract class MetaDataStorageSource
             return $baseUrl . 'saml2/idp/metadata.php';
         } elseif ($set === 'saml20-sp-hosted') {
             return $baseUrl . 'saml2/sp/metadata.php';
-        } elseif ($set === 'shib13-idp-hosted') {
-            return $baseUrl . 'shib13/idp/metadata.php';
-        } elseif ($set === 'shib13-sp-hosted') {
-            return $baseUrl . 'shib13/sp/metadata.php';
         } elseif ($set === 'adfs-idp-hosted') {
             return 'urn:federation:' . Utils\HTTP::getSelfHost() . ':idp';
         } else {
@@ -346,6 +342,7 @@ abstract class MetaDataStorageSource
         }
     }
 
+
     /**
      * Updates the metadata entry's entity id and returns the modified array.  If the entity id is __DYNAMIC:*__ a
      * the current url is assigned.  If it is explicit the entityid array key is updated to the entityId that was
diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php
index b066db7427e06b15e67cfb2a981316366c7f872f..392024ebf9e4fdfb990cea2de17202476ecf804d 100644
--- a/lib/SimpleSAML/Metadata/SAMLBuilder.php
+++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php
@@ -491,12 +491,6 @@ class SAMLBuilder
             case 'saml20-idp-remote':
                 $this->addMetadataIdP20($metadata);
                 break;
-            case 'shib13-sp-remote':
-                $this->addMetadataSP11($metadata);
-                break;
-            case 'shib13-idp-remote':
-                $this->addMetadataIdP11($metadata);
-                break;
             case 'attributeauthority-remote':
                 $this->addAttributeAuthority($metadata);
                 break;
diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php
index 45880788020fcbe58ba310b0c698f51f79c08c94..7cb5b20d840665a51af106effb86778829002b9a 100644
--- a/lib/SimpleSAML/Metadata/SAMLParser.php
+++ b/lib/SimpleSAML/Metadata/SAMLParser.php
@@ -40,11 +40,11 @@ use SimpleSAML\Utils;
 use Webmozart\Assert\Assert;
 
 /**
- * This is class for parsing of SAML 1.x and SAML 2.0 metadata.
+ * This is class for parsing of SAML 2.0 metadata.
  *
  * Metadata is loaded by calling the static methods parseFile, parseString or parseElement.
  * These functions returns an instance of SAMLParser. To get metadata
- * from this object, use the methods getMetadata1xSP or getMetadata20SP.
+ * from this object, use the method getMetadata20SP.
  *
  * To parse a file which can contain a collection of EntityDescriptor or EntitiesDescriptor elements, use the
  * parseDescriptorsFile, parseDescriptorsString or parseDescriptorsElement methods. These functions will return
@@ -53,16 +53,6 @@ use Webmozart\Assert\Assert;
 
 class SAMLParser
 {
-    /**
-     * This is the list of SAML 1.x protocols.
-     *
-     * @var string[]
-     */
-    private static $SAML1xProtocols = [
-        'urn:oasis:names:tc:SAML:1.0:protocol',
-        'urn:oasis:names:tc:SAML:1.1:protocol',
-    ];
-
     /**
      * This is the list with the SAML 2.0 protocol.
      *
@@ -541,135 +531,6 @@ class SAMLParser
     }
 
 
-    /**
-     * This function returns the metadata for SAML 1.x SPs in the format SimpleSAMLphp expects.
-     * This is an associative array with the following fields:
-     * - 'entityid': The entity id of the entity described in the metadata.
-     * - 'AssertionConsumerService': String with the URL of the assertion consumer service which supports
-     *   the browser-post binding.
-     * - 'certData': X509Certificate for entity (if present).
-     *
-     * Metadata must be loaded with one of the parse functions before this function can be called.
-     *
-     * @return array|null An associative array with metadata or NULL if we are unable to
-     *   generate metadata for a SAML 1.x SP.
-     */
-    public function getMetadata1xSP()
-    {
-        $ret = $this->getMetadataCommon();
-        $ret['metadata-set'] = 'shib13-sp-remote';
-
-
-        // find SP information which supports one of the SAML 1.x protocols
-        $spd = $this->getSPDescriptors(self::$SAML1xProtocols);
-        if (count($spd) === 0) {
-            return null;
-        }
-
-        // we currently only look at the first SPDescriptor which supports SAML 1.x
-        $spd = $spd[0];
-
-        // add expire time to metadata
-        if (array_key_exists('expire', $spd)) {
-            $ret['expire'] = $spd['expire'];
-        }
-
-        // find the assertion consumer service endpoints
-        $ret['AssertionConsumerService'] = $spd['AssertionConsumerService'];
-
-        // add the list of attributes the SP should receive
-        if (array_key_exists('attributes', $spd)) {
-            $ret['attributes'] = $spd['attributes'];
-        }
-        if (array_key_exists('attributes.required', $spd)) {
-            $ret['attributes.required'] = $spd['attributes.required'];
-        }
-        if (array_key_exists('attributes.NameFormat', $spd)) {
-            $ret['attributes.NameFormat'] = $spd['attributes.NameFormat'];
-        }
-
-        // add name & description
-        if (array_key_exists('name', $spd)) {
-            $ret['name'] = $spd['name'];
-        }
-        if (array_key_exists('description', $spd)) {
-            $ret['description'] = $spd['description'];
-        }
-
-        // add public keys
-        if (!empty($spd['keys'])) {
-            $ret['keys'] = $spd['keys'];
-        }
-
-        // add extensions
-        $this->addExtensions($ret, $spd);
-
-        // prioritize mdui:DisplayName as the name if available
-        if (!empty($ret['UIInfo']['DisplayName'])) {
-            $ret['name'] = $ret['UIInfo']['DisplayName'];
-        }
-
-        return $ret;
-    }
-
-
-    /**
-     * This function returns the metadata for SAML 1.x IdPs in the format SimpleSAMLphp expects.
-     * This is an associative array with the following fields:
-     * - 'entityid': The entity id of the entity described in the metadata.
-     * - 'name': Auto generated name for this entity. Currently set to the entity id.
-     * - 'SingleSignOnService': String with the URL of the SSO service which supports the redirect binding.
-     * - 'SingleLogoutService': String with the URL where we should send logout requests/responses.
-     * - 'certData': X509Certificate for entity (if present).
-     * - 'certFingerprint': Fingerprint of the X509Certificate from the metadata. (deprecated)
-     *
-     * Metadata must be loaded with one of the parse functions before this function can be called.
-     *
-     * @return array|null An associative array with metadata or NULL if we are unable to
-     *   generate metadata for a SAML 1.x IdP.
-     */
-    public function getMetadata1xIdP()
-    {
-        $ret = $this->getMetadataCommon();
-        $ret['metadata-set'] = 'shib13-idp-remote';
-
-        // find IdP information which supports the SAML 1.x protocol
-        $idp = $this->getIdPDescriptors(self::$SAML1xProtocols);
-        if (count($idp) === 0) {
-            return null;
-        }
-
-        // we currently only look at the first IDP descriptor which supports SAML 1.x
-        $idp = $idp[0];
-
-        // fdd expire time to metadata
-        if (array_key_exists('expire', $idp)) {
-            $ret['expire'] = $idp['expire'];
-        }
-
-        // find the SSO service endpoints
-        $ret['SingleSignOnService'] = $idp['SingleSignOnService'];
-
-        // find the ArtifactResolutionService endpoint
-        $ret['ArtifactResolutionService'] = $idp['ArtifactResolutionService'];
-
-        // add public keys
-        if (!empty($idp['keys'])) {
-            $ret['keys'] = $idp['keys'];
-        }
-
-        // add extensions
-        $this->addExtensions($ret, $idp);
-
-        // prioritize mdui:DisplayName as the name if available
-        if (!empty($ret['UIInfo']['DisplayName'])) {
-            $ret['name'] = $ret['UIInfo']['DisplayName'];
-        }
-
-        return $ret;
-    }
-
-
     /**
      * This function returns the metadata for SAML 2.0 SPs in the format SimpleSAMLphp expects.
      * This is an associative array with the following fields:
@@ -781,7 +642,6 @@ class SAMLParser
      *   the 'SingleLogoutService' endpoint.
      * - 'NameIDFormats': The name ID formats this IdP supports.
      * - 'certData': X509Certificate for entity (if present).
-     * - 'certFingerprint': Fingerprint of the X509Certificate from the metadata. (deprecated)
      *
      * Metadata must be loaded with one of the parse functions before this function can be called.
      *
@@ -1079,7 +939,6 @@ class SAMLParser
                         // only saml:Attribute are currently supported here. The specifications also allows
                         // saml:Assertions, which more complex processing
                         if ($attr instanceof Attribute) {
-                            /** @psalm-var string|null $attrName   Remove for SSP 2.0 */
                             $attrName = $attr->getName();
                             $attrNameFormat = $attr->getNameFormat();
                             $attrValue = $attr->getAttributeValue();
@@ -1475,73 +1334,4 @@ class SAMLParser
         Logger::debug('Could not validate signature');
         return false;
     }
-
-
-    /**
-     * @param string $algorithm
-     * @param string $data
-     * @throws \UnexpectedValueException
-     * @return string
-     */
-    private function computeFingerprint(string $algorithm, string $data): string
-    {
-        switch ($algorithm) {
-            case XMLSecurityDSig::SHA1:
-                $algo = 'SHA1';
-                break;
-            case XMLSecurityDSig::SHA256:
-                $algo = 'SHA256';
-                break;
-            case XMLSecurityDSig::SHA384:
-                $algo = 'SHA384';
-                break;
-            case XMLSecurityDSig::SHA512:
-                $algo = 'SHA512';
-                break;
-            default:
-                $known_opts = implode(", ", [
-                    XMLSecurityDSig::SHA1,
-                    XMLSecurityDSig::SHA256,
-                    XMLSecurityDSig::SHA384,
-                    XMLSecurityDSig::SHA512,
-                ]);
-                throw new \UnexpectedValueException(
-                    "Unsupported hashing function {$algorithm}. " .
-                    "Known options: [{$known_opts}]"
-                );
-        }
-        return hash($algo, $data);
-    }
-
-
-    /**
-     * This function checks if this EntityDescriptor was signed with a certificate with the
-     * given fingerprint.
-     *
-     * @param string $fingerprint Fingerprint of the certificate which should have been used to sign this
-     *                      EntityDescriptor.
-     * @param string $algorithm Algorithm used to compute the fingerprint of the signing certicate.
-     *
-     * @return boolean True if it was signed with the certificate with the given fingerprint, false otherwise.
-     */
-    public function validateFingerprint($fingerprint, $algorithm)
-    {
-        Assert::string($fingerprint);
-
-        $fingerprint = strtolower(str_replace(":", "", $fingerprint));
-
-        $candidates = [];
-        foreach ($this->validators as $validator) {
-            foreach ($validator->getValidatingCertificates() as $cert) {
-                $decoded_cert = base64_decode($cert);
-                $fp = $this->computeFingerprint($algorithm, $decoded_cert);
-                $candidates[] = $fp;
-                if ($fp === $fingerprint) {
-                    return true;
-                }
-            }
-        }
-        Logger::debug('Fingerprint was [' . $fingerprint . '] not one of [' . join(', ', $candidates) . ']');
-        return false;
-    }
 }
diff --git a/lib/SimpleSAML/Metadata/Sources/MDQ.php b/lib/SimpleSAML/Metadata/Sources/MDQ.php
index 889b429e086f68d9f86883048494cb085f0b4b07..dea938b4932c8ef74592c144113afcdb53683a88 100644
--- a/lib/SimpleSAML/Metadata/Sources/MDQ.php
+++ b/lib/SimpleSAML/Metadata/Sources/MDQ.php
@@ -30,19 +30,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
      */
     private $server;
 
-    /**
-     * The fingerprint of the certificate used to sign the metadata. You don't need this option if you don't want to
-     * validate the signature on the metadata.
-     *
-     * @var string|null
-     */
-    private $validateFingerprint;
-
-    /**
-     * @var string
-     */
-    private $validateFingerprintAlgorithm;
-
     /**
      * The cache directory, or null if no cache directory is configured.
      *
@@ -64,8 +51,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
      *
      * Options:
      * - 'server': URL of the MDQ server (url:port). Mandatory.
-     * - 'validateFingerprint': The fingerprint of the certificate used to sign the metadata.
-     *                          You don't need this option if you don't want to validate the signature on the metadata.
+     *
      * Optional.
      * - 'cachedir':  Directory where metadata can be cached. Optional.
      * - 'cachelength': Maximum time metadata cah be cached, in seconds. Default to 24
@@ -85,17 +71,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
             $this->server = $config['server'];
         }
 
-        if (array_key_exists('validateFingerprint', $config)) {
-            $this->validateFingerprint = $config['validateFingerprint'];
-        } else {
-            $this->validateFingerprint = null;
-        }
-        if (isset($config['validateFingerprintAlgorithm'])) {
-            $this->validateFingerprintAlgorithm = $config['validateFingerprintAlgorithm'];
-        } else {
-            $this->validateFingerprintAlgorithm = XMLSecurityDSig::SHA1;
-        }
-
         if (array_key_exists('cachedir', $config)) {
             $globalConfig = Configuration::getInstance();
             $this->cacheDir = $globalConfig->resolvePath($config['cachedir']);
@@ -245,10 +220,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
                 return $entity->getMetadata20IdP();
             case 'saml20-sp-remote':
                 return $entity->getMetadata20SP();
-            case 'shib13-idp-remote':
-                return $entity->getMetadata1xIdP();
-            case 'shib13-sp-remote':
-                return $entity->getMetadata1xSP();
             case 'attributeauthority-remote':
                 $ret = $entity->getAttributeAuthorities();
                 return $ret[0];
@@ -328,17 +299,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
         $entity = SAMLParser::parseString($xmldata);
         Logger::debug(__CLASS__ . ': completed parsing of [' . $mdq_url . ']');
 
-        if ($this->validateFingerprint !== null) {
-            if (
-                !$entity->validateFingerprint(
-                    $this->validateFingerprint,
-                    $this->validateFingerprintAlgorithm
-                )
-            ) {
-                throw new \Exception(__CLASS__ . ': error, could not verify signature for entity: ' . $index . '".');
-            }
-        }
-
         $data = self::getParsedSet($entity, $set);
         if ($data === null) {
             throw new \Exception(__CLASS__ . ': no metadata for set "' . $set . '" available from "' . $index . '".');
diff --git a/lib/SimpleSAML/SessionHandler.php b/lib/SimpleSAML/SessionHandler.php
index 50498dcf4783a72754a8edd3cdd6c1d4868fceff..df9fd67387b2b204d73f3a7c99429e418b919a8d 100644
--- a/lib/SimpleSAML/SessionHandler.php
+++ b/lib/SimpleSAML/SessionHandler.php
@@ -139,7 +139,6 @@ abstract class SessionHandler
         if ($store === false) {
             self::$sessionHandler = new SessionHandlerPHP();
         } else {
-            /** @var \SimpleSAML\Store $store At this point, $store can only be an object */
             self::$sessionHandler = new SessionHandlerStore($store);
         }
     }
diff --git a/lib/SimpleSAML/SessionHandlerPHP.php b/lib/SimpleSAML/SessionHandlerPHP.php
index 1952946d3e913e55bf8e76464cee3e4141e94b11..27fba38a8a013b2befed682a6c976f16c06c0642 100644
--- a/lib/SimpleSAML/SessionHandlerPHP.php
+++ b/lib/SimpleSAML/SessionHandlerPHP.php
@@ -81,7 +81,6 @@ class SessionHandlerPHP extends SessionHandler
 
         if (!headers_sent()) {
             if (version_compare(PHP_VERSION, '7.3.0', '>=')) {
-                /** @psalm-suppress InvalidArgument  This annotation may be removed in Psalm >=3.0.15 */
                 session_set_cookie_params([
                     'lifetime' => $params['lifetime'],
                     'path' => $params['path'],
@@ -173,10 +172,6 @@ class SessionHandlerPHP extends SessionHandler
             if (($sid_length * $sid_bits_per_char) < 128) {
                 Logger::warning("Unsafe defaults used for sessionId generation!");
             }
-            /**
-             * This annotation may be removed as soon as we start using vimeo/psalm 3.x
-             * @psalm-suppress TooFewArguments
-             */
             $sessionId = session_create_id();
         } else {
             $sessionId = bin2hex(openssl_random_pseudo_bytes(16));
@@ -367,7 +362,6 @@ class SessionHandlerPHP extends SessionHandler
         }
 
         if (version_compare(PHP_VERSION, '7.3.0', '>=')) {
-            /** @psalm-suppress InvalidArgument  This annotation may be removed in Psalm >=3.0.15 */
             session_set_cookie_params($cookieParams);
         } else {
             session_set_cookie_params(
diff --git a/lib/SimpleSAML/Stats.php b/lib/SimpleSAML/Stats.php
index 281e35bb6d9ba8db5eed3e0c8ba548da4e87767f..7bb0aa33d38ef49ed2b102e110a8dab068e49c67 100644
--- a/lib/SimpleSAML/Stats.php
+++ b/lib/SimpleSAML/Stats.php
@@ -33,15 +33,15 @@ class Stats
 
 
     /**
-     * Create an output from a configuration object.
+     * Create an output from a configuration array.
      *
-     * @param \SimpleSAML\Configuration $config The configuration object.
+     * @param array $config The configuration.
      *
      * @return mixed A new instance of the configured class.
      */
-    private static function createOutput(Configuration $config)
+    private static function createOutput(array $config)
     {
-        $cls = $config->getString('class');
+        $cls = $config['class'];
         $cls = Module::resolveClass($cls, 'Stats\Output', '\SimpleSAML\Stats\Output');
 
         $output = new $cls($config);
@@ -57,7 +57,7 @@ class Stats
     private static function initOutputs()
     {
         $config = Configuration::getInstance();
-        $outputCfgs = $config->getConfigList('statistics.out');
+        $outputCfgs = $config->getArray('statistics.out', []);
 
         self::$outputs = [];
         foreach ($outputCfgs as $cfg) {
diff --git a/lib/SimpleSAML/Stats/Output.php b/lib/SimpleSAML/Stats/Output.php
index 7ac5a71ec741a5fc3a38350e5fcaa11bc043ee5c..0fa1dbbda0a3d82fd601a4f76f0430133387a5d5 100644
--- a/lib/SimpleSAML/Stats/Output.php
+++ b/lib/SimpleSAML/Stats/Output.php
@@ -29,6 +29,7 @@ abstract class Output
      * Write a stats event.
      *
      * @param array $data The event.
+     * @return void
      */
     abstract public function emit(array $data);
 }
diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php
deleted file mode 100644
index ca5536a44a2dafc6d4a1762f129e1dff0e7be041..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/Utilities.php
+++ /dev/null
@@ -1,870 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML;
-
-use SimpleSAML\Error\Error;
-
-/**
- * Misc static functions that is used several places.in example parsing and id generation.
- *
- * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
- * @package SimpleSAMLphp
- *
- * @deprecated This entire class will be removed in SimpleSAMLphp 2.0.
- */
-
-class Utilities
-{
-    /**
-     * @deprecated This property will be removed in SSP 2.0. Please use SimpleSAML\Logger::isErrorMasked() instead.
-     * @var int
-     */
-    public static $logMask = 0;
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfHost() instead.
-     * @return string
-     */
-    public static function getSelfHost()
-    {
-        return \SimpleSAML\Utils\HTTP::getSelfHost();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfURLHost() instead.
-     * @return string
-     */
-    public static function selfURLhost()
-    {
-        return \SimpleSAML\Utils\HTTP::getSelfURLHost();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::isHTTPS() instead.
-     * @return bool
-     */
-    public static function isHTTPS()
-    {
-        return \SimpleSAML\Utils\HTTP::isHTTPS();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfURLNoQuery()
-     *     instead.
-     * @return string
-     */
-    public static function selfURLNoQuery()
-    {
-        return \SimpleSAML\Utils\HTTP::getSelfURLNoQuery();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfHostWithPath()
-     *     instead.
-     * @return string
-     */
-    public static function getSelfHostWithPath()
-    {
-        return \SimpleSAML\Utils\HTTP::getSelfHostWithPath();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getFirstPathElement()
-     *     instead.
-     * @param bool $trailingslash
-     * @return string
-     */
-    public static function getFirstPathElement($trailingslash = true)
-    {
-        return \SimpleSAML\Utils\HTTP::getFirstPathElement($trailingslash);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfURL() instead.
-     * @return string
-     */
-    public static function selfURL()
-    {
-        return \SimpleSAML\Utils\HTTP::getSelfURL();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getBaseURL() instead.
-     * @return string
-     */
-    public static function getBaseURL()
-    {
-        return \SimpleSAML\Utils\HTTP::getBaseURL();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::addURLParameters() instead.
-     * @param string $url
-     * @param array $parameters
-     * @return string
-     */
-    public static function addURLparameter($url, $parameters)
-    {
-        return \SimpleSAML\Utils\HTTP::addURLParameters($url, $parameters);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Utils\HTTP::checkURLAllowed() instead.
-     * @param string $url
-     * @param array|null $trustedSites
-     * @return string
-     */
-    public static function checkURLAllowed($url, array $trustedSites = null)
-    {
-        return \SimpleSAML\Utils\HTTP::checkURLAllowed($url, $trustedSites);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Auth\State::parseStateID() instead.
-     * @param string $stateId
-     * @return array
-     */
-    public static function parseStateID($stateId)
-    {
-        return \SimpleSAML\Auth\State::parseStateID($stateId);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0.
-     * @param string|null $start
-     * @param string|null $end
-     * @return bool
-     */
-    public static function checkDateConditions($start = null, $end = null)
-    {
-        $currentTime = time();
-
-        if (!empty($start)) {
-            $startTime = \SAML2\Utils::xsDateTimeToTimestamp($start);
-            // Allow for a 10 minute difference in Time
-            if (($startTime < 0) || (($startTime - 600) > $currentTime)) {
-                return false;
-            }
-        }
-        if (!empty($end)) {
-            $endTime = \SAML2\Utils::xsDateTimeToTimestamp($end);
-            if (($endTime < 0) || ($endTime <= $currentTime)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Random::generateID() instead.
-     * @return string
-     */
-    public static function generateID()
-    {
-        return \SimpleSAML\Utils\Random::generateID();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Utils\Time::generateTimestamp()
-     *     instead.
-     * @param int|null $instant
-     * @return string
-     */
-    public static function generateTimestamp($instant = null)
-    {
-        return \SimpleSAML\Utils\Time::generateTimestamp($instant);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Utils\Time::parseDuration() instead.
-     * @param string $duration
-     * @param int|null $timestamp
-     * @return int
-     */
-    public static function parseDuration($duration, $timestamp = null)
-    {
-        return \SimpleSAML\Utils\Time::parseDuration($duration, $timestamp);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please raise a SimpleSAML\Error\Error exception instead.
-     * @param string $trackId
-     * @param int|null $errorCode
-     * @param \Exception|null $e
-     * @throws \SimpleSAML\Error\Error
-     * @return void
-     */
-    public static function fatalError($trackId = 'na', $errorCode = null, \Exception $e = null)
-    {
-        throw new \SimpleSAML\Error\Error($errorCode, $e);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in version 2.0. Use SimpleSAML\Utils\Net::ipCIDRcheck() instead.
-     * @param string $cidr
-     * @param string|null $ip
-     * @return bool
-     */
-    public static function ipCIDRcheck($cidr, $ip = null)
-    {
-        return \SimpleSAML\Utils\Net::ipCIDRcheck($cidr, $ip);
-    }
-
-
-    /**
-     * @param string $url
-     * @param array $parameters
-     * @return void
-     */
-    private static function doRedirect($url, $parameters = [])
-    {
-        assert(is_string($url));
-        assert(!empty($url));
-        assert(is_array($parameters));
-
-        if (!empty($parameters)) {
-            $url = self::addURLparameter($url, $parameters);
-        }
-
-        /* Set the HTTP result code. This is either 303 See Other or
-         * 302 Found. HTTP 303 See Other is sent if the HTTP version
-         * is HTTP/1.1 and the request type was a POST request.
-         */
-        if ($_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1' &&
-            $_SERVER['REQUEST_METHOD'] === 'POST'
-        ) {
-            $code = 303;
-        } else {
-            $code = 302;
-        }
-
-        if (strlen($url) > 2048) {
-            \SimpleSAML\Logger::warning('Redirecting to a URL longer than 2048 bytes.');
-        }
-
-        // Set the location header
-        header('Location: '.$url, true, $code);
-
-        // Disable caching of this response
-        header('Pragma: no-cache');
-        header('Cache-Control: no-cache, must-revalidate');
-
-        // Show a minimal web page with a clickable link to the URL
-        echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
-        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'.
-            ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n";
-        echo '<html xmlns="http://www.w3.org/1999/xhtml">';
-        echo '<head>
-					<meta http-equiv="content-type" content="text/html; charset=utf-8">
-					<title>Redirect</title>
-				</head>';
-        echo '<body>';
-        echo '<h1>Redirect</h1>';
-        echo '<p>';
-        echo 'You were redirected to: ';
-        echo '<a id="redirlink" href="'.
-            htmlspecialchars($url).'">'.htmlspecialchars($url).'</a>';
-        echo '<script type="text/javascript">document.getElementById("redirlink").focus();</script>';
-        echo '</p>';
-        echo '</body>';
-        echo '</html>';
-
-        // End script execution
-        exit;
-    }
-
-
-    /**
-     * @deprecated 1.12.0 This method will be removed from the API. Instead, use the redirectTrustedURL() or
-     * redirectUntrustedURL() functions accordingly.
-     * @param string $url
-     * @param array $parameters
-     * @param array|null $allowed_redirect_hosts
-     * @return void
-     */
-    public static function redirect($url, $parameters = [], $allowed_redirect_hosts = null)
-    {
-        assert(is_string($url));
-        assert(strlen($url) > 0);
-        assert(is_array($parameters));
-
-        if ($allowed_redirect_hosts !== null) {
-            $url = self::checkURLAllowed($url, $allowed_redirect_hosts);
-        } else {
-            $url = self::normalizeURL($url);
-        }
-        self::doRedirect($url, $parameters);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::redirectTrustedURL()
-     *     instead.
-     * @param string $url
-     * @param array $parameters
-     * @return void
-     */
-    public static function redirectTrustedURL($url, $parameters = [])
-    {
-        \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, $parameters);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::redirectUntrustedURL()
-     *     instead.
-     * @param string $url
-     * @param array $parameters
-     * @return void
-     */
-    public static function redirectUntrustedURL($url, $parameters = [])
-    {
-        \SimpleSAML\Utils\HTTP::redirectUntrustedURL($url, $parameters);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Arrays::transpose() instead.
-     * @param array $in
-     * @return mixed
-     */
-    public static function transposeArray($in)
-    {
-        return \SimpleSAML\Utils\Arrays::transpose($in);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::isDOMNodeOfType()
-     *     instead.
-     * @param \DOMNode $element
-     * @param string $name
-     * @param string $nsURI
-     * @return bool
-     */
-    public static function isDOMElementOfType(\DOMNode $element, $name, $nsURI)
-    {
-        return \SimpleSAML\Utils\XML::isDOMNodeOfType($element, $name, $nsURI);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::getDOMChildren() instead.
-     * @param \DOMElement $element
-     * @param string $localName
-     * @param string $namespaceURI
-     * @return array
-     */
-    public static function getDOMChildren(\DOMElement $element, $localName, $namespaceURI)
-    {
-        return \SimpleSAML\Utils\XML::getDOMChildren($element, $localName, $namespaceURI);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::getDOMText() instead.
-     * @param \DOMNode $element
-     * @return string
-     */
-    public static function getDOMText($element)
-    {
-        return \SimpleSAML\Utils\XML::getDOMText($element);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getAcceptLanguage()
-     *     instead.
-     * @return array
-     */
-    public static function getAcceptLanguage()
-    {
-        return \SimpleSAML\Utils\HTTP::getAcceptLanguage();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::isValid() instead.
-     * @param string $xml
-     * @param string $schema
-     * @return string|false
-     */
-    public static function validateXML($xml, $schema)
-    {
-        $result = \SimpleSAML\Utils\XML::isValid($xml, $schema);
-        return ($result === true) ? '' : $result;
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::checkSAMLMessage() instead.
-     * @param string $message
-     * @param string $type
-     * @return void
-     */
-    public static function validateXMLDocument($message, $type)
-    {
-        \SimpleSAML\Utils\XML::checkSAMLMessage($message, $type);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use openssl_random_pseudo_bytes() instead.
-     * @param int $length
-     * @return string
-     */
-    public static function generateRandomBytes($length)
-    {
-        assert(is_int($length));
-
-        return openssl_random_pseudo_bytes($length);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use bin2hex() instead.
-     * @param string $bytes
-     * @return string
-     */
-    public static function stringToHex($bytes)
-    {
-        $ret = '';
-        for ($i = 0; $i < strlen($bytes); $i++) {
-            $ret .= sprintf('%02x', ord($bytes[$i]));
-        }
-        return $ret;
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::resolvePath() instead.
-     * @param string $path
-     * @param string|null $base
-     * @return string
-     */
-    public static function resolvePath($path, $base = null)
-    {
-        return \SimpleSAML\Utils\System::resolvePath($path, $base);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::resolveURL() instead.
-     * @param string $url
-     * @param string|null $base
-     * @return string
-     */
-    public static function resolveURL($url, $base = null)
-    {
-        return \SimpleSAML\Utils\HTTP::resolveURL($url, $base);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::normalizeURL() instead.
-     * @param string $url
-     * @return string
-     */
-    public static function normalizeURL($url)
-    {
-        return \SimpleSAML\Utils\HTTP::normalizeURL($url);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::parseQueryString() instead.
-     * @param string $query_string
-     * @return array
-     */
-    public static function parseQueryString($query_string)
-    {
-        return \SimpleSAML\Utils\HTTP::parseQueryString($query_string);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use
-     * SimpleSAML\Utils\Attributes::normalizeAttributesArray() instead.
-     * @param array $attributes
-     * @return array
-     */
-    public static function parseAttributes($attributes)
-    {
-        return \SimpleSAML\Utils\Attributes::normalizeAttributesArray($attributes);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Config::getSecretSalt() instead.
-     * @return string
-     */
-    public static function getSecretSalt()
-    {
-        return \SimpleSAML\Utils\Config::getSecretSalt();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please call error_get_last() directly.
-     * @return string
-     */
-    public static function getLastError()
-    {
-
-        if (!function_exists('error_get_last')) {
-            return '[Cannot get error message]';
-        }
-
-        $error = error_get_last();
-        if ($error === null) {
-            return '[No error message found]';
-        }
-
-        return $error['message'];
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Config::getCertPath() instead.
-     * @param string $path
-     * @return string
-     */
-    public static function resolveCert($path)
-    {
-        return \SimpleSAML\Utils\Config::getCertPath($path);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::loadPublicKey() instead.
-     * @param \SimpleSAML\Configuration $metadata
-     * @param bool $required
-     * @param string $prefix
-     * @return array|null
-     */
-    public static function loadPublicKey(\SimpleSAML\Configuration $metadata, $required = false, $prefix = '')
-    {
-        return \SimpleSAML\Utils\Crypto::loadPublicKey($metadata, $required, $prefix);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::loadPrivateKey() instead.
-     * @param \SimpleSAML\Configuration $metadata
-     * @param bool $required
-     * @param string $prefix
-     * @return array|null
-     */
-    public static function loadPrivateKey(\SimpleSAML\Configuration $metadata, $required = false, $prefix = '')
-    {
-        return \SimpleSAML\Utils\Crypto::loadPrivateKey($metadata, $required, $prefix);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::formatDOMElement() instead.
-     * @param \DOMElement $root
-     * @param string $indentBase
-     * @return void
-     */
-    public static function formatDOMElement(\DOMElement $root, $indentBase = '')
-    {
-        \SimpleSAML\Utils\XML::formatDOMElement($root, $indentBase);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::formatXMLString() instead.
-     * @param string $xml
-     * @param string $indentBase
-     * @return string
-     */
-    public static function formatXMLString($xml, $indentBase = '')
-    {
-        return \SimpleSAML\Utils\XML::formatXMLString($xml, $indentBase);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Arrays::arrayize() instead.
-     * @param mixed $data
-     * @param int $index
-     * @return array
-     */
-    public static function arrayize($data, $index = 0)
-    {
-        return \SimpleSAML\Utils\Arrays::arrayize($data, $index);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Auth::isAdmin() instead.
-     * @return bool
-     */
-    public static function isAdmin()
-    {
-        return \SimpleSAML\Utils\Auth::isAdmin();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Auth::getAdminLoginURL instead();
-     * @param string|null $returnTo
-     * @return string
-     */
-    public static function getAdminLoginURL($returnTo = null)
-    {
-        return \SimpleSAML\Utils\Auth::getAdminLoginURL($returnTo);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Auth::requireAdmin() instead.
-     * @return void
-     */
-    public static function requireAdmin()
-    {
-        \SimpleSAML\Utils\Auth::requireAdmin();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::submitPOSTData() instead.
-     * @param string $destination
-     * @param array $post
-     * @return void
-     */
-    public static function postRedirect($destination, $post)
-    {
-        \SimpleSAML\Utils\HTTP::submitPOSTData($destination, $post);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. PLease use SimpleSAML\Utils\HTTP::getPOSTRedirectURL()
-     *     instead.
-     * @param string $destination
-     * @param array $post
-     * @return string
-     */
-    public static function createPostRedirectLink($destination, $post)
-    {
-        return \SimpleSAML\Utils\HTTP::getPOSTRedirectURL($destination, $post);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getPOSTRedirectURL()
-     *     instead.
-     * @param string $destination
-     * @param array $post
-     * @return string
-     * @throws Error If the current session is a transient session.
-     */
-    public static function createHttpPostRedirectLink($destination, $post)
-    {
-        assert(is_string($destination));
-        assert(is_array($post));
-
-        $postId = \SimpleSAML\Utils\Random::generateID();
-        $postData = [
-            'post' => $post,
-            'url'  => $destination,
-        ];
-
-        $session = \SimpleSAML\Session::getSessionFromRequest();
-        if ($session->isTransient()) {
-            throw new Error('Cannot save data to a transient session');
-        }
-
-        $session->setData('core_postdatalink', $postId, $postData);
-
-        $redirInfo = base64_encode(\SimpleSAML\Utils\Crypto::aesEncrypt($session->getSessionId().':'.$postId));
-
-        $url = \SimpleSAML\Module::getModuleURL('core/postredirect.php', ['RedirInfo' => $redirInfo]);
-        $url = preg_replace("#^https:#", "http:", $url);
-
-        return $url;
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0.
-     * @param string $certificate
-     * @param string $caFile
-     * @return void
-     */
-    public static function validateCA($certificate, $caFile)
-    {
-        \SimpleSAML\XML\Validator::validateCertificate($certificate, $caFile);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Time::initTimezone() instead.
-     * @return void
-     */
-    public static function initTimezone()
-    {
-        \SimpleSAML\Utils\Time::initTimezone();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::writeFile() instead.
-     * @param string $filename
-     * @param string $data
-     * @param int $mode
-     * @return void
-     */
-    public static function writeFile($filename, $data, $mode = 0600)
-    {
-        \SimpleSAML\Utils\System::writeFile($filename, $data, $mode);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::getTempDir instead.
-     * @return string
-     */
-    public static function getTempDir()
-    {
-        return \SimpleSAML\Utils\System::getTempDir();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Logger::maskErrors() instead.
-     * @param int $mask
-     * @return void
-     */
-    public static function maskErrors($mask)
-    {
-        \SimpleSAML\Logger::maskErrors($mask);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Logger::popErrorMask() instead.
-     * @return void
-     */
-    public static function popErrorMask()
-    {
-        \SimpleSAML\Logger::popErrorMask();
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use
-     *     SimpleSAML\Utils\Config\Metadata::getDefaultEndpoint() instead.
-     * @param array $endpoints
-     * @param array|null $bindings
-     * @return array|null
-     */
-    public static function getDefaultEndpoint(array $endpoints, array $bindings = null)
-    {
-        return \SimpleSAML\Utils\Config\Metadata::getDefaultEndpoint($endpoints, $bindings);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::checkSessionCookie()
-     *     instead.
-     * @param string|null $retryURL
-     * @return void
-     */
-    public static function checkCookie($retryURL = null)
-    {
-        \SimpleSAML\Utils\HTTP::checkSessionCookie($retryURL);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::debugSAMLMessage() instead.
-     * @param string|\DOMElement $message
-     * @param string $type
-     * @return void
-     */
-    public static function debugMessage($message, $type)
-    {
-        \SimpleSAML\Utils\XML::debugSAMLMessage($message, $type);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::fetch() instead.
-     * @param string $path
-     * @param array $context
-     * @param bool $getHeaders
-     * @return string|array
-     */
-    public static function fetch($path, $context = [], $getHeaders = false)
-    {
-        return \SimpleSAML\Utils\HTTP::fetch($path, $context, $getHeaders);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::aesEncrypt() instead.
-     * @param string $clear
-     * @return string
-     */
-    public static function aesEncrypt($clear)
-    {
-        return \SimpleSAML\Utils\Crypto::aesEncrypt($clear);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::aesDecrypt() instead.
-     * @param string $encData
-     * @return string
-     */
-    public static function aesDecrypt($encData)
-    {
-        return \SimpleSAML\Utils\Crypto::aesDecrypt($encData);
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::getOS() instead.
-     * @return bool
-     */
-    public static function isWindowsOS()
-    {
-        return \SimpleSAML\Utils\System::getOS() === \SimpleSAML\Utils\System::WINDOWS;
-    }
-
-
-    /**
-     * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::setCookie() instead.
-     * @param string $name
-     * @param string|null $value
-     * @param array|null $params
-     * @param bool $throw
-     * @return void
-     */
-    public static function setCookie($name, $value, array $params = null, $throw = true)
-    {
-        \SimpleSAML\Utils\HTTP::setCookie($name, $value, $params, $throw);
-    }
-}
diff --git a/lib/SimpleSAML/Utils/ClearableState.php b/lib/SimpleSAML/Utils/ClearableState.php
index 5c90ccfc5245b5cfcc083e2ce672c11f8de4e9b7..60550261efdc93d6b4b7c8ea624fc752e5602e88 100644
--- a/lib/SimpleSAML/Utils/ClearableState.php
+++ b/lib/SimpleSAML/Utils/ClearableState.php
@@ -14,6 +14,7 @@ interface ClearableState
 {
     /**
      * Clear any cached internal state.
+     * @return void
      */
     public static function clearInternalState();
 }
diff --git a/lib/SimpleSAML/Utils/Config.php b/lib/SimpleSAML/Utils/Config.php
index 6059ff35e6514cdce334114b395f3cc51b47a550..56fe3e0445473f607c826b8c05ae003b811a783e 100644
--- a/lib/SimpleSAML/Utils/Config.php
+++ b/lib/SimpleSAML/Utils/Config.php
@@ -71,7 +71,6 @@ class Config
     public static function getConfigDir()
     {
         $configDir = dirname(dirname(dirname(__DIR__))) . '/config';
-        /** @var string|false $configDirEnv */
         $configDirEnv = getenv('SIMPLESAMLPHP_CONFIG_DIR');
         
         if ($configDirEnv === false) {
diff --git a/lib/SimpleSAML/Utils/Crypto.php b/lib/SimpleSAML/Utils/Crypto.php
index c12519adb178984f355ee19eeec5138c4fc7e1e0..425eb56a48024a5682207b1d18ddfc5b1e692bbb 100644
--- a/lib/SimpleSAML/Utils/Crypto.php
+++ b/lib/SimpleSAML/Utils/Crypto.php
@@ -110,7 +110,6 @@ class Crypto
         $iv = openssl_random_pseudo_bytes(16);
 
         // encrypt the message
-        /** @var string|false $ciphertext */
         $ciphertext = openssl_encrypt(
             $data,
             'AES-256-CBC',
@@ -231,14 +230,10 @@ class Crypto
      * It will search for the following elements in the metadata:
      * - 'certData': The certificate as a base64-encoded string.
      * - 'certificate': A file with a certificate or public key in PEM-format.
-     * - 'certFingerprint': The fingerprint of the certificate. Can be a single fingerprint, or an array of multiple
-     * valid fingerprints. (deprecated)
      *
      * This function will return an array with these elements:
      * - 'PEM': The public key/certificate in PEM-encoding.
      * - 'certData': The certificate data, base64 encoded, on a single line. (Only present if this is a certificate.)
-     * - 'certFingerprint': Array of valid certificate fingerprints. (Deprecated. Only present if this is a
-     *   certificate.)
      *
      * @param \SimpleSAML\Configuration $metadata The metadata.
      * @param bool                      $required Whether the public key is required. If this is TRUE, a missing key
@@ -275,30 +270,12 @@ class Crypto
                 $pem = "-----BEGIN CERTIFICATE-----\n" .
                     chunk_split($certData, 64) .
                     "-----END CERTIFICATE-----\n";
-                $certFingerprint = strtolower(sha1(base64_decode($certData)));
-
                 return [
                     'certData'        => $certData,
                     'PEM'             => $pem,
-                    'certFingerprint' => [$certFingerprint],
                 ];
             }
             // no valid key found
-        } elseif ($metadata->hasValue($prefix . 'certFingerprint')) {
-            // we only have a fingerprint available
-            $fps = $metadata->getArrayizeString($prefix . 'certFingerprint');
-
-            // normalize fingerprint(s) - lowercase and no colons
-            foreach ($fps as &$fp) {
-                Assert::string($fp);
-                $fp = strtolower(str_replace(':', '', $fp));
-            }
-
-            /*
-             * We can't build a full certificate from a fingerprint, and may as well return an array with only the
-             * fingerprint(s) immediately.
-             */
-            return ['certFingerprint' => $fps];
         }
 
         // no public key/certificate available
@@ -343,9 +320,6 @@ class Crypto
      * This function hashes a password with a given algorithm.
      *
      * @param string $password The password to hash.
-     * @param string|null $algorithm @deprecated The hashing algorithm, uppercase, optionally
-     *     prepended with 'S' (salted). See hash_algos() for a complete list of hashing algorithms.
-     * @param string|null $salt @deprecated An optional salt to use.
      *
      * @return string The hashed password.
      * @throws \InvalidArgumentException If the input parameter is not a string.
@@ -356,42 +330,14 @@ class Crypto
      * @author Dyonisius Visser, TERENA <visser@terena.org>
      * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no>
      */
-    public static function pwHash($password, $algorithm = null, $salt = null)
+    public static function pwHash($password)
     {
-        if (!is_null($algorithm)) {
-            // @deprecated Old-style
-            if (!is_string($algorithm) || !is_string($password)) {
-                throw new \InvalidArgumentException('Invalid input parameters.');
-            }
-            // hash w/o salt
-            if (in_array(strtolower($algorithm), hash_algos(), true)) {
-                $alg_str = '{' . str_replace('SHA1', 'SHA', $algorithm) . '}'; // LDAP compatibility
-                $hash = hash(strtolower($algorithm), $password, true);
-                return $alg_str . base64_encode($hash);
-            }
-            // hash w/ salt
-            if ($salt === null) {
-                // no salt provided, generate one
-                // default 8 byte salt, but 4 byte for LDAP SHA1 hashes
-                $bytes = ($algorithm == 'SSHA1') ? 4 : 8;
-                $salt = openssl_random_pseudo_bytes($bytes);
-            }
-
-            if ($algorithm[0] == 'S' && in_array(substr(strtolower($algorithm), 1), hash_algos(), true)) {
-                $alg = substr(strtolower($algorithm), 1); // 'sha256' etc
-                $alg_str = '{' . str_replace('SSHA1', 'SSHA', $algorithm) . '}'; // LDAP compatibility
-                $hash = hash($alg, $password . $salt, true);
-                return $alg_str . base64_encode($hash . $salt);
-            }
-            throw new Error\Exception('Hashing algorithm \'' . strtolower($algorithm) . '\' is not supported');
-        } else {
-            if (!is_string($password)) {
-                throw new \InvalidArgumentException('Invalid input parameter.');
-            } elseif (!is_string($hash = password_hash($password, PASSWORD_DEFAULT))) {
-                throw new \InvalidArgumentException('Error while hashing password.');
-            }
-            return $hash;
+        if (!is_string($password)) {
+            throw new \InvalidArgumentException('Invalid input parameter.');
+        } elseif (!is_string($hash = password_hash($password, PASSWORD_DEFAULT))) {
+            throw new \InvalidArgumentException('Error while hashing password.');
         }
+        return $hash;
     }
 
 
@@ -433,31 +379,6 @@ class Crypto
         if (password_verify($password, $hash)) {
             return true;
         }
-        // return $hash === $password
-
-        // @deprecated remove everything below this line for 2.0
-        // match algorithm string (e.g. '{SSHA256}', '{MD5}')
-        if (preg_match('/^{(.*?)}(.*)$/', $hash, $matches)) {
-            // LDAP compatibility
-            $alg = preg_replace('/^(S?SHA)$/', '${1}1', $matches[1]);
-
-            // hash w/o salt
-            if (in_array(strtolower($alg), hash_algos(), true)) {
-                return self::secureCompare($hash, self::pwHash($password, $alg));
-            }
-
-            // hash w/ salt
-            if ($alg[0] === 'S' && in_array(substr(strtolower($alg), 1), hash_algos(), true)) {
-                $php_alg = substr(strtolower($alg), 1);
-
-                // get hash length of this algorithm to learn how long the salt is
-                $hash_length = strlen(hash($php_alg, '', true));
-                $salt = substr(base64_decode($matches[2]), $hash_length);
-                return self::secureCompare($hash, self::pwHash($password, $alg, $salt));
-            }
-            throw new Error\Exception('Hashing algorithm \'' . strtolower($alg) . '\' is not supported');
-        } else {
-            return $hash === $password;
-        }
+        return $hash === $password;
     }
 }
diff --git a/lib/SimpleSAML/Utils/HTTP.php b/lib/SimpleSAML/Utils/HTTP.php
index 79371893058f06f6d33c7b1ace948af47199e649..18a78cd676340c9ec890b972ad191a33511bee6f 100644
--- a/lib/SimpleSAML/Utils/HTTP.php
+++ b/lib/SimpleSAML/Utils/HTTP.php
@@ -288,7 +288,6 @@ class HTTP
             $oldQuery = [];
             $url .= '?';
         } else {
-            /** @var string|false $oldQuery */
             $oldQuery = substr($url, $queryStart + 1);
             if ($oldQuery === false) {
                 $oldQuery = [];
@@ -298,7 +297,6 @@ class HTTP
             $url = substr($url, 0, $queryStart + 1);
         }
 
-        /** @var array $oldQuery */
         $query = array_merge($oldQuery, $parameters);
         $url .= http_build_query($query, '', '&');
 
@@ -500,14 +498,8 @@ class HTTP
 
         // data and headers
         if ($getHeaders) {
-            /**
-             * @psalm-suppress UndefinedVariable    Remove when Psalm >= 3.0.17
-             */
             if (!empty($http_response_header)) {
                 $headers = [];
-                /**
-                 * @psalm-suppress UndefinedVariable    Remove when Psalm >= 3.0.17
-                 */
                 foreach ($http_response_header as $h) {
                     if (preg_match('@^HTTP/1\.[01]\s+\d{3}\s+@', $h)) {
                         $headers = []; // reset
@@ -1206,7 +1198,6 @@ class HTTP
         if (version_compare(PHP_VERSION, '7.3.0', '>=')) {
             /* use the new options array for PHP >= 7.3 */
             if ($params['raw']) {
-                /** @psalm-suppress InvalidArgument  Remove when Psalm >= 3.4.10 */
                 $success = @setrawcookie(
                     $name,
                     $value,
@@ -1220,7 +1211,6 @@ class HTTP
                     ]
                 );
             } else {
-                /** @psalm-suppress InvalidArgument  Remove when Psalm >= 3.4.10 */
                 $success = @setcookie(
                     $name,
                     $value,
@@ -1311,7 +1301,7 @@ class HTTP
         $p = new Template($config, 'post.php');
         $p->data['destination'] = $destination;
         $p->data['post'] = $data;
-        $p->show();
+        $p->send();
         exit(0);
     }
 }
diff --git a/lib/SimpleSAML/XHTML/IdPDisco.php b/lib/SimpleSAML/XHTML/IdPDisco.php
index 8e941879832f9151505eb40c39446144e30baf50..b81df687000ffeb12a9969e35f924435854c5b86 100644
--- a/lib/SimpleSAML/XHTML/IdPDisco.php
+++ b/lib/SimpleSAML/XHTML/IdPDisco.php
@@ -645,7 +645,7 @@ class IdPDisco
         $t->data['entityID'] = $this->spEntityId;
         $t->data['urlpattern'] = htmlspecialchars(Utils\HTTP::getSelfURLNoQuery());
         $t->data['rememberenabled'] = $this->config->getBoolean('idpdisco.enableremember', false);
-        $t->show();
+        $t->send();
     }
 
 
diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php
index 4ceed77ea29ccb2139e7e6c15fe0e5df3e688ad8..b2404b82673bbf1f8acc61fd4c5ec1f1c6c92d7c 100644
--- a/lib/SimpleSAML/XHTML/Template.php
+++ b/lib/SimpleSAML/XHTML/Template.php
@@ -536,25 +536,6 @@ class Template extends Response
     }
 
 
-    /**
-     * Show the template to the user.
-     *
-     * This method is a remnant of the old templating system, where templates where shown manually instead of
-     * returning a response.
-     *
-     * @return void
-     * @deprecated Do not use this method, use Twig + send() instead. Will be removed in 2.0
-     */
-    public function show()
-    {
-        if ($this->useNewUI) {
-            echo $this->getContents();
-        } else {
-            require($this->findTemplatePath($this->template));
-        }
-    }
-
-
     /**
      * Find module the template is in, if any
      *
@@ -589,7 +570,6 @@ class Template extends Response
     {
         $extensions = ['.tpl.php', '.php'];
 
-        $extensions = ['.tpl.php', '.php'];
         list($templateModule, $templateName) = $this->findModuleAndTemplateName($template);
         $templateModule = ($templateModule !== null) ? $templateModule : 'default';
 
@@ -685,73 +665,6 @@ class Template extends Response
     }
 
 
-    /*
-     * Deprecated methods of this interface, all of them should go away.
-     */
-
-
-    /**
-     * @param string $name
-     *
-     * @return string
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::getLanguage()
-     * instead.
-     */
-    public function getAttributeTranslation($name)
-    {
-        return $this->translator->getAttributeTranslation($name);
-    }
-
-
-    /**
-     * @return string
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::getLanguage()
-     * instead.
-     */
-    public function getLanguage()
-    {
-        return $this->translator->getLanguage()->getLanguage();
-    }
-
-
-    /**
-     * @param string $language
-     * @param bool $setLanguageCookie
-     * @return void
-     *
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::setLanguage()
-     * instead.
-     */
-    public function setLanguage($language, $setLanguageCookie = true)
-    {
-        $this->translator->getLanguage()->setLanguage($language, $setLanguageCookie);
-    }
-
-
-    /**
-     * @return null|string
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::getLanguageCookie()
-     * instead.
-     */
-    public static function getLanguageCookie()
-    {
-        return Language::getLanguageCookie();
-    }
-
-
-    /**
-     * @param string $language
-     * @return void
-     *
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::setLanguageCookie()
-     * instead.
-     */
-    public static function setLanguageCookie($language)
-    {
-        Language::setLanguageCookie($language);
-    }
-
-
     /**
      * Wraps Language->getLanguageList
      *
@@ -763,82 +676,6 @@ class Template extends Response
     }
 
 
-    /**
-     * @param string $tag
-     *
-     * @return array|null
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Translate::getTag() instead.
-     */
-    public function getTag($tag)
-    {
-        return $this->translator->getTag($tag);
-    }
-
-
-    /**
-     * Temporary wrapper for \SimpleSAML\Locale\Translate::getPreferredTranslation().
-     *
-     * @deprecated This method will be removed in SSP 2.0. Please use
-     * \SimpleSAML\Locale\Translate::getPreferredTranslation() instead.
-     *
-     * @param array $translations
-     * @return string
-     */
-    public function getTranslation($translations)
-    {
-        return $this->translator->getPreferredTranslation($translations);
-    }
-
-
-    /**
-     * Includes a file relative to the template base directory.
-     * This function can be used to include headers and footers etc.
-     *
-     * @deprecated This function will be removed in SSP 2.0. Use Twig-templates instead
-     * @param string $file
-     * @return void
-     */
-    private function includeAtTemplateBase(string $file)
-    {
-        $data = $this->data;
-
-        $filename = $this->findTemplatePath($file);
-
-        include($filename);
-    }
-
-
-    /**
-     * Wraps Translate->includeInlineTranslation()
-     *
-     * @see \SimpleSAML\Locale\Translate::includeInlineTranslation()
-     * @deprecated This method will be removed in SSP 2.0. Please use
-     * \SimpleSAML\Locale\Translate::includeInlineTranslation() instead.
-     *
-     * @param string $tag
-     * @param string $translation
-     * @return void
-     */
-    public function includeInlineTranslation($tag, $translation)
-    {
-        $this->translator->includeInlineTranslation($tag, $translation);
-    }
-
-
-    /**
-     * @param string $file
-     * @param \SimpleSAML\Configuration|null $otherConfig
-     * @return void
-     *
-     * @deprecated This method will be removed in SSP 2.0. Please use
-     * \SimpleSAML\Locale\Translate::includeLanguageFile() instead.
-     */
-    public function includeLanguageFile($file, $otherConfig = null)
-    {
-        $this->translator->includeLanguageFile($file, $otherConfig);
-    }
-
-
     /**
      * Wrap Language->isLanguageRTL
      *
@@ -848,63 +685,4 @@ class Template extends Response
     {
         return $this->translator->getLanguage()->isLanguageRTL();
     }
-
-
-    /**
-     * Merge two translation arrays.
-     *
-     * @param array $def The array holding string definitions.
-     * @param array $lang The array holding translations for every string.
-     *
-     * @return array The recursive merge of both arrays.
-     * @deprecated This method will be removed in SimpleSAMLphp 2.0. Please use array_merge_recursive() instead.
-     */
-    public static function lang_merge($def, $lang)
-    {
-        foreach ($def as $key => $value) {
-            if (array_key_exists($key, $lang)) {
-                $def[$key] = array_merge($value, $lang[$key]);
-            }
-        }
-        return $def;
-    }
-
-
-    /**
-     * Behave like Language->noop to mark a tag for translation but actually do it later.
-     *
-     * @see \SimpleSAML\Locale\Translate::noop()
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Translate::noop() instead.
-     *
-     * @param string $tag
-     * @return string
-     */
-    public static function noop($tag)
-    {
-        return $tag;
-    }
-
-
-    /**
-     * Wrap Language->t to translate tag into the current language, with a fallback to english.
-     *
-     * @see \SimpleSAML\Locale\Translate::t()
-     * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Translate::t() instead.
-     *
-     * @param string $tag
-     * @param array $replacements
-     * @param bool $fallbackdefault
-     * @param array $oldreplacements
-     * @param bool $striptags
-     * @return string|null
-     */
-    public function t(
-        $tag,
-        $replacements = [],
-        $fallbackdefault = true,
-        $oldreplacements = [],
-        $striptags = false
-    ) {
-        return $this->translator->t($tag, $replacements, $fallbackdefault, $oldreplacements, $striptags);
-    }
 }
diff --git a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
deleted file mode 100644
index ee16db4c3c318a6f752839fe9ea0e48c845f52d1..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * The Shibboleth 1.3 Authentication Request. Not part of SAML 1.1,
- * but an extension using query paramters no XML.
- *
- * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
- * @package SimpleSAMLphp
- * @deprecated This class will be removed in a future release
- */
-
-namespace SimpleSAML\XML\Shib13;
-
-use SimpleSAML\Metadata\MetaDataStorageHandler;
-
-class AuthnRequest
-{
-    /** @var string|null */
-    private $issuer = null;
-
-    /** @var string|null */
-    private $relayState = null;
-
-
-    /**
-     * @param string|null $relayState
-     * @return void
-     */
-    public function setRelayState($relayState)
-    {
-        $this->relayState = $relayState;
-    }
-    
-
-    /**
-     * @return string|null
-     */
-    public function getRelayState()
-    {
-        return $this->relayState;
-    }
-    
-
-    /**
-     * @param string|null $issuer
-     * @return void
-     */
-    public function setIssuer($issuer)
-    {
-        $this->issuer = $issuer;
-    }
-
-
-    /**
-     * @return string|null
-     */
-    public function getIssuer()
-    {
-        return $this->issuer;
-    }
-
-
-    /**
-     * @param string $destination
-     * @param string $shire
-     * @return string
-     */
-    public function createRedirect($destination, $shire)
-    {
-        $metadata = MetaDataStorageHandler::getMetadataHandler();
-        $idpmetadata = $metadata->getMetaDataConfig($destination, 'shib13-idp-remote');
-
-        $desturl = $idpmetadata->getDefaultEndpoint(
-            'SingleSignOnService',
-            ['urn:mace:shibboleth:1.0:profiles:AuthnRequest']
-        );
-        $desturl = $desturl['Location'];
-
-        $target = $this->getRelayState();
-        $issuer = $this->getIssuer();
-        assert($issuer !== null);
-
-        $url = $desturl . '?' .
-            'providerId=' . urlencode($issuer) .
-            '&shire=' . urlencode($shire) .
-            (isset($target) ? '&target=' . urlencode($target) : '');
-        return $url;
-    }
-}
diff --git a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
deleted file mode 100644
index 0d666a97fc237d2422d03ec6f75cab5fc8dbdcda..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
+++ /dev/null
@@ -1,528 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * A Shibboleth 1.3 authentication response.
- *
- * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
- * @package SimpleSAMLphp
- * @deprecated This class will be removed in a future release
- */
-
-namespace SimpleSAML\XML\Shib13;
-
-use DOMDocument;
-use DOMNode;
-use DOMNodeList;
-use DOMXpath;
-use SAML2\DOMDocumentFactory;
-use SimpleSAML\Configuration;
-use SimpleSAML\Error;
-use SimpleSAML\Metadata\MetaDataStorageHandler;
-use SimpleSAML\Utils;
-use SimpleSAML\XML\Validator;
-use Webmozart\Assert\Assert;
-
-class AuthnResponse
-{
-    /**
-     * @var \SimpleSAML\XML\Validator|null This variable contains an XML validator for this message.
-     */
-    private $validator = null;
-
-
-    /**
-     * @var bool Whether this response was validated by some external means (e.g. SSL).
-     */
-    private $messageValidated = false;
-
-
-    /** @var string */
-    const SHIB_PROTOCOL_NS = 'urn:oasis:names:tc:SAML:1.0:protocol';
-
-
-    /** @var string */
-    const SHIB_ASSERT_NS = 'urn:oasis:names:tc:SAML:1.0:assertion';
-
-
-    /**
-     * @var \DOMDocument|null The DOMDocument which represents this message.
-     */
-    private $dom = null;
-
-    /**
-     * @var string|null The relaystate which is associated with this response.
-     */
-    private $relayState = null;
-
-
-    /**
-     * Set whether this message was validated externally.
-     *
-     * @param bool $messageValidated  TRUE if the message is already validated, FALSE if not.
-     * @return void
-     */
-    public function setMessageValidated($messageValidated)
-    {
-        Assert::boolean($messageValidated);
-
-        $this->messageValidated = $messageValidated;
-    }
-
-
-    /**
-     * @param string $xml
-     * @throws \Exception
-     * @return void
-     */
-    public function setXML($xml)
-    {
-        Assert::string($xml);
-
-        try {
-            $this->dom = DOMDocumentFactory::fromString(str_replace("\r", "", $xml));
-        } catch (\Exception $e) {
-            throw new \Exception('Unable to parse AuthnResponse XML.');
-        }
-    }
-
-
-    /**
-     * @param string|null $relayState
-     * @return void
-     */
-    public function setRelayState($relayState)
-    {
-        $this->relayState = $relayState;
-    }
-
-
-    /**
-     * @return string|null
-     */
-    public function getRelayState()
-    {
-        return $this->relayState;
-    }
-
-
-    /**
-     * @throws \SimpleSAML\Error\Exception
-     * @return bool
-     */
-    public function validate()
-    {
-        Assert::isInstanceOf($this->dom, DOMDocument::class);
-
-        if ($this->messageValidated) {
-            // This message was validated externally
-            return true;
-        }
-
-        // Validate the signature
-        /** @var \DOMDocument $this->dom */
-        $this->validator = new Validator($this->dom, ['ResponseID', 'AssertionID']);
-
-        // Get the issuer of the response
-        $issuer = $this->getIssuer();
-
-        // Get the metadata of the issuer
-        $metadata = MetaDataStorageHandler::getMetadataHandler();
-        $md = $metadata->getMetaDataConfig($issuer, 'shib13-idp-remote');
-
-        $publicKeys = $md->getPublicKeys('signing');
-        if (!empty($publicKeys)) {
-            $certFingerprints = [];
-            foreach ($publicKeys as $key) {
-                if ($key['type'] !== 'X509Certificate') {
-                    continue;
-                }
-                $certFingerprints[] = sha1(base64_decode($key['X509Certificate']));
-            }
-            $this->validator->validateFingerprint($certFingerprints);
-        } elseif ($md->hasValue('certFingerprint')) {
-            $certFingerprints = $md->getArrayizeString('certFingerprint');
-
-            // Validate the fingerprint
-            $this->validator->validateFingerprint($certFingerprints);
-        } elseif ($md->hasValue('caFile')) {
-            // Validate against CA
-            $this->validator->validateCA(Utils\Config::getCertPath($md->getString('caFile')));
-        } else {
-            throw new Error\Exception(
-                'Missing certificate in Shibboleth 1.3 IdP Remote metadata for identity provider [' . $issuer . '].'
-            );
-        }
-
-        return true;
-    }
-
-
-    /**
-     * Checks if the given node is validated by the signature on this response.
-     *
-     * @param \DOMElement|\SimpleXMLElement $node Node to be validated.
-     * @return bool TRUE if the node is validated or FALSE if not.
-     */
-    private function isNodeValidated($node): bool
-    {
-        if ($this->messageValidated) {
-            // This message was validated externally
-            return true;
-        }
-
-        if ($this->validator === null) {
-            return false;
-        }
-
-        // Convert the node to a DOM node if it is an element from SimpleXML
-        if ($node instanceof \SimpleXMLElement) {
-            $node = dom_import_simplexml($node);
-        }
-
-        Assert::isInstanceOf($node, DOMNode::class);
-
-        return $this->validator->isNodeValidated($node);
-    }
-
-
-    /**
-     * This function runs an xPath query on this authentication response.
-     *
-     * @param string $query   The query which should be run.
-     * @param \DOMNode $node  The node which this query is relative to. If this node is NULL (the default)
-     *                        then the query will be relative to the root of the response.
-     * @return \DOMNodeList
-     */
-    private function doXPathQuery(string $query, DOMNode $node = null): DOMNodeList
-    {
-        Assert::isInstanceOf($this->dom, DOMDocument::class);
-        if ($node === null) {
-            /** @var \DOMDocument $this->dom */
-            $node = $this->dom->documentElement;
-        }
-
-        Assert::isInstanceOf($node, DOMNode::class);
-
-        /** @var \DOMDocument $this->dom */
-        $xPath = new DOMXpath($this->dom);
-        $xPath->registerNamespace('shibp', self::SHIB_PROTOCOL_NS);
-        $xPath->registerNamespace('shib', self::SHIB_ASSERT_NS);
-
-        return $xPath->query($query, $node);
-    }
-
-
-    /**
-     * Retrieve the session index of this response.
-     *
-     * @return string|null  The session index of this response.
-     */
-    public function getSessionIndex()
-    {
-        Assert::isInstanceOf($this->dom, DOMDocument::class);
-
-        $query = '/shibp:Response/shib:Assertion/shib:AuthnStatement';
-        $nodelist = $this->doXPathQuery($query);
-        if ($node = $nodelist->item(0)) {
-            return $node->getAttribute('SessionIndex');
-        }
-
-        return null;
-    }
-
-    
-    /**
-     * @throws \Exception
-     * @return array
-     */
-    public function getAttributes()
-    {
-        $metadata = MetaDataStorageHandler::getMetadataHandler();
-        $md = $metadata->getMetaData($this->getIssuer(), 'shib13-idp-remote');
-        $base64 = isset($md['base64attributes']) ? $md['base64attributes'] : false;
-
-        if (!($this->dom instanceof DOMDocument)) {
-            return [];
-        }
-
-        $attributes = [];
-
-        $assertions = $this->doXPathQuery('/shibp:Response/shib:Assertion');
-
-        foreach ($assertions as $assertion) {
-            if (!$this->isNodeValidated($assertion)) {
-                throw new \Exception('Shib13 AuthnResponse contained an unsigned assertion.');
-            }
-
-            $conditions = $this->doXPathQuery('shib:Conditions', $assertion);
-            if ($conditions->length > 0) {
-                $condition = $conditions->item(0);
-
-                $start = $condition->getAttribute('NotBefore');
-                $end = $condition->getAttribute('NotOnOrAfter');
-
-                if ($start && $end) {
-                    if (!self::checkDateConditions($start, $end)) {
-                        error_log('Date check failed ... (from ' . $start . ' to ' . $end . ')');
-                        continue;
-                    }
-                }
-            }
-
-            $attribute_nodes = $this->doXPathQuery(
-                'shib:AttributeStatement/shib:Attribute/shib:AttributeValue',
-                $assertion
-            );
-
-            foreach ($attribute_nodes as $attribute) {
-                /** @var \DOMElement $attribute */
-
-                $value = $attribute->textContent;
-                /** @var \DOMElement $parentNode */
-                $parentNode = $attribute->parentNode;
-                $name = $parentNode->getAttribute('AttributeName');
-
-                if ($attribute->hasAttribute('Scope')) {
-                    $scopePart = '@' . $attribute->getAttribute('Scope');
-                } else {
-                    $scopePart = '';
-                }
-
-                if (empty($name)) {
-                    throw new \Exception('Shib13 Attribute node without an AttributeName.');
-                }
-
-                if (!array_key_exists($name, $attributes)) {
-                    $attributes[$name] = [];
-                }
-
-                if ($base64) {
-                    $encodedvalues = explode('_', $value);
-                    foreach ($encodedvalues as $v) {
-                        $attributes[$name][] = base64_decode($v) . $scopePart;
-                    }
-                } else {
-                    $attributes[$name][] = $value . $scopePart;
-                }
-            }
-        }
-
-        return $attributes;
-    }
-
-    
-    /**
-     * @throws \Exception
-     * @return string
-     */
-    public function getIssuer()
-    {
-        $query = '/shibp:Response/shib:Assertion/@Issuer';
-        $nodelist = $this->doXPathQuery($query);
-
-        if ($attr = $nodelist->item(0)) {
-            return $attr->value;
-        } else {
-            throw new \Exception('Could not find Issuer field in Authentication response');
-        }
-    }
-
-
-    /**
-     * @return array
-     */
-    public function getNameID()
-    {
-        $nameID = [];
-
-        $query = '/shibp:Response/shib:Assertion/shib:AuthenticationStatement/shib:Subject/shib:NameIdentifier';
-        $nodelist = $this->doXPathQuery($query);
-
-        if ($node = $nodelist->item(0)) {
-            $nameID["Value"] = $node->nodeValue;
-            $nameID["Format"] = $node->getAttribute('Format');
-        }
-
-        return $nameID;
-    }
-
-
-    /**
-     * Build a authentication response.
-     *
-     * @param \SimpleSAML\Configuration $idp Metadata for the IdP the response is sent from.
-     * @param \SimpleSAML\Configuration $sp Metadata for the SP the response is sent to.
-     * @param string $shire The endpoint on the SP the response is sent to.
-     * @param array|null $attributes The attributes which should be included in the response.
-     * @return string The response.
-     */
-    public function generate(Configuration $idp, Configuration $sp, $shire, $attributes)
-    {
-        Assert::string($shire);
-        Assert::nullOrArray($attributes);
-
-        if ($sp->hasValue('scopedattributes')) {
-            $scopedAttributes = $sp->getArray('scopedattributes');
-        } elseif ($idp->hasValue('scopedattributes')) {
-            $scopedAttributes = $idp->getArray('scopedattributes');
-        } else {
-            $scopedAttributes = [];
-        }
-
-        $id = Utils\Random::generateID();
-        
-        $issueInstant = Utils\Time::generateTimestamp();
-        
-        // 30 seconds timeskew back in time to allow differing clocks
-        $notBefore = Utils\Time::generateTimestamp(time() - 30);
-        
-        
-        $assertionExpire = Utils\Time::generateTimestamp(time() + 300); // 5 minutes
-        $assertionid = Utils\Random::generateID();
-
-        $spEntityId = $sp->getString('entityid');
-
-        $audience = $sp->getString('audience', $spEntityId);
-        $base64 = $sp->getBoolean('base64attributes', false);
-
-        $namequalifier = $sp->getString('NameQualifier', $spEntityId);
-        $nameid = Utils\Random::generateID();
-        $subjectNode =
-            '<Subject>' .
-            '<NameIdentifier' .
-            ' Format="urn:mace:shibboleth:1.0:nameIdentifier"' .
-            ' NameQualifier="' . htmlspecialchars($namequalifier) . '"' .
-            '>' .
-            htmlspecialchars($nameid) .
-            '</NameIdentifier>' .
-            '<SubjectConfirmation>' .
-            '<ConfirmationMethod>' .
-            'urn:oasis:names:tc:SAML:1.0:cm:bearer' .
-            '</ConfirmationMethod>' .
-            '</SubjectConfirmation>' .
-            '</Subject>';
-
-        $encodedattributes = '';
-
-        if (is_array($attributes)) {
-            $encodedattributes .= '<AttributeStatement>';
-            $encodedattributes .= $subjectNode;
-
-            foreach ($attributes as $name => $value) {
-                $encodedattributes .= $this->encAttribute($name, $value, $base64, $scopedAttributes);
-            }
-
-            $encodedattributes .= '</AttributeStatement>';
-        }
-
-        /*
-         * The SAML 1.1 response message
-         */
-        $response = '<Response xmlns="urn:oasis:names:tc:SAML:1.0:protocol"
-    xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
-    xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" IssueInstant="' . $issueInstant . '"
-    MajorVersion="1" MinorVersion="1"
-    Recipient="' . htmlspecialchars($shire) . '" ResponseID="' . $id . '">
-    <Status>
-        <StatusCode Value="samlp:Success" />
-    </Status>
-    <Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion"
-        AssertionID="' . $assertionid . '" IssueInstant="' . $issueInstant . '"
-        Issuer="' . htmlspecialchars($idp->getString('entityid')) . '" MajorVersion="1" MinorVersion="1">
-        <Conditions NotBefore="' . $notBefore . '" NotOnOrAfter="' . $assertionExpire . '">
-            <AudienceRestrictionCondition>
-                <Audience>' . htmlspecialchars($audience) . '</Audience>
-            </AudienceRestrictionCondition>
-        </Conditions>
-        <AuthenticationStatement AuthenticationInstant="' . $issueInstant . '"
-            AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:unspecified">' .
-            $subjectNode . '
-        </AuthenticationStatement>
-        ' . $encodedattributes . '
-    </Assertion>
-</Response>';
-
-        return $response;
-    }
-
-
-    /**
-     * Format a shib13 attribute.
-     *
-     * @param string $name  Name of the attribute.
-     * @param array $values  Values of the attribute (as an array of strings).
-     * @param bool $base64  Whether the attriubte values should be base64-encoded.
-     * @param array $scopedAttributes  Array of attributes names which are scoped.
-     * @return string  The attribute encoded as an XML-string.
-     */
-    private function encAttribute(string $name, array $values, bool $base64, array $scopedAttributes): string
-    {
-        if (in_array($name, $scopedAttributes, true)) {
-            $scoped = true;
-        } else {
-            $scoped = false;
-        }
-
-        $attr = '<Attribute AttributeName="' . htmlspecialchars($name) .
-            '" AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri">';
-        foreach ($values as $value) {
-            $scopePart = '';
-            if ($scoped) {
-                $tmp = explode('@', $value, 2);
-                if (count($tmp) === 2) {
-                    $value = $tmp[0];
-                    $scopePart = ' Scope="' . htmlspecialchars($tmp[1]) . '"';
-                }
-            }
-
-            if ($base64) {
-                $value = base64_encode($value);
-            }
-
-            $attr .= '<AttributeValue' . $scopePart . '>' . htmlspecialchars($value) . '</AttributeValue>';
-        }
-        $attr .= '</Attribute>';
-
-        return $attr;
-    }
-
-    /**
-     * Check if we are currently between the given date & time conditions.
-     *
-     * Note that this function allows a 10-minute leap from the initial time as marked by $start.
-     *
-     * @param string|null $start A SAML2 timestamp marking the start of the period to check. Defaults to null, in which
-     *     case there's no limitations in the past.
-     * @param string|null $end A SAML2 timestamp marking the end of the period to check. Defaults to null, in which
-     *     case there's no limitations in the future.
-     *
-     * @return bool True if the current time belongs to the period specified by $start and $end. False otherwise.
-     *
-     * @see \SAML2\Utils::xsDateTimeToTimestamp.
-     *
-     * @author Andreas Solberg, UNINETT AS <andreas.solberg@uninett.no>
-     * @author Olav Morken, UNINETT AS <olav.morken@uninett.no>
-     */
-    protected static function checkDateConditions($start = null, $end = null)
-    {
-        $currentTime = time();
-
-        if (!empty($start)) {
-            $startTime = \SAML2\Utils::xsDateTimeToTimestamp($start);
-            // allow for a 10 minute difference in time
-            if (($startTime < 0) || (($startTime - 600) > $currentTime)) {
-                return false;
-            }
-        }
-        if (!empty($end)) {
-            $endTime = \SAML2\Utils::xsDateTimeToTimestamp($end);
-            if (($endTime < 0) || ($endTime <= $currentTime)) {
-                return false;
-            }
-        }
-        return true;
-    }
-}
diff --git a/lib/SimpleSAML/XML/Validator.php b/lib/SimpleSAML/XML/Validator.php
index 33c17bf234b6b58d69312a0c7223db317b6bca1f..f2f0ac1ab4535330dd9cc42c4e4ac19daf904c7c 100644
--- a/lib/SimpleSAML/XML/Validator.php
+++ b/lib/SimpleSAML/XML/Validator.php
@@ -108,24 +108,6 @@ class Validator
             if (!XMLSecEnc::staticLocateKeyInfo($objKey, $signatureElement)) {
                 throw new \Exception('Error finding key data for XML signature validation.');
             }
-
-            if ($publickey !== false) {
-                /* $publickey is set, and should therefore contain one or more fingerprints.
-                 * Check that the response contains a certificate with a matching
-                 * fingerprint.
-                 */
-                Assert::isArray($publickey['certFingerprint']);
-
-                $certificate = $objKey->getX509Certificate();
-                if ($certificate === null) {
-                    // Wasn't signed with an X509 certificate
-                    throw new \Exception('Message wasn\'t signed with an X509 certificate,' .
-                        ' and no public key was provided in the metadata.');
-                }
-
-                self::validateCertificateFingerprint($certificate, $publickey['certFingerprint']);
-                // Key OK
-            }
         }
 
         // Check the signature
@@ -155,116 +137,6 @@ class Validator
     }
 
 
-    /**
-     * Calculates the fingerprint of an X509 certificate.
-     *
-     * @param string $x509cert  The certificate as a base64-encoded string. The string may optionally
-     *                          be framed with '-----BEGIN CERTIFICATE-----' and '-----END CERTIFICATE-----'.
-     * @return string|null  The fingerprint as a 40-character lowercase hexadecimal number. NULL is returned if the
-     *                 argument isn't an X509 certificate.
-     */
-    private static function calculateX509Fingerprint(string $x509cert)
-    {
-        $lines = explode("\n", $x509cert);
-
-        $data = '';
-
-        foreach ($lines as $line) {
-            // Remove '\r' from end of line if present
-            $line = rtrim($line);
-            if ($line === '-----BEGIN CERTIFICATE-----') {
-                // Delete junk from before the certificate
-                $data = '';
-            } elseif ($line === '-----END CERTIFICATE-----') {
-                // Ignore data after the certificate
-                break;
-            } elseif ($line === '-----BEGIN PUBLIC KEY-----') {
-                // This isn't an X509 certificate
-                return null;
-            } else {
-                // Append the current line to the certificate data
-                $data .= $line;
-            }
-        }
-
-        /* $data now contains the certificate as a base64-encoded string. The fingerprint
-         * of the certificate is the sha1-hash of the certificate.
-         */
-        return strtolower(sha1(base64_decode($data)));
-    }
-
-
-    /**
-     * Helper function for validating the fingerprint.
-     *
-     * Checks the fingerprint of a certificate against an array of valid fingerprints.
-     * Will throw an exception if none of the fingerprints matches.
-     *
-     * @param string $certificate The X509 certificate we should validate.
-     * @param array $fingerprints The valid fingerprints.
-     * @throws \Exception
-     * @return void
-     */
-    private static function validateCertificateFingerprint(string $certificate, array $fingerprints)
-    {
-        $certFingerprint = self::calculateX509Fingerprint($certificate);
-        if ($certFingerprint === null) {
-            // Couldn't calculate fingerprint from X509 certificate. Should not happen.
-            throw new \Exception('Unable to calculate fingerprint from X509' .
-                ' certificate. Maybe it isn\'t an X509 certificate?');
-        }
-
-        foreach ($fingerprints as $fp) {
-            Assert::string($fp);
-
-            if ($fp === $certFingerprint) {
-                // The fingerprints matched
-                return;
-            }
-        }
-
-        // None of the fingerprints matched. Throw an exception describing the error.
-        throw new \Exception('Invalid fingerprint of certificate. Expected one of [' .
-            implode('], [', $fingerprints) . '], but got [' . $certFingerprint . ']');
-    }
-
-
-    /**
-     * Validate the fingerprint of the certificate which was used to sign this document.
-     *
-     * This function accepts either a string, or an array of strings as a parameter. If this
-     * is an array, then any string (certificate) in the array can match. If this is a string,
-     * then that string must match,
-     *
-     * @param string|array $fingerprints  The fingerprints which should match. This can be a single string,
-     *                                    or an array of fingerprints.
-     * @throws \Exception
-     * @return void
-     */
-    public function validateFingerprint($fingerprints)
-    {
-        Assert::true(is_string($fingerprints) || is_array($fingerprints));
-
-        if ($this->x509Certificate === null) {
-            throw new \Exception('Key used to sign the message was not an X509 certificate.');
-        }
-
-        if (!is_array($fingerprints)) {
-            $fingerprints = [$fingerprints];
-        }
-
-        // Normalize the fingerprints
-        foreach ($fingerprints as &$fp) {
-            Assert::string($fp);
-
-            // Make sure that the fingerprint is in the correct format
-            $fp = strtolower(str_replace(":", "", $fp));
-        }
-
-        self::validateCertificateFingerprint($this->x509Certificate, $fingerprints);
-    }
-
-
     /**
      * This function checks if the given XML node was signed.
      *
@@ -291,153 +163,4 @@ class Validator
          */
         return false;
     }
-
-
-    /**
-     * Validate the certificate used to sign the XML against a CA file.
-     *
-     * This function throws an exception if unable to validate against the given CA file.
-     *
-     * @param string $caFile  File with trusted certificates, in PEM-format.
-     * @throws \Exception
-     * @return void
-     */
-    public function validateCA($caFile)
-    {
-        Assert::string($caFile);
-
-        if ($this->x509Certificate === null) {
-            throw new \Exception('Key used to sign the message was not an X509 certificate.');
-        }
-
-        self::validateCertificate($this->x509Certificate, $caFile);
-    }
-
-    /**
-     * Validate a certificate against a CA file, by using the builtin
-     * openssl_x509_checkpurpose function
-     *
-     * @param string $certificate  The certificate, in PEM format.
-     * @param string $caFile  File with trusted certificates, in PEM-format.
-     * @return boolean|string TRUE on success, or a string with error messages if it failed.
-     * @deprecated
-     */
-    private static function validateCABuiltIn(string $certificate, string $caFile)
-    {
-        // Clear openssl errors
-        while (openssl_error_string() !== false) {
-        }
-
-        $res = openssl_x509_checkpurpose($certificate, X509_PURPOSE_ANY, [$caFile]);
-
-        $errors = '';
-        // Log errors
-        while (($error = openssl_error_string()) !== false) {
-            $errors .= ' [' . $error . ']';
-        }
-
-        if ($res !== true) {
-            return $errors;
-        }
-
-        return true;
-    }
-
-
-    /**
-     * Validate the certificate used to sign the XML against a CA file, by using the "openssl verify" command.
-     *
-     * This function uses the openssl verify command to verify a certificate, to work around limitations
-     * on the openssl_x509_checkpurpose function. That function will not work on certificates without a purpose
-     * set.
-     *
-     * @param string $certificate The certificate, in PEM format.
-     * @param string $caFile File with trusted certificates, in PEM-format.
-     * @return bool|string TRUE on success, a string with error messages on failure.
-     * @throws \Exception
-     * @deprecated
-     */
-    private static function validateCAExec(string $certificate, string $caFile)
-    {
-        $command = [
-            'openssl', 'verify',
-            '-CAfile', $caFile,
-            '-purpose', 'any',
-        ];
-
-        $cmdline = '';
-        foreach ($command as $c) {
-            $cmdline .= escapeshellarg($c) . ' ';
-        }
-
-        $cmdline .= '2>&1';
-        $descSpec = [
-            0 => ['pipe', 'r'],
-            1 => ['pipe', 'w'],
-        ];
-        $process = proc_open($cmdline, $descSpec, $pipes);
-        if (!is_resource($process)) {
-            throw new \Exception('Failed to execute verification command: ' . $cmdline);
-        }
-
-        if (fwrite($pipes[0], $certificate) === false) {
-            throw new \Exception('Failed to write certificate for verification.');
-        }
-        fclose($pipes[0]);
-
-        $out = '';
-        while (!feof($pipes[1])) {
-            $line = trim(fgets($pipes[1]));
-            if (strlen($line) > 0) {
-                $out .= ' [' . $line . ']';
-            }
-        }
-        fclose($pipes[1]);
-
-        $status = proc_close($process);
-        if ($status !== 0 || $out !== ' [stdin: OK]') {
-            return $out;
-        }
-
-        return true;
-    }
-
-
-    /**
-     * Validate the certificate used to sign the XML against a CA file.
-     *
-     * This function throws an exception if unable to validate against the given CA file.
-     *
-     * @param string $certificate The certificate, in PEM format.
-     * @param string $caFile File with trusted certificates, in PEM-format.
-     * @throws \Exception
-     * @return void
-     * @deprecated
-     */
-    public static function validateCertificate($certificate, $caFile)
-    {
-        Assert::string($certificate);
-        Assert::string($caFile);
-
-        if (!file_exists($caFile)) {
-            throw new \Exception('Could not load CA file: ' . $caFile);
-        }
-
-        Logger::debug('Validating certificate against CA file: ' . var_export($caFile, true));
-
-        $resBuiltin = self::validateCABuiltIn($certificate, $caFile);
-        if ($resBuiltin !== true) {
-            Logger::debug('Failed to validate with internal function: ' . var_export($resBuiltin, true));
-
-            $resExternal = self::validateCAExec($certificate, $caFile);
-            if ($resExternal !== true) {
-                Logger::debug('Failed to validate with external function: ' . var_export($resExternal, true));
-                throw new \Exception('Could not verify certificate against CA file "' .
-                    $caFile . '". Internal result:' . var_export($resBuiltin, true) .
-                    ' External result:' . var_export($resExternal, true));
-            }
-        }
-
-        Logger::debug('Successfully validated certificate.');
-    }
 }
diff --git a/lib/_autoload_modules.php b/lib/_autoload_modules.php
index 3d7ca91848c91c77f886d2e96a9db0ec7bbe3607..621edabf0ccbfe3e2be4fbebfb263d8a99d3ee01 100644
--- a/lib/_autoload_modules.php
+++ b/lib/_autoload_modules.php
@@ -10,134 +10,6 @@ declare(strict_types=1);
  * @package SimpleSAMLphp
  */
 
-/**
- * This temporary autoloader allows loading classes with their old-style names (SimpleSAML_Path_Something) even if they
- * have been migrated to namespaces, by registering an alias for the new class. If the class has not yet been migrated,
- * the autoloader will then try to load it.
- *
- * @param string $class The full name of the class using underscores to separate the elements of the path, and starting
- * with 'SimpleSAML_'.
- * @deprecated This function will be removed in SSP 2.0.
- */
-function temporaryLoader(string $class)
-{
-    // handle the upgrade to the latest version of XMLSecLibs using namespaces
-    if (strstr($class, 'XMLSec') && !strstr($class, '\\RobRichards\\XMLSecLibs\\')) {
-        $new = '\\RobRichards\\XMLSecLibs\\' . $class;
-        if (class_exists($new, true)) {
-            class_alias($new, $class);
-            SimpleSAML\Logger::warning("The class '$class' is now using namespaces, please use '$new'.");
-            return;
-        }
-    }
-
-    if (!strstr($class, 'SimpleSAML_')) {
-        return; // not a valid class name for old classes
-    }
-    $original = $class;
-
-    // list of classes that have been renamed or moved
-    $renamed = [
-        'SimpleSAML_Metadata_MetaDataStorageHandlerMDX' => 'SimpleSAML_Metadata_Sources_MDQ',
-        'SimpleSAML_Logger_LoggingHandlerSyslog' => 'SimpleSAML_Logger_SyslogLoggingHandler',
-        'SimpleSAML_Logger_LoggingHandlerErrorLog' => 'SimpleSAML_Logger_ErrorLogLoggingHandler',
-        'SimpleSAML_Logger_LoggingHandlerFile' => 'SimpleSAML_Logger_FileLoggingHandler',
-        'SimpleSAML_Logger_LoggingHandler' => 'SimpleSAML_Logger_LoggingHandlerInterface',
-        'SimpleSAML_IdP_LogoutHandler' => 'SimpleSAML_IdP_LogoutHandlerInterface',
-        'SimpleSAML_IdP_LogoutIFrame' => 'SimpleSAML_IdP_IFrameLogoutHandler',
-        'SimpleSAML_IdP_LogoutTraditional' => 'SimpleSAML_IdP_TraditionalLogoutHandler',
-        'SimpleSAML_Auth_Default' => 'SimpleSAML_Auth_DefaultAuth',
-        'SimpleSAML_Auth_LDAP' => 'SimpleSAML_Module_ldap_Auth_Ldap',
-    ];
-    if (array_key_exists($class, $renamed)) {
-        // the class has been renamed, try to load it and create an alias
-        $class = $renamed[$class];
-    }
-
-    // try to load it from the corresponding file
-    $path = explode('_', $class);
-    $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . join(DIRECTORY_SEPARATOR, $path) . '.php';
-    if (file_exists($file)) {
-        require_once $file;
-    }
-
-    // it exists, so it's not yet migrated to namespaces
-    if (class_exists($class, false) || interface_exists($class, false)) {
-        return;
-    }
-
-    // it didn't exist, try to see if it was migrated to namespaces
-    $new = join('\\', $path);
-    if (class_exists($new, false) || interface_exists($new, false)) {
-        // do not try to autoload it if it doesn't exist! It should!
-        class_alias($new, $original);
-        SimpleSAML\Logger::warning("The class or interface '$original' is now using namespaces, please use '$new'.");
-    }
-}
-
-
-/**
- * Autoload function for SimpleSAMLphp modules following PSR-0.
- *
- * @param string $className Name of the class.
- *
- * @deprecated This method will be removed in SSP 2.0.
- *
- * TODO: this autoloader should be removed once everything has been migrated to namespaces.
- */
-function sspmodAutoloadPSR0(string $className)
-{
-    $modulePrefixLength = strlen('sspmod_');
-    $classPrefix = substr($className, 0, $modulePrefixLength);
-    if ($classPrefix !== 'sspmod_') {
-        return;
-    }
-
-    // list of classes that have been renamed or moved
-    $renamed = [
-        'sspmod_adfs_SAML2_XML_fed_Const' => [
-            'module' => 'adfs',
-            'path' => ['SAML2', 'XML', 'fed', 'Constants']
-        ],
-    ];
-    if (array_key_exists($className, $renamed)) {
-        // the class has been renamed, try to load it and create an alias
-        $module = $renamed[$className]['module'];
-        $path = $renamed[$className]['path'];
-    } else {
-        $modNameEnd = strpos($className, '_', $modulePrefixLength);
-        $module = substr($className, $modulePrefixLength, $modNameEnd - $modulePrefixLength);
-        $path = explode('_', substr($className, $modNameEnd + 1));
-    }
-
-    if (!\SimpleSAML\Module::isModuleEnabled($module)) {
-        return;
-    }
-
-    $file = \SimpleSAML\Module::getModuleDir($module) . '/lib/' . join('/', $path) . '.php';
-    if (!file_exists($file)) {
-        return;
-    }
-    require_once($file);
-
-    if (!class_exists($className, false) && !interface_exists($className, false)) {
-        // the file exists, but the class is not defined. Is it using namespaces?
-        $nspath = join('\\', $path);
-        if (
-            class_exists('SimpleSAML\\Module\\' . $module . '\\' . $nspath)
-            || interface_exists('SimpleSAML\\Module\\' . $module . '\\' . $nspath)
-        ) {
-            // the class has been migrated, create an alias and warn about it
-            \SimpleSAML\Logger::warning(
-                "The class or interface '$className' is now using namespaces, please use 'SimpleSAML\\Module\\" .
-                $module . "\\" . $nspath . "' instead."
-            );
-            class_alias("SimpleSAML\\Module\\$module\\$nspath", $className);
-        }
-    }
-}
-
-
 /**
  * Autoload function for SimpleSAMLphp modules following PSR-4.
  *
@@ -173,6 +45,4 @@ function sspmodAutoloadPSR4(string $className)
     }
 }
 
-spl_autoload_register("temporaryLoader");
-spl_autoload_register('sspmodAutoloadPSR0');
 spl_autoload_register('sspmodAutoloadPSR4');
diff --git a/locales/ar/LC_MESSAGES/messages.po b/locales/ar/LC_MESSAGES/messages.po
index 45600f9e771282ce924bc25a15b9831093219113..0017cd139fda076b671f76c4a602470b355fa03e 100644
--- a/locales/ar/LC_MESSAGES/messages.po
+++ b/locales/ar/LC_MESSAGES/messages.po
@@ -108,9 +108,6 @@ msgstr "يمكنك رؤية محتوي الرسالة طالما كنت في ح
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "مقدم الهوية استجاب بخطأ. (رمز الحالة باستجابة SAML فاشل)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "البيانات الوصفية لShib 1.3 IdP"
-
 msgid "{login:help_text}"
 msgstr ""
 "لسوء الحظ لا يمكننا التوثق من هويتك بدون اسم المستخدم و كلمة السر "
@@ -209,9 +206,6 @@ msgstr "تسجيل الخروج"
 msgid "{login:error_wrongpassword}"
 msgstr " اسم مستخدم او كلمة سر خطا"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "مقدم خدمة Shib 1.3 البعيد"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr "حصل مقدم الهوية هذا علي طلب توثيق من مقدم الخدمة لكن حدث خطا بالإجراءات "
 
@@ -432,9 +426,6 @@ msgstr "ارسل رسالة"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "خطا تم الحصول عليه من مقدم الهوية"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "البيانات الوصفية لShib 1.3 SP"
-
 msgid "{admin:metaover_intro}"
 msgstr "لإلغاء نظرة علي تفاصيل احدي وحدات SAML, اضغط علي ترويسة  الوحدة "
 
@@ -505,9 +496,6 @@ msgstr "الصفحة غير موجودة"
 msgid "{logout:logged_out_text}"
 msgstr "لقدخروج لقد قمت بالخروج"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "مقدم خدمة Shib 1.3 المستضاف"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "حمل شهادات X509 كملفات بترميز PEM"
 
@@ -534,8 +522,11 @@ msgstr ""
 " بالمشرف علي تسجيل الدخول لهذه الخدمة و قم بإرسال تقرير الخطأ أعلاه لهم "
 "أيضاً "
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "مقدم هوية Shib 1.3 المستضاف"
+msgid "{attributes:attribute_mobile}"
+msgstr "رقم الهاتف السيار"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "اللغة المفضلة"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "لم تقدم شهادة صحيحة"
@@ -567,9 +558,6 @@ msgstr "الشهادات مفقودة"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "معلومات تسجيل الخروج مفقودة"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "مقدم هوية Shib 1.3 البعيد"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "يبدو ان ترتيب SimpleSAMLphp غير صحيح"
 
diff --git a/locales/cs/LC_MESSAGES/messages.po b/locales/cs/LC_MESSAGES/messages.po
index ca82ad8b3489eafcba5f14c378726f6350bdd1ec..eb77773b99b4bc1e63c744b787c481dec3af4fef 100644
--- a/locales/cs/LC_MESSAGES/messages.po
+++ b/locales/cs/LC_MESSAGES/messages.po
@@ -112,9 +112,6 @@ msgstr "Pokud jste v debug módu, můžete vidět obsah zprávy, kterou posílá
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "Poskytovatel identity odpověděl chybou. (Stavový kód v SAML nebyl úspěšný)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Bez jména a hesla se nemůžete identifikovat. Zkuste "
@@ -212,9 +209,6 @@ msgstr "Odhlašuji..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nesprávné jméno nebo heslo."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (Remote - vzdálený)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Tento poskytovatel identity přijal požadavek od poskytovatele služby, ale"
@@ -439,9 +433,6 @@ msgstr "Posílám zprávu"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Chyba přijatá od poskytovatele identity"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr "Pro zobrazení detailu SAML entity, klikni na hlavičku entity"
 
@@ -510,9 +501,6 @@ msgstr "Stránka nenalezena."
 msgid "{logout:logged_out_text}"
 msgstr "Jste odhlášen. Děkujeme za použití této služby."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (Hosted - lokální)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Stáhněte certifikát X509 jako PEM-encoded soubor"
 
@@ -540,8 +528,11 @@ msgstr ""
 "konfiguraci. Kontaktujte administrátora této přihlašovací služby a "
 "zašlete mu tuto zprávu."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (Hosted - lokální)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobil"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Preferovaný jazyk"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Nepředložil jste validní certifikát."
@@ -575,9 +566,6 @@ msgstr "Chybí certifikát"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Odhlašovací informace ztracena"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (Remote - vzdálený)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp je špatně nakonfigurovaný"
 
diff --git a/locales/da/LC_MESSAGES/messages.po b/locales/da/LC_MESSAGES/messages.po
index fa8cbc6b15843c2959455bbdf5a7f2c82a6f4dff..d6cf3cd58915aa0354b42135332dd5b829272051 100644
--- a/locales/da/LC_MESSAGES/messages.po
+++ b/locales/da/LC_MESSAGES/messages.po
@@ -112,9 +112,6 @@ msgstr ""
 "Institutionen har sendt en fejl. (Status koden i SAML responset var ikke "
 "succes)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shibboleth 1.3 identitetsudbyders metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Desværre, uden korrekt brugernavn og kodeord kan du ikke få adgang til "
@@ -215,9 +212,6 @@ msgstr "Logger ud..."
 msgid "{login:error_wrongpassword}"
 msgstr "Forkert brugernavn eller kodeord."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shibboleth 1.3 tjenesteudbyder (remote)"
-
 msgid "{login:remember_username}"
 msgstr "Husk mit brugernavn"
 
@@ -451,9 +445,6 @@ msgstr "Sender besked"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Fejl modtaget fra institution"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shibboleth 1.3 tjenesteudbyders metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr "For at se detaljer vedrørende SAML-entiteten, klik på entitets-headeren"
 
@@ -530,9 +521,6 @@ msgstr "Siden kunne ikke findes"
 msgid "{logout:logged_out_text}"
 msgstr "Du er blevet logget ud. Tak for fordi du brugte denne tjeneste."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shibboleth 1.3 tjenesteudbyder (hosted)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Download X509 certifikaterne som PEM-indkodet filer."
 
@@ -565,8 +553,8 @@ msgstr ""
 msgid "{admin:metadata_adfs-idp}"
 msgstr "ADFS identitetsudbyder metadata"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shibboleth 1.3 identitetsudbyder (hosted)"
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Foretrukket sprog (evt. flere)"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Du har ikke valgt et gyldigt certifikat"
@@ -598,9 +586,6 @@ msgstr "Intet certifikat"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Manglende logout-oplysninger"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shibboleth 1.3 identitetsudbyder (remote)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp er tilsyneladende ikke Konfigureret korrekt"
 
diff --git a/locales/de/LC_MESSAGES/messages.po b/locales/de/LC_MESSAGES/messages.po
index a7dbdbf51ba5cdccbaae8924b52a57a58e346482..167f6fe9eeaa70d395469a575dcdfb6d87aa6f76 100644
--- a/locales/de/LC_MESSAGES/messages.po
+++ b/locales/de/LC_MESSAGES/messages.po
@@ -122,9 +122,6 @@ msgstr ""
 "Der Identity Provider gab einen Fehler zurück (Der Statuscode in der "
 "SAML-Antwort war nicht \"Erfolg\")"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadaten"
-
 msgid "{login:help_text}"
 msgstr ""
 "Tut uns leid - Ohne Nutzername und Passwort können Sie sich nicht "
@@ -228,9 +225,6 @@ msgstr "Abmeldung läuft..."
 msgid "{login:error_wrongpassword}"
 msgstr "Falscher Nutzername oder Passwort."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (entfernt)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Dieser Identity Provider hat eine Authentifizierungsanfrage von einem "
@@ -470,9 +464,6 @@ msgstr "Sende Nachricht"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Fehlermeldung vom Identity Provider erhalten"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadaten"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "Um sich Details für eine SAML-Entität anzusehen, klicken Sie auf die "
@@ -545,9 +536,6 @@ msgstr "Seite nicht gefunden"
 msgid "{logout:logged_out_text}"
 msgstr "Sie wurden abgemeldet. Danke, dass Sie diesen Dienst verwendet haben."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (gehosted)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Die X509-Zertifikate als PEM-kodierte Dateien herunterladen."
 
@@ -578,8 +566,11 @@ msgstr ""
 "Kontaktieren Sie bitte den Administrator dieses Dienstes und teilen die "
 "obige Fehlermeldung mit."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (gehosted)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobiltelefon"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Bevorzugte Sprache"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Sie haben kein gültiges Zertifikat benutzt."
@@ -619,9 +610,6 @@ msgstr "Kein Zertifikat"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Abmeldeinformation verloren gegangen"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (entfernt)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp scheint falsch konfiguriert zu sein."
 
diff --git a/locales/el/LC_MESSAGES/messages.po b/locales/el/LC_MESSAGES/messages.po
index c0bc349fc2c3e63f256c8c2c77c0557420b99db8..6c1e4cef53db91b49a7610c2b51c05035ee6a0f7 100644
--- a/locales/el/LC_MESSAGES/messages.po
+++ b/locales/el/LC_MESSAGES/messages.po
@@ -121,9 +121,6 @@ msgstr ""
 "Ο κωδικός κατάστασης που περιέχει η απάντηση του παρόχου ταυτότητας "
 "υποδεικνύει σφάλμα."
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Μεταδεδομένα Παρόχου Ταυτότητας Shib 1.3"
-
 msgid "{login:help_text}"
 msgstr ""
 "Λυπούμαστε. Χωρίς το όνομα χρήστη και τον κωδικό σας, δεν μπορείτε να "
@@ -232,9 +229,6 @@ msgstr "Γίνεται αποσύνδεση..."
 msgid "{login:error_wrongpassword}"
 msgstr "Το όνομα χρήστη ή ο κωδικός πρόσβασης είναι λάθος."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Πάροχος Υπηρεσιών Shib 1.3 (Απομακρυσμένος)"
-
 msgid "{login:remember_username}"
 msgstr "Να θυμάσαι το όνομα χρήστη"
 
@@ -492,9 +486,6 @@ msgstr "Αποστολή αρχείου"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Λήψη κωδικού σφάλματος από τον πάροχο ταυτότητας"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Μεταδεδομένα Παρόχου Υπηρεσιών Shib 1.3"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "Για να δείτε τις λεπτομέρειες για μια οντότητα SAML, κάντε κλικ στην "
@@ -574,9 +565,6 @@ msgstr "Η σελίδα δεν βρέθηκε"
 msgid "{logout:logged_out_text}"
 msgstr "Έχετε αποσυνδεθεί."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Πάροχος Υπηρεσιών Shib 1.3 (Φιλοξενούμενος)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Λήψη πιστοποιητικών X.509 σε κωδικοποίηση PEM."
 
@@ -610,8 +598,11 @@ msgstr ""
 msgid "{admin:metadata_adfs-idp}"
 msgstr "Μεταδεδομένα Παρόχου Ταυτότητας ADFS"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Πάροχος Ταυτότητας Shib 1.3 (Φιλοξενούμενος)"
+msgid "{attributes:attribute_edupersonorcid}"
+msgstr "Αναγνωριστικά ερευνητή ORCID"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Προτιμώμενη γλώσσα"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Παρουσιάστηκε σφάλμα λόγω μη έγκυρου πιστοποιητικού."
diff --git a/locales/en/LC_MESSAGES/messages.po b/locales/en/LC_MESSAGES/messages.po
index eac57388e8c9cb5b2177104124d7759d35b7ef46..f6edd046e080e86ff8075f84bb22e261afd2afe5 100644
--- a/locales/en/LC_MESSAGES/messages.po
+++ b/locales/en/LC_MESSAGES/messages.po
@@ -126,9 +126,6 @@ msgstr ""
 "The Identity Provider responded with an error. (The status code in the "
 "SAML Response was not success)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Without your username and password you cannot authenticate "
@@ -240,9 +237,6 @@ msgstr "Logging out..."
 msgid "{login:error_wrongpassword}"
 msgstr "Incorrect username or password."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (Remote)"
-
 msgid "{login:remember_username}"
 msgstr "Remember my username"
 
@@ -486,9 +480,6 @@ msgstr "Sending message"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Error received from Identity Provider"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "To look at the details for an SAML entity, click on the SAML entity "
@@ -573,9 +564,6 @@ msgstr "Page not found"
 msgid "{logout:logged_out_text}"
 msgstr "You have been logged out."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (Hosted)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Download the X509 certificates as PEM-encoded files."
 
@@ -608,8 +596,11 @@ msgstr ""
 msgid "{admin:metadata_adfs-idp}"
 msgstr "ADFS IdP Metadata"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (Hosted)"
+msgid "{attributes:attribute_edupersonorcid}"
+msgstr "ORCID researcher identifiers"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Preferred language"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "You did not present a valid certificate."
@@ -651,9 +642,6 @@ msgstr "No certificate"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Logout information lost"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (Remote)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp appears to be misconfigured."
 
diff --git a/locales/es/LC_MESSAGES/messages.po b/locales/es/LC_MESSAGES/messages.po
index c6eb2c1f37cf120a6e269b3b797117896bb5b3a2..a9b3f9454f5362060d8e6dc8a8b6fcc2cf7db31d 100644
--- a/locales/es/LC_MESSAGES/messages.po
+++ b/locales/es/LC_MESSAGES/messages.po
@@ -120,9 +120,6 @@ msgstr ""
 "El IdP respondió a la solicitud con un error. (El código de estado en la "
 "respuesta SAML no fue exitoso)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Metadatos IdP Shib 1.3"
-
 msgid "{login:help_text}"
 msgstr ""
 "&iexcl;Muy mal! - Sin su nombre de usuario y su clave de acceso usted no "
@@ -230,9 +227,6 @@ msgstr "Desconectando..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nombre de usuario o contraseña erróneos"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Proveedor de Servicio Shib 1.3 (remoto)"
-
 msgid "{login:remember_username}"
 msgstr "Recordar mi nombre de usuario"
 
@@ -481,9 +475,6 @@ msgstr "Enviando mensaje"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Hubo un error por parte del IdP"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Metadatos SP Shib 1.3"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "Para ver los detalles de una entidad SAML, haga click en la cabecera de "
@@ -562,9 +553,6 @@ msgstr "Página no encontrada"
 msgid "{logout:logged_out_text}"
 msgstr "Ha sido desconectado. Gracias por usar este servicio."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Proveedor de Servicio Shib 1.3 (local)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Descargar los certificados X509 en formato PEM."
 
@@ -599,8 +587,8 @@ msgstr ""
 msgid "{admin:metadata_adfs-idp}"
 msgstr "Metadatos IdP ADFS"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Proveedor de Identidad Shib 1.3 (local)"
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Idioma preferido"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "No se ha podido validar el certificado recibido"
@@ -638,9 +626,6 @@ msgstr "No certificado"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Se perdió la información para cerrar la sesión"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Proveedor de Identidad Shib 1.3 (remoto)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Parece que hay un error en la configuración de SimpleSAMLphp"
 
diff --git a/locales/et/LC_MESSAGES/messages.po b/locales/et/LC_MESSAGES/messages.po
index c4eb2f2a5f9d475ea389fe5b538e0da456ac0389..22e031c0eeec39f2b2875ff6e20d47cc132d6bdb 100644
--- a/locales/et/LC_MESSAGES/messages.po
+++ b/locales/et/LC_MESSAGES/messages.po
@@ -115,9 +115,6 @@ msgstr ""
 "Identiteedipakkuja vastas tõrkega (SAML-vastuse olekukood polnud "
 "positiivne)."
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP metaandmed"
-
 msgid "{login:help_text}"
 msgstr ""
 "Paha lugu! Ilma kasutajatunnust ja parooli teadmata pole võimalik seda "
@@ -217,9 +214,6 @@ msgstr "Välja logimine..."
 msgid "{login:error_wrongpassword}"
 msgstr "Kasutajatunnus või parool pole õige."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 teenusepakkuja (kaug)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Identiteedipakkuja sai teenusepakkujalt autentimispäringu, kui päringu "
@@ -447,9 +441,6 @@ msgstr "Teate saatmine"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Identiteedipakkujalt saadi tõrge"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP metaandmed"
-
 msgid "{admin:metaover_intro}"
 msgstr "SAML olemi detailide vaatamiseks klõpsa SAML olemi päisel."
 
@@ -520,9 +511,6 @@ msgstr "Lehekülge ei leitud"
 msgid "{logout:logged_out_text}"
 msgstr "Sa oled välja logitud."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 teenusepakkuja (hostitud)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Lae alla X509 sertifikaadid PEM kodeeringus failidena."
 
@@ -550,8 +538,11 @@ msgstr ""
 "valesti seadistamise tõttu. Võta ühendust selle sisselogimisteenuse "
 "administraatoriga ja saada talle ülalolev veateade."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 identiteedipakkuja (hostitud)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobiil"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Eelistatud keel"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Sa ei esitanud kehtivat sertifikaati."
@@ -583,9 +574,6 @@ msgstr "Sertifikaat puudub"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Väljalogimisinfo läks kaotsi"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 identiteedipakkuja (kaug)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Paistab, et SimpleSAMLphp on vigaselt seadistatud."
 
diff --git a/locales/eu/LC_MESSAGES/messages.po b/locales/eu/LC_MESSAGES/messages.po
index 83dc59edea4e6188006700c02b130a6c863141b6..d37408c447e7b1b91dad498a9d06dee3d0d15c2c 100644
--- a/locales/eu/LC_MESSAGES/messages.po
+++ b/locales/eu/LC_MESSAGES/messages.po
@@ -117,9 +117,6 @@ msgstr ""
 "Idp-ak errore batekin erantzun dio eskaerari. (SAML erantzunean egoera "
 "kodea ez da arrakastatsua izan)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadatuak  "
-
 msgid "{login:help_text}"
 msgstr ""
 "Zeinen txarto! - Zure erabiltziale-izena eta pasahitza gabe ezin zara "
@@ -220,9 +217,6 @@ msgstr "Saioa ixten..."
 msgid "{login:error_wrongpassword}"
 msgstr "Erabiltzaile-izena edo pasahitza okerra"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Zerbitzu hornitzailea (Urrunekoa)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "IdP honek zerbitzu hornitzaile baten kautotze eskaera jaso du baina "
@@ -451,9 +445,6 @@ msgstr "Mezua bidaltzen"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Errore bat jazo da IdP-aren aldetik"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadatuak  "
-
 msgid "{admin:metaover_intro}"
 msgstr "SAML entitate baten xehetasunak ikusteko, klikatu entitatearen goiburua."
 
@@ -524,9 +515,6 @@ msgstr "Ez da orria aurkitu"
 msgid "{logout:logged_out_text}"
 msgstr "Saioa itxi da."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Zerbitzu hornitzailea (Anfitrioia)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "X509 ziurtagiriak PEM formatuan deskargatu."
 
@@ -554,8 +542,11 @@ msgstr ""
 "okerra izan da. Jar zaitez harremanetan identifikazio zerbitzu honen "
 "administratzailearekin eta bidal iezaiozu lehenagoko errore mezua. "
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identitate hornitzailea (Anfitrioia)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mugikorra"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Hizkuntza lehenetsia"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Ez duzu baliozko ziurtagiririk aurkeztu "
@@ -593,9 +584,6 @@ msgstr "Ziurtagiri gabe"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Saioa ixteko informazioa galdu da"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Πάροχος Ταυτότητας Shib 1.3 (Απομακρυσμένος)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Badirudi errore bat jazo dela SimpleSAMLphp-en konfigurazioan"
 
diff --git a/locales/fr/LC_MESSAGES/messages.po b/locales/fr/LC_MESSAGES/messages.po
index 7e004a7c47f7abda489fa603063cacbb653c0e6a..3e88b72bf0e6ee17a82f0e04d56425131a467774 100644
--- a/locales/fr/LC_MESSAGES/messages.po
+++ b/locales/fr/LC_MESSAGES/messages.po
@@ -119,9 +119,6 @@ msgstr ""
 "Le fournisseur d'identité a renvoyé une erreur (le code de statut de la "
 "réponse SAML n'indiquait pas le succès)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Métadonnées d'IdP Shib 1.3"
-
 msgid "{login:help_text}"
 msgstr ""
 "Pas de chance! Sans votre identifiant et votre mot de passe vous ne "
@@ -226,9 +223,6 @@ msgstr "Déconnexion..."
 msgid "{login:error_wrongpassword}"
 msgstr "Mauvais identifiant ou mot de passe."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Fournisseur de service Shib 1.3 distant"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Ce fournisseur de service a reçu une requête d'authentification d'un "
@@ -467,9 +461,6 @@ msgstr "Envoi du message"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Erreur levée par le fournisseur d'identité"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Métadonnées de SP Shib 1.3"
-
 msgid "{admin:metaover_intro}"
 msgstr "Pour examiner les détails d'une entité SAML, cliquez sur son en-tête."
 
@@ -541,9 +532,6 @@ msgstr "Page introuvable"
 msgid "{logout:logged_out_text}"
 msgstr "Vous avez été déconnecté. Merci d'avoir utilisé ce service."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Fournisseur de service Shib 1.3 local"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Télécharger les certificats X509 en tant que fichiers encodés PEM."
 
@@ -571,8 +559,11 @@ msgstr ""
 "mauvaise configuration de SimpleSAMLphp.  Contactez l'administrateur de "
 "ce service d'identification et envoyez lui le message d'erreur."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Fournisseur d'identité Shib 1.3 local"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobile"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Langue préférée"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Vous n'avez pas présenté de certificat valide"
@@ -610,9 +601,6 @@ msgstr "Aucun certificat présenté"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Information de déconnexion perdue"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Fournisseur d'identité Shib 1.3 distant"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Il semble que SimpleSAMLphp soit mal configuré."
 
diff --git a/locales/he/LC_MESSAGES/messages.po b/locales/he/LC_MESSAGES/messages.po
index 4983a25aa8d7f8636762501338376abf29700f12..4c65f1b09d21acb52636aa23ab737249b3c4bbcf 100644
--- a/locales/he/LC_MESSAGES/messages.po
+++ b/locales/he/LC_MESSAGES/messages.po
@@ -109,9 +109,6 @@ msgstr "כיוון שאתה במצב מבדיקת באגים, אתה רואה א
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "ספק הזיהות החזיר שגיאה. (קוד המצב בתגובת ה SAML שונה מהצלחה)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "מטא-מידע של סז מסוג Shib 1.3"
-
 msgid "{login:help_text}"
 msgstr ""
 "חבל! - בלי שם המשתמש והסיסמה שלך אתה לא יכול להזדהות בכדי לגשת לשירות. "
@@ -207,9 +204,6 @@ msgstr "מתנתק מהמערכת..."
 msgid "{login:error_wrongpassword}"
 msgstr "סיסמה או שם משתמש לא נכונים."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "ספק שירות מרוחק מסוג Shib 1.3"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr "ספק זהות זה קיבל בקשת הזדהות מספק שירות, אולם קרתה שגיאה בזמן עיבוד הבקשה."
 
@@ -427,9 +421,6 @@ msgstr "שולח הודעה"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "התקבלה שגיאה מספק הזיהות"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "מטא-מידע של סש מסוג Shib 1.3"
-
 msgid "{admin:metaover_intro}"
 msgstr "כדי להסתכל על הפרטים של ישות SAML, לחץ על כותרת ישות הSAML "
 
@@ -498,9 +489,6 @@ msgstr "דף לא נמצא"
 msgid "{logout:logged_out_text}"
 msgstr "התנתקת מן המערכת"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "ספק שירות מקומי מסוג Shib 1.3"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "הורד את תעודות X509 כקבצי PEM-מקודד."
 
@@ -526,8 +514,11 @@ msgstr ""
 "שגיאה זו היא ככל הנראה בשל התנהגות בלתי צפויה או שגויה של SimpleSAMLphp. "
 "צור קשר עם מנהל המערכת של שירות ההתחברות הזה, ושלח לו את השגיאה למעלה."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "ספק זהות מקומי מסוג Shib 1.3"
+msgid "{attributes:attribute_mobile}"
+msgstr "נייד"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "שפה מועדפת"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "לא הצגת תעודה חוקית "
@@ -559,9 +550,6 @@ msgstr "אין תעודה"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "מידע ההתנתקות אבד"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "ספק זהות מרוחק מסוג Shib 1.3"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "נראה ש SimpleSAMLphp לא מוגדר נכון"
 
diff --git a/locales/hr/LC_MESSAGES/messages.po b/locales/hr/LC_MESSAGES/messages.po
index 0903bbbf654e568c96fadd94da0cca5519f0c37b..29307a5e1e5d2d00306034d74d83e99c967fdc86 100644
--- a/locales/hr/LC_MESSAGES/messages.po
+++ b/locales/hr/LC_MESSAGES/messages.po
@@ -122,9 +122,6 @@ msgstr ""
 "pojavi greške. (Šifra statusa dostavljena u SAML odgovoru ne odgovara "
 "šifri uspješno obrađenog zahtjeva)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 metapodaci o autentifikacijskom servisu"
-
 msgid "{login:help_text}"
 msgstr ""
 "Šteta! - Bez ispravne korisničke oznake i zaporke ne možete pristupiti "
@@ -224,9 +221,6 @@ msgstr "Odjava u tijeku..."
 msgid "{login:error_wrongpassword}"
 msgstr "Neispravna korisnička oznaka ili zaporka."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 davatelj usluge (udaljeni)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Autentifikacijski servis je dobio zahtjev od davatelja usluge, ali se "
@@ -464,9 +458,6 @@ msgstr "Å aljem poruku"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Autentifikacijski servis je prijavio grešku"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 metapodaci o davatelju usluge"
-
 msgid "{admin:metaover_intro}"
 msgstr "Da biste vidjeli detalje o SAML entitetu, kliknite na njegovo zaglavlje."
 
@@ -537,9 +528,6 @@ msgstr "Stranica nije pronađena"
 msgid "{logout:logged_out_text}"
 msgstr "Uspješno ste se odjavili."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 davatelj usluge (lokalni)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Preuzmite X509 certifikate u PEM formatu."
 
@@ -567,8 +555,11 @@ msgstr ""
 "neispravne konfiguracije programskog alata SimpleSAMLphp. Kontaktirajte "
 "administratore ovog servisa i pošaljite im gore navedenu poruku o greški."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 autentifikacijski servis (lokalni)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Broj mobilnog telefona"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Primarni jezik"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Niste predočili valjani certifikat."
@@ -604,9 +595,6 @@ msgstr "Nema digitalnog certifikata"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informacija o odjavljivanju je izgubljena"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 autentifikacijski servis (udaljeni)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Čini se da je SimpleSAMLphp pogrešno iskonfiguriran."
 
diff --git a/locales/hu/LC_MESSAGES/messages.po b/locales/hu/LC_MESSAGES/messages.po
index 12c1bee662316443a53fbba620c0e6e7e285cae9..3f6531b632eb02d8c9c8668e72fab026d141e8c8 100644
--- a/locales/hu/LC_MESSAGES/messages.po
+++ b/locales/hu/LC_MESSAGES/messages.po
@@ -114,9 +114,6 @@ msgstr "Mivel hibakereső módban van, láthatja az elküldendő üzenet tartalm
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "Hiba történt az azonosító szervezet (IdP) oldalán. Ismeretlen állapotkód."
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metaadatok"
-
 msgid "{login:help_text}"
 msgstr ""
 "Ajaj! - Felhasználói neve és jelszava nélkül nem tudja azonosítani magát,"
@@ -216,9 +213,6 @@ msgstr "Kijelentkezés..."
 msgid "{login:error_wrongpassword}"
 msgstr "Hibás felhasználói név vagy jelszó!"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 alkalmazásszolgáltató (távoli)"
-
 msgid "{login:remember_username}"
 msgstr "Emlékezzen a felhasználónevemre"
 
@@ -449,9 +443,6 @@ msgstr "Üzenet küldése"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Hiba történt az azonosító szervezet (IdP) oldalán"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metaadatok"
-
 msgid "{admin:metaover_intro}"
 msgstr "A SAML entitások részleteiért kattintson a SAML entitás fejlécére"
 
@@ -525,9 +516,6 @@ msgstr "Oldal nem található"
 msgid "{logout:logged_out_text}"
 msgstr "Sikeresen kijelentkezett. Köszönjük, hogy használta a szolgáltatást."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 alkalmazásszolgálató (helyi)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "PEM formátumú X509 tanúsítvány letöltése."
 
@@ -554,8 +542,11 @@ msgstr ""
 "félrekonfigurálásával kapcsolatos. Kérjük, keresse meg a bejelentkező "
 "szolgáltatás adminisztrátorát, és küldje el neki a fenti hibaüzenetet!"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 személyazonosság-szolgáltató (helyi)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobil"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Elsődleges nyelv"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Nem található hiteles tanúsítvány"
@@ -589,9 +580,6 @@ msgstr "Hiányzó tanúsítvány."
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Elveszett kijelentkezési információk"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 személyazonosság-szolgáltató (távoli)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Valószínűleg helytelenül lett konfigurálva a SimpleSAMLphp"
 
diff --git a/locales/id/LC_MESSAGES/messages.po b/locales/id/LC_MESSAGES/messages.po
index 35c3a2a36f59976253c16caa27871da4da8b649d..493e2f20bf3fc5fb4139f2365ae01de5a14e6bd3 100644
--- a/locales/id/LC_MESSAGES/messages.po
+++ b/locales/id/LC_MESSAGES/messages.po
@@ -117,9 +117,6 @@ msgstr ""
 "Identity Provider merespon dengan error. (Kode status di Response SAML "
 "adalah tidak berhasil)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Metadata Shib 1.3 IdP"
-
 msgid "{login:help_text}"
 msgstr ""
 "Sayang sekali! - Tanpa username dan password Anda tidak dapat melakukan "
@@ -222,9 +219,6 @@ msgstr "Log out..."
 msgid "{login:error_wrongpassword}"
 msgstr "Username atau password salah"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Service Provider Shib 1.3 (Remote)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Identity Provider ini menerima Request Autentifikasi dari sebuah Service "
@@ -454,9 +448,6 @@ msgstr "Mengirimpan pesan"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Error diterima dari Identity Provider"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Metadata Shib 1.3 SP"
-
 msgid "{admin:metaover_intro}"
 msgstr "Untuk melihat detail entiti SAML, klik pada bagian header entiti SAML"
 
@@ -527,9 +518,6 @@ msgstr "Halaman tidak ditemukan"
 msgid "{logout:logged_out_text}"
 msgstr "Anda telah log out."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Service Provider Shib 1.3 (Hosted)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Download sertifikat X509 sebagai file dikodekan-PEM."
 
@@ -557,8 +545,11 @@ msgstr ""
 " yang salah di SimpleSAMLphp. Hubungi administrator dari layanan login "
 "ini, dan kirimkan kepada mereka pesan error diatas."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Identity Provider Shib 1.3 (Hosted)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Handphone"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Pilihan Bahasa"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Anda tidak menyediakan sertifikat yang valid."
@@ -596,9 +587,6 @@ msgstr "Tidak ada sertifikat"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informasi logout hilang"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Identity Provider Shib 1.3 (Remote)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp sepertinya telah salah dikonfigurasi"
 
diff --git a/locales/it/LC_MESSAGES/messages.po b/locales/it/LC_MESSAGES/messages.po
index 3a52011922b24665c2acee35ed4a482dd1b83332..4accd61b442359376a38aa69c065ad008c89d8c1 100644
--- a/locales/it/LC_MESSAGES/messages.po
+++ b/locales/it/LC_MESSAGES/messages.po
@@ -120,9 +120,6 @@ msgstr ""
 "L'Identity Provider ha risposto con un errore. (Il codice di stato nel "
 "messaggio SAML Response non indicava un successo)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Metadati Shib 1.3 IdP"
-
 msgid "{login:help_text}"
 msgstr ""
 "Senza il nome utente e la password, non è possibile effettuare "
@@ -223,9 +220,6 @@ msgstr "Disconnessione..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nome utente o password errati."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (Remoto)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Questo Identity Provider ha ricevuto una richiesta di autenticazione da "
@@ -467,9 +461,6 @@ msgstr "Invio del messaggio"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "E' stato ricevuto un errore dall'Identity Provider"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Metadati Shib 1.3 SP"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "Per visualizzare i dettagli di una entità SAML, cliccare sull'header SAML"
@@ -542,9 +533,6 @@ msgstr "Pagina non trovata"
 msgid "{logout:logged_out_text}"
 msgstr "Sei stato disconnesso"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (Hosted)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Scarica i certificati X509 come file PEM-encoded"
 
@@ -572,8 +560,11 @@ msgstr ""
 " di questo servizio di login con una copia del messaggio di errore "
 "riportato qui sopra."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (Hosted)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Cellulare"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Lingua preferita"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Non hai fornito un certificato valido."
@@ -609,9 +600,6 @@ msgstr "Nessun certificato"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informazioni di disconnessione smarrite."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (Remoto)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Sembra che SimpleSAMLphp non sia configurato correttamente."
 
diff --git a/locales/ja/LC_MESSAGES/messages.po b/locales/ja/LC_MESSAGES/messages.po
index cc6d3fd36c0217a11a4f50f89bfa53f3de97db0c..782a677f5b73d7720262c7668c9735e23acae662 100644
--- a/locales/ja/LC_MESSAGES/messages.po
+++ b/locales/ja/LC_MESSAGES/messages.po
@@ -101,9 +101,6 @@ msgstr "現在はデバッグモードです。あなたは送信するメッセ
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "アイデンティティプロバイダがエラーを受けとりました。(SAMLレスポンスに失敗したステータスコード)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdPメタデータ"
-
 msgid "{login:help_text}"
 msgstr ""
 "ユーザー名とパスワードがないと、サービスにアクセスするための認証ができません。"
@@ -193,9 +190,6 @@ msgstr "ログアウト中…"
 msgid "{login:error_wrongpassword}"
 msgstr "ユーザー名かパスワードが間違っています。"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3サービスプロバイダ(リモート)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr "このアイデンティティプロバイダはサービスプロバイダからの認証リクエストを受け付けましたが、リクエストの処理中にエラーが発生しました。"
 
@@ -405,9 +399,6 @@ msgstr "メッセージを送信中"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "アイデンティティプロバイダからエラーを受信しました"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SPメタデータ"
-
 msgid "{admin:metaover_intro}"
 msgstr "SAMLエンティティの詳細を確認するためには、SAMLエンティティヘッダをクリックして下さい。"
 
@@ -474,9 +465,6 @@ msgstr "ページが見つかりません"
 msgid "{logout:logged_out_text}"
 msgstr "ログアウトしました。"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3サービスプロバイダ(ホスト)"
-
 msgid "{admin:debug_sending_message_msg_title}"
 msgstr "メッセージ"
 
@@ -495,8 +483,8 @@ msgstr "与えられたページは見つかりませんでした。URLは: %URL
 msgid "{errors:howto_text}"
 msgstr "このエラーは恐らく未知の問題、またはSimpleSAMLphpの設定ミスです。ログインサービスの管理者に上記のエラーメッセージを連絡して下さい。"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3アイデンティティプロバイダ(ホスト)"
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "言語"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "正当な証明書が提示されませんでした。"
@@ -528,9 +516,6 @@ msgstr "証明書がありません"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "ログアウト情報を失いました"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3アイデンティティプロバイダ(リモート)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphpの設定にミスがあるようです。"
 
diff --git a/locales/lt/LC_MESSAGES/messages.po b/locales/lt/LC_MESSAGES/messages.po
index 05ce6bef742061d966d16d2150d961f9fae16d2c..ba00bcc3b7617bd96da398b719ec73518f4c9e41 100644
--- a/locales/lt/LC_MESSAGES/messages.po
+++ b/locales/lt/LC_MESSAGES/messages.po
@@ -116,9 +116,6 @@ msgstr ""
 "Tapatybių teikėjas atsakė klaidos pranešimu. (Statuso kodas SAML atsakyme"
 " buvo nesÄ—kmingas)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metaduomenys"
-
 msgid "{login:help_text}"
 msgstr ""
 "Blogai - be prisijungimo vardo ir slaptažodžio negalėsite autentikuotis "
@@ -216,9 +213,6 @@ msgstr "Atjungiama..."
 msgid "{login:error_wrongpassword}"
 msgstr "Neteisingas prisijungimo vardas arba slaptažodis."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Paslaugos teikėjas (nutolęs)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Šis tapatybių tiekėjas gavo autentikacijos prašymo užklausą iš paslaugos "
@@ -446,9 +440,6 @@ msgstr "Siunčiamas pranešimas"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Gautas klaidos pranešimas iš tapatybių teikėjo"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metaduomenys"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "Norėdami peržiūrėti detalesnę informaciją apie SAML, paspauskite ant SAML"
@@ -521,9 +512,6 @@ msgstr "Puslapis nerastas"
 msgid "{logout:logged_out_text}"
 msgstr "Jūs buvote atjungtas nuo sistemos."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Paslaugos teikÄ—jas (vietinis)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Parsisiųsti X509 sertifikatus kaip PEM koduotės failus."
 
@@ -550,8 +538,11 @@ msgstr ""
 "sukonfigūravimo. Susisiekite su šios sistemos administratoriumi ir "
 "nusiųskite žemiau rodomą klaidos pranešimą."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Tapatybių teikėjas (vietinis)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobiliojo numeris"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Kalba"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Jūs nepateikėte teisingo sertifikato."
@@ -589,9 +580,6 @@ msgstr "NÄ—ra sertifikato"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Atsijungimo informacija prarasta"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Tapatybių teikėjas (nutolęs)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp tikriausiai klaidingai sukonfigūruotas."
 
diff --git a/locales/lv/LC_MESSAGES/messages.po b/locales/lv/LC_MESSAGES/messages.po
index 1ef6079aed1c8eb52a59480bb4e897b1f75515cd..ba2133a36aeedb8468984a9977b2cde4d66855c8 100644
--- a/locales/lv/LC_MESSAGES/messages.po
+++ b/locales/lv/LC_MESSAGES/messages.po
@@ -113,9 +113,6 @@ msgstr ""
 "Identitātes piegādātājs atbildējis ar kļūdu. Statusa kods SAML atbildē "
 "atšķiras no veiksmīga"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP metadati"
-
 msgid "{login:help_text}"
 msgstr ""
 "Bez lietotāja vārda un paroles Jūs nevarat autentificēties un nevarat "
@@ -212,9 +209,6 @@ msgstr "Atslēgšanās..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nekorekts lietotāja vārds vai parole."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 servisa piegādātājs (attālināts)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Identitātes piegādātājs ir saņēmis autentifikācijas pieprasījumu no "
@@ -442,9 +436,6 @@ msgstr "Ziņas sūtīšana"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Kļūda no identitātes piegādātāja"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP metadati"
-
 msgid "{admin:metaover_intro}"
 msgstr "Lai aplūkotu SAML vienuma detaļas, klikšķiniet uz vienuma galvenes."
 
@@ -515,9 +506,6 @@ msgstr "Lapa nav atrasta"
 msgid "{logout:logged_out_text}"
 msgstr "Jūs esat izgājis no sistēmas."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 servisa piegādātājs (hostēts)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Lejupielādēt X509 sertifikātus kā PEM-kodētus failus."
 
@@ -543,8 +531,11 @@ msgstr ""
 "Iespējams, kļūda radusies no neparedzētas darbības vai nepareizas "
 "SimpleSAMLphp konfigurācijas. Nosūtiet administratoram kļūdas ziņojumu."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 identitātes piegādātājs (hostēts)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobilais telefons"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Vēlamā valoda"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Jūs neesat norādījis derīgu sertifikātu."
@@ -580,9 +571,6 @@ msgstr "Nav sertifikāta"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Atslēgšanās informācija zaudēta"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 identitātes piegādātājs (attālināts)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp nav pareizi nokonfigurēts."
 
diff --git a/locales/nb/LC_MESSAGES/messages.po b/locales/nb/LC_MESSAGES/messages.po
index 26479a688d09600df1d7f57decc32eac552426ef..09858e93926532fe184b4c0fc7e81a4cb43f02b3 100644
--- a/locales/nb/LC_MESSAGES/messages.po
+++ b/locales/nb/LC_MESSAGES/messages.po
@@ -113,9 +113,6 @@ msgstr ""
 "Innloggingstjenesten svarte med en feilmelding. (Statuskoden i SAML-"
 "svaret var noe annet enn OK)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Synd! - Uten riktig brukernavn og passord kan du ikke autentisere deg. "
@@ -216,9 +213,6 @@ msgstr "Logger ut..."
 msgid "{login:error_wrongpassword}"
 msgstr "Feil brukernavn eller passord."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Tjenesteleverandør (ekstern)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Innloggingstjenesten mottok en autentiserings-forespørsel fra en "
@@ -448,9 +442,6 @@ msgstr "Sender melding"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Feilmelding mottatt fra innloggingstjenesten"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "For å se på detaljene i en SAML-entitet, klikk på SAML-entitet "
@@ -523,9 +514,6 @@ msgstr "Kan ikke finne siden"
 msgid "{logout:logged_out_text}"
 msgstr "Du er nå utlogget."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Tjenesteleverandør (intern)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Last ned X509-sertifikatene som PEM-filer."
 
@@ -553,8 +541,11 @@ msgstr ""
 "eller den er en følge av en uforutsett hendelse. Kontakt administratoren "
 "av denne tjenesten og rapporter så mye som mulig angående feilen."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identitetsleverandør (ekstern)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobiltelefon"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Foretrukket språk"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Du presenterte ikke et gyldig sertifikat"
@@ -590,9 +581,6 @@ msgstr "Ikke noe sertifikat mottatt"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informasjon om utlogging er tapt"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identitetsleverandør (ekstern) "
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Det virker som det er en feil i oppsettet av SimpleSAMLphp."
 
diff --git a/locales/nl/LC_MESSAGES/messages.po b/locales/nl/LC_MESSAGES/messages.po
index 9eed3f830f582fe6d20132ea4f51f49493cc4023..692a0d815f6b89fe6f5379b2df58f02a74360b78 100644
--- a/locales/nl/LC_MESSAGES/messages.po
+++ b/locales/nl/LC_MESSAGES/messages.po
@@ -120,9 +120,6 @@ msgstr ""
 "De Identity Provider antwoordde met een fout. (De statuscode in de SAML "
 "Response was niet success)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Zonder je gebruikersnaam en wachtwoord kun je je niet authenticeren en "
@@ -229,9 +226,6 @@ msgstr "Uitloggen..."
 msgid "{login:error_wrongpassword}"
 msgstr "Gebruikersnaam of wachtwoord niet bekend."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (Remote)"
-
 msgid "{login:remember_username}"
 msgstr "Onthoud gebruikersnaam"
 
@@ -478,9 +472,6 @@ msgstr "Bericht"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Foutmelding ontvangen van Identity Provider"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr "Klik op een SAML-entiteit om de details voor die entiteit te bekijken."
 
@@ -557,9 +548,6 @@ msgstr "Pagina niet gevonden"
 msgid "{logout:logged_out_text}"
 msgstr "U bent uitgelogd. Dank u voor het gebruiken van deze dienst."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (Hosted)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Download de X509-certificaten in PEM-formaat."
 
@@ -593,8 +581,8 @@ msgstr ""
 msgid "{admin:metadata_adfs-idp}"
 msgstr "ADFS IdP Metadata"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (Hosted)"
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Voorkeurstaal"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Je hebt geen geldig certificaat meegegeven"
@@ -632,9 +620,6 @@ msgstr "Geen certificaat"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Logout informatie is verloren gegaan"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (Remote)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp is niet goed geconfigureerd."
 
diff --git a/locales/nn/LC_MESSAGES/messages.po b/locales/nn/LC_MESSAGES/messages.po
index c22f8b668bb4cc38de598d8b0e8cc9f6a20d30b2..9aac32e52c02ea2321aa972d5949b0cadb712af8 100644
--- a/locales/nn/LC_MESSAGES/messages.po
+++ b/locales/nn/LC_MESSAGES/messages.po
@@ -116,9 +116,6 @@ msgstr ""
 "Vertsorganisasjonen din (IdP) gav feilmelding (SAML-svaret hadde "
 "statuskode som varsla om feil)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Synd! - Utan riktig brukarnamn og passord kan du ikkje autentisera deg.  "
@@ -217,9 +214,6 @@ msgstr "Loggar ut..."
 msgid "{login:error_wrongpassword}"
 msgstr "Feil brukarnamn eller passord."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (Remote)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Denne identitetsleverandøren (IdP) mottok ei autentiseringsmelding frå "
@@ -455,9 +449,6 @@ msgstr "Sender melding"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Feil frå vertsorganisasjonen (IdP)"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr "For å sjå på detaljane for ein SAML entitet, klikk på SAML entitet"
 
@@ -528,9 +519,6 @@ msgstr "Fann ikkje sida"
 msgid "{logout:logged_out_text}"
 msgstr "Du har blitt logga ut.  Takk for at du brukte denne tenesta."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (Hosted)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Last ned X509-sertifikat som PEM-koda filer"
 
@@ -557,8 +545,11 @@ msgstr ""
 "eller ein ukjent feil. Kontakt administrator av tenesta og rapporter "
 "detaljar om feilen."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (Hosted)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobiltelefon"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Førsteval for språk eller målform"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Du har ikkje brukt eit gyldig sertifikat i kommunikasjonen din"
@@ -594,9 +585,6 @@ msgstr "Manglar sertifikat"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Mista utloggingsinformasjon"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (Remote)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp ser ut til å vera feilkonfigurert"
 
diff --git a/locales/pl/LC_MESSAGES/messages.po b/locales/pl/LC_MESSAGES/messages.po
index 2a4dbb8678050cd984b00d0b5fb9fbec1650f427..2c766cbbe274080e9c39a12352833b05cd64831c 100644
--- a/locales/pl/LC_MESSAGES/messages.po
+++ b/locales/pl/LC_MESSAGES/messages.po
@@ -112,9 +112,6 @@ msgstr ""
 "Odpowiedź dostawcy tożsamości oznacza błąd (kod stanu w odpowiedzi SAML "
 "nie oznacza sukcesu)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP - Metadane"
-
 msgid "{login:help_text}"
 msgstr ""
 "Niedobrze! - Bez nazwy użytkownika i/lub hasła nie możesz zostać "
@@ -212,9 +209,6 @@ msgstr "Wylogowywanie..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nieprawidłowa nazwa użytkownika lub hasło."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Dostawca Serwisu (Zdalny)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Dostawca tożsamości otrzymał od dostawcy usługi zlecenie "
@@ -441,9 +435,6 @@ msgstr "Wysyłanie wiadomości"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Dostawca tożsamości przesłał błąd"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP - Metadane"
-
 msgid "{admin:metaover_intro}"
 msgstr "Kliknij na nagłówek końcówki aby wyświetlić szczegóły SAML."
 
@@ -509,9 +500,6 @@ msgstr "Nie znaleziono strony"
 msgid "{logout:logged_out_text}"
 msgstr "Zostałeś wylogowany. Dziękuję za skorzystanie z serwisu."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Dostawca Serwisu (Lokalny)"
-
 msgid "{admin:debug_sending_message_msg_title}"
 msgstr "Wiadomość"
 
@@ -566,9 +554,6 @@ msgstr "Brak certyfikatu"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Utracono informacjÄ™ o wylogowaniu"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Dostawca Tożsamości (Zdalny)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "wydaje się, że SimpleSAMLphp jest błędnie skonfigurowany."
 
diff --git a/locales/pt-br/LC_MESSAGES/messages.po b/locales/pt-br/LC_MESSAGES/messages.po
index 351ea0525111faa634bc4560f2237681293c0426..2a26fedb07812e1fd0bc91612288034980aa76d5 100644
--- a/locales/pt-br/LC_MESSAGES/messages.po
+++ b/locales/pt-br/LC_MESSAGES/messages.po
@@ -120,9 +120,6 @@ msgstr ""
 "O Provedor de Identidade respondeu com um erro. (O código de resposta do "
 "SAML não teve sucesso."
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Muito mal! - Sem o seu nome de usuário e a senha você não pode "
@@ -225,9 +222,6 @@ msgstr "Saindo do serviço..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nome de usuário ou senha incorretos."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (Remoto)"
-
 msgid "{login:remember_username}"
 msgstr "Lembrar meu nome de usuário"
 
@@ -464,9 +458,6 @@ msgstr "Enviando a mensagem"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Erro recebido do Provedor de Identidade"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr "Para ver os detalhes da entidade SAML, clique "
 
@@ -540,9 +531,6 @@ msgstr "Página não encontrada"
 msgid "{logout:logged_out_text}"
 msgstr "Você foi desconectado."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (Local)"
-
 msgid "{admin:debug_sending_message_msg_title}"
 msgstr "Mensagem"
 
@@ -566,8 +554,11 @@ msgstr ""
 "SimpleSAMLphp. Contate o administrador deste serviço de login e envie-lhe"
 " a mensagem de erro acima."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (Local)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Celular"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Linguagem preferida"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Você não possui um certificado válido"
@@ -605,9 +596,6 @@ msgstr "Sem Certificado"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informações de desconexão perdidas"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (Remoto)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp parece estar mal configurado."
 
diff --git a/locales/pt/LC_MESSAGES/messages.po b/locales/pt/LC_MESSAGES/messages.po
index 48cdd4f953f00bad8b1b74756d776c65f6cd4b81..2add121d3dc17dcd1326c554eaee27df1197acd2 100644
--- a/locales/pt/LC_MESSAGES/messages.po
+++ b/locales/pt/LC_MESSAGES/messages.po
@@ -104,9 +104,6 @@ msgstr ""
 "O Fornecedor de Identidade respondeu com um erro. (A resposta SAML contém"
 " um código de insucesso)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Metadados Shib 1.3 IdP"
-
 msgid "{login:help_text}"
 msgstr ""
 "Sem o seu nome de utilizador e senha não se pode autenticar para acesso "
@@ -201,9 +198,6 @@ msgstr "A sair..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nome de utilizador ou senha incorrecta."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Fornecedor de serviço (SP) SAML 2.0 (Remoto)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Ocorreu um erro ao processar o pedido de autenticação emitido pelo "
@@ -412,9 +406,6 @@ msgstr "A enviar a mensagem"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Erro recebido do Fornecedor de Identidade"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Metadados Shib 1.3 SP"
-
 msgid "{admin:metaover_intro}"
 msgstr "Para obter detalhes sobre uma entidade SAML, clique no título da entidade."
 
@@ -482,9 +473,6 @@ msgstr "Página não encontrada"
 msgid "{logout:logged_out_text}"
 msgstr "Saída efectuada com sucesso. Obrigado por ter usado este serviço."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Fornecedor de serviço (SP) Shib 1.3 (Local)"
-
 msgid "{admin:debug_sending_message_msg_title}"
 msgstr "Mensagem"
 
@@ -505,8 +493,11 @@ msgstr ""
 "uma má configuração do SimpleSAMLphp. Contacte o administrador deste "
 "serviço de login, e comunique a mensagem de erro."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Fornecedor de identidade (IdP) Shib 1.3 (Local)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Telemóvel"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Idioma"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Não foi apresentado um certificado válido."
@@ -541,9 +532,6 @@ msgstr ""
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informação de logout perdida"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Fornecedor de identidade (IdP) Shib 1.3 (Remoto)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "O software SimpleSAMLphp tem um problema de configuração."
 
diff --git a/locales/ro/LC_MESSAGES/messages.po b/locales/ro/LC_MESSAGES/messages.po
index 864bffb1d6d010876ded74c918dc50d1729899df..af699cecc22eb2a877e9afba5705c707978374c9 100644
--- a/locales/ro/LC_MESSAGES/messages.po
+++ b/locales/ro/LC_MESSAGES/messages.po
@@ -122,9 +122,6 @@ msgstr ""
 "Furnizorul de identitate a răspuns cu o eroare. (Codul de stare in "
 "răspunsul SAML a fost  încercare nereușită)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Metadate furnizor de identitate (IdP) Shib 1.3"
-
 msgid "{login:help_text}"
 msgstr ""
 "Din păcate fără nume de utilizator și parolă nu vă puteți autentifica "
@@ -226,9 +223,6 @@ msgstr "Deautentificare ..."
 msgid "{login:error_wrongpassword}"
 msgstr "Nume de utilizator incorect sau parola incorectă."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Furnizor de servicii Shib 1.3 (distant)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Acest furnizor de identitate a primit o cerere de autentificare de la un "
@@ -463,9 +457,6 @@ msgstr "Se trimite mesajul"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Eroare primită de la furnizorul de identitate"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Metadate furnizor de servicii (SP) Shib 1.3"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "Pentru a vizualiza detalii privind o entitate SAML, apăsați pe antetul "
@@ -538,9 +529,6 @@ msgstr "Pagina nu a fost găsită"
 msgid "{logout:logged_out_text}"
 msgstr "Ați fost deautentificat"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Furnizor de servicii Shib 1.3 (găzduit)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Descărcați certificatele X509 ca fișiere PEM."
 
@@ -569,8 +557,11 @@ msgstr ""
 "administratorul acestui serviciu și să-i furnizați mesajul de eroare de "
 "mai sus."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Furnizor de identitate Shib 1.3 (găzduit)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobil"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Limba preferată"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Nu ați oferit un certificat valid."
@@ -610,9 +601,6 @@ msgstr "Lipsește certificatul"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informația de deautentificare a fost pierdută"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Furnizor de identitate Shib 1.3 (distant)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Probleme la configurarea SimpleSAMLphp."
 
diff --git a/locales/ru/LC_MESSAGES/messages.po b/locales/ru/LC_MESSAGES/messages.po
index f71ee414fb1c6158f7a0c9896d210e34ace30f63..6dc35b848a96736ed2c7c7bcaf61411dbe2261d9 100644
--- a/locales/ru/LC_MESSAGES/messages.po
+++ b/locales/ru/LC_MESSAGES/messages.po
@@ -118,9 +118,6 @@ msgstr ""
 "Провайдер идентификации сообщает об ошибке. (Код статус в отклике SAML "
 "сообщает о неуспешной попытке)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Метаданные провайдера идентификации Shib 1.3 IdP"
-
 msgid "{login:help_text}"
 msgstr ""
 "Очень плохо! - Без ваших имени пользователя и пароля вы не можете "
@@ -229,9 +226,6 @@ msgstr "Выход из системы..."
 msgid "{login:error_wrongpassword}"
 msgstr "Неправильное имя пользователя или пароль."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Сервис провайдер Shib 1.3 (удаленное размещение)"
-
 msgid "{login:remember_username}"
 msgstr "Запомнить моё имя пользователя"
 
@@ -470,9 +464,6 @@ msgstr "Отправка сообщения"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "От провайдера идентификации получена ошибка"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Метаданные сервис провайдера Shib 1.3 SP"
-
 msgid "{admin:metaover_intro}"
 msgstr "Для просмотра подробностей записи SAML, кликните на заголовок записи SAML."
 
@@ -547,9 +538,6 @@ msgstr "Страница не найдена"
 msgid "{logout:logged_out_text}"
 msgstr "Вы успешно вышли из системы"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Сервис провайдер Shib 1.3 (локальное размещение)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Скачать сертификаты X509 в формате PEM файлов."
 
@@ -582,8 +570,8 @@ msgstr ""
 msgid "{admin:metadata_adfs-idp}"
 msgstr "Метаданные провайдера идентификации ADFS"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Провайдер идентификации Shib 1.3 (локальное размещение)"
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Предпочитаемый язык"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Вы не предоставили действительный сертификат."
@@ -621,9 +609,6 @@ msgstr "Сертификат отсутствует"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Потеряна информация о выходе."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Провайдер идентификации Shib 1.3 (удаленное размещение)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Видимо, SimpleSAMLphp сконфигурирован неправильно."
 
diff --git a/locales/sl/LC_MESSAGES/messages.po b/locales/sl/LC_MESSAGES/messages.po
index 130a2756260580441bc59d3c3c63e3ed960d948c..2d320d4226b76365d100ff32d207a206d2aa6b46 100644
--- a/locales/sl/LC_MESSAGES/messages.po
+++ b/locales/sl/LC_MESSAGES/messages.po
@@ -112,9 +112,6 @@ msgstr "Ste v debug načinu, lahko si ogledate vsebino sporočila, ki ga pošilj
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "Odziv IdP vsebuje napako (\"SAML-Response\" ni uspel)! "
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metapodatki"
-
 msgid "{login:help_text}"
 msgstr ""
 "Žal se brez uporabniškega imena in gesla ne morete prijaviti in "
@@ -212,9 +209,6 @@ msgstr "Odjavljanje..."
 msgid "{login:error_wrongpassword}"
 msgstr "Napačno uporabniško ime ali geslo!"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 SP (Oddaljeni)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "IdP je prejel avtenticirano zahtevo SP-ja, vendar je prišlo do napake pri"
@@ -441,9 +435,6 @@ msgstr "Pošiljanje sporočila"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Napaka na IdP"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metapodatki"
-
 msgid "{admin:metaover_intro}"
 msgstr "Za pregled podrobnosti SAML entitete, kliknite na glavo te entitete"
 
@@ -514,9 +505,6 @@ msgstr "Strani ni bilo mogoče najti."
 msgid "{logout:logged_out_text}"
 msgstr "Odjava je bila uspešna. Hvala, ker uporabljate to storitev."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 SP (Lokalni)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Prenesi X509 digitalno potrdilo v PEM datoteki."
 
@@ -542,8 +530,11 @@ msgstr ""
 "Ta napaka je verjetno posledica nepravilne konfiguracije SimpleSAMLphp-"
 "ja. Obrnite se na skrbnika in mu posredujte to napako."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 SP (Lokalni)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobilni telefon"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Želen jezik"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Posredovan certifikat je neveljaven"
@@ -577,9 +568,6 @@ msgstr "Ni digitalnega potrdila"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Odjavni (Logout) parametri niso na voljo."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 SP (Oddaljeni)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Nastavitve SimpleSAMLphp so napačne ali se med seboj izključujejo."
 
diff --git a/locales/sr/LC_MESSAGES/messages.po b/locales/sr/LC_MESSAGES/messages.po
index eec871b9727491bd8f8645f2337a5c558c394dd4..3b63b99ff9243b69a60177196920f8101aaf1d83 100644
--- a/locales/sr/LC_MESSAGES/messages.po
+++ b/locales/sr/LC_MESSAGES/messages.po
@@ -122,9 +122,6 @@ msgstr ""
 "greške(Šifra statusa dostavljena u SAML odgovoru ne odgovara šifri "
 "uspešno obrađenog zahteva)."
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP metapodaci"
-
 msgid "{login:help_text}"
 msgstr ""
 "Šteta! - Bez ispravnog korisničkog imena i lozinke ne možete pristupiti "
@@ -223,9 +220,6 @@ msgstr "Odjava u toku..."
 msgid "{login:error_wrongpassword}"
 msgstr "Neispravno korisničko ime ili lozinka."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Davalac Servisa (udaljeni)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Davalac Identiteta je primio zahtev za autentikacijom od strane Davaoca "
@@ -461,9 +455,6 @@ msgstr "Å aljem poruku"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Davalac Identiteta je prijavio grešku"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP metapodaci"
-
 msgid "{admin:metaover_intro}"
 msgstr "Da biste videli detalje o SAML entitetu, kliknite na njegovo zaglavlje."
 
@@ -534,9 +525,6 @@ msgstr "Stranica nije pronađena"
 msgid "{logout:logged_out_text}"
 msgstr "Uspešno ste se odjavili."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Davalac Servisa (lokalni)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Preuzmite X509 sertifikate u PEM formatu."
 
@@ -564,8 +552,11 @@ msgstr ""
 " podešavanja SimpleSAMLphp-a. Kontaktirajte administratora ovog servisa i"
 " pošaljite mu poruku o grešci prikazanu iznad."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Davalac Identiteta(lokalni)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Broj mobilnog telefona"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Preferirani jezik"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Niste dostavili validan setifikat."
@@ -603,9 +594,6 @@ msgstr "Nema digitalnog sertifikata"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Informacija o odjavljivanju je izgubljena"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Davalac Identiteta (udaljeni)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Izgleda da postoji greška u podešavanjima SimpleSAMLphp-a."
 
diff --git a/locales/sv/LC_MESSAGES/messages.po b/locales/sv/LC_MESSAGES/messages.po
index c090e00df8d13cd2a665be92eb3dcc321bfb60c0..a5e374ca068be06620f17f91071ebbe13b97c4b8 100644
--- a/locales/sv/LC_MESSAGES/messages.po
+++ b/locales/sv/LC_MESSAGES/messages.po
@@ -117,9 +117,6 @@ msgstr ""
 "Identitetshanteraren (Identity Provider) svarade med ett felmeddelande. "
 "(Statusmeddelandet i SAML-svaret var ett felmeddelande)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadata"
-
 msgid "{login:help_text}"
 msgstr ""
 "Tyvärr kan du inte logga in i tjänsten om du inte har ditt användarnamn "
@@ -222,9 +219,6 @@ msgstr "Loggar ut..."
 msgid "{login:error_wrongpassword}"
 msgstr "Fel användarnamn eller lösenord."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Service Provider (Fjärr)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Identitetshanteraren (Identity Provider) har tagit emot en "
@@ -459,9 +453,6 @@ msgstr "Skickar meddelande"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Fel mottaget från IdP"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "För att titta på detaljer för en SAML-entitet klicka på rubriken för "
@@ -534,9 +525,6 @@ msgstr "Sidan finns inte"
 msgid "{logout:logged_out_text}"
 msgstr "Du har blivit uloggad. Tack för att du använde denna tjänst."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Service Provider (Värd)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "Hämta X509-certifikaten som PEM-kodade filer."
 
@@ -564,8 +552,11 @@ msgstr ""
 " av SimpleSAMLphp. Kontakta den som sköter inloggningtjänsten för att "
 "meddela dem ovanstående felmeddelande."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Identity Provider (Värd)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Mobiltelefon"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Önskvärt språk"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Du tillhandahöll inget godkänt certifikat"
@@ -601,9 +592,6 @@ msgstr "Inget certfikat"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Utloggningsinformation är borta"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Identity Provider (Fjärr)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "Det förfaller som SimpleSAMLphp är felkonfigurerat."
 
diff --git a/locales/tr/LC_MESSAGES/messages.po b/locales/tr/LC_MESSAGES/messages.po
index b882653da59406d27638d4aa3bb1087ab4425ed2..dfb51e1910afe824175aa000425fa8d584b0b4a9 100644
--- a/locales/tr/LC_MESSAGES/messages.po
+++ b/locales/tr/LC_MESSAGES/messages.po
@@ -105,9 +105,6 @@ msgstr ""
 "Kimlik Sağlayıcı hatalı cevap verdi. (SAML Cevabı'ndaki durum kodu "
 "başarılamadı)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Üstveri (Metadata)"
-
 msgid "{login:help_text}"
 msgstr ""
 "Çok kötü! - Kullanıcı adınız ve şifreniz olmadan bu servisi "
@@ -203,9 +200,6 @@ msgstr "Çıkıyor"
 msgid "{login:error_wrongpassword}"
 msgstr "Kullanıcı adı ve/veya şifre yanlış."
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 Servis Sağlayıcı (Uzak sistemde sunulan)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr ""
 "Bu Kimlik Sağlayıcı bir Servis Sağlayıcı'dan kimlik doğrulama isteği "
@@ -416,9 +410,6 @@ msgstr "Mesaj gönderiliyor"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "Kimlik Sağlayıcıdan hata alındı."
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Üstveri (Metadata)"
-
 msgid "{admin:metaover_intro}"
 msgstr ""
 "Bir SAML elemanı hakkındaki detayları görmek için, SAML elemanı başlığına"
@@ -485,9 +476,6 @@ msgstr "Sayfa bulunamadı"
 msgid "{logout:logged_out_text}"
 msgstr "Çıktınız"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 Servis Sağlayıcı (Bu sistemde sunulan)"
-
 msgid "{admin:debug_sending_message_msg_title}"
 msgstr "Mesaj"
 
@@ -503,8 +491,11 @@ msgstr ""
 " ndeniyle oluşmuş olabilir. Bu oturum açma servisinin yöneticisi ile "
 "iletişim kurun ve yukarıdaki hata mesajını gönderin."
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 Kimlik Sağlayıcı (Bu sistemde sunulan)"
+msgid "{attributes:attribute_mobile}"
+msgstr "Cep telefonu numarası"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "Tercih edilen dil"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "Geçerli bir sertifika sağlamadınız. "
@@ -535,9 +526,6 @@ msgstr "Verilen sayfa bulunamadı. Nedeni %REASON% idi. URL %URL% idi."
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "Çıkış bilgisi kaybedildi"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 Kimlik Sağlayıcı (Uzak sistemde sunulan)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp doğru yapılandırılmış gibi görünmüyor."
 
diff --git a/locales/zh-tw/LC_MESSAGES/messages.po b/locales/zh-tw/LC_MESSAGES/messages.po
index 00b2748d02d588ab477f93c689bf20eebe5a95ce..ad3f1b19b0d91d8e62e92012976d3f619ce44182 100644
--- a/locales/zh-tw/LC_MESSAGES/messages.po
+++ b/locales/zh-tw/LC_MESSAGES/messages.po
@@ -98,9 +98,6 @@ msgstr "當您在除錯模式,您可以看到您所傳遞的訊息內容:"
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "驗證提供者回應一個錯誤。(在 SAML 回應裡的狀態碼為不成功)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP Metadata"
-
 msgid "{login:help_text}"
 msgstr "喔喔!如果您的帳號和密碼錯誤,系統將無法提供相關服務!"
 
@@ -194,9 +191,6 @@ msgstr "登出中..."
 msgid "{login:error_wrongpassword}"
 msgstr "錯誤的帳號或密碼。"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 服務提供者(遠端)"
-
 msgid "{login:remember_username}"
 msgstr "記住我的使用者名稱"
 
@@ -415,9 +409,6 @@ msgstr "傳送訊息"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "從驗證提供者收到錯誤"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP Metadata"
-
 msgid "{admin:metaover_intro}"
 msgstr "點選 SAML 物件標題,可檢視 SAML 物件詳細資訊。"
 
@@ -490,9 +481,6 @@ msgstr "找不到頁面"
 msgid "{logout:logged_out_text}"
 msgstr "您已登出"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 服務提供者(主機)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "下載 PEM 格式之 X.509 憑證檔案"
 
@@ -520,8 +508,8 @@ msgstr "這個問題可能是因為 SimpleSAMLphp 的某些例外的行為或無
 msgid "{admin:metadata_adfs-idp}"
 msgstr "ADFS 驗證提供者 Metadata"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 驗證提供者(主機)"
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "喜好語言"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "您提供的憑證無效。"
@@ -553,9 +541,6 @@ msgstr "無憑證"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "登出訊息遺失"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 驗證提供者(遠端)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp 出現無效設定。"
 
diff --git a/locales/zh/LC_MESSAGES/messages.po b/locales/zh/LC_MESSAGES/messages.po
index 93b138bcaf5f20e302d3713d48a5a083ce56758f..f78ef546a40202d349f491410e6f9009c6d1652b 100644
--- a/locales/zh/LC_MESSAGES/messages.po
+++ b/locales/zh/LC_MESSAGES/messages.po
@@ -96,9 +96,6 @@ msgstr "当你处在调试模式中时,你将看到你正在发送的消息的
 msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}"
 msgstr "身份提供者的应答存在错误(SAML应答状态码并没有成功)"
 
-msgid "{admin:metadata_shib13-idp}"
-msgstr "Shib 1.3 IdP 元信息"
-
 msgid "{login:help_text}"
 msgstr "太糟糕了!-没有你的用户名和密码你将不能访问该服务,也许有人能够帮助你,请咨询你所在大学的服务台"
 
@@ -186,9 +183,6 @@ msgstr "正在退出"
 msgid "{login:error_wrongpassword}"
 msgstr "错误的用户名或者密码"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-remote}"
-msgstr "Shib 1.3 服务提供者(远程)"
-
 msgid "{errors:descr_PROCESSAUTHNREQUEST}"
 msgstr "该身份提供者接受到了一个来自服务提供者的认证请求,但是在试图处理该请求的过程中发生了错误"
 
@@ -396,9 +390,6 @@ msgstr "正在发送消息"
 msgid "{errors:title_RESPONSESTATUSNOSUCCESS}"
 msgstr "从身份提供者收到一个错误"
 
-msgid "{admin:metadata_shib13-sp}"
-msgstr "Shib 1.3 SP 元信息"
-
 msgid "{admin:metaover_intro}"
 msgstr "想要查看SAML实体的详细情况,请点击SAML实体载入器"
 
@@ -465,9 +456,6 @@ msgstr "页面没有找到"
 msgid "{logout:logged_out_text}"
 msgstr "你已经退出了"
 
-msgid "{admin:metaover_group_metadata.shib13-sp-hosted}"
-msgstr "Shib 1.3 服务提供者(本地)"
-
 msgid "{admin:metadata_cert_intro}"
 msgstr "下载X509证书作为PEM编码的文件"
 
@@ -489,8 +477,11 @@ msgstr "没有找到给定的URL:%URL%"
 msgid "{errors:howto_text}"
 msgstr "这个错误可能是由于一些意想不到的行为或者是SimpleSAMLphp的配置错误导致的,请联系这个登录服务器的管理员并把上面的错误消息发送给他们"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-hosted}"
-msgstr "Shib 1.3 认证提供者(本地)"
+msgid "{attributes:attribute_mobile}"
+msgstr "手机"
+
+msgid "{attributes:attribute_preferredlanguage}"
+msgstr "首选语言"
 
 msgid "{errors:descr_NOTVALIDCERT}"
 msgstr "你没有提交一个有效的证书"
@@ -522,9 +513,6 @@ msgstr "无证书"
 msgid "{errors:title_LOGOUTINFOLOST}"
 msgstr "丢失了退出消息"
 
-msgid "{admin:metaover_group_metadata.shib13-idp-remote}"
-msgstr "Shib 1.3 认证提供者(远程)"
-
 msgid "{errors:descr_CONFIG}"
 msgstr "SimpleSAMLphp出现配置错误"
 
diff --git a/metadata-templates/shib13-idp-hosted.php b/metadata-templates/shib13-idp-hosted.php
deleted file mode 100644
index dc6c9e0a9516b5eb756b2a4960b6a16fdab15df8..0000000000000000000000000000000000000000
--- a/metadata-templates/shib13-idp-hosted.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/**
- * SAML 1.1 IdP configuration for SimpleSAMLphp.
- *
- * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-hosted
- */
-
-$metadata['__DYNAMIC:1__'] = [
-    /*
-     * The hostname of the server (VHOST) that will use this SAML entity.
-     *
-     * Can be '__DEFAULT__', to use this entry by default.
-     */
-    'host' => '__DEFAULT__',
-
-    // X.509 key and certificate. Relative to the cert directory.
-    'privatekey' => 'server.pem',
-    'certificate' => 'server.crt',
-
-    /*
-     * Authentication source to use. Must be one that is configured in
-     * 'config/authsources.php'.
-     */
-    'auth' => 'example-userpass',
-];
diff --git a/metadata-templates/shib13-idp-remote.php b/metadata-templates/shib13-idp-remote.php
deleted file mode 100644
index 9aa6f0e647b7dbe9a6c008b8f08f855bfc2d000e..0000000000000000000000000000000000000000
--- a/metadata-templates/shib13-idp-remote.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-/**
- * SAML 1.1 remote IdP metadata for SimpleSAMLphp.
- *
- * Remember to remove the IdPs you don't use from this file.
- *
- * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote
- */
-
-/*
-$metadata['theproviderid-of-the-idp'] = [
-    'SingleSignOnService' => 'https://idp.example.org/shibboleth-idp/SSO',
-    'certificate' => 'example.pem',
-];
-*/
diff --git a/metadata-templates/shib13-sp-hosted.php b/metadata-templates/shib13-sp-hosted.php
deleted file mode 100644
index 15a275a3837e0670afe7954712deebfc5ada0b71..0000000000000000000000000000000000000000
--- a/metadata-templates/shib13-sp-hosted.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-/**
- * SAML 1.1 SP configuration for SimpleSAMLphp.
- *
- * See: https://simplesamlphp.org/docs/stable/saml:sp
- */
-
-/*
- * Example of hosted Shibboleth 1.3 SP.
- */
-$metadata['__DYNAMIC:1__'] = [
-    'host' => '__DEFAULT__',
-];
diff --git a/metadata-templates/shib13-sp-remote.php b/metadata-templates/shib13-sp-remote.php
deleted file mode 100644
index b2fb1d8e0a07cb2c7c8733b5e3c16b13e019c458..0000000000000000000000000000000000000000
--- a/metadata-templates/shib13-sp-remote.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-/**
- * SAML 1.1 remote SP metadata for SimpleSAMLphp.
- *
- * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-sp-remote
- */
-
-/*
- * This is just an example:
- */
-$metadata['https://sp.shiblab.feide.no'] = [
-    'AssertionConsumerService' => 'http://sp.shiblab.feide.no/Shibboleth.sso/SAML/POST',
-    'audience' => 'urn:mace:feide:shiblab',
-    'base64attributes' => false,
-];
diff --git a/modules/admin/lib/Controller/Config.php b/modules/admin/lib/Controller/Config.php
index 445ff8c23b350fbf1e0ae0d530b6fea3562488f0..ad94e0df787de7f4c0bac48391819f1a1f4b0afb 100644
--- a/modules/admin/lib/Controller/Config.php
+++ b/modules/admin/lib/Controller/Config.php
@@ -111,7 +111,6 @@ class Config
             ],
             'enablematrix' => [
                 'saml20idp' => $this->config->getBoolean('enable.saml20-idp', false),
-                'shib13idp' => $this->config->getBoolean('enable.shib13-idp', false),
             ],
             'funcmatrix' => $this->getPrerequisiteChecks(),
             'logouturl' => Utils\Auth::getAdminLogoutURL(),
diff --git a/modules/admin/lib/Controller/Federation.php b/modules/admin/lib/Controller/Federation.php
index 93f0eeab3be89a2fbc3cfe5c02764cf9c3c42cf2..6b6e0ca3710b152700ffc72cfba9f10173f6e1da 100644
--- a/modules/admin/lib/Controller/Federation.php
+++ b/modules/admin/lib/Controller/Federation.php
@@ -73,11 +73,8 @@ class Federation
             'hosted' => array_merge($hostedSPs, $hostedIdPs),
             'remote' => [
                 'saml20-idp-remote' => !empty($hostedSPs) ? $this->mdHandler->getList('saml20-idp-remote', true) : [],
-                'shib13-idp-remote' => !empty($hostedSPs) ? $this->mdHandler->getList('shib13-idp-remote', true) : [],
                 'saml20-sp-remote' => $this->config->getBoolean('enable.saml20-idp', false) === true
                     ? $this->mdHandler->getList('saml20-sp-remote', true) : [],
-                'shib13-sp-remote' => $this->config->getBoolean('enable.shib13-idp', false) === true
-                    ? $this->mdHandler->getList('shib13-sp-remote', true) : [],
                 'adfs-sp-remote' => ($this->config->getBoolean('enable.adfs-idp', false) === true) &&
                     Module::isModuleEnabled('adfs') ? $this->mdHandler->getList('adfs-sp-remote', true) : [],
             ],
@@ -139,10 +136,6 @@ class Federation
                 'saml20-sp-hosted' => Translate::noop('SAML 2.0 SP metadata'),
                 'saml20-idp-remote' => Translate::noop('SAML 2.0 IdP metadata'),
                 'saml20-idp-hosted' => Translate::noop('SAML 2.0 IdP metadata'),
-                'shib13-sp-remote' => Translate::noop('SAML 1.1 SP metadata'),
-                'shib13-sp-hosted' => Translate::noop('SAML 1.1 SP metadata'),
-                'shib13-idp-remote' => Translate::noop('SAML 1.1 IdP metadata'),
-                'shib13-idp-hosted' => Translate::noop('SAML 1.1 IdP metadata'),
                 'adfs-sp-remote' => Translate::noop('ADFS SP metadata'),
                 'adfs-sp-hosted' => Translate::noop('ADFS SP metadata'),
                 'adfs-idp-remote' => Translate::noop('ADFS IdP metadata'),
@@ -208,47 +201,6 @@ class Federation
             }
         }
 
-        // SAML 1.1 / Shib13
-        if ($this->config->getBoolean('enable.shib13-idp', false)) {
-            try {
-                $idps = $this->mdHandler->getList('shib13-idp-hosted');
-                $shib13entities = [];
-                if (count($idps) > 1) {
-                    foreach ($idps as $index => $idp) {
-                        $idp['url'] = Module::getModuleURL('saml/1.1/idp/metadata/' . $idp['auth']);
-                        $idp['metadata-set'] = 'shib13-idp-hosted';
-                        $idp['metadata-index'] = $index;
-                        $idp['metadata_array'] = SAML1_IdP::getHostedMetadata($idp['entityid']);
-                        $shib13entities[] = $idp;
-                    }
-                } else {
-                    $shib13entities['shib13-idp'] = $this->mdHandler->getMetaDataCurrent('shib13-idp-hosted');
-                    $shib13entities['shib13-idp']['url'] = Utils\HTTP::getBaseURL() . 'shib13/idp/metadata.php';
-                    $shib13entities['shib13-idp']['metadata_array'] = SAML1_IdP::getHostedMetadata(
-                        $this->mdHandler->getMetaDataCurrentEntityID('shib13-idp-hosted')
-                    );
-                }
-
-                foreach ($shib13entities as $index => $entity) {
-                    $builder = new SAMLBuilder($entity['entityid']);
-                    $builder->addMetadataIdP11($entity['metadata_array']);
-                    $builder->addOrganizationInfo($entity['metadata_array']);
-                    foreach ($entity['metadata_array']['contacts'] as $contact) {
-                        $builder->addContact($contact['contactType'], $contact);
-                    }
-
-                    $entity['metadata'] = Signer::sign(
-                        $builder->getEntityDescriptorText(),
-                        $entity['metadata_array'],
-                        'Shib 1.3 IdP'
-                    );
-                    $entities[$index] = $entity;
-                }
-            } catch (\Exception $e) {
-                Logger::error('Federation: Error loading shib13-idp: ' . $e->getMessage());
-            }
-        }
-
         // ADFS
         if ($this->config->getBoolean('enable.adfs-idp', false) && Module::isModuleEnabled('adfs')) {
             try {
@@ -408,8 +360,6 @@ class Federation
             // get all metadata for the entities
             foreach ($entities as &$entity) {
                 $entity = [
-                    'shib13-sp-remote'  => $entity->getMetadata1xSP(),
-                    'shib13-idp-remote' => $entity->getMetadata1xIdP(),
                     'saml20-sp-remote'  => $entity->getMetadata20SP(),
                     'saml20-idp-remote' => $entity->getMetadata20IdP(),
                 ];
diff --git a/modules/admin/templates/config.twig b/modules/admin/templates/config.twig
index 017b653eee05d21f50c85eedbf19220a81c6424d..0fddf8fdbd7c698fc2d4f4d1b82050d475875393 100644
--- a/modules/admin/templates/config.twig
+++ b/modules/admin/templates/config.twig
@@ -27,10 +27,6 @@
           <td>SAML 2.0 IdP</td>
           <td><i class="fa fa-{%- if enablematrix.saml20idp %}check{% else %}ban{% endif %}"></i></td>
         </tr>
-        <tr class="{%- if enablematrix.shib13idp %}enabled{% else %}disabled{% endif -%}">
-          <td>Shib 1.3 IdP</td>
-          <td><i class="fa fa-{%- if enablematrix.shib13idp %}check{% else %}ban{% endif %}"></i></td>
-        </tr>
       </table>
     </div>
     <ul>
diff --git a/modules/core/locales/ar/LC_MESSAGES/core.po b/modules/core/locales/ar/LC_MESSAGES/core.po
index 84c0fc10ca1ca5631ce6175e2751a6bf68f3f968..6aab0ba6eb85244f6c0a2041c24e6699712e38a3 100644
--- a/modules/core/locales/ar/LC_MESSAGES/core.po
+++ b/modules/core/locales/ar/LC_MESSAGES/core.po
@@ -28,9 +28,6 @@ msgstr "استخدام أزرار الرجوع للخلف و الامام بمت
 msgid "{core:no_metadata:not_found_for}"
 msgstr "لا يمكننا تحديد موقع البيانات الوصفية لهذه الجزئية"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "مثال Shibboleth 1.3 SP- اختبر تسجيل الدخول مستخدماً هوية Shib IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "اقتراحات لحل المشكلة "
 
@@ -71,11 +68,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "اختياري"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"البيانات الوصفية/الميتاداتا لمقدم Shibboleth 1.3 الضيف (تم تجهيزها "
-"اتوماتيكياً)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "الكتيبات التعريفية"
 
@@ -159,11 +151,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "البيانات الوصفية مفقودة"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"البيانات الوصفية/الميتاداتا لهوية مقدم Shibboleth 1.3 الضيف (تم تجهيزها "
-"اتوماتيكياً)"
-
 msgid "{core:frontpage:required}"
 msgstr "مطلوب"
 
diff --git a/modules/core/locales/cs/LC_MESSAGES/core.po b/modules/core/locales/cs/LC_MESSAGES/core.po
index 0c5a0b5c613eeca008b188e005dd65acbe14d84d..1d27e4a80e61a1ab1c0b9fdd3cf954181e4ab2dc 100644
--- a/modules/core/locales/cs/LC_MESSAGES/core.po
+++ b/modules/core/locales/cs/LC_MESSAGES/core.po
@@ -28,9 +28,6 @@ msgstr "Použitím tlačítek zpět a vpřed ve webvém prohlížeči."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Nebyla nalezena metadata pro entitu:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP ukázka - testovací přihlášení pomocí vaší Shib IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Návrhy pro vyřešení tohoto problému:"
 
@@ -74,11 +71,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "Volitelné"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Metada lookálního (hosted) Shibboleth 1.3 poskytovatele služby (SP) "
-"(automaticky generované)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentace"
 
@@ -162,11 +154,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadata nebyla nalezena"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Metada lookálního (hosted) Shibboleth 1.3 poskytovatele služby (IdP) "
-"(automaticky generované)"
-
 msgid "{core:frontpage:required}"
 msgstr "Požadováno"
 
diff --git a/modules/core/locales/da/LC_MESSAGES/core.po b/modules/core/locales/da/LC_MESSAGES/core.po
index ed0dbe54c6bce2d86f1b9ce9b4b3234e70875041..7b48446e58223ff831f6d6b8a0218cb82b209f44 100644
--- a/modules/core/locales/da/LC_MESSAGES/core.po
+++ b/modules/core/locales/da/LC_MESSAGES/core.po
@@ -29,11 +29,6 @@ msgstr "Brug frem- og tilbage-knappen i browseren."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Vi kan ikke finde metadata for denne forbindelse:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Shibboleth 1.3 SP eksempel - test indlogning med Shibboleth 1.3 via din "
-"IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Løsningsforslag til problemet:"
 
@@ -73,9 +68,6 @@ msgstr "Hosted SAML 2.0 identitetsudbyder metadata (automatisk genereret)"
 msgid "{core:frontpage:optional}"
 msgstr "Valgfrit"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Hosted Shibboleth 1.3 tjenesteudbyder metadata (automatisk genereret)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentation"
 
@@ -166,9 +158,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadata er ikke fundt"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Hosted Shibboleth 1.3 identitetsudbyder metadata (automatisk genereret)"
-
 msgid "{core:frontpage:required}"
 msgstr "Påkrævet"
 
diff --git a/modules/core/locales/de/LC_MESSAGES/core.po b/modules/core/locales/de/LC_MESSAGES/core.po
index c6648ced42ba13a2c629d44045331a7dcd68f94d..4a53b47796c3a1550e14277afc5079850d446d4f 100644
--- a/modules/core/locales/de/LC_MESSAGES/core.po
+++ b/modules/core/locales/de/LC_MESSAGES/core.po
@@ -29,9 +29,6 @@ msgstr "Das Benutzen der Zurück- und Vorwärts-Schaltflächen im Web-Browser."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Für folgende Entität konnten keine Metadaten gefunden werden:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP Beispiel - Anmelden über ihren Shibboleth IdP testen"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Empfehlungen um dieses Problem zu lösen:"
 
@@ -71,9 +68,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadaten (automatisch generiert)"
 msgid "{core:frontpage:optional}"
 msgstr "Optional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Hosted Shibboleth 1.3 Service Provider Metadaten (automatisch generiert)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentation"
 
@@ -162,9 +156,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Keine Metadaten gefunden"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Hosted Shibboleth 1.3 Identity Provider Metadaten (automatisch generiert)"
-
 msgid "{core:frontpage:required}"
 msgstr "Erforderlich"
 
diff --git a/modules/core/locales/el/LC_MESSAGES/core.po b/modules/core/locales/el/LC_MESSAGES/core.po
index a2f7c1563303b807287a7828262619075a2bc061..36d11b41cfdfece620c31534f539753e211d4a36 100644
--- a/modules/core/locales/el/LC_MESSAGES/core.po
+++ b/modules/core/locales/el/LC_MESSAGES/core.po
@@ -29,11 +29,6 @@ msgstr "Μεταβήκατε πίσω και εμπρός στο ιστορικ
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Δεν ήταν δυνατό να βρεθούν μεταδεδομένα για την οντότητα:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Παράδειγμα Παρόχου Υπηρεσιών Shibboleth 1.3 - δοκιμή εισόδου μέσω Παρόχου"
-" Ταυτότητας Shibboleth 1.3"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Προτάσεις για την επίλυση αυτού του προβλήματος:"
 
@@ -79,11 +74,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "Προαιρετικό"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Μεταδεδομένα φιλοξενούμενου Παρόχου Υπηρεσιών Shibboleth 1.3 (παράγονται "
-"αυτόματα)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Τεκμηρίωση"
 
@@ -182,11 +172,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Δεν βρέθηκαν μεταδεδομένα"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Μεταδεδομένα φιλοξενούμενου Παρόχου Ταυτότητας Shibboleth 1.3 (παράγονται"
-" αυτόματα)"
-
 msgid "{core:frontpage:required}"
 msgstr "Απαιτείται"
 
diff --git a/modules/core/locales/en/LC_MESSAGES/core.po b/modules/core/locales/en/LC_MESSAGES/core.po
index b7c59dcf45e2be9c8bc6c74ce8ca5c2e34e7f0db..6abe03ef7fab4ebc5696447213b263ef00508e15 100644
--- a/modules/core/locales/en/LC_MESSAGES/core.po
+++ b/modules/core/locales/en/LC_MESSAGES/core.po
@@ -30,9 +30,6 @@ msgstr "Using the back and forward buttons in the web browser."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "We were unable to locate the metadata for the entity:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP example - test logging in through your Shib IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Suggestions for resolving this problem:"
 
@@ -99,9 +96,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadata (automatically generated)"
 msgid "{core:frontpage:optional}"
 msgstr "Optional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentation"
 
@@ -202,9 +196,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadata not found"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)"
-
 msgid "{core:frontpage:required}"
 msgstr "Required"
 
diff --git a/modules/core/locales/es/LC_MESSAGES/core.po b/modules/core/locales/es/LC_MESSAGES/core.po
index 44ad5e2ef0255d0c92cc771ca963babdcbb3c277..4950c24963a20c62751d64b10b03cabee7b506af 100644
--- a/modules/core/locales/es/LC_MESSAGES/core.po
+++ b/modules/core/locales/es/LC_MESSAGES/core.po
@@ -29,11 +29,6 @@ msgstr "Usando los botones atrás y adelante de su navegador web."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Fue imposible localizar los metadatos para la entidad:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Ejemplo de SP empleando Shibboleth 1.3 - Prueba a acceder empleando tu "
-"IdP Shibboleth"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Sugerencias para resolver este problema"
 
@@ -73,9 +68,6 @@ msgstr "Metadatos alojados del IdP SAML 2.0 (generados automáticamente)"
 msgid "{core:frontpage:optional}"
 msgstr "Opcional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Metadatos alojados del SP Shibooleth 1.3 (generados automáticamente)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentaci&oacute;n"
 
@@ -177,9 +169,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadatos no encontrados"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Metadatos alojados del IdP Shibooleth 1.3 (generados automáticamente)"
-
 msgid "{core:frontpage:required}"
 msgstr "Necesario"
 
diff --git a/modules/core/locales/et/LC_MESSAGES/core.po b/modules/core/locales/et/LC_MESSAGES/core.po
index 0e39b15bab51be78e6f880444a886423b526dbaa..699b09bf97bc60c3e421da840244095262b83ca1 100644
--- a/modules/core/locales/et/LC_MESSAGES/core.po
+++ b/modules/core/locales/et/LC_MESSAGES/core.po
@@ -27,9 +27,6 @@ msgstr "brauseri edasi-tagasi nuppude kasutamisest"
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Ei suudetud leida olemi metaandmeid:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP näide - sisselogimine sinu Shib IdP kaudu"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Nõuanded selle probleemi lahendamiseks:"
 
@@ -71,11 +68,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "Vabatahtlik"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Hostitud Shibboleth 1.3 identiteedipakkuja metaandmed (automaatselt "
-"genereeritud) "
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentatsioon"
 
@@ -159,11 +151,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metaandmeid ei leitud"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Hostitud Shibboleth 2.0 identiteedipakkuja metaandmed (automaatselt "
-"genereeritud) "
-
 msgid "{core:frontpage:required}"
 msgstr "Nõutav"
 
diff --git a/modules/core/locales/eu/LC_MESSAGES/core.po b/modules/core/locales/eu/LC_MESSAGES/core.po
index d979950a1de6dcc8101453a0318bd930b3df4647..7337f6243988d6c0203abde4777789668205e75d 100644
--- a/modules/core/locales/eu/LC_MESSAGES/core.po
+++ b/modules/core/locales/eu/LC_MESSAGES/core.po
@@ -29,11 +29,6 @@ msgstr "Zure web nabigatzaileko atzera eta aurrera botoiak erabiltzen."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Ezinezkoa izan da erakunde honentzat metadaturik aurkitzea: "
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"SPren adibidea Shibboleth 1.3 erabiliz - saikera zure IdP Shibboleth "
-"erabiliz sartzen"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Arazo hau konpontzeko iradokizunak:"
 
@@ -73,9 +68,6 @@ msgstr "IdP SAML 2.0ren ostatatutako metadatuak (automatikoki sortuak)"
 msgid "{core:frontpage:optional}"
 msgstr "Hautazkoa"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "SP Shibooleth 1.3ren ostatatutako metadatuak (automatikoki sortuak)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentazioa"
 
@@ -163,9 +155,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Ez da aurkitu metadaturik"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "IdP Shibooleth 1.3ren ostatatutako metadatuak (automatikoki sortuak)"
-
 msgid "{core:frontpage:required}"
 msgstr "Beharrezkoa"
 
diff --git a/modules/core/locales/fi/LC_MESSAGES/core.po b/modules/core/locales/fi/LC_MESSAGES/core.po
index 729b867ca7db55796e5f63fe4daea96b9d268235..7c7b1d618f3b9b7debce25494cb8d0f618302d81 100644
--- a/modules/core/locales/fi/LC_MESSAGES/core.po
+++ b/modules/core/locales/fi/LC_MESSAGES/core.po
@@ -18,9 +18,6 @@ msgstr ""
 msgid "{core:frontpage:link_phpinfo}"
 msgstr "PHP info"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP esimerkki - testikirjautuminen Shib IdP:si kautta"
-
 msgid "{core:frontpage:login_as_admin}"
 msgstr "Kirjaudu ylläpitäjänä"
 
@@ -45,11 +42,6 @@ msgstr "Isännöidyn SAML 2.0 identiteetintarjoajan Metadata (automaattisesti lu
 msgid "{core:frontpage:optional}"
 msgstr "Valinnainen"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Isännöidyn Shibboleth 1.3 palveluntarjoajan Metadata (automaattisesti "
-"luotu)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentaatio"
 
@@ -112,11 +104,6 @@ msgstr ""
 "SimpleSAMLphp:n. Tämä on asennuksen lähtösivu, millä löydät linkkejä "
 "testiesimerkkeihin, diagnostiikkaan, metadataan ja dokumentaatioon."
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Isännöidyn Shibboleth 1.3 identiteetintarjoajan Metadata (automaattisesti"
-" luotu)"
-
 msgid "{core:frontpage:required}"
 msgstr "Pakollinen"
 
diff --git a/modules/core/locales/fr/LC_MESSAGES/core.po b/modules/core/locales/fr/LC_MESSAGES/core.po
index 188d437f3ea0d032f0504322c347cc1951bd8aad..2178bffeebbe44257ce8001afa433747798ae0f8 100644
--- a/modules/core/locales/fr/LC_MESSAGES/core.po
+++ b/modules/core/locales/fr/LC_MESSAGES/core.po
@@ -29,9 +29,6 @@ msgstr "Utilisation des boutons avance et retour dans le navigateur."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Nous ne trouvons pas les métadonnées de l'entité :"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "SP Shibboleth 1.3 d'exemple - tester l'identification via votre IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Suggestions pour résoudre ce problème :"
 
@@ -70,11 +67,6 @@ msgstr "Métadonnées du fournisseur d'identités SAML 2.0 (générées automati
 msgid "{core:frontpage:optional}"
 msgstr "Facultatif"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Métadonnées du fournisseur de service Shibboleth 1.3 (générées "
-"automatiquement)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentation"
 
@@ -162,11 +154,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Métadonnées non trouvées"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Métadonnées du fournisseur d'identités Shibboleth 1.3 (générées "
-"automatiquement)"
-
 msgid "{core:frontpage:required}"
 msgstr "Obligatoire"
 
diff --git a/modules/core/locales/he/LC_MESSAGES/core.po b/modules/core/locales/he/LC_MESSAGES/core.po
index ea53dbbe1b247484ad4de84cfca8124722cb834d..af76673a85254234df0a6d9621b651d8bcaeb58b 100644
--- a/modules/core/locales/he/LC_MESSAGES/core.po
+++ b/modules/core/locales/he/LC_MESSAGES/core.po
@@ -27,11 +27,6 @@ msgstr "שימוש בכפתורי הבא והקודם בדפדפן."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "לא הצלחנו לאתר מטא-מידע עבור הישות:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"דוגמא לס\"ש מסוג Shibboleth 1.3 - בוחן כניסה למערכת דרך ס\"ז מסוג - "
-"Shibboleth"
-
 msgid "{core:no_state:suggestions}"
 msgstr "הצעות לפתרון הבעייה הנוכחית:"
 
@@ -70,9 +65,6 @@ msgstr "מטא-הנתונים של ספק הזהויות מסוג SAML 2.0 המ
 msgid "{core:frontpage:optional}"
 msgstr "נתון לבחירה"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "מטא-הנתונים של ספק השירותים מסוג Shibboleth 1.3 המאורח (נוצר אוטומטית)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "תיעוד"
 
@@ -156,9 +148,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "מטא-מידע לא נמצא"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "מטא-הנתונים של ספק השזהויות מסוג Shibboleth 1.3 המאורח (נוצר אוטומטית)"
-
 msgid "{core:frontpage:required}"
 msgstr "דרוש"
 
diff --git a/modules/core/locales/hr/LC_MESSAGES/core.po b/modules/core/locales/hr/LC_MESSAGES/core.po
index 4e0311f3db3fe617ff3177d05b342761e15a33ea..c6b0ff417a40b234c7bc02bf88030408eea18678 100644
--- a/modules/core/locales/hr/LC_MESSAGES/core.po
+++ b/modules/core/locales/hr/LC_MESSAGES/core.po
@@ -32,9 +32,6 @@ msgstr ""
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Ne mogu pronaći metapodatke za entitet:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP primjer - isprobajte autentifikaciju kroz vaš Shib IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Preporuke za rješavanje ovog problema:"
 
@@ -76,9 +73,6 @@ msgstr "Metapodaci za lokalni SAML 2.0 IdP (automatski generirani) "
 msgid "{core:frontpage:optional}"
 msgstr "Opcionalno"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Metapodaci za lokalni Shibboleth 1.3 SP (automatski generirani)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentacija"
 
@@ -169,9 +163,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metapodaci nisu pronađeni"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Metapodaci za lokalni Shibboleth 1.3 IdP (automatski generirani)"
-
 msgid "{core:frontpage:required}"
 msgstr "Obavezno"
 
diff --git a/modules/core/locales/hu/LC_MESSAGES/core.po b/modules/core/locales/hu/LC_MESSAGES/core.po
index 2304e086d459c8a2ede5de935fb6b58b6d7d5348..e4363a422e68ad594c0056e316c09a28ec2b69b4 100644
--- a/modules/core/locales/hu/LC_MESSAGES/core.po
+++ b/modules/core/locales/hu/LC_MESSAGES/core.po
@@ -29,11 +29,6 @@ msgstr "Használja a böngésző előre, ill. vissza gombjait"
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Az következő entitáshoz nem található metaadat:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Shibboleth 1.3 SP példa - teszt bejelentkezés saját Shibboleth 1.3 IdP "
-"keresztül"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Javaslat a probléma elhárítására:"
 
@@ -77,11 +72,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "Opcionális"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Ezen a gépen futó (hosted) Shibboleth 1.3 alkalmazásszolgáltató (SP) "
-"metaadat (automatikusan generált)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentáció"
 
@@ -165,11 +155,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Nem található használható metaadat"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Ezen a gépen futó (hosted) Shibboleth 1.3 személyazonosság-szolgáltató "
-"(IdP) metaadat (automatikusan generált)"
-
 msgid "{core:frontpage:required}"
 msgstr "Szükséges"
 
diff --git a/modules/core/locales/id/LC_MESSAGES/core.po b/modules/core/locales/id/LC_MESSAGES/core.po
index 75646d0a570c75863ca422da57c77de83b69ca91..3dc63134e3cdaad4165cb014614272444fed4e87 100644
--- a/modules/core/locales/id/LC_MESSAGES/core.po
+++ b/modules/core/locales/id/LC_MESSAGES/core.po
@@ -29,9 +29,6 @@ msgstr "Menggunakan tombol back dan forward pada browser web."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Kita tidak dapat menemukan metadata untuk entity"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Contoh Shibboleth 1.3 SP  - Tes login melalui IdP Shib Anda"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Saran untuk memperbaiki masalah ini:"
 
@@ -71,11 +68,6 @@ msgstr "Metadata Identity Provider SAML 2.0 Hosted (secara otomatis digenerate)"
 msgid "{core:frontpage:optional}"
 msgstr "Opsional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Metadata Service Provider Shibboleth 1.3  Hosted (secara otomatis "
-"digenerate)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentasi"
 
@@ -161,11 +153,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadata tidak ditemukan"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Metadata Identity Provider Shibboleth 1.3 Hosted (secara otomatis "
-"digenerate)"
-
 msgid "{core:frontpage:required}"
 msgstr "Diperlukan"
 
diff --git a/modules/core/locales/it/LC_MESSAGES/core.po b/modules/core/locales/it/LC_MESSAGES/core.po
index 555f86a8e2b379ffd15042f3ec814dbf4470b3c4..207a2951338d3e26fe6421b34508e5afcbf487c0 100644
--- a/modules/core/locales/it/LC_MESSAGES/core.po
+++ b/modules/core/locales/it/LC_MESSAGES/core.po
@@ -29,11 +29,6 @@ msgstr "Utilizzo i pulsanti avanti ed indietro del browser web."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Non siamo stati in grado di localizzare i metadati per l'entità:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Esempio di Shibboleth 1.3 SP - prova l'autenticazione tramite il tuo IdP "
-"Shibboleth"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Suggerimenti per risolvere questo problema:"
 
@@ -73,11 +68,6 @@ msgstr "Metadati dell'Identity Provider SAML 2.0 Locale (generati automaticament
 msgid "{core:frontpage:optional}"
 msgstr "Facoltativo"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Metadati del Service Provider Shibboleth 1.3 Locale (generati "
-"automaticamente)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentazione"
 
@@ -166,11 +156,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadati non trovati"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Metadati dell'Identity Provider Shibboleth 1.3 Locale (generati "
-"automaticamente)"
-
 msgid "{core:frontpage:required}"
 msgstr "Obbligatorio"
 
diff --git a/modules/core/locales/ja/LC_MESSAGES/core.po b/modules/core/locales/ja/LC_MESSAGES/core.po
index 95736ce65122088fcd18e73d7d3480eae6d458d5..d9f42d940f1ec631ade86886160b50d03afd189b 100644
--- a/modules/core/locales/ja/LC_MESSAGES/core.po
+++ b/modules/core/locales/ja/LC_MESSAGES/core.po
@@ -30,9 +30,6 @@ msgstr "WEBブラウザの戻るや次へのボタンを使用します。"
 msgid "{core:no_metadata:not_found_for}"
 msgstr "メタデータの実体を見つけることが出来ませんでした:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP example - Shib IdP 経由でテストログイン"
-
 msgid "{core:no_state:suggestions}"
 msgstr "この問題を解決する為の提案:"
 
@@ -96,9 +93,6 @@ msgstr "ホスト SAML 2.0 アイデンティティプロバイダメタデー
 msgid "{core:frontpage:optional}"
 msgstr "任意"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "ホスト Shibboleth 1.3 サービスプロバイダメタデータ(自動生成)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "ドキュメント"
 
@@ -190,9 +184,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "メタデータが見つかりません"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "ホスト Shibboleth 1.3 アイデンティティプロバイダメタデータ (自動生成)"
-
 msgid "{core:frontpage:required}"
 msgstr "å¿…é ˆ"
 
diff --git a/modules/core/locales/lb/LC_MESSAGES/core.po b/modules/core/locales/lb/LC_MESSAGES/core.po
index da87760a77048056f117e49d6349b6ed09f1d2ab..55cdbde9632aba437bcb08e44ada03f2ce8ea9ee 100644
--- a/modules/core/locales/lb/LC_MESSAGES/core.po
+++ b/modules/core/locales/lb/LC_MESSAGES/core.po
@@ -18,9 +18,6 @@ msgstr ""
 msgid "{core:frontpage:link_phpinfo}"
 msgstr "PHPinfo"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP Beispill - probeier dech iwer dain Shib IdP anzeloggen"
-
 msgid "{core:frontpage:link_doc_sp}"
 msgstr "SimpleSAMLphp als Service Provicer benotzen"
 
@@ -42,9 +39,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Meta Données (automatesch erstallt)"
 msgid "{core:frontpage:optional}"
 msgstr "Optional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Hosted Shibboleth 1.3 Service Provider Meta Données (automatesch erstallt)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentatioun"
 
@@ -81,11 +75,6 @@ msgstr ""
 "Links, Beispiller, Diagnoseméiglechkeeten, Meta Données an Links op "
 "relevant Dokumenter fannt."
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Hosted Shibboleth 1.3 Identity Provider Meta Données (automatesch "
-"erstallt)"
-
 msgid "{core:frontpage:required}"
 msgstr "Néideg"
 
diff --git a/modules/core/locales/lt/LC_MESSAGES/core.po b/modules/core/locales/lt/LC_MESSAGES/core.po
index aa83f7aaa0d6907754c2a90702d01d0b31bdf6fd..53bc9acb3a2f8be82e6f49698b68154293ce2971 100644
--- a/modules/core/locales/lt/LC_MESSAGES/core.po
+++ b/modules/core/locales/lt/LC_MESSAGES/core.po
@@ -30,11 +30,6 @@ msgstr "Back (Atgal) ir Forward (Pirmyn) mygtukų naudojimas interneto naršykl
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Nepavyko nustatyti metaduomenų šiems objektams:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Shibboleth 1.3 SP pavyzdys - istorinių duomenų testavimas kartu su Jūsų "
-"Shib IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Pasiūlymai spręsti šią problemą:"
 
@@ -74,11 +69,6 @@ msgstr "Vietinio SAML 2.0 IdP metaduomenys (sugeneruoti automatiškai)"
 msgid "{core:frontpage:optional}"
 msgstr "Neprivalomas"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Vietinio Shibboleth 1.3 paslaugos teikÄ—jo (SP) metaduomenys (sugeneruoti "
-"automatiškai)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentacija"
 
@@ -164,11 +154,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metaduomenys nerasti"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Vietinio Shibboleth 1.3 tapatybÄ—s teikÄ—jo (IdP) metaduomenys (sugeneruoti"
-" automatiškai)"
-
 msgid "{core:frontpage:required}"
 msgstr "Būtinas"
 
diff --git a/modules/core/locales/lv/LC_MESSAGES/core.po b/modules/core/locales/lv/LC_MESSAGES/core.po
index 61743892b824f10f948cc63b0f852577b5ceec8d..36c334aebd61ddd4f761c371750550c7db486adb 100644
--- a/modules/core/locales/lv/LC_MESSAGES/core.po
+++ b/modules/core/locales/lv/LC_MESSAGES/core.po
@@ -28,9 +28,6 @@ msgstr "Interneta pārlūka pogu Uz priekšu un Atpakaļ lietošana."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Metadati šai entītijai nav atrasti:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP piemērs - testa pieslēgšanās caur Jūsu Shib IDP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Ieteikumi problēmas atrisināšanai:"
 
@@ -69,9 +66,6 @@ msgstr "Hostēta SAML 2.0 identitātes piegādātāja metadati (ģenerēti autom
 msgid "{core:frontpage:optional}"
 msgstr "Neobligāts"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Hostēta Shibboleth 1.3 servisa piegādātāja metadati (ģenerēti automātiski)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentācija"
 
@@ -155,11 +149,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadati nav atrasti"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Hostēta Shibboleth 1.3 identitātes piegādātāja metadati (ģenerēti "
-"automātiski)"
-
 msgid "{core:frontpage:required}"
 msgstr "Obligāts"
 
diff --git a/modules/core/locales/nb/LC_MESSAGES/core.po b/modules/core/locales/nb/LC_MESSAGES/core.po
index c10d9d2e5ca974ac419976cad669912ef0699d32..c72b207abf57021ef3081a78d6520f0f381e24df 100644
--- a/modules/core/locales/nb/LC_MESSAGES/core.po
+++ b/modules/core/locales/nb/LC_MESSAGES/core.po
@@ -27,11 +27,6 @@ msgstr "Bruk av \"frem\"- og \"tilbake\"-knappene i nettleseren."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Vi fant ikke metadataene for:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Shibboleth 1.3 SP eksempel - test innlogging med Shibboleth 1.3 via din "
-"IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Forslag for å løse dette problemet:"
 
@@ -71,9 +66,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadata (automatisk generert)"
 msgid "{core:frontpage:optional}"
 msgstr "Valgfritt"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Hosted Shibboleth 1.3 Service Provider Metadata (automatisk generert)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentasjon"
 
@@ -163,9 +155,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Kunne ikke finne metadata"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatisk generert)"
-
 msgid "{core:frontpage:required}"
 msgstr "PÃ¥krevd"
 
diff --git a/modules/core/locales/nl/LC_MESSAGES/core.po b/modules/core/locales/nl/LC_MESSAGES/core.po
index 425e4712d94cdf946746eff05cd7c8329b226908..be8f20c20ec378ed8b4f574e74be3daddfe7dc9b 100644
--- a/modules/core/locales/nl/LC_MESSAGES/core.po
+++ b/modules/core/locales/nl/LC_MESSAGES/core.po
@@ -27,9 +27,6 @@ msgstr "Gebruik van de 'Volgende'- en 'Terug'-knoppen in de web browser."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "De metadata voor de volgende entity kon niet gevonden worden:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP voorbeeld - test inloggen via je Shibboleth 1.3 IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Suggesties om dit probleem op te lossen:"
 
@@ -75,9 +72,6 @@ msgstr "Lokale SAML 2.0 Identity Provider Metadata (automatisch gegenereerd)"
 msgid "{core:frontpage:optional}"
 msgstr "Optioneel"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Lokale Shibboleth 1.3 Service Provider Metadata (automatisch gegenereerd)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentatie"
 
@@ -182,9 +176,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadata niet gevonden"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Lokale Shibboleth 1.3 Identity Provider Metadata (automatisch gegenereerd)"
-
 msgid "{core:frontpage:required}"
 msgstr "Vereist"
 
diff --git a/modules/core/locales/nn/LC_MESSAGES/core.po b/modules/core/locales/nn/LC_MESSAGES/core.po
index 368dd7e76b37c2525b2126bf239176d2c92514eb..54942f81d9025205147440376892ba5e4a9280fb 100644
--- a/modules/core/locales/nn/LC_MESSAGES/core.po
+++ b/modules/core/locales/nn/LC_MESSAGES/core.po
@@ -27,9 +27,6 @@ msgstr "Bruk av \"fram\"- og \"attende\"-knappane i nettlesaren."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Vi fann ikkje metadataene for:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP eksempel - testinnlogging med Shibboleth 1.3 via din IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Forslag for å løyse dette problemet:"
 
@@ -69,9 +66,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadata (automatisk generert)"
 msgid "{core:frontpage:optional}"
 msgstr "Valfritt"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Hosted Shibboleth 1.3 Service Provider Metadata (automatisk generert)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentasjon"
 
@@ -159,9 +153,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Kunne ikkje finne metadata"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatisk generert)"
-
 msgid "{core:frontpage:required}"
 msgstr "Naudsynt"
 
diff --git a/modules/core/locales/pl/LC_MESSAGES/core.po b/modules/core/locales/pl/LC_MESSAGES/core.po
index fadeeb468d7d263ef45ff81f6120c1c9c415e48c..1a461afe244bfd97bd825f749e9336f4d6c0d4f5 100644
--- a/modules/core/locales/pl/LC_MESSAGES/core.po
+++ b/modules/core/locales/pl/LC_MESSAGES/core.po
@@ -19,9 +19,6 @@ msgstr ""
 msgid "{core:frontpage:link_phpinfo}"
 msgstr "PHP info"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP - przykład - test logowania przez Twoje Shib IdP"
-
 msgid "{core:frontpage:login_as_admin}"
 msgstr "Zaloguj siÄ™ jako administrator"
 
@@ -46,11 +43,6 @@ msgstr "Metadane - Lokalny SAML 2.0 Dostawca Tożsamości (generowane automatycz
 msgid "{core:frontpage:optional}"
 msgstr "Opcjonalne"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Metadane - Lokalny Shibboleth 1.3 Dostawca Serwisu (generowane "
-"automatycznie)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentacja"
 
@@ -106,11 +98,6 @@ msgstr ""
 "znajdziesz odnośniki do przykładów, narzędzi do diagnozowania, metadane a"
 " nawet linki do dokumentacji."
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Metadane - Lokalny Shibboleth 1.3 Dostawca Tożsamości (generowane "
-"automatycznie)"
-
 msgid "{core:frontpage:required}"
 msgstr "Wymagane"
 
diff --git a/modules/core/locales/pt-br/LC_MESSAGES/core.po b/modules/core/locales/pt-br/LC_MESSAGES/core.po
index 271528eb1050bc934dec64a89dce3df30560ade0..2d1b13141bde4c64fdb5145aa1bc7632b643ca29 100644
--- a/modules/core/locales/pt-br/LC_MESSAGES/core.po
+++ b/modules/core/locales/pt-br/LC_MESSAGES/core.po
@@ -21,9 +21,6 @@ msgstr "Informações do PHP"
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Não foi possível localizar os metadados da entidade:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP exemplo - efetuar login na sua Shib IDP"
-
 msgid "{core:frontpage:login_as_admin}"
 msgstr "Login como Administrador"
 
@@ -48,11 +45,6 @@ msgstr "Hospedado SAML 2.0 Identity Provider Metadata (gerado automaticamente)"
 msgid "{core:frontpage:optional}"
 msgstr "Opcional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Hospedado Shibboleth 1.3 Service Provider Metadata (gerado "
-"automaticamente)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentação"
 
@@ -119,11 +111,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadata não encontrado"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Hospedado Shibboleth 1.3 Identity Provider Metadata (gerado "
-"automaticamente)"
-
 msgid "{core:frontpage:required}"
 msgstr "Requerido"
 
diff --git a/modules/core/locales/pt/LC_MESSAGES/core.po b/modules/core/locales/pt/LC_MESSAGES/core.po
index 599cf95aac19d32fc5870fa66d3729c700f5b716..4ead99e9b333136d9bb60cd8657c3188660e7a17 100644
--- a/modules/core/locales/pt/LC_MESSAGES/core.po
+++ b/modules/core/locales/pt/LC_MESSAGES/core.po
@@ -18,9 +18,6 @@ msgstr ""
 msgid "{core:frontpage:link_phpinfo}"
 msgstr "PHP info"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Exemplo de um SP Shibboleth 1.3 - Para testes de login pelo seu IdP Shib"
-
 msgid "{core:frontpage:login_as_admin}"
 msgstr "Entrar como administrador"
 
@@ -54,11 +51,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "Opcional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Metadados do fornecedor de serviço (SP) Shibboleth 1.3 local (gerado "
-"automaticamente)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentação"
 
@@ -125,11 +117,6 @@ msgstr ""
 "ligações para páginas de teste, de diagnóstico, de metadados e de "
 "documentação relevante."
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Metadados do fornecedor de identidade (IdP) Shibboleth 1.3 local (gerado "
-"automaticamente)"
-
 msgid "{core:frontpage:required}"
 msgstr "Necessário"
 
diff --git a/modules/core/locales/ro/LC_MESSAGES/core.po b/modules/core/locales/ro/LC_MESSAGES/core.po
index ead982bb2899b7b1871280d2ca6f2bfe72e86612..9ebf3a69874f12ca82ba7820ef6cca9db399df47 100644
--- a/modules/core/locales/ro/LC_MESSAGES/core.po
+++ b/modules/core/locales/ro/LC_MESSAGES/core.po
@@ -28,11 +28,6 @@ msgstr "Utilizarea butoanelor \"înainte\" sau \"înapoi\" din browser."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Nu am găsit metadate pentru următoarea entitate:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Exemplu furnizor de servicii Shibboleth 1.3 - testarea autentificării "
-"prin furnizorul dumneavoastră de identitate Shib"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Sugestii pentru rezolvarea acestei probleme:"
 
@@ -74,11 +69,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "Opțional"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Metadate pentru furnizorul de servicii Shibboleth 1.3 găzduit (generate "
-"automat)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Documentație"
 
@@ -171,11 +161,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Nu au fost găsite metadate"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Metadate pentru furnizorul de identitate Shibboleth 1.3 găzduit (generate"
-" automat)"
-
 msgid "{core:frontpage:required}"
 msgstr "Necesar"
 
diff --git a/modules/core/locales/ru/LC_MESSAGES/core.po b/modules/core/locales/ru/LC_MESSAGES/core.po
index 699936c8d91610edbc33c57ea7d61a1fe205f338..328dbe2de88df405e957da783024ee99f5dbf763 100644
--- a/modules/core/locales/ru/LC_MESSAGES/core.po
+++ b/modules/core/locales/ru/LC_MESSAGES/core.po
@@ -28,9 +28,6 @@ msgstr "Используйте клавиши \"Вперед\" \"Назад\" в
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Мы не нашли метаданные для объекта:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Пример Shibboleth 1.3 SP - тестовый вход в систему через ваш Shib IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Варианты решения проблемы:"
 
@@ -72,11 +69,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "Опционально"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Метаданные Shibboleth 1.3 Поставщика Услуг (SP) (генерируются "
-"автоматически)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Документация"
 
@@ -169,11 +161,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Метаданные не найдены"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Метаданные Shibboleth 1.3 Провайдера подлинности (IdP) (генерируются "
-"автоматически)"
-
 msgid "{core:frontpage:required}"
 msgstr "Обязательный"
 
diff --git a/modules/core/locales/sl/LC_MESSAGES/core.po b/modules/core/locales/sl/LC_MESSAGES/core.po
index 802a6f38c92d9cbce6effef674e8c7e3ce553e7d..389cc14db2ba2608e99af148aaf8105dfc4ebe74 100644
--- a/modules/core/locales/sl/LC_MESSAGES/core.po
+++ b/modules/core/locales/sl/LC_MESSAGES/core.po
@@ -28,9 +28,6 @@ msgstr "Uporaba gumbov \"nazaj\" ali \"naprej\" v spletnem brskalniku."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Metapodatkov za to entiteto ni bilo moč najti."
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP primer - preveri prijavo preko svojega Shib IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Predloga za razrešitev nastale težave:"
 
@@ -69,9 +66,6 @@ msgstr "Metapodatki za SAML 2.0 IdP (samodejno generirani)"
 msgid "{core:frontpage:optional}"
 msgstr "Dodatno"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Metapodatki za Shibboleth 1.3 SP (samodejno generirani)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentacija"
 
@@ -155,9 +149,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metapodatkov ni bilo moč najti."
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Metapodatki za Shibboleth 1.3 IdP (samodejno generirani)"
-
 msgid "{core:frontpage:required}"
 msgstr "Zahtevano"
 
diff --git a/modules/core/locales/sr/LC_MESSAGES/core.po b/modules/core/locales/sr/LC_MESSAGES/core.po
index 9f7a9ea2083b377d1b3b038fa6fed1956cf1194f..d064999ddb065fbc6d781bb743666e3cf9f3ba32 100644
--- a/modules/core/locales/sr/LC_MESSAGES/core.po
+++ b/modules/core/locales/sr/LC_MESSAGES/core.po
@@ -32,11 +32,6 @@ msgstr ""
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Ne mogu pronaći metapodatke za entitet:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr ""
-"Shibboleth 1.3 SP primer - testirajte autentifikaciju kroz vaš Shib "
-"Davalac Servisa"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Preporuke za rešavanje ovog problema:"
 
@@ -78,11 +73,6 @@ msgstr "Metapodaci za lokalni SAML 2.0 Davalac Identiteta (automatski generisani
 msgid "{core:frontpage:optional}"
 msgstr "Opciono"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Metapodaci za lokalni Shibboleth 1.3 Davalac Servisa (automatski "
-"generisani)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentacija"
 
@@ -170,11 +160,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metapodaci nisu pronađeni"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Metapodaci za lokalni Shibboleth 1.3 Davalac Identiteta (automatski "
-"generisani)"
-
 msgid "{core:frontpage:required}"
 msgstr "Obavezno"
 
diff --git a/modules/core/locales/sv/LC_MESSAGES/core.po b/modules/core/locales/sv/LC_MESSAGES/core.po
index 6adaceec51b3eb397f156ce0456c5a8eec24f448..20bc0f764282cb24a7d475776987f73d6853a8dd 100644
--- a/modules/core/locales/sv/LC_MESSAGES/core.po
+++ b/modules/core/locales/sv/LC_MESSAGES/core.po
@@ -27,9 +27,6 @@ msgstr "Användning av framåt- och bakåtknappar i webbläsaren."
 msgid "{core:no_metadata:not_found_for}"
 msgstr "Metadata för enehten hittades inte:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP exempel - testinloggning med SAML 2.0 via din IdP"
-
 msgid "{core:no_state:suggestions}"
 msgstr "Förslag för att åtgärda detta problem:"
 
@@ -69,9 +66,6 @@ msgstr "Lokala SAML 2.0 Identity Provider Metadata (automatiskt genererat)"
 msgid "{core:frontpage:optional}"
 msgstr "Valfri"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "Lokala Shibboleth 1.3 Service Provider Metadata (automatiskt genererat)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokumentation"
 
@@ -160,9 +154,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "Metadata saknas"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "Lokala Shibboleth 1.3 Identity Provider Metadata (automatiskt genererat)"
-
 msgid "{core:frontpage:required}"
 msgstr "Obligatoriskt"
 
diff --git a/modules/core/locales/tr/LC_MESSAGES/core.po b/modules/core/locales/tr/LC_MESSAGES/core.po
index fd7f6435dcbcabc197429ad8eaca2c85b656b183..4aef1be2d17ada7101ce6c972a43fdb05650a5f9 100644
--- a/modules/core/locales/tr/LC_MESSAGES/core.po
+++ b/modules/core/locales/tr/LC_MESSAGES/core.po
@@ -18,9 +18,6 @@ msgstr ""
 msgid "{core:frontpage:link_phpinfo}"
 msgstr "PHP info"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP örneği - Shib IdP'nizden giriş yaparak test edin"
-
 msgid "{core:frontpage:login_as_admin}"
 msgstr "Yönetici olarak giriş"
 
@@ -49,11 +46,6 @@ msgstr ""
 msgid "{core:frontpage:optional}"
 msgstr "İsteğe bağlı"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr ""
-"Sunulan Shibboleth 1.3 Servis Sağlayıcı Üstverisi (metadata) (otomatik "
-"olarak üretilmiştir)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "Dokümantasyon"
 
@@ -114,11 +106,6 @@ msgstr ""
 "ilgili dokümanlara bağlantılar bulabileceğiniz, kurulumun başlangıç "
 "sayfasıdır."
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr ""
-"Sunulan Shibboleth 1.3 Kimlik Sağlayıcı Üstverisi (metadata) (otomatik "
-"olarak üretilmiştir)"
-
 msgid "{core:frontpage:required}"
 msgstr "Gerekli"
 
diff --git a/modules/core/locales/zh-tw/LC_MESSAGES/core.po b/modules/core/locales/zh-tw/LC_MESSAGES/core.po
index 24d8ebbbf4a48d95ee0b4bbc7d287eeb8ae742d1..3e27847d15cc2d68ba9ae525e0ae8ebcc6b12389 100644
--- a/modules/core/locales/zh-tw/LC_MESSAGES/core.po
+++ b/modules/core/locales/zh-tw/LC_MESSAGES/core.po
@@ -27,9 +27,6 @@ msgstr "於網頁瀏覽器使用上一頁及下一頁。"
 msgid "{core:no_metadata:not_found_for}"
 msgstr "我們無法定位此實體之詮釋資料:"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3 SP 範本 - 測試使用您的 Shib IdP 登入"
-
 msgid "{core:no_state:suggestions}"
 msgstr "建議解決這個問題:"
 
@@ -66,9 +63,6 @@ msgstr "託管 SAML 2.0 驗證提供者詮釋資料(自動產生)"
 msgid "{core:frontpage:optional}"
 msgstr "選項"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "託管 Shibboleth 1.3 服務提供者詮釋資料(自動產生)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "說明文件"
 
@@ -155,9 +149,6 @@ msgstr ""
 msgid "{core:no_metadata:header}"
 msgstr "找不到詮釋資料"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "託管Shibboleth 1.3 驗證提供者詮釋資料(自動產生)"
-
 msgid "{core:frontpage:required}"
 msgstr "請求"
 
diff --git a/modules/core/locales/zh/LC_MESSAGES/core.po b/modules/core/locales/zh/LC_MESSAGES/core.po
index f883464c23da8b5a70db3b4816a382738e025155..e74b5a0f3d35feca2853c97dfb3746edbd8b7414 100644
--- a/modules/core/locales/zh/LC_MESSAGES/core.po
+++ b/modules/core/locales/zh/LC_MESSAGES/core.po
@@ -27,9 +27,6 @@ msgstr "使用浏览器中的前进后退按钮"
 msgid "{core:no_metadata:not_found_for}"
 msgstr "我们无法为这个实体定位元信息"
 
-msgid "{core:frontpage:link_shib13example}"
-msgstr "Shibboleth 1.3SP样例-测试从你的Shib idP登录"
-
 msgid "{core:no_state:suggestions}"
 msgstr "关于解决该问题的建议"
 
@@ -66,9 +63,6 @@ msgstr "存储的 Hosted SAML 2.0 Identity Provider Metadata(自动生成)"
 msgid "{core:frontpage:optional}"
 msgstr "可选的"
 
-msgid "{core:frontpage:link_meta_shib13sphosted}"
-msgstr "存储的 Shibboleth 1.3 Service Provider Metadata(自动生成)"
-
 msgid "{core:frontpage:doc_header}"
 msgstr "文档"
 
@@ -147,9 +141,6 @@ msgstr "<strong>恭喜你!</strong>,你已成功安装SimpleSAMLphp。这是
 msgid "{core:no_metadata:header}"
 msgstr "没有找到元信息"
 
-msgid "{core:frontpage:link_meta_shib13idphosted}"
-msgstr "存储的 Shibboleth 1.3 Identity Provider Metadata(自动生成)"
-
 msgid "{core:frontpage:required}"
 msgstr "需求"
 
diff --git a/modules/core/templates/frontpage_config.twig b/modules/core/templates/frontpage_config.twig
index c0fb87b95d4002e18b6337e46aafaddd1ccc7126..74ac7c8a5002370ff74c89e1090d6009605d80d1 100644
--- a/modules/core/templates/frontpage_config.twig
+++ b/modules/core/templates/frontpage_config.twig
@@ -18,10 +18,6 @@
                 <td>SAML 2.0 IdP</td>
                 <td>{%- if enablematrix.saml20idp %}{{ icon_enabled|raw }}{% else %}{{ icon_disabled|raw }}{% endif -%}</td>
             </tr>
-	    <tr class="{%- if enablematrix.shib13idp %}enabled{% else %}disabled{% endif -%}">
-                <td>Shib 1.3 IdP</td>
-                <td>{%- if enablematrix.shib13idp %}{{ icon_enabled|raw }}{% else %}{{ icon_disabled|raw }}{% endif -%}</td>
-            </tr>
         </table>
     </div>
 
diff --git a/modules/core/www/authenticate.php b/modules/core/www/authenticate.php
index 62ab03fc8c58977833c526d83da542f18aae66b9..680ece576c37f9989fc7f36ecb0198ca31c24c2f 100644
--- a/modules/core/www/authenticate.php
+++ b/modules/core/www/authenticate.php
@@ -8,7 +8,7 @@ if (!array_key_exists('as', $_REQUEST)) {
     $t = new \SimpleSAML\XHTML\Template($config, 'core:authsource_list.tpl.php');
 
     $t->data['sources'] = \SimpleSAML\Auth\Source::getSources();
-    $t->show();
+    $t->send();
     exit();
 }
 
@@ -50,4 +50,4 @@ $t->data['attributes'] = $attributes;
 $t->data['authData'] = $authData;
 $t->data['nameid'] = !is_null($as->getAuthData('saml:sp:NameID')) ? $as->getAuthData('saml:sp:NameID') : false;
 $t->data['logouturl'] = \SimpleSAML\Utils\HTTP::getSelfURLNoQuery() . '?as=' . urlencode($asId) . '&logout';
-$t->show();
+$t->send();
diff --git a/modules/core/www/cardinality_error.php b/modules/core/www/cardinality_error.php
index cb76a072ef90ba7fb08b0fb01a3228c1b4b57e36..135493d50a30e22dd8f44fd6fe84103dd039de3a 100644
--- a/modules/core/www/cardinality_error.php
+++ b/modules/core/www/cardinality_error.php
@@ -27,4 +27,4 @@ if (isset($state['Source']['auth'])) {
     ) . "&logout";
 }
 header('HTTP/1.0 403 Forbidden');
-$t->show();
+$t->send();
diff --git a/modules/core/www/frontpage_auth.php b/modules/core/www/frontpage_auth.php
index a3bf112e150efee435323163208942432d79ee9c..cd6546f13124ead3c1b80eaa65bcf9a3d27f7601 100644
--- a/modules/core/www/frontpage_auth.php
+++ b/modules/core/www/frontpage_auth.php
@@ -45,4 +45,4 @@ $t->data['links_config'] = $links_config;
 $t->data['links_auth'] = $links_auth;
 $t->data['links_federation'] = $links_federation;
 
-$t->show();
+$t->send();
diff --git a/modules/core/www/frontpage_config.php b/modules/core/www/frontpage_config.php
index 1cfba39f5d7205320132f139faa4e976a0e12a5f..8243fae641bde77c9de318fea8e016d117a4672e 100644
--- a/modules/core/www/frontpage_config.php
+++ b/modules/core/www/frontpage_config.php
@@ -95,7 +95,6 @@ if ($config->getBoolean('admin.checkforupdates', true) && $current !== 'master')
 
 $enablematrix = [
     'saml20idp' => $config->getBoolean('enable.saml20-idp', false),
-    'shib13idp' => $config->getBoolean('enable.shib13-idp', false),
 ];
 
 
@@ -200,4 +199,4 @@ $t->data['requiredmap'] = [
 $t->data['version'] = $config->getVersion();
 $t->data['directory'] = dirname(dirname(dirname(dirname(__FILE__))));
 
-$t->show();
+$t->send();
diff --git a/modules/core/www/frontpage_federation.php b/modules/core/www/frontpage_federation.php
index c33528b2fdb76cb4cecb9f6472819dfd6d534c95..66e896841a2706ebcbd6290b938df93b8050f581 100644
--- a/modules/core/www/frontpage_federation.php
+++ b/modules/core/www/frontpage_federation.php
@@ -51,7 +51,6 @@ $metaentries = ['hosted' => $metadataHosted, 'remote' => []];
 
 if ($isadmin) {
     $metaentries['remote']['saml20-idp-remote'] = $metadata->getList('saml20-idp-remote', true);
-    $metaentries['remote']['shib13-idp-remote'] = $metadata->getList('shib13-idp-remote', true);
 }
 
 if ($config->getBoolean('enable.saml20-idp', false) === true) {
@@ -66,18 +65,6 @@ if ($config->getBoolean('enable.saml20-idp', false) === true) {
         \SimpleSAML\Logger::error('Federation: Error loading saml20-idp: ' . $e->getMessage());
     }
 }
-if ($config->getBoolean('enable.shib13-idp', false) === true) {
-    try {
-        $metaentries['hosted']['shib13-idp'] = $metadata->getMetaDataCurrent('shib13-idp-hosted');
-        $metaentries['hosted']['shib13-idp']['metadata-url'] =
-            $config->getBasePath() . 'shib13/idp/metadata.php?output=xhtml';
-        if ($isadmin) {
-            $metaentries['remote']['shib13-sp-remote'] = $metadata->getList('shib13-sp-remote', true);
-        }
-    } catch (Exception $e) {
-        \SimpleSAML\Logger::error('Federation: Error loading shib13-idp: ' . $e->getMessage());
-    }
-}
 if ($config->getBoolean('enable.adfs-idp', false) === true) {
     try {
         $metaentries['hosted']['adfs-idp'] = $metadata->getMetaDataCurrent('adfs-idp-hosted');
@@ -145,10 +132,6 @@ $mtype = [
     'saml20-sp-hosted' => $translator->noop('{admin:metadata_saml20-sp}'),
     'saml20-idp-remote' => $translator->noop('{admin:metadata_saml20-idp}'),
     'saml20-idp-hosted' => $translator->noop('{admin:metadata_saml20-idp}'),
-    'shib13-sp-remote' => $translator->noop('{admin:metadata_shib13-sp}'),
-    'shib13-sp-hosted' => $translator->noop('{admin:metadata_shib13-sp}'),
-    'shib13-idp-remote' => $translator->noop('{admin:metadata_shib13-idp}'),
-    'shib13-idp-hosted' => $translator->noop('{admin:metadata_shib13-idp}'),
     'adfs-sp-remote' => $translator->noop('{admin:metadata_adfs-sp}'),
     'adfs-sp-hosted' => $translator->noop('{admin:metadata_adfs-sp}'),
     'adfs-idp-remote' => $translator->noop('{admin:metadata_adfs-idp}'),
@@ -171,4 +154,4 @@ $t->data['metadata_url'] = \SimpleSAML\Module::getModuleURL('core/show_metadata.
 $t->data['metaentries'] = $metaentries;
 $t->data['mtype'] = $mtype;
 
-$t->show();
+$t->send();
diff --git a/modules/core/www/frontpage_welcome.php b/modules/core/www/frontpage_welcome.php
index 4dfb4fef195ac8fb0f803e6c2bb2e8e0e4229f81..22dc2d9f3438085c57c7d9b3fffbf7ff35f0445d 100644
--- a/modules/core/www/frontpage_welcome.php
+++ b/modules/core/www/frontpage_welcome.php
@@ -46,4 +46,4 @@ $t->data['links_auth'] = $links_auth;
 $t->data['links_federation'] = $links_federation;
 $t->data['header'] = $t->getTranslator()->t('{core:frontpage:page_title}');
 
-$t->show();
+$t->send();
diff --git a/modules/core/www/idp/logout-iframe.php b/modules/core/www/idp/logout-iframe.php
index 80f94cca9e12aa2e5e6c5b02e0eb791f36a0e3d3..442b26bd0904cf0600dabf76042874ac3dade64f 100644
--- a/modules/core/www/idp/logout-iframe.php
+++ b/modules/core/www/idp/logout-iframe.php
@@ -150,4 +150,4 @@ if ($type !== 'nojs') {
     $t->data['jquery'] = ['core' => true, 'ui' => false, 'css' => false];
 }
 
-$t->show();
+$t->send();
diff --git a/modules/core/www/loginuserpass.php b/modules/core/www/loginuserpass.php
index 5655b67cea9ae1b3171044cf8dfe4093a3fff3c3..27e4327167839bc7d84d3692052891fcfe9aef45 100644
--- a/modules/core/www/loginuserpass.php
+++ b/modules/core/www/loginuserpass.php
@@ -133,4 +133,4 @@ if (isset($state['SPMetadata'])) {
     $t->data['SPMetadata'] = null;
 }
 
-$t->show();
+$t->send();
diff --git a/modules/core/www/loginuserpassorg.php b/modules/core/www/loginuserpassorg.php
index fd65a15dbe1eb1643a4de571e33b4317c6a84cad..be63c72bb3e13436cd92f5d64101232c84ef18f6 100644
--- a/modules/core/www/loginuserpassorg.php
+++ b/modules/core/www/loginuserpassorg.php
@@ -163,5 +163,5 @@ if (isset($state['SPMetadata'])) {
     $t->data['SPMetadata'] = null;
 }
 
-$t->show();
+$t->send();
 exit();
diff --git a/modules/core/www/no_cookie.php b/modules/core/www/no_cookie.php
index 7ae3889d6c613c5c7df9b2f896354529d0cdffda..c2ff054fa94049cad6b74bbde314699105945ae0 100644
--- a/modules/core/www/no_cookie.php
+++ b/modules/core/www/no_cookie.php
@@ -22,4 +22,4 @@ $t->data['header'] = htmlspecialchars($header);
 $t->data['description'] = htmlspecialchars($desc);
 $t->data['retry'] = htmlspecialchars($retry);
 $t->data['retryURL'] = $retryURL;
-$t->show();
+$t->send();
diff --git a/modules/core/www/postredirect.php b/modules/core/www/postredirect.php
index b5d08eeb0ffbfe7dd8237a17f3de14e9ebbaa19f..07bac08e8fe030280f630c9d2e13424fd40eea00 100644
--- a/modules/core/www/postredirect.php
+++ b/modules/core/www/postredirect.php
@@ -1,13 +1,13 @@
 <?php
 
-use Webmozart\Assert\Assert;
-
 /**
  * This page provides a way to create a redirect to a POST request.
  *
  * @package SimpleSAMLphp
  */
 
+use Webmozart\Assert\Assert;
+
 if (array_key_exists('RedirId', $_REQUEST)) {
     $postId = $_REQUEST['RedirId'];
     $session = \SimpleSAML\Session::getSessionFromRequest();
@@ -54,5 +54,5 @@ $config = \SimpleSAML\Configuration::getInstance();
 $template = new \SimpleSAML\XHTML\Template($config, 'post.php');
 $template->data['destination'] = $postData['url'];
 $template->data['post'] = $postData['post'];
-$template->show();
+$template->send();
 exit(0);
diff --git a/modules/core/www/short_sso_interval.php b/modules/core/www/short_sso_interval.php
index 919210f535aefdbfac9766ae22a1b1236c824f82..2659471c1ea3a8f2e18f94d68038a2430a3e1d0e 100644
--- a/modules/core/www/short_sso_interval.php
+++ b/modules/core/www/short_sso_interval.php
@@ -30,4 +30,4 @@ $t->data['params'] = ['StateId' => $id];
 $t->data['trackId'] = $session->getTrackID();
 $t->data['header'] = $translator->t('{core:short_sso_interval:warning_header}');
 $t->data['autofocus'] = 'contbutton';
-$t->show();
+$t->send();
diff --git a/modules/core/www/show_metadata.php b/modules/core/www/show_metadata.php
index ffad6572b2a3d9ed30e46d02420b276bfefc5649..d9dd9ffdc455aa556cfc559ac07292fce0e969a6 100644
--- a/modules/core/www/show_metadata.php
+++ b/modules/core/www/show_metadata.php
@@ -15,7 +15,7 @@ if (!array_key_exists('set', $_REQUEST)) {
 if (
     !in_array(
         $_REQUEST['set'],
-        ['saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote'],
+        ['saml20-idp-remote', 'saml20-sp-remote'],
         true
     )
 ) {
@@ -36,4 +36,4 @@ $t->data['entityid'] = $m['metadata-index'];
 unset($m['metadata-index']);
 $t->data['metadata'] = var_export($m, true);
 
-$t->show();
+$t->send();
diff --git a/modules/cron/www/croninfo.php b/modules/cron/www/croninfo.php
index 289dfe2c85a13dfc4ad9b0567810ba53b6fe1ded..1c9ec0da2bd782c8cad5884a06dc2e09b204a919 100644
--- a/modules/cron/www/croninfo.php
+++ b/modules/cron/www/croninfo.php
@@ -15,4 +15,4 @@ $session = Session::getSessionFromRequest();
 
 $controller = new Controller\Cron($config, $session);
 $response = $controller->info();
-$response->show();
+$response->send();
diff --git a/modules/exampleauth/templates/authenticate.tpl.php b/modules/exampleauth/templates/authenticate.tpl.php
deleted file mode 100644
index fd112ff59f94169ac4257ca083cfeed98ed086bc..0000000000000000000000000000000000000000
--- a/modules/exampleauth/templates/authenticate.tpl.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-    <title>exampleauth login page</title>
-  </head>
-  <body>
-    <h1>exampleauth login page</h1>
-    <p>
-      In this example you can log in with two accounts: <code>student</code> and <code>admin</code>.
-      In both cases, the password is the same as the username.
-    </p>
-    <form method="post" action="?">
-      <p>
-        Username:
-        <input type="text" name="username">
-      </p>
-      <p>
-        Password:
-        <input type="text" name="password">
-      </p>
-      <input type="hidden" name="ReturnTo" value="<?= htmlspecialchars($this->data['returnTo']) ?>">
-      <p><input type="submit" value="Log in"></p>
-    </form>
-<?php if($this->data['badUserPass']): ?>
-    <p>!!! Bad username or password !!!</p>
-<?php endif; ?>
-  </body>
-</html>
diff --git a/modules/exampleauth/www/authpage.php b/modules/exampleauth/www/authpage.php
index 795a13cba8d2f4fc0aa9a6abc774368964b0dbbc..b4b4b4458ee6dcec6cd1c9edb187efe0f30a9ec6 100644
--- a/modules/exampleauth/www/authpage.php
+++ b/modules/exampleauth/www/authpage.php
@@ -83,4 +83,4 @@ $config = \SimpleSAML\Configuration::getInstance();
 $t = new \SimpleSAML\XHTML\Template($config, 'exampleauth:authenticate.tpl.php');
 $t->data['badUserPass'] = $badUserPass;
 $t->data['returnTo'] = $returnTo;
-$t->show();
+$t->send();
diff --git a/modules/multiauth/www/selectsource.php b/modules/multiauth/www/selectsource.php
index 2038e30874279a5092d08ec918baa8c5102703e5..6d7e5d97d3edafc713d9e6835ad638bd88b8c883 100644
--- a/modules/multiauth/www/selectsource.php
+++ b/modules/multiauth/www/selectsource.php
@@ -81,5 +81,5 @@ if ($as !== null) {
 } else {
     $t->data['preferred'] = null;
 }
-$t->show();
+$t->send();
 exit();
diff --git a/modules/saml/docs/keyrollover.md b/modules/saml/docs/keyrollover.md
index 0fd99fc82dc7520674812acc8e041e43c4637a8c..7a23448be406320708a9eb5c5eaedb9c053abfa4 100644
--- a/modules/saml/docs/keyrollover.md
+++ b/modules/saml/docs/keyrollover.md
@@ -19,7 +19,7 @@ Add the new key to SimpleSAMLphp
 
 Where you add the new key depends on whether you are doing key rollover for a service provider or an identity provider.
 If you are doing key rollover for a service provider, the new key must be added to `config/authsources.php`.
-To do key rollover for an identity provider, you must add the new key to `metadata/saml20-idp-hosted.php` and/or `metadata/shib13-idp-hosted.php`.
+To do key rollover for an identity provider, you must add the new key to `metadata/saml20-idp-hosted.php`.
 If you are changing the keys for both an service provider and identity provider at the same time, you must update both locations.
 
 The new certificate and key is added to the configuration with the prefix `new_`:
diff --git a/modules/saml/docs/sp.md b/modules/saml/docs/sp.md
index 45da3fb1afd5b382ab3dda1fb015c18cabf3cf09..2579f27a3b6456a19fcbb11508c6b3ea401c21e6 100644
--- a/modules/saml/docs/sp.md
+++ b/modules/saml/docs/sp.md
@@ -1,7 +1,7 @@
 `saml:SP`
 =========
 
-This authentication source is used to authenticate against SAML 1 and SAML 2 IdPs.
+This authentication source is used to authenticate against SAML 2 IdPs.
 
 
 Metadata
@@ -224,7 +224,7 @@ Options
 
 `discoURL`
 :   Set which IdP discovery service this SP should use.
-    If this is unset, the IdP discovery service specified in the global option `idpdisco.url.{saml20|shib13}` in `config/config.php` will be used.
+    If this is unset, the IdP discovery service specified in the global option `idpdisco.url.saml20` in `config/config.php` will be used.
     If that one is also unset, the builtin default discovery service will be used.
 
 `encryption.blacklisted-algorithms`
@@ -353,9 +353,6 @@ Options
 :   The page the user should be redirected to after an IdP initiated SSO.
 
 :   *Note*: SAML 2 specific.
-    For SAML 1.1 SPs, you must specify the `TARGET` parameter in the authentication response.
-    How to set that parameter is depends on the IdP.
-    For SimpleSAMLphp, see the documentation for [IdP-first flow](./simplesamlphp-idp-more#section_4_1).
 
 `saml.SOAPClient.certificate`
 :   A file with a certificate _and_ private key that should be used when issuing SOAP requests from this SP.
@@ -366,14 +363,6 @@ Options
 `saml.SOAPClient.privatekey_pass`
 :   The passphrase of the privatekey in `saml.SOAPClient.certificate`.
 
-`saml1.useartifact`
-:   Request that the IdP returns the result to the artifact binding.
-    The default is to use the POST binding, set this option to TRUE to use the artifact binding instead.
-
-:   This option can also be set in the `shib13-idp-remote` metadata, in which case the setting in `shib13-idp-remote` takes precedence.
-
-:   *Note*: SAML 1 specific.
-
 `saml20.hok.assertion`
 :   Enable support for the SAML 2.0 Holder-of-Key SSO profile.
     See the documentation for the [Holder-of-Key profile](./simplesamlphp-hok-sp).
diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php
index e9ebaa259d02b1d081d89ee474fcd88d692549c9..91f2bd24b49830289ffb71f8c2777901014d8b25 100644
--- a/modules/saml/lib/Auth/Source/SP.php
+++ b/modules/saml/lib/Auth/Source/SP.php
@@ -18,7 +18,6 @@ use SimpleSAML\Module;
 use SimpleSAML\Session;
 use SimpleSAML\Store;
 use SimpleSAML\Utils;
-use SimpleSAML\XML\Shib13;
 use Webmozart\Assert\Assert;
 
 class SP extends \SimpleSAML\Auth\Source
@@ -306,14 +305,6 @@ class SP extends \SimpleSAML\Auth\Source
             Logger::debug('getIdpMetadata: ' . $e->getMessage());
         }
 
-        // Not found in saml20-idp-remote, look in shib13-idp-remote
-        try {
-            return $metadataHandler->getMetaDataConfig($entityId, 'shib13-idp-remote');
-        } catch (\Exception $e) {
-            // Metadata wasn't found
-            Logger::debug('getIdpMetadata: ' . $e->getMessage());
-        }
-
         // Not found
         throw new Error\Exception('Could not find the metadata of an IdP with entity ID ' .
             var_export($entityId, true));
@@ -457,45 +448,6 @@ class SP extends \SimpleSAML\Auth\Source
     }
 
 
-    /**
-     * Send a SAML1 SSO request to an IdP.
-     *
-     * @param \SimpleSAML\Configuration $idpMetadata  The metadata of the IdP.
-     * @param array $state  The state array for the current authentication.
-     * @return void
-     * @deprecated will be removed in a future version
-     */
-    private function startSSO1(Configuration $idpMetadata, array $state)
-    {
-        $idpEntityId = $idpMetadata->getString('entityid');
-
-        $state['saml:idp'] = $idpEntityId;
-
-        $ar = new Shib13\AuthnRequest();
-        $ar->setIssuer($this->entityId);
-
-        $id = Auth\State::saveState($state, 'saml:sp:sso');
-        $ar->setRelayState($id);
-
-        $useArtifact = $idpMetadata->getBoolean('saml1.useartifact', null);
-        if ($useArtifact === null) {
-            $useArtifact = $this->metadata->getBoolean('saml1.useartifact', false);
-        }
-
-        if ($useArtifact) {
-            $shire = Module::getModuleURL('saml/sp/saml1-acs.php/' . $this->authId . '/artifact');
-        } else {
-            $shire = Module::getModuleURL('saml/sp/saml1-acs.php/' . $this->authId);
-        }
-
-        $url = $ar->createRedirect($idpEntityId, $shire);
-
-        Logger::debug('Starting SAML 1 SSO to ' . var_export($idpEntityId, true) .
-            ' from ' . var_export($this->entityId, true) . '.');
-        Utils\HTTP::redirectTrustedURL($url);
-    }
-
-
     /**
      * Send a SAML2 SSO request to an IdP
      *
@@ -724,9 +676,6 @@ class SP extends \SimpleSAML\Auth\Source
 
         $type = $idpMetadata->getString('metadata-set');
         switch ($type) {
-            case 'shib13-idp-remote':
-                $this->startSSO1($idpMetadata, $state);
-                Assert::true(false); // Should not return
             case 'saml20-idp-remote':
                 $this->startSSO2($idpMetadata, $state);
                 Assert::true(false); // Should not return
@@ -926,7 +875,7 @@ class SP extends \SimpleSAML\Auth\Source
      * - 'SPMetadata': an array with the metadata of this local SP.
      *
      * @return void
-     * @throws \SimpleSAML\Error\NoPassive In case the authentication request was passive.
+     * @throws \SimpleSAML\Module\saml\Error\NoPassive In case the authentication request was passive.
      */
     public static function askForIdPChange(array &$state)
     {
diff --git a/modules/saml/lib/IdP/SAML1.php b/modules/saml/lib/IdP/SAML1.php
deleted file mode 100644
index 5b2eeb226757ee6f9846b45394651603b84640b8..0000000000000000000000000000000000000000
--- a/modules/saml/lib/IdP/SAML1.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Module\saml\IdP;
-
-use SimpleSAML\Auth;
-use SimpleSAML\Bindings\Shib13\HTTPPost;
-use SimpleSAML\Configuration;
-use SimpleSAML\Error;
-use SimpleSAML\IdP;
-use SimpleSAML\Logger;
-use SimpleSAML\Metadata\MetaDataStorageHandler;
-use SimpleSAML\Stats;
-use SimpleSAML\Utils;
-use SimpleSAML\XML\Shib13\AuthnResponse;
-use Webmozart\Assert\Assert;
-
-/**
- * IdP implementation for SAML 1.1 protocol.
- *
- * @package SimpleSAMLphp
- * @deprecated This class will be removed in a future release
- */
-class SAML1
-{
-    /**
-     * Retrieve the metadata of a hosted SAML 1.1 IdP.
-     *
-     * @param string $entityid The entity ID of the hosted SAML 1.1 IdP whose metadata we want.
-     *
-     * @return array
-     * @throws \SimpleSAML\Error\Exception
-     * @throws \SimpleSAML\Error\MetadataNotFound
-     * @throws \SimpleSAML\Error\Exception
-     */
-    public static function getHostedMetadata($entityid)
-    {
-        $handler = MetaDataStorageHandler::getMetadataHandler();
-        $config = $handler->getMetaDataConfig($entityid, 'shib13-idp-hosted');
-
-        $metadata = [
-            'metadata-set' => 'shib13-idp-hosted',
-            'entityid' => $entityid,
-            'SignleSignOnService' => $handler->getGenerated('SingleSignOnService', 'shib13-idp-hosted'),
-            'NameIDFormat' => $config->getArrayizeString('NameIDFormat', 'urn:mace:shibboleth:1.0:nameIdentifier'),
-            'contacts' => [],
-        ];
-
-        // add certificates
-        $keys = [];
-        $certInfo = Utils\Crypto::loadPublicKey($config, false, 'new_');
-        $hasNewCert = false;
-        if ($certInfo !== null) {
-            $keys[] = [
-                'type' => 'X509Certificate',
-                'signing' => true,
-                'encryption' => true,
-                'X509Certificate' => $certInfo['certData'],
-                'prefix' => 'new_',
-            ];
-            $hasNewCert = true;
-        }
-
-        /** @var array $certInfo */
-        $certInfo = Utils\Crypto::loadPublicKey($config, true);
-        $keys[] = [
-            'type' => 'X509Certificate',
-            'signing' => true,
-            'encryption' => $hasNewCert === false,
-            'X509Certificate' => $certInfo['certData'],
-            'prefix' => '',
-        ];
-        $metadata['keys'] = $keys;
-
-        // add organization information
-        if ($config->hasValue('OrganizationName')) {
-            $metadata['OrganizationName'] = $config->getLocalizedString('OrganizationName');
-            $metadata['OrganizationDisplayName'] = $config->getLocalizedString(
-                'OrganizationDisplayName',
-                $metadata['OrganizationName']
-            );
-
-            if (!$config->hasValue('OrganizationURL')) {
-                throw new Error\Exception('If OrganizationName is set, OrganizationURL must also be set.');
-            }
-            $metadata['OrganizationURL'] = $config->getLocalizedString('OrganizationURL');
-        }
-
-        // add scope
-        if ($config->hasValue('scope')) {
-            $metadata['scope'] = $config->getArray('scope');
-        }
-
-        // add extensions
-        if ($config->hasValue('EntityAttributes')) {
-            $metadata['EntityAttributes'] = $config->getArray('EntityAttributes');
-
-            // check for entity categories
-            if (Utils\Config\Metadata::isHiddenFromDiscovery($metadata)) {
-                $metadata['hide.from.discovery'] = true;
-            }
-        }
-
-        if ($config->hasValue('UIInfo')) {
-            $metadata['UIInfo'] = $config->getArray('UIInfo');
-        }
-
-        if ($config->hasValue('DiscoHints')) {
-            $metadata['DiscoHints'] = $config->getArray('DiscoHints');
-        }
-
-        if ($config->hasValue('RegistrationInfo')) {
-            $metadata['RegistrationInfo'] = $config->getArray('RegistrationInfo');
-        }
-
-        // add contact information
-        $globalConfig = Configuration::getInstance();
-        $email = $globalConfig->getString('technicalcontact_email', false);
-        if ($email && $email !== 'na@example.org') {
-            $contact = [
-                'emailAddress' => $email,
-                'name' => $globalConfig->getString('technicalcontact_name', null),
-                'contactType' => 'technical',
-            ];
-            $metadata['contacts'][] = Utils\Config\Metadata::getContact($contact);
-        }
-
-        return $metadata;
-    }
-
-
-    /**
-     * Send a response to the SP.
-     *
-     * @param array $state  The authentication state.
-     * @return void
-     */
-    public static function sendResponse(array $state)
-    {
-        Assert::keyExists($state, 'Attributes');
-        Assert::keyExists($state, 'SPMetadata');
-        Assert::keyExists($state, 'saml:shire');
-        Assert::notNull($state['Attributes']);
-        Assert::notNull($state['SPMetadata']);
-        Assert::notNull($state['saml:shire']);
-        Assert::keyExists($state, 'saml:target'); // Can be NULL
-
-        $spMetadata = $state["SPMetadata"];
-        $spEntityId = $spMetadata['entityid'];
-        $spMetadata = Configuration::loadFromArray(
-            $spMetadata,
-            '$metadata['.var_export($spEntityId, true).']'
-        );
-
-        Logger::info('Sending SAML 1.1 Response to '.var_export($spEntityId, true));
-
-        $attributes = $state['Attributes'];
-        $shire = $state['saml:shire'];
-        $target = $state['saml:target'];
-
-        $idp = IdP::getByState($state);
-
-        $idpMetadata = $idp->getConfig();
-
-        $config = Configuration::getInstance();
-        $metadata = MetaDataStorageHandler::getMetadataHandler();
-
-        $statsData = [
-            'spEntityID' => $spEntityId,
-            'idpEntityID' => $idpMetadata->getString('entityid'),
-            'protocol' => 'saml1',
-        ];
-        if (isset($state['saml:AuthnRequestReceivedAt'])) {
-            $statsData['logintime'] = microtime(true) - $state['saml:AuthnRequestReceivedAt'];
-        }
-        Stats::log('saml:idp:Response', $statsData);
-
-        // Generate and send response.
-        $ar = new AuthnResponse();
-        $authnResponseXML = $ar->generate($idpMetadata, $spMetadata, $shire, $attributes);
-
-        $httppost = new HTTPPost($config, $metadata);
-        $httppost->sendResponse($authnResponseXML, $idpMetadata, $spMetadata, $target, $shire);
-    }
-
-
-    /**
-     * Receive an authentication request.
-     *
-     * @param \SimpleSAML\IdP $idp  The IdP we are receiving it for.
-     * @return void
-     */
-    public static function receiveAuthnRequest(IdP $idp)
-    {
-        if (isset($_REQUEST['cookieTime'])) {
-            $cookieTime = (int) $_REQUEST['cookieTime'];
-            if ($cookieTime + 5 > time()) {
-                /*
-                 * Less than five seconds has passed since we were
-                 * here the last time. Cookies are probably disabled.
-                 */
-                Utils\HTTP::checkSessionCookie(Utils\HTTP::getSelfURL());
-            }
-        }
-
-        if (!isset($_REQUEST['providerId'])) {
-            throw new Error\BadRequest('Missing providerId parameter.');
-        }
-        $spEntityId = (string) $_REQUEST['providerId'];
-
-        if (!isset($_REQUEST['shire'])) {
-            throw new Error\BadRequest('Missing shire parameter.');
-        }
-        $shire = (string) $_REQUEST['shire'];
-
-        if (isset($_REQUEST['target'])) {
-            $target = $_REQUEST['target'];
-        } else {
-            $target = null;
-        }
-
-        Logger::info(
-            'Shib1.3 - IdP.SSOService: Got incoming Shib authnRequest from '.var_export($spEntityId, true).'.'
-        );
-
-        $metadata = MetaDataStorageHandler::getMetadataHandler();
-        $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'shib13-sp-remote');
-
-        $found = false;
-        foreach ($spMetadata->getEndpoints('AssertionConsumerService') as $ep) {
-            if ($ep['Binding'] !== 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post') {
-                continue;
-            }
-            if ($ep['Location'] !== $shire) {
-                continue;
-            }
-            $found = true;
-            break;
-        }
-        if (!$found) {
-            throw new \Exception(
-                'Invalid AssertionConsumerService for SP '.var_export($spEntityId, true).': '.var_export($shire, true)
-            );
-        }
-
-        Stats::log(
-            'saml:idp:AuthnRequest',
-            [
-                'spEntityID' => $spEntityId,
-                'protocol' => 'saml1',
-            ]
-        );
-
-        $sessionLostURL = Utils\HTTP::addURLParameters(
-            Utils\HTTP::getSelfURL(),
-            ['cookieTime' => time()]
-        );
-
-        $state = [
-            'Responder' => ['\SimpleSAML\Module\saml\IdP\SAML1', 'sendResponse'],
-            'SPMetadata' => $spMetadata->toArray(),
-            Auth\State::RESTART => $sessionLostURL,
-            'saml:shire' => $shire,
-            'saml:target' => $target,
-            'saml:AuthnRequestReceivedAt' => microtime(true),
-        ];
-
-        $idp->handleAuthenticationRequest($state);
-    }
-}
diff --git a/modules/saml/lib/IdP/SAML2.php b/modules/saml/lib/IdP/SAML2.php
index 664bcf6f5ca337fb640e4f2d72fd91d5b94682e3..48403c62bca14966380e82daa02db7483fe24441 100644
--- a/modules/saml/lib/IdP/SAML2.php
+++ b/modules/saml/lib/IdP/SAML2.php
@@ -363,7 +363,6 @@ class SAML2
                 );
             }
 
-            /** @psalm-var null|string|\SAML2\XML\saml\Issuer $issuer   Remove in SSP 2.0 */
             $issuer = $request->getIssuer();
             if ($issuer === null) {
                 throw new Error\BadRequest(
@@ -598,7 +597,6 @@ class SAML2
         $binding = Binding::getCurrentBinding();
         $message = $binding->receive();
 
-        /** @psalm-var null|string|\SAML2\XML\saml\Issuer  Remove in SSP 2.0 */
         $issuer = $message->getIssuer();
         if ($issuer === null) {
             /* Without an issuer we have no way to respond to the message. */
diff --git a/modules/saml/lib/Message.php b/modules/saml/lib/Message.php
index fe047d955ef7585298a1dbd8634d0113c7a2842b..7027e4f7e18fe342d1b49807cfd309f6aa911cfd 100644
--- a/modules/saml/lib/Message.php
+++ b/modules/saml/lib/Message.php
@@ -188,30 +188,6 @@ class Message
                         Logger::debug('Skipping unknown key type: ' . $key['type']);
                 }
             }
-        } elseif ($srcMetadata->hasValue('certFingerprint')) {
-            Logger::notice(
-                "Validating certificates by fingerprint is deprecated. Please use " .
-                "certData or certificate options in your remote metadata configuration."
-            );
-
-            $certFingerprint = $srcMetadata->getArrayizeString('certFingerprint');
-            foreach ($certFingerprint as &$fp) {
-                $fp = strtolower(str_replace(':', '', $fp));
-            }
-
-            $certificates = $element->getCertificates();
-
-            // we don't have the full certificate stored. Try to find it in the message or the assertion instead
-            if (count($certificates) === 0) {
-                /* We need the full certificate in order to match it against the fingerprint. */
-                Logger::debug('No certificate in message when validating against fingerprint.');
-                return false;
-            } else {
-                Logger::debug('Found ' . count($certificates) . ' certificates in ' . get_class($element));
-            }
-
-            $pemCert = self::findCertificate($certFingerprint, $certificates);
-            $pemKeys = [$pemCert];
         } else {
             throw new SSP_Error\Exception(
                 'Missing certificate in metadata for ' .
diff --git a/modules/saml/lib/SP/LogoutStore.php b/modules/saml/lib/SP/LogoutStore.php
index 9123eadd0368d97b90992b3e1988afa3054b0c6d..8b941acd9611a1bcd092465f2349646ae475755a 100644
--- a/modules/saml/lib/SP/LogoutStore.php
+++ b/modules/saml/lib/SP/LogoutStore.php
@@ -417,7 +417,6 @@ class LogoutStore
                 // We cannot fetch all sessions without a SQL store
                 return false;
             }
-            /** @var array $sessions At this point the store cannot be false */
             $sessions = self::getSessionsStore($store, $authId, $strNameId, $sessionIndexes);
         }
 
diff --git a/modules/saml/www/disco.php b/modules/saml/www/disco.php
index b7d06c454550a1dab8eab8edb181c4a6a750e379..93d8f68bbee3ee3f09f0268e36d541986d497e90 100644
--- a/modules/saml/www/disco.php
+++ b/modules/saml/www/disco.php
@@ -4,5 +4,5 @@
  * Built-in IdP discovery service.
  */
 
-$discoHandler = new \SimpleSAML\XHTML\IdPDisco(['saml20-idp-remote', 'shib13-idp-remote'], 'saml');
+$discoHandler = new \SimpleSAML\XHTML\IdPDisco(['saml20-idp-remote'], 'saml');
 $discoHandler->handleRequest();
diff --git a/modules/saml/www/proxy/invalid_session.php b/modules/saml/www/proxy/invalid_session.php
index 3b9c09610414b1712b7aed1c205a947d22fdcefa..3a3d3b88657bc8f973ee06edf4328466249f8dc9 100644
--- a/modules/saml/www/proxy/invalid_session.php
+++ b/modules/saml/www/proxy/invalid_session.php
@@ -74,4 +74,4 @@ if (array_key_exists('name', $spmd)) {
     $template->data['sp_name'] = $spmd['entityid'];
 }
 
-$template->show();
+$template->send();
diff --git a/modules/saml/www/sp/metadata.php b/modules/saml/www/sp/metadata.php
index b13d86fed33df9cadcc69736232f554d5e5b9adb..e32b1d34b2885f1ec94e8a8a574ed6800382ae4e 100644
--- a/modules/saml/www/sp/metadata.php
+++ b/modules/saml/www/sp/metadata.php
@@ -281,7 +281,7 @@ if (array_key_exists('output', $_REQUEST) && $_REQUEST['output'] == 'xhtml') {
     $t->data['metadataflat'] = '$metadata[' . var_export($entityId, true)
         . '] = ' . var_export($metaArray20, true) . ';';
     $t->data['metaurl'] = $source->getMetadataURL();
-    $t->show();
+    $t->send();
 } else {
     header('Content-Type: application/samlmetadata+xml');
     echo($xml);
diff --git a/modules/saml/www/sp/saml1-acs.php b/modules/saml/www/sp/saml1-acs.php
deleted file mode 100644
index 34ca9ece6428edc6edcd48e11ff7b6d469d2099e..0000000000000000000000000000000000000000
--- a/modules/saml/www/sp/saml1-acs.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-use SimpleSAML\Bindings\Shib13\Artifact;
-use Webmozart\Assert\Assert;
-
-if (!array_key_exists('SAMLResponse', $_REQUEST) && !array_key_exists('SAMLart', $_REQUEST)) {
-    throw new \SimpleSAML\Error\BadRequest('Missing SAMLResponse or SAMLart parameter.');
-}
-
-if (!array_key_exists('TARGET', $_REQUEST)) {
-    throw new \SimpleSAML\Error\BadRequest('Missing TARGET parameter.');
-}
-
-if (!array_key_exists('PATH_INFO', $_SERVER)) {
-    throw new \SimpleSAML\Error\BadRequest('Missing authentication source ID in assertion consumer service URL');
-}
-
-$sourceId = $_SERVER['PATH_INFO'];
-$end = strpos($sourceId, '/', 1);
-if ($end === false) {
-    $end = strlen($sourceId);
-}
-$sourceId = substr($sourceId, 1, $end - 1);
-
-/** @var \SimpleSAML\Module\saml\Auth\Source\SP $source */
-$source = \SimpleSAML\Auth\Source::getById($sourceId, '\SimpleSAML\Module\saml\Auth\Source\SP');
-
-SimpleSAML\Logger::debug('Received SAML1 response');
-
-$target = (string) $_REQUEST['TARGET'];
-
-if (preg_match('@^https?://@i', $target)) {
-    // Unsolicited response
-    $state = [
-        'saml:sp:isUnsolicited' => true,
-        'saml:sp:AuthId' => $sourceId,
-        'saml:sp:RelayState' => \SimpleSAML\Utils\HTTP::checkURLAllowed($target),
-    ];
-} else {
-    /** @var array $state  State can never be null without a third argument */
-    $state = \SimpleSAML\Auth\State::loadState($_REQUEST['TARGET'], 'saml:sp:sso');
-
-    // Check that the authentication source is correct
-    Assert::keyExists($state, 'saml:sp:AuthId');
-    if ($state['saml:sp:AuthId'] !== $sourceId) {
-        throw new \SimpleSAML\Error\Exception(
-            'The authentication source id in the URL does not match the authentication source which sent the request.'
-        );
-    }
-
-    Assert::notNull($state['saml:idp']);
-}
-
-$spMetadata = $source->getMetadata();
-
-if (array_key_exists('SAMLart', $_REQUEST)) {
-    if (!isset($state['saml:idp'])) {
-        // Unsolicited response
-        throw new \SimpleSAML\Error\Exception(
-            'IdP initiated authentication not supported with the SAML 1.1 SAMLart protocol.'
-        );
-    }
-    $idpMetadata = $source->getIdPMetadata($state['saml:idp']);
-
-    $responseXML = Artifact::receive($spMetadata, $idpMetadata);
-    $isValidated = true; /* Artifact binding validated with ssl certificate. */
-} elseif (array_key_exists('SAMLResponse', $_REQUEST)) {
-    $responseXML = $_REQUEST['SAMLResponse'];
-    $responseXML = base64_decode($responseXML);
-    $isValidated = false; /* Must check signature on response. */
-} else {
-    throw new \SimpleSAML\Error\BadRequest('Missing SAMLResponse or SAMLart parameter.');
-}
-
-$response = new \SimpleSAML\XML\Shib13\AuthnResponse();
-$response->setXML($responseXML);
-
-$response->setMessageValidated($isValidated);
-$response->validate();
-
-$responseIssuer = $response->getIssuer();
-$attributes = $response->getAttributes();
-
-if (isset($state['saml:idp']) && $responseIssuer !== $state['saml:idp']) {
-    throw new \SimpleSAML\Error\Exception('The issuer of the response wasn\'t the destination of the request.');
-}
-
-$logoutState = [
-    'saml:logout:Type' => 'saml1'
-];
-$state['LogoutState'] = $logoutState;
-
-$state['saml:sp:NameID'] = $response->getNameID();
-
-$source->handleResponse($state, $responseIssuer, $attributes);
-Assert::true(false);
diff --git a/modules/saml/www/sp/saml2-acs.php b/modules/saml/www/sp/saml2-acs.php
index 11a17bf4d64028e58348754317eba629ef242b53..1f7e60313d6887d0e79a3d82bc32018be0917b3e 100644
--- a/modules/saml/www/sp/saml2-acs.php
+++ b/modules/saml/www/sp/saml2-acs.php
@@ -39,7 +39,6 @@ if (!($response instanceof \SAML2\Response)) {
     throw new \SimpleSAML\Error\BadRequest('Invalid message received to AssertionConsumerService endpoint.');
 }
 
-/** @psalm-var null|string|\SAML2\XML\saml\Issuer $issuer   Remove in SSP 2.0 */
 $issuer = $response->getIssuer();
 if ($issuer === null) {
     // no Issuer in the response. Look for an unencrypted assertion with an issuer
@@ -50,7 +49,6 @@ if ($issuer === null) {
             break;
         }
     }
-    /** @psalm-var string|null $issuer  Remove in SSP 2.0 */
     if ($issuer === null) {
         // no issuer found in the assertions
         throw new Exception('Missing <saml:Issuer> in message delivered to AssertionConsumerService.');
diff --git a/modules/saml/www/sp/saml2-logout.php b/modules/saml/www/sp/saml2-logout.php
index 9b756d8d61e5fdffa09c6eee42a6880d008d2cc6..76661b3eb4ac35f3d54bcf2d4d14289ef9887d78 100644
--- a/modules/saml/www/sp/saml2-logout.php
+++ b/modules/saml/www/sp/saml2-logout.php
@@ -46,7 +46,6 @@ if ($idpEntityId === null) {
     throw new \SimpleSAML\Error\BadRequest('Received message on logout endpoint without issuer.');
 }
 
-/** @var \SimpleSAML\Module\saml\Auth\Source\SP $source */
 $spEntityId = $source->getEntityId();
 
 $metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler();
diff --git a/modules/saml/www/sp/wrong_authncontextclassref.php b/modules/saml/www/sp/wrong_authncontextclassref.php
index 9cb93bf70dbfeffbe30c113b323f9c834c9d6cce..5c81d73e5cdc29b732d1f2ba2831aa585219edd3 100644
--- a/modules/saml/www/sp/wrong_authncontextclassref.php
+++ b/modules/saml/www/sp/wrong_authncontextclassref.php
@@ -2,4 +2,4 @@
 
 $globalConfig = \SimpleSAML\Configuration::getInstance();
 $t = new \SimpleSAML\XHTML\Template($globalConfig, 'saml:sp/wrong_authncontextclassref.tpl.php');
-$t->show();
+$t->send();
diff --git a/phpunit.xml b/phpunit.xml
index 878768a43398e4abb9c03f6b07834182d45c7522..84dc59b007cf80facf83b2e8adb0688ff974ac1f 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -29,7 +29,7 @@
     </filter>
     <logging>
         <log type="coverage-text" target="php://stdout" showUncoveredFiles="true"/>
-        <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70"/>
+        <log type="coverage-html" target="build/coverage" lowUpperBound="35" highLowerBound="70"/>
         <log type="coverage-clover" target="build/logs/clover.xml"/>
     </logging>
 </phpunit>
diff --git a/psalm.xml b/psalm.xml
index 1cdd446a50fd28975dc53ae6ef2d4a659e5d9f57..065e7d06badc624dbd4e8202e923bf7d8a9bdf55 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -4,7 +4,6 @@
     useDocblockTypes="true"
     totallyTyped="false"
     hideExternalErrors="true"
-    allowCoercionFromStringToClassConst="true"
     allowStringToStandInForClass="true"
 >
     <projectFiles>
@@ -23,9 +22,8 @@
 
         <directory name="tests" />
 
-        <!-- Ignore deprecated classes -->
+        <!-- Ignore certain directories -->
         <ignoreFiles>
-            <directory name="tests/Utils/Stubs" />
             <directory name="vendor" />
         </ignoreFiles>
     </projectFiles>
diff --git a/tests/SigningTestCase.php b/tests/SigningTestCase.php
index 75ff8c43df1f441c34f339e0276f3896a58f0cb4..e6b279f5cd862d15874f541193620b534facb7fa 100644
--- a/tests/SigningTestCase.php
+++ b/tests/SigningTestCase.php
@@ -191,7 +191,7 @@ NOWDOC;
     /**
      * @return void
      */
-    public function setUp()
+    public function setUp(): void
     {
         $this->root = vfsStream::setup(
             self::ROOTDIRNAME,
@@ -217,7 +217,7 @@ NOWDOC;
     /**
      * @return void
      */
-    public function tearDown()
+    public function tearDown(): void
     {
         $this->clearInstance($this->config, Configuration::class, []);
     }
diff --git a/tests/Utils/ClearStateTestCase.php b/tests/Utils/ClearStateTestCase.php
index aeed53ab74a7aca6d5c7c122620de3f94b8db6a7..0abe90fa4f0581af0dcc2f6f98cf75c4b87cdf4e 100644
--- a/tests/Utils/ClearStateTestCase.php
+++ b/tests/Utils/ClearStateTestCase.php
@@ -21,7 +21,7 @@ class ClearStateTestCase extends TestCase
     /**
      * @return void
      */
-    public static function setUpBeforeClass()
+    public static function setUpBeforeClass(): void
     {
         if (!self::$stateClearer) {
             self::$stateClearer = new StateClearer();
@@ -33,7 +33,7 @@ class ClearStateTestCase extends TestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         self::clearState();
     }
@@ -42,7 +42,7 @@ class ClearStateTestCase extends TestCase
     /**
      * @return void
      */
-    public static function tearDownAfterClass()
+    public static function tearDownAfterClass(): void
     {
         self::clearState();
     }
diff --git a/tests/lib/AutoloadModulesTest.php b/tests/lib/AutoloadModulesTest.php
deleted file mode 100644
index 57f26304ff1ee1131033cec7646fea8adc35578f..0000000000000000000000000000000000000000
--- a/tests/lib/AutoloadModulesTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Test;
-
-use PHPUnit\Framework\TestCase;
-use SimpleSAML\Configuration;
-
-class AutoloadModulesTest extends TestCase
-{
-    /**
-     * Set up for each test.
-     * @return void
-     */
-    protected function setUp()
-    {
-        parent::setUp();
-        $config = Configuration::loadFromArray([], '[ARRAY]', 'simplesaml');
-    }
-
-    /**
-     * @test
-     * @runInSeparateProcess
-     * @return void
-     */
-    public function autoloaderDoesNotRecurseInfinitely()
-    {
-        $this->assertFalse(class_exists('NonExisting\\ClassThatHasNothing\\ToDoWithXMLSec\\Library', true));
-    }
-
-    /**
-     * @test
-     * @return void
-     */
-    public function autoloaderSubstitutesNamespacedXmlSecClassesWhereNonNamespacedClassWasUsed()
-    {
-        $this->assertTrue(class_exists('XMLSecEnc', true));
-    }
-}
diff --git a/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php b/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php
deleted file mode 100644
index d955c552fa4d9c56143417b9f3834064452edc0c..0000000000000000000000000000000000000000
--- a/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace SimpleSAML\Test\Auth;
-
-use SimpleSAML\Auth\TimeLimitedToken;
-
-class TimeLimitedTokenTest extends \SimpleSAML\Test\Utils\ClearStateTestCase
-{
-    /**
-     * Test for malformed tokens.
-     * @return void
-     */
-    public function testMalformedToken()
-    {
-        \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml');
-
-        $token = new TimeLimitedToken();
-        $this->assertFalse($token->validate('malformed'));
-        $this->assertFalse($token->validate('mal-for-med'));
-        $this->assertFalse($token->validate('mal-formed'));
-    }
-
-
-    /**
-     * Basic test to see if validation works for valid tokens.
-     * @return void
-     */
-    public function testValidToken()
-    {
-        \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml');
-
-        $token = new TimeLimitedToken();
-        $t = $token->generate();
-        $this->assertTrue($token->validate($t));
-    }
-
-
-    /**
-     * Test that token validation takes the verification data into account.
-     * @return void
-     */
-    public function testValidTokenWithData()
-    {
-        \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml');
-
-        $tokenWithData = new TimeLimitedToken();
-        $tokenWithData->addVerificationData('some more random data');
-        $t = $tokenWithData->generate();
-        $this->assertTrue($tokenWithData->validate($t));
-
-        $tokenWithoutData = new TimeLimitedToken();
-        $this->assertFalse($tokenWithoutData->validate($t));
-    }
-
-
-    /**
-     * Test that expired tokens are rejected.
-     * @return void
-     */
-    public function testExpiredToken()
-    {
-        \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml');
-
-        $token = new TimeLimitedToken();
-        $this->assertFalse($token->validate('7-c0803e76fff1df0ceb222dee80aa1d73f35d84dd'));
-    }
-
-
-    /**
-     * Test that a token that has been manipulated to extend its validity is rejected.
-     * @return void
-     */
-    public function testManipulatedToken()
-    {
-        \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml');
-
-        $token = new TimeLimitedToken(1);
-        $t = $token->generate();
-        list($offset, $hash) = explode('-', $t);
-        sleep(1);
-        $this->assertFalse($token->validate(dechex(hexdec($offset) + 1).'-'.$hash));
-    }
-}
diff --git a/tests/lib/SimpleSAML/ConfigurationTest.php b/tests/lib/SimpleSAML/ConfigurationTest.php
index 528709ccb9219fcea9db978dbee7a7d160ff0d0d..63f59f9d37111980ddc98d25909e0ddc908a551d 100644
--- a/tests/lib/SimpleSAML/ConfigurationTest.php
+++ b/tests/lib/SimpleSAML/ConfigurationTest.php
@@ -548,60 +548,6 @@ class ConfigurationTest extends \SimpleSAML\Test\Utils\ClearStateTestCase
     }
 
 
-    /**
-     * Test \SimpleSAML\Configuration::getConfigList()
-     * @return void
-     */
-    public function testGetConfigList()
-    {
-        $c = Configuration::loadFromArray([
-            'opts' => [
-                'a' => ['opt1' => 'value1'],
-                'b' => ['opt2' => 'value2'],
-            ],
-        ]);
-        $this->assertEquals($c->getConfigList('missing_opt'), []);
-        $opts = $c->getConfigList('opts');
-        $this->assertInternalType('array', $opts);
-        $this->assertEquals(array_keys($opts), ['a', 'b']);
-        $this->assertInstanceOf(Configuration::class, $opts['a']);
-        $this->assertEquals($opts['a']->getValue('opt1'), 'value1');
-        $this->assertInstanceOf(Configuration::class, $opts['b']);
-        $this->assertEquals($opts['b']->getValue('opt2'), 'value2');
-    }
-
-
-    /**
-     * Test \SimpleSAML\Configuration::getConfigList() wrong option
-     * @return void
-     */
-    public function testGetConfigListWrong()
-    {
-        $this->expectException(\Exception::class);
-        $c = Configuration::loadFromArray([
-            'opt' => 'not_an_array',
-        ]);
-        $c->getConfigList('opt');
-    }
-
-
-    /**
-     * Test \SimpleSAML\Configuration::getConfigList() with an array of wrong options.
-     * @return void
-     */
-    public function testGetConfigListWrongArrayValues()
-    {
-        $this->expectException(\Exception::class);
-        $c = Configuration::loadFromArray([
-            'opts' => [
-                'a',
-                'b',
-            ],
-        ]);
-        $c->getConfigList('opts');
-    }
-
-
     /**
      * Test \SimpleSAML\Configuration::getOptions()
      * @return void
@@ -780,16 +726,6 @@ class ConfigurationTest extends \SimpleSAML\Test\Utils\ClearStateTestCase
             ));
         }
 
-        // now make sure SingleSignOnService, SingleLogoutService and ArtifactResolutionService works fine
-        $a['metadata-set'] = 'shib13-idp-remote';
-        $c = Configuration::loadFromArray($a);
-        $this->assertEquals(
-            [
-                'Location' => 'https://example.com/sso',
-                'Binding' => 'urn:mace:shibboleth:1.0:profiles:AuthnRequest',
-            ],
-            $c->getDefaultEndpoint('SingleSignOnService')
-        );
         $a['metadata-set'] = 'saml20-idp-remote';
         $c = Configuration::loadFromArray($a);
         $this->assertEquals(
@@ -807,18 +743,6 @@ class ConfigurationTest extends \SimpleSAML\Test\Utils\ClearStateTestCase
             $c->getDefaultEndpoint('SingleLogoutService')
         );
 
-        // test for old shib1.3 AssertionConsumerService
-        $a['metadata-set'] = 'shib13-sp-remote';
-        $a['AssertionConsumerService'] = 'https://example.com/endpoint.php';
-        $c = Configuration::loadFromArray($a);
-        $this->assertEquals(
-            [
-                'Location' => 'https://example.com/endpoint.php',
-                'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',
-            ],
-            $c->getDefaultEndpoint('AssertionConsumerService')
-        );
-
         // test for no valid endpoints specified
         $a['SingleLogoutService'] = [
             [
diff --git a/tests/lib/SimpleSAML/DatabaseTest.php b/tests/lib/SimpleSAML/DatabaseTest.php
index 47c253b60eb0d3ca3930d04f07e66ecdeb71aef0..eea953043b25098d6a3eda157fcd0bbe419a78a7 100644
--- a/tests/lib/SimpleSAML/DatabaseTest.php
+++ b/tests/lib/SimpleSAML/DatabaseTest.php
@@ -5,6 +5,9 @@ declare(strict_types=1);
 namespace SimpleSAML\Test;
 
 use PHPUnit\Framework\TestCase;
+use ReflectionClass;
+use ReflectionMethod;
+use ReflectionProperty;
 use SimpleSAML\Configuration;
 use SimpleSAML\Database;
 
@@ -55,7 +58,7 @@ class DatabaseTest extends TestCase
      * @covers SimpleSAML\Database::connect
      * @return void
      */
-    public function setUp()
+    public function setUp(): void
     {
         $config = [
             'database.dsn'        => 'sqlite::memory:',
@@ -73,9 +76,6 @@ class DatabaseTest extends TestCase
         $this->assertEquals($config['database.dsn'], $this->config->getString('database.dsn'));
 
         $this->db = Database::getInstance($this->config);
-
-        // Ensure that we have a functional database class.
-        $this->assertInstanceOf(Database::class, $this->db);
     }
 
 
@@ -184,9 +184,13 @@ class DatabaseTest extends TestCase
      */
     public function slaves()
     {
-        $getSlave = self::getMethod('getSlave');
+        $ref = new ReflectionClass($this->db);
+        $dbMaster = $ref->getProperty('dbMaster');
+        $dbMaster->setAccessible(true);
+        $master = spl_object_hash($dbMaster->getValue($this->db));
 
-        $master = spl_object_hash(\PHPUnit\Framework\Assert::readAttribute($this->db, 'dbMaster'));
+        $getSlave = $ref->getMethod('getSlave');
+        $getSlave->setAccessible(true);
         $slave = spl_object_hash($getSlave->invokeArgs($this->db, []));
 
         $this->assertTrue(($master == $slave), "getSlave should have returned the master database object");
@@ -209,7 +213,13 @@ class DatabaseTest extends TestCase
         $sspConfiguration = new Configuration($config, "test/SimpleSAML/DatabaseTest.php");
         $msdb = Database::getInstance($sspConfiguration);
 
-        $slaves = \PHPUnit\Framework\Assert::readAttribute($msdb, 'dbSlaves');
+        $ref = new ReflectionClass($msdb);
+        $dbSlaves = $ref->getProperty('dbSlaves');
+        $dbSlaves->setAccessible(true);
+        $slaves = $dbSlaves->getValue($msdb);
+
+        $getSlave = $ref->getMethod('getSlave');
+        $getSlave->setAccessible(true);
         $gotSlave = spl_object_hash($getSlave->invokeArgs($msdb, []));
 
         $this->assertEquals(
@@ -252,7 +262,6 @@ class DatabaseTest extends TestCase
             "CREATE TABLE IF NOT EXISTS $table (ssp_key INT(16) NOT NULL, ssp_value TEXT NOT NULL)"
         );
 
-        /** @var \PDOStatement $query1 */
         $query1 = $this->db->read("SELECT * FROM $table");
         $this->assertEquals(0, $query1->fetch(), "Table $table is not empty when it should be.");
 
@@ -264,7 +273,6 @@ class DatabaseTest extends TestCase
         );
         $this->assertEquals(1, $stmt, "Could not insert data into $table.");
 
-        /** @var \PDOStatement $query2 */
         $query2 = $this->db->read("SELECT * FROM $table WHERE ssp_key = :ssp_key", ['ssp_key' => $ssp_key]);
         $data = $query2->fetch();
         $this->assertEquals($data['ssp_value'], $ssp_value, "Inserted data doesn't match what is in the database");
@@ -303,7 +311,7 @@ class DatabaseTest extends TestCase
     /**
      * @return void
      */
-    public function tearDown()
+    public function tearDown(): void
     {
         $table = $this->db->applyPrefix("sspdbt");
         $this->db->write("DROP TABLE IF EXISTS $table");
diff --git a/tests/lib/SimpleSAML/Locale/LocalizationTest.php b/tests/lib/SimpleSAML/Locale/LocalizationTest.php
index 12b036eaeaf5b9ed29dbcde9ce03f8b57d6754d4..914dbc248b22a0f11c6bd4ab57c7498becd871f4 100644
--- a/tests/lib/SimpleSAML/Locale/LocalizationTest.php
+++ b/tests/lib/SimpleSAML/Locale/LocalizationTest.php
@@ -13,7 +13,7 @@ class LocalizationTest extends TestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         // Localization/Language code attempts to load a cookie, and looks in the config for a name of the cookie
         Configuration::loadFromArray([], '[ARRAY]', 'simplesaml');
diff --git a/tests/lib/SimpleSAML/Locale/TranslateTest.php b/tests/lib/SimpleSAML/Locale/TranslateTest.php
index 1e6cef3c3a5246fb2992bbe0a6e3d07d62ddd108..3ff26ff0c2bd774f11a6aff790e318f90fbae074 100644
--- a/tests/lib/SimpleSAML/Locale/TranslateTest.php
+++ b/tests/lib/SimpleSAML/Locale/TranslateTest.php
@@ -21,23 +21,4 @@ class TranslateTest extends TestCase
         $testString = 'Blablabla';
         $this->assertEquals($testString, $t->noop($testString));
     }
-
-
-    /**
-     * Test SimpleSAML\Locale\Translate::t().
-     * @return void
-     */
-    public function testTFallback()
-    {
-        $c = \SimpleSAML\Configuration::loadFromArray([]);
-        $t = new Translate($c);
-        $testString = 'Blablabla';
-
-        // $fallbackdefault = true
-        $result = 'not translated (' . $testString . ')';
-        $this->assertEquals($result, $t->t($testString));
-
-        // $fallbackdefault = false, should be a noop
-        $this->assertEquals($testString, $t->t($testString, [], false));
-    }
 }
diff --git a/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php b/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php
index fe5e3fcb39f47f191119030055f5128ae9e47171..2c9b74d9890e2bc85a957e33bc9e0a97bc0f103e 100644
--- a/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php
+++ b/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php
@@ -90,76 +90,6 @@ class SAMLBuilderTest extends TestCase
             $this->assertEquals($metadata['attributes'][$keys[$c]], $curAttribute->getAttribute("Name"));
             $this->assertEquals($keys[$c], $curAttribute->getAttribute("FriendlyName"));
         }
-
-        //  test SP13 array parsing, no friendly name
-        $set = 'shib13-sp-remote';
-        $metadata = [
-            'entityid'     => $entityId,
-            'name'         => ['en' => 'Test SP'],
-            'metadata-set' => $set,
-            'attributes'   => [
-                'urn:oid:1.3.6.1.4.1.5923.1.1.1.10',
-                'urn:oid:1.3.6.1.4.1.5923.1.1.1.6',
-                'urn:oid:0.9.2342.19200300.100.1.3',
-                'urn:oid:2.5.4.3',
-            ],
-        ];
-
-        $samlBuilder = new SAMLBuilder($entityId);
-        $samlBuilder->addMetadata($set, $metadata);
-
-        $spDesc = $samlBuilder->getEntityDescriptor();
-        /** @var \DOMNodeList $acs */
-        $acs = $spDesc->getElementsByTagName("AttributeConsumingService");
-        $this->assertEquals(1, $acs->length);
-
-        /** @psalm-var \DOMElement $first */
-        $first = $acs->item(0);
-        $attributes = $first->getElementsByTagName("RequestedAttribute");
-        $this->assertEquals(4, $attributes->length);
-        for ($c = 0; $c < $attributes->length; $c++) {
-            /** @psalm-var \DOMElement $curAttribute */
-            $curAttribute = $attributes->item($c);
-            $this->assertTrue($curAttribute->hasAttribute("Name"));
-            $this->assertFalse($curAttribute->hasAttribute("FriendlyName"));
-            $this->assertEquals($metadata['attributes'][$c], $curAttribute->getAttribute("Name"));
-        }
-
-        // test SP20 array parsing, no friendly name
-        $set = 'shib13-sp-remote';
-        $metadata = [
-            'entityid'     => $entityId,
-            'name'         => ['en' => 'Test SP'],
-            'metadata-set' => $set,
-            'attributes'   => [
-                'eduPersonTargetedID'    => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10',
-                'eduPersonPrincipalName' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6',
-                'eduPersonOrgDN'         => 'urn:oid:0.9.2342.19200300.100.1.3',
-                'cn'                     => 'urn:oid:2.5.4.3',
-            ],
-        ];
-
-        $samlBuilder = new SAMLBuilder($entityId);
-        $samlBuilder->addMetadata($set, $metadata);
-
-        $spDesc = $samlBuilder->getEntityDescriptor();
-        /** @var \DOMNodeList $acs */
-        $acs = $spDesc->getElementsByTagName("AttributeConsumingService");
-        $this->assertEquals(1, $acs->length);
-
-        /** @psalm-var \DOMElement $first */
-        $first = $acs->item(0);
-        $attributes = $first->getElementsByTagName("RequestedAttribute");
-        $this->assertEquals(4, $attributes->length);
-        $keys = array_keys($metadata['attributes']);
-        for ($c = 0; $c < $attributes->length; $c++) {
-            /** @psalm-var \DOMElement $curAttribute */
-            $curAttribute = $attributes->item($c);
-            $this->assertTrue($curAttribute->hasAttribute("Name"));
-            $this->assertTrue($curAttribute->hasAttribute("FriendlyName"));
-            $this->assertEquals($metadata['attributes'][$keys[$c]], $curAttribute->getAttribute("Name"));
-            $this->assertEquals($keys[$c], $curAttribute->getAttribute("FriendlyName"));
-        }
     }
 
 
diff --git a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php
index b538cafde63581e50f86d1ae8bfc1375539c794f..279990d53c4fb4f114b890d480964a6e4e432f44 100644
--- a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php
+++ b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php
@@ -178,100 +178,6 @@ XML
     }
 
 
-    /**
-     * @param string $algo
-     * @param string $expected_fingerprint
-     * @return void
-     */
-    private function validateFingerprint(string $algo, string $expected_fingerprint)
-    {
-        $doc = $this->makeTestDocument();
-        $entities = \SimpleSAML\Metadata\SAMLParser::parseDescriptorsElement($doc->documentElement);
-        foreach ($entities as $entity) {
-            $this->assertTrue(
-                $entity->validateFingerprint($expected_fingerprint, $algo)
-            );
-        }
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateFingerprintSHA1()
-    {
-        $this->validateFingerprint(
-            XMLSecurityDSig::SHA1,
-            'A7:FB:75:22:57:88:A1:B0:D0:29:0A:4B:D1:EA:0C:01:F8:98:44:A0'
-        );
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateFingerprintSHA256()
-    {
-        $this->validateFingerprint(
-            XMLSecurityDSig::SHA256,
-            '3E:04:6B:2C:13:B5:02:FB:FC:93:66:EE:6C:A3:D1:BB:B8:9E:D8:38:03' .
-            ':96:C5:C0:EC:95:D5:C9:F6:C1:D5:FC'
-        );
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateFingerprintSHA384()
-    {
-        $this->validateFingerprint(
-            XMLSecurityDSig::SHA384,
-            '38:87:CC:59:54:CF:ED:FC:71:B6:21:F3:8A:52:76:EF:30:C8:8C:A0:38' .
-            ':48:77:87:58:14:A0:B3:55:EF:48:9C:B4:B3:44:1F:B7:BB:FC:28:65' .
-            ':6E:93:83:52:C2:8E:A6'
-        );
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateFingerprintSHA512()
-    {
-        $this->validateFingerprint(
-            XMLSecurityDSig::SHA512,
-            '72:6C:51:01:A1:E9:76:D8:61:C4:B2:4F:AC:0B:64:7D:0D:4E:B7:DC:B3' .
-            ':4A:92:23:51:A6:DC:A5:A1:9A:A5:DD:43:F5:05:6A:B7:7D:83:1F:B6:' .
-            'CC:68:54:54:54:37:1B:EC:E1:22:5A:48:C6:BC:67:4B:A6:78:EE:E0:C6:8C:59'
-        );
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateFingerprintUnknownAlgorithmThrows()
-    {
-        $doc = $this->makeTestDocument();
-        $entities = \SimpleSAML\Metadata\SAMLParser::parseDescriptorsElement($doc->documentElement);
-        foreach ($entities as $entity) {
-            try {
-                $entity->validateFingerprint('unused', 'invalid_algorithm');
-            } catch (\UnexpectedValueException $e) {
-                $this->assertEquals(
-                    'Unsupported hashing function invalid_algorithm. Known options: [' .
-                    'http://www.w3.org/2000/09/xmldsig#sha1, ' .
-                    'http://www.w3.org/2001/04/xmlenc#sha256, ' .
-                    'http://www.w3.org/2001/04/xmldsig-more#sha384, ' .
-                    'http://www.w3.org/2001/04/xmlenc#sha512]',
-                    $e->getMessage()
-                );
-            }
-        }
-    }
-
-
     /**
      * Test RoleDescriptor/Extensions is parsed
      * @return void
diff --git a/tests/lib/SimpleSAML/SessionHandlerPHPTest.php b/tests/lib/SimpleSAML/SessionHandlerPHPTest.php
index c0b71a489ee7923d407736bf781fd20369837bfe..ff47cd55a7b8a8c3c183c0af9c491bd072fe22a9 100644
--- a/tests/lib/SimpleSAML/SessionHandlerPHPTest.php
+++ b/tests/lib/SimpleSAML/SessionHandlerPHPTest.php
@@ -28,7 +28,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         $this->original = $_SERVER;
         $_SERVER['HTTP_HOST'] = 'example.com';
@@ -42,7 +42,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase
     /**
      * @return void
      */
-    protected function tearDown()
+    protected function tearDown(): void
     {
         $_SERVER = $this->original;
     }
@@ -75,7 +75,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase
         $sh->setCookie('SimpleSAMLSessionID', '1');
 
         $headers = xdebug_get_headers();
-        $this->assertContains('SimpleSAML=1;', $headers[0]);
+        $this->assertStringContainsString('SimpleSAML=1;', $headers[0]);
         $this->assertRegExp('/\b[Ee]xpires=([Mm]on|[Tt]ue|[Ww]ed|[Tt]hu|[Ff]ri|[Ss]at|[Ss]un)/', $headers[0]);
         $this->assertRegExp('/\b[Pp]ath=\/ourPath(;|$)/', $headers[0]);
         $this->assertRegExp('/\b[Dd]omain=example.com(;|$)/', $headers[0]);
@@ -101,7 +101,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase
         $sh->setCookie('SimpleSAMLSessionID', 'None');
 
         $headers = xdebug_get_headers();
-        $this->assertContains('SimpleSAML=None;', $headers[0]);
+        $this->assertStringContainsString('SimpleSAML=None;', $headers[0]);
         $this->assertRegExp('/\b[Ss]ame[Ss]ite=None(;|$)/', $headers[0]);
     }
 
@@ -123,7 +123,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase
         $sh->setCookie('SimpleSAMLSessionID', 'Lax');
 
         $headers = xdebug_get_headers();
-        $this->assertContains('SimpleSAML=Lax;', $headers[0]);
+        $this->assertStringContainsString('SimpleSAML=Lax;', $headers[0]);
         $this->assertRegExp('/\b[Ss]ame[Ss]ite=Lax(;|$)/', $headers[0]);
     }
 
@@ -145,7 +145,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase
         $sh->setCookie('SimpleSAMLSessionID', 'Strict');
 
         $headers = xdebug_get_headers();
-        $this->assertContains('SimpleSAML=Strict;', $headers[0]);
+        $this->assertStringContainsString('SimpleSAML=Strict;', $headers[0]);
         $this->assertRegExp('/\b[Ss]ame[Ss]ite=Strict(;|$)/', $headers[0]);
     }
 
@@ -169,9 +169,9 @@ class SessionHandlerPHPTest extends ClearStateTestCase
         $sh->restorePrevious();
 
         $headers = xdebug_get_headers();
-        $this->assertContains('PHPSESSID=' . $sid, $headers[0]);
-        $this->assertContains('SimpleSAML=Restore;', $headers[1]);
-        $this->assertContains('PHPSESSID=' . $sid, $headers[2]);
+        $this->assertStringContainsString('PHPSESSID=' . $sid, $headers[0]);
+        $this->assertStringContainsString('SimpleSAML=Restore;', $headers[1]);
+        $this->assertStringContainsString('PHPSESSID=' . $sid, $headers[2]);
         $this->assertEquals($headers[0], $headers[2]);
     }
 
diff --git a/tests/lib/SimpleSAML/Store/RedisTest.php b/tests/lib/SimpleSAML/Store/RedisTest.php
index 44ab5215e6d58c1c63c97c3fa47ee08537c3e530..915934493c82414d82317a3163b45b4c1497eb49 100644
--- a/tests/lib/SimpleSAML/Store/RedisTest.php
+++ b/tests/lib/SimpleSAML/Store/RedisTest.php
@@ -20,7 +20,7 @@ use SimpleSAML\Store;
  */
 class RedisTest extends TestCase
 {
-    /** @var \PHPUnit_Framework_MockObject_MockObject */
+    /** @var \PHPUnit\Framework\MockObject\MockObject */
     protected $mocked_redis;
 
     /** @var \SimpleSAML\Store\Redis */
@@ -33,7 +33,7 @@ class RedisTest extends TestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         $this->config = [];
 
@@ -42,19 +42,15 @@ class RedisTest extends TestCase
                                    ->disableOriginalConstructor()
                                    ->getMock();
 
-        /** @psalm-suppress UndefinedMethod   Remove when Psalm 3.x is in place */
         $this->mocked_redis->method('get')
                            ->will($this->returnCallback([$this, 'getMocked']));
 
-        /** @psalm-suppress UndefinedMethod   Remove when Psalm 3.x is in place */
         $this->mocked_redis->method('set')
                            ->will($this->returnCallback([$this, 'setMocked']));
 
-        /** @psalm-suppress UndefinedMethod   Remove when Psalm 3.x is in place */
         $this->mocked_redis->method('setex')
                            ->will($this->returnCallback([$this, 'setexMocked']));
 
-        /** @psalm-suppress UndefinedMethod   Remove when Psalm 3.x is in place */
         $this->mocked_redis->method('del')
                            ->will($this->returnCallback([$this, 'delMocked']));
 
@@ -62,7 +58,6 @@ class RedisTest extends TestCase
             return;
         };
 
-        /** @psalm-suppress UndefinedMethod   Remove when Psalm 3.x is in place */
         $this->mocked_redis->method('disconnect')
                            ->will($this->returnCallback($nop));
 
diff --git a/tests/lib/SimpleSAML/Store/SQLTest.php b/tests/lib/SimpleSAML/Store/SQLTest.php
index a2ebb848e540f7136132e59d28ca0f4ebadfa4dc..485cd272986dd67442266dea1ed64fa277c5d1e7 100644
--- a/tests/lib/SimpleSAML/Store/SQLTest.php
+++ b/tests/lib/SimpleSAML/Store/SQLTest.php
@@ -23,7 +23,7 @@ class SQLTest extends TestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         Configuration::loadFromArray([
             'store.type'                    => 'sql',
@@ -43,7 +43,7 @@ class SQLTest extends TestCase
     {
         $store = Store::getInstance();
 
-        $this->assertInstanceOf('SimpleSAML\Store\SQL', $store);
+        $this->assertInstanceOf(Store\SQL::class, $store);
     }
 
 
@@ -199,7 +199,7 @@ class SQLTest extends TestCase
     /**
      * @return void
      */
-    protected function tearDown()
+    protected function tearDown(): void
     {
         $config = Configuration::getInstance();
 
diff --git a/tests/lib/SimpleSAML/StoreTest.php b/tests/lib/SimpleSAML/StoreTest.php
index 672b4b20536583490cc6f51af65661dc663b0ad5..1b4cfd1e6d58185aa4f06fe082d961f63a7d0d77 100644
--- a/tests/lib/SimpleSAML/StoreTest.php
+++ b/tests/lib/SimpleSAML/StoreTest.php
@@ -129,7 +129,7 @@ class StoreTest extends TestCase
     /**
      * @return void
      */
-    protected function tearDown()
+    protected function tearDown(): void
     {
         $config = Configuration::getInstance();
         /** @var \SimpleSAML\Store $store */
diff --git a/tests/lib/SimpleSAML/Utils/AttributesTest.php b/tests/lib/SimpleSAML/Utils/AttributesTest.php
index 42ae15c35789ab3c12a12e7e15b881b86c5e9c22..c8221982974a3ad39400e81296009218f52e2d70 100644
--- a/tests/lib/SimpleSAML/Utils/AttributesTest.php
+++ b/tests/lib/SimpleSAML/Utils/AttributesTest.php
@@ -15,44 +15,6 @@ use SimpleSAML\Utils\Attributes;
  */
 class AttributesTest extends TestCase
 {
-    /**
-     * Test the getExpectedAttribute() method with invalid attributes array.
-     * @return void
-     * @psalm-suppress InvalidArgument
-     * @deprecated Can be removed as soon as the codebase is fully typehinted
-     */
-    public function testGetExpectedAttributeInvalidAttributesArray()
-    {
-        // check with empty array as input
-        $attributes = 'string';
-        $expected = 'string';
-        $this->expectException(InvalidArgumentException::class);
-        $this->expectExceptionMessage(
-            'The attributes array is not an array, it is: ' . print_r($attributes, true) . '.'
-        );
-        Attributes::getExpectedAttribute($attributes, $expected);
-    }
-
-
-    /**
-     * Test the getExpectedAttributeMethod() method with invalid expected attribute parameter.
-     * @deprecated Remove this test as soon as the codebase is fully typehinted
-     * @psalm-suppress PossiblyFalseArgument
-     * @return void
-     */
-    public function testGetExpectedAttributeInvalidAttributeName()
-    {
-        // check with invalid attribute name
-        $attributes = [];
-        $expected = false;
-        $this->expectException(InvalidArgumentException::class);
-        $this->expectExceptionMessage(
-            'The expected attribute is not a string, it is: ' . print_r($expected, true) . '.'
-        );
-        Attributes::getExpectedAttribute($attributes, $expected);
-    }
-
-
     /**
      * Test the getExpectedAttributeMethod() method with a non-normalized attributes array.
      * @return void
@@ -152,19 +114,6 @@ class AttributesTest extends TestCase
     }
 
 
-    /**
-     * Test the normalizeAttributesArray() function with input not being an array
-     * @return void
-     * @psalm-suppress InvalidArgument
-     * @deprecated Can be removed as soon as the codebase is fully typehinted
-     */
-    public function testNormalizeAttributesArrayBadInput()
-    {
-        $this->expectException(InvalidArgumentException::class);
-        Attributes::normalizeAttributesArray('string');
-    }
-
-
     /**
      * Test the normalizeAttributesArray() function with an array with non-string attribute names.
      * @return void
diff --git a/tests/lib/SimpleSAML/Utils/CryptoTest.php b/tests/lib/SimpleSAML/Utils/CryptoTest.php
index f0d28123b5606caa2cb588834c21cfd29ba869ee..122728ce77bb466b822146f7593b5595d9b5c356 100644
--- a/tests/lib/SimpleSAML/Utils/CryptoTest.php
+++ b/tests/lib/SimpleSAML/Utils/CryptoTest.php
@@ -31,7 +31,7 @@ class CryptoTest extends TestCase
     /**
      * @return void
      */
-    public function setUp()
+    public function setUp(): void
     {
         $this->root = vfsStream::setup(
             self::ROOTDIRNAME,
@@ -144,67 +144,6 @@ PHP;
     }
 
 
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::pwHash
-     * @deprecated To be removed for 2.0
-     * @return void
-     */
-    public function testGoodPwHash()
-    {
-        $pw = "password";
-        $algorithm = "SHA1";
-
-        $res = Crypto::pwHash($pw, $algorithm);
-
-        /*
-         * echo -n "password" | sha1sum | awk -F " " '{print $1}' | xxd -r -p | base64
-         * W6ph5Mm5Pz8GgiULbPgzG37mj9g=
-         */
-        $expected = "{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=";
-
-        $this->assertEquals($expected, $res);
-    }
-
-
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::pwHash
-     * @deprecated To be removed for 2.0
-     * @return void
-     */
-    public function testGoodSaltedPwHash()
-    {
-        $pw = "password";
-        $algorithm = "SSHA1";
-        $salt = "salt";
-
-        $res = Crypto::pwHash($pw, $algorithm, $salt);
-
-        /*
-         * echo -n "password""salt" | sha1sum | awk -v salt=$(echo -n "salt" | xxd -u -p)
-         *   -F " " '{print $1 salt}' | xxd -r -p | base64 yI6cZwQadOA1e+/f+T+H3eCQQhRzYWx0
-         */
-        $expected = "{SSHA}yI6cZwQadOA1e+/f+T+H3eCQQhRzYWx0";
-
-        $this->assertEquals($expected, $res);
-    }
-
-
-    /**
-     * @deprecated To be removed for 2.0
-     *
-     * @covers \SimpleSAML\Utils\Crypto::pwHash
-     * @return void
-     */
-    public function testBadHashAlgorithm()
-    {
-        $this->expectException(\SimpleSAML\Error\Exception::class);
-        $pw = "password";
-        $algorithm = "wtf";
-
-        Crypto::pwHash($pw, $algorithm);
-    }
-
-
     /**
      * @covers \SimpleSAML\Utils\Crypto::pwValid
      * @return void
@@ -236,57 +175,6 @@ PHP;
     }
 
 
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::pwValid
-     * @deprecated To be removed for 2.0
-     * @return void
-     */
-    public function testGoodPwValidOld()
-    {
-        $pw = "password";
-        $algorithm = "SHA1";
-
-        $hash = Crypto::pwHash($pw, $algorithm);
-        $res = Crypto::pwValid($hash, $pw);
-
-        $this->assertTrue($res);
-    }
-
-
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::pwValid
-     * @deprecated To be removed for 2.0
-     * @return void
-     */
-    public function testGoodSaltedPwValid()
-    {
-        $pw = "password";
-        $algorithm = "SSHA1";
-        $salt = "salt";
-
-        $hash = Crypto::pwHash($pw, $algorithm, $salt);
-        $res = Crypto::pwValid($hash, $pw);
-
-        $this->assertTrue($res);
-    }
-
-
-    /**
-     * @deprecated To be removed for 2.0
-     *
-     * @covers \SimpleSAML\Utils\Crypto::pwValid
-     * @return void
-     */
-    public function testBadHashAlgorithmValid()
-    {
-        $this->expectException(\SimpleSAML\Error\Exception::class);
-        $algorithm = "wtf";
-        $hash = "{" . $algorithm . "}B64STRING";
-
-        Crypto::pwValid($hash, $algorithm);
-    }
-
-
     /**
      * @covers \SimpleSAML\Utils\Crypto::secureCompare
      * @return void
@@ -457,79 +345,6 @@ PHP;
     }
 
 
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::loadPublicKey
-     * @return void
-     */
-    public function testLoadPublicKeyFingerprintBasicString()
-    {
-        $fingerprint = 'fingerprint';
-        $config = new Configuration(['certFingerprint' => $fingerprint], 'test');
-
-        $res = Crypto::loadPublicKey($config);
-        $expected = ['certFingerprint' => [$fingerprint]];
-
-        $this->assertEquals($expected, $res);
-    }
-
-
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::loadPublicKey
-     * @return void
-     */
-    public function testLoadPublicKeyFingerprintBasicArray()
-    {
-        $fingerprint1 = 'fingerprint1';
-        $fingerprint2 = 'fingerprint2';
-        $config = new Configuration(
-            [
-                'certFingerprint' => [
-                    $fingerprint1,
-                    $fingerprint2
-                ],
-            ],
-            'test'
-        );
-
-        $res = Crypto::loadPublicKey($config);
-        $expected = ['certFingerprint' => [$fingerprint1, $fingerprint2]];
-
-        $this->assertEquals($expected, $res);
-    }
-
-
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::loadPublicKey
-     * @return void
-     */
-    public function testLoadPublicKeyFingerprintLowercase()
-    {
-        $fingerprint = 'FINGERPRINT';
-        $config = new Configuration(['certFingerprint' => $fingerprint], 'test');
-
-        $res = Crypto::loadPublicKey($config);
-        $expected = ['certFingerprint' => [strtolower($fingerprint)]];
-
-        $this->assertEquals($expected, $res);
-    }
-
-
-    /**
-     * @covers \SimpleSAML\Utils\Crypto::loadPublicKey
-     * @return void
-     */
-    public function testLoadPublicKeyFingerprintRemoveColons()
-    {
-        $fingerprint = 'f:i:n:g:e:r:p:r:i:n:t';
-        $config = new Configuration(['certFingerprint' => $fingerprint], 'test');
-
-        $res = Crypto::loadPublicKey($config);
-        $expected = ['certFingerprint' => [str_replace(':', '', $fingerprint)]];
-
-        $this->assertEquals($expected, $res);
-    }
-
-
     /**
      * @covers \SimpleSAML\Utils\Crypto::loadPublicKey
      * @return void
diff --git a/tests/lib/SimpleSAML/Utils/EMailTest.php b/tests/lib/SimpleSAML/Utils/EMailTest.php
index a7762655a7ab828a831401785c789074133b17d1..8dc6598b242bf1258487afac64a56d1353cbb42e 100644
--- a/tests/lib/SimpleSAML/Utils/EMailTest.php
+++ b/tests/lib/SimpleSAML/Utils/EMailTest.php
@@ -16,7 +16,7 @@ class EMailTest extends ClearStateTestCase
     /**
      * @return void
      */
-    public function setUp()
+    public function setUp(): void
     {
         parent::setUp();
 
diff --git a/tests/lib/SimpleSAML/Utils/HTTPTest.php b/tests/lib/SimpleSAML/Utils/HTTPTest.php
index 977fde1caf867ffa247a70f86da54801e14ac75d..4ee68e5f9f67b04d3a893583e9705ca96415ea63 100644
--- a/tests/lib/SimpleSAML/Utils/HTTPTest.php
+++ b/tests/lib/SimpleSAML/Utils/HTTPTest.php
@@ -37,32 +37,6 @@ class HTTPTest extends ClearStateTestCase
     }
 
 
-    /**
-     * Test SimpleSAML\Utils\HTTP::addURLParameters().
-     * @return void
-     * @psalm-suppress InvalidArgument
-     * @deprecated Can be removed in 2.0 when codebase if fully typehinted
-     */
-    public function testAddURLParametersInvalidURL()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        HTTP::addURLParameters([], []);
-    }
-
-
-    /**
-     * Test SimpleSAML\Utils\HTTP::addURLParameters().
-     * @return void
-     * @psalm-suppress InvalidArgument
-     * @deprecated Can be removed in 2.0 when codebase if fully typehinted
-     */
-    public function testAddURLParametersInvalidParameters()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        HTTP::addURLParameters('string', 'string');
-    }
-
-
     /**
      * Test SimpleSAML\Utils\HTTP::addURLParameters().
      * @return void
@@ -499,14 +473,14 @@ class HTTPTest extends ClearStateTestCase
         );
 
         $headers = xdebug_get_headers();
-        $this->assertContains('TestCookie=value%2520;', $headers[0]);
+        $this->assertStringContainsString('TestCookie=value%2520;', $headers[0]);
         $this->assertRegExp('/\b[Ee]xpires=[Tt]ue/', $headers[0]);
         $this->assertRegExp('/\b[Pp]ath=\/ourPath(;|$)/', $headers[0]);
         $this->assertRegExp('/\b[Dd]omain=example.com(;|$)/', $headers[0]);
         $this->assertRegExp('/\b[Ss]ecure(;|$)/', $headers[0]);
         $this->assertRegExp('/\b[Hh]ttp[Oo]nly(;|$)/', $headers[0]);
 
-        $this->assertContains('RawCookie=value%20;', $headers[1]);
+        $this->assertStringContainsString('RawCookie=value%20;', $headers[1]);
         $this->assertRegExp('/\b[Ee]xpires=([Mm]on|[Tt]ue|[Ww]ed|[Tt]hu|[Ff]ri|[Ss]at|[Ss]un)/', $headers[1]);
         $this->assertRegExp('/\b[Pp]ath=\/ourPath(;|$)/', $headers[1]);
         $this->assertRegExp('/\b[Dd]omain=example.com(;|$)/', $headers[1]);
diff --git a/tests/lib/SimpleSAML/Utils/SystemTest.php b/tests/lib/SimpleSAML/Utils/SystemTest.php
index de126d6b9106299c30c71590e90f32eb77dbf635..5e60aa29294400d7ac9ee61f3a24289e8eb3e678 100644
--- a/tests/lib/SimpleSAML/Utils/SystemTest.php
+++ b/tests/lib/SimpleSAML/Utils/SystemTest.php
@@ -30,7 +30,7 @@ class SystemTest extends TestCase
     /**
      * @return void
      */
-    public function setUp()
+    public function setUp(): void
     {
         $this->root = vfsStream::setup(
             self::ROOTDIRNAME,
@@ -52,7 +52,7 @@ class SystemTest extends TestCase
     {
         $res = System::getOS();
 
-        $this->assertInternalType("int", $res);
+        $this->assertIsInt($res);
     }
 
 
@@ -158,21 +158,6 @@ class SystemTest extends TestCase
     }
 
 
-    /**
-     * @covers \SimpleSAML\Utils\System::writeFile
-     * @test
-     * @deprecated Test becomes obsolete as soon as the codebase is fully type hinted
-     * @return void
-     */
-    public function testWriteFileInvalidArguments()
-    {
-        $this->expectException(InvalidArgumentException::class);
-
-        /** @psalm-suppress NullArgument */
-        System::writeFile(null, null, null);
-    }
-
-
     /**
      * @covers \SimpleSAML\Utils\System::writeFile
      * @test
diff --git a/tests/lib/SimpleSAML/Utils/TimeTest.php b/tests/lib/SimpleSAML/Utils/TimeTest.php
index 03f4e72a5793cb1d949b4ae3a1e1dd09d615b9d9..13817d424d84c5f23c13b882de53e48e9685c897 100644
--- a/tests/lib/SimpleSAML/Utils/TimeTest.php
+++ b/tests/lib/SimpleSAML/Utils/TimeTest.php
@@ -138,30 +138,6 @@ class TimeTest extends TestCase
             "Failure testing for 1 minute over current time."
         );
 
-        // test invalid input parameters
-        try {
-            // invalid duration
-            /**
-             * @deprecated This test becomes useless as soon as the codebase is fully typehinted
-             * @psalm-suppress InvalidScalarArgument
-             */
-            Time::parseDuration(0);
-            $this->fail("Did not fail with invalid duration parameter.");
-        } catch (\InvalidArgumentException $e) {
-            $this->assertEquals('Invalid input parameters', $e->getMessage());
-        }
-        try {
-            // invalid timestamp
-            /**
-             * @deprecated This test becomes useless as soon as the codebase is fully typehinted
-             * @psalm-suppress InvalidArgument
-             */
-            Time::parseDuration('', []);
-            $this->fail("Did not fail with invalid timestamp parameter.");
-        } catch (\InvalidArgumentException $e) {
-            $this->assertEquals('Invalid input parameters', $e->getMessage());
-        }
-
         // test invalid durations
         try {
             // invalid string
diff --git a/tests/lib/SimpleSAML/Utils/XMLTest.php b/tests/lib/SimpleSAML/Utils/XMLTest.php
index 7eb3a7919c13b895ca62da9dfda4ce4d8e88a3e6..7a552424faefd7b0af19124d58380fbdbc3f0b85 100644
--- a/tests/lib/SimpleSAML/Utils/XMLTest.php
+++ b/tests/lib/SimpleSAML/Utils/XMLTest.php
@@ -388,7 +388,7 @@ NOWDOC;
         $res = XML::isValid($xml, 'unused');
         $expected = 'Failed to parse XML string for schema validation';
 
-        $this->assertContains($expected, $res);
+        $this->assertStringContainsString($expected, $res);
     }
 
 
diff --git a/tests/lib/SimpleSAML/XML/ParserTest.php b/tests/lib/SimpleSAML/XML/ParserTest.php
index ae5a978aef52dd170ac2600852fa395b284afe72..aa709273f1bc8e9737f6468d087b81f260d6a105 100644
--- a/tests/lib/SimpleSAML/XML/ParserTest.php
+++ b/tests/lib/SimpleSAML/XML/ParserTest.php
@@ -31,7 +31,7 @@ XML;
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         $this->xml = new Parser(static::XMLDOC);
     }
diff --git a/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php b/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php
deleted file mode 100644
index a387c9e93e25f7b7199287c6d8c551e0b7883cea..0000000000000000000000000000000000000000
--- a/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * This file is part of the sgomezsimpleshibphp.
- *
- * (c) Sergio Gómez <sergio@uco.es>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- * @deprecated This class will be removed in a future release
- */
-
-
-namespace SimpleSAML\Test\XML\Shib13;
-
-use PHPUnit\Framework\TestCase;
-use SimpleSAML\XML\Shib13\AuthnResponse;
-
-class AuthnResponseTest extends TestCase
-{
-    const XMLDOC = <<< XML
-<Response xmlns="urn:oasis:names:tc:SAML:1.0:protocol"
-    MajorVersion="1" MinorVersion="1"
-    ResponseID="" IssueInstant="">
-    <Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion"
-        AssertionID="" IssueInstant=""
-        MajorVersion="1" MinorVersion="1"
-        Issuer="Issuer"
-    >
-        <AuthenticationStatement AuthenticationInstant="" AuthenticationMethod="">
-            <Subject>
-                <NameIdentifier Format="urn:mace:shibboleth:1.0:nameIdentifier">NameIdentifier</NameIdentifier>
-            </Subject>
-        </AuthenticationStatement>
-    </Assertion>
-</Response>
-XML;
-
-    const BADXMLDOC = <<< XML
-<Response xmlns="urn:oasis:names:tc:SAML:1.0:protocol"
-    MajorVersion="1" MinorVersion="1"
-    ResponseID="" IssueInstant="">
-    <Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion"
-        AssertionID="" IssueInstant=""
-        MajorVersion="1" MinorVersion="1"
-    >
-        <AuthenticationStatement AuthenticationInstant="" AuthenticationMethod="">
-            <Subject>
-                <NameIdentifier Format="urn:mace:shibboleth:1.0:nameIdentifier">NameIdentifier</NameIdentifier>
-            </Subject>
-        </AuthenticationStatement>
-    </Assertion>
-</Response>
-XML;
-
-    /** @var AuthnResponse */
-    private $xml;
-
-
-    /**
-     * @return void
-     */
-    protected function setUp()
-    {
-        $this->xml = new AuthnResponse();
-        $this->xml->setXML(static::XMLDOC);
-    }
-
-
-    /**
-     * @covers \SimpleSAML\XML\Shib13\AuthnResponse::doXPathQuery
-     * @covers \SimpleSAML\XML\Shib13\AuthnResponse::getIssuer
-     * @covers \SimpleSAML\XML\Shib13\AuthnResponse::setXML
-     * @test
-     * @return void
-     */
-    public function getIssuer()
-    {
-        $result = $this->xml->getIssuer();
-
-        $this->assertEquals(
-            'Issuer',
-            $result
-        );
-    }
-
-
-    /**
-     * @covers \SimpleSAML\XML\Shib13\AuthnResponse::getIssuer
-     * @covers \SimpleSAML\XML\Shib13\AuthnResponse::setXML
-     * @test
-     * @return void
-     */
-    public function getIssuerException()
-    {
-        $this->expectException(\Exception::class);
-        $xml = new AuthnResponse();
-        $xml->setXML(static::BADXMLDOC);
-
-        $xml->getIssuer();
-    }
-
-
-    /**
-     * @covers \SimpleSAML\XML\Shib13\AuthnResponse::getNameID
-     * @covers \SimpleSAML\XML\Shib13\AuthnResponse::setXML
-     * @test
-     * @return void
-     */
-    public function getNameID()
-    {
-        $result = $this->xml->getNameID();
-
-        $this->assertEquals(
-            [
-                'Value' => 'NameIdentifier',
-                'Format' => 'urn:mace:shibboleth:1.0:nameIdentifier',
-            ],
-            $result
-        );
-    }
-}
diff --git a/tests/lib/SimpleSAML/XML/SignerTest.php b/tests/lib/SimpleSAML/XML/SignerTest.php
index a2d157659a8f7ced60645b1f3961308cbcb8d787..b3383701405aa9ddf9f02d57f517188c9a319412 100644
--- a/tests/lib/SimpleSAML/XML/SignerTest.php
+++ b/tests/lib/SimpleSAML/XML/SignerTest.php
@@ -75,7 +75,7 @@ NOWDOC;
     {
         $res = new Signer([]);
 
-        $this->assertNotNull($res);
+        $this->addToAssertionCount(1);
     }
 
 
@@ -99,8 +99,8 @@ NOWDOC;
 
         $res = $doc->saveXML();
 
-        $this->assertContains('DigestValue', $res);
-        $this->assertContains('SignatureValue', $res);
+        $this->assertStringContainsString('DigestValue', $res);
+        $this->assertStringContainsString('SignatureValue', $res);
     }
 
 
@@ -143,8 +143,8 @@ NOWDOC;
 
         $expected = self::getCertificateValue($this->good_certificate);
 
-        $this->assertContains('X509Certificate', $res);
-        $this->assertContains($expected, $res);
+        $this->assertStringContainsString('X509Certificate', $res);
+        $this->assertStringContainsString($expected, $res);
     }
 
 
@@ -175,9 +175,9 @@ NOWDOC;
         $expected1 = self::getCertificateValue($this->good_certificate);
         $expected2 = self::getCertificateValue($this->other_certificate);
 
-        $this->assertContains('X509Certificate', $res);
-        $this->assertContains($expected1, $res);
-        $this->assertContains($expected2, $res);
+        $this->assertStringContainsString('X509Certificate', $res);
+        $this->assertStringContainsString($expected1, $res);
+        $this->assertStringContainsString($expected2, $res);
     }
 
 
diff --git a/tests/lib/SimpleSAML/XML/ValidatorTest.php b/tests/lib/SimpleSAML/XML/ValidatorTest.php
index 67a71d2374508349b219aba3024738cec38db742..c182cd88982e2632bf5329a48d76c2ee099fa725 100644
--- a/tests/lib/SimpleSAML/XML/ValidatorTest.php
+++ b/tests/lib/SimpleSAML/XML/ValidatorTest.php
@@ -59,113 +59,6 @@ class ValidatorTest extends SigningTestCase
     }
 
 
-    /**
-     * @return void
-     */
-    public function testCertFingerprintSuccess()
-    {
-        $doc = new DOMDocument();
-        $doc->loadXML('<?xml version="1.0"?><node>value</node>');
-
-        /** @psalm-var DOMElement $node */
-        $node = $doc->getElementsByTagName('node')->item(0);
-
-        $signature_parent = $doc->appendChild(new \DOMElement('signature_parent'));
-
-        $signer = new Signer([]);
-        $signer->loadPrivateKey($this->good_private_key_file, null, true);
-        $signer->loadCertificate($this->good_certificate_file, true);
-        $signer->sign($node, $signature_parent);
-
-        $fingerprint = openssl_x509_fingerprint($this->good_certificate);
-
-        $validator = new Validator(
-            $doc,
-            'node',
-            ['certFingerprint' => [$fingerprint]]
-        );
-
-        $this->assertInstanceOf(Validator::class, $validator);
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testCertFingerprintFailure()
-    {
-        $doc = new DOMDocument();
-        $doc->loadXML('<?xml version="1.0"?><node>value</node>');
-
-        /** @psalm-var DOMElement $node */
-        $node = $doc->getElementsByTagName('node')->item(0);
-
-        $signature_parent = $doc->appendChild(new \DOMElement('signature_parent'));
-
-        $signer = new Signer([]);
-        $signer->loadPrivateKey($this->good_private_key_file, null, true);
-        $signer->loadCertificate($this->good_certificate_file, true);
-        $signer->sign($node, $signature_parent);
-
-        $this->expectException(\Exception::class);
-        new Validator($doc, 'node', ['certFingerprint' => []]);
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateFingerprintSuccess()
-    {
-        $doc = new DOMDocument();
-        $doc->loadXML('<?xml version="1.0"?><node>value</node>');
-
-        /** @psalm-var DOMElement $node */
-        $node = $doc->getElementsByTagName('node')->item(0);
-
-        $signature_parent = $doc->appendChild(new \DOMElement('signature_parent'));
-
-        $signer = new Signer([]);
-        $signer->loadPrivateKey($this->good_private_key_file, null, true);
-        $signer->loadCertificate($this->good_certificate_file, true);
-        $signer->sign($node, $signature_parent);
-
-        $fingerprint = openssl_x509_fingerprint($this->good_certificate);
-
-        $validator = new Validator($doc, 'node');
-        $validator->validateFingerprint($fingerprint);
-
-        $this->assertInstanceOf(Validator::class, $validator);
-    }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateFingerprintFailure()
-    {
-        $doc = new DOMDocument();
-        $doc->loadXML('<?xml version="1.0"?><node>value</node>');
-
-        /** @psalm-var DOMElement $node */
-        $node = $doc->getElementsByTagName('node')->item(0);
-
-        $signature_parent = $doc->appendChild(new \DOMElement('signature_parent'));
-
-        $signer = new Signer([]);
-        $signer->loadPrivateKey($this->good_private_key_file, null, true);
-        $signer->loadCertificate($this->good_certificate_file, true);
-        $signer->sign($node, $signature_parent);
-
-        $fingerprint = 'BAD FINGERPRINT';
-
-        $validator = new Validator($doc, 'node');
-
-        $this->expectException(\Exception::class);
-        $validator->validateFingerprint($fingerprint);
-    }
-
-
     /**
      * @return void
      */
@@ -225,16 +118,4 @@ class ValidatorTest extends SigningTestCase
 
         $this->assertFalse($result);
     }
-
-
-    /**
-     * @return void
-     */
-    public function testValidateCertificateMissingCAFile()
-    {
-        $ca_file = $this->ca_certificate_file . 'NOT';
-
-        $this->expectException(\Exception::class);
-        Validator::validateCertificate($this->good_certificate, $ca_file);
-    }
 }
diff --git a/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php b/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php
index b79b7131a69a9f4e6f5f81d9e590815a474b0cde..5b43c57359cfb987e3a254da91d549a1a0196b69 100644
--- a/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php
+++ b/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php
@@ -140,7 +140,7 @@ class AttributeLimitTest extends TestCase
     /**
      * @return void
      */
-    public static function setUpBeforeClass()
+    public static function setUpBeforeClass(): void
     {
         self::$request = [
             'Attributes' => [
diff --git a/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php b/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php
index 62de2e872976cc7006d4031d09f32c31b08f2105..8c56658eb3863f2bbba1af337857ebf20c012d44 100644
--- a/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php
+++ b/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php
@@ -11,7 +11,7 @@ use SimpleSAML\Utils\HttpAdapter;
  */
 class CardinalitySingleTest extends \PHPUnit\Framework\TestCase
 {
-    /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit_Framework_MockObject_MockObject */
+    /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit\Framework\MockObject\MockObject */
     private $http;
 
 
@@ -39,7 +39,7 @@ class CardinalitySingleTest extends \PHPUnit\Framework\TestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml');
         $this->http = $this->getMockBuilder(HttpAdapter::class)
diff --git a/tests/modules/core/lib/Auth/Process/CardinalityTest.php b/tests/modules/core/lib/Auth/Process/CardinalityTest.php
index 03cb6aab3688b595c6358689dd59f3941c5fa936..7716ef151f784a62f7ac4f85b2f059618420d687 100644
--- a/tests/modules/core/lib/Auth/Process/CardinalityTest.php
+++ b/tests/modules/core/lib/Auth/Process/CardinalityTest.php
@@ -12,7 +12,7 @@ use SimpleSAML\Utils\HttpAdapter;
  */
 class CardinalityTest extends \PHPUnit\Framework\TestCase
 {
-    /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit_Framework_MockObject_MockObject */
+    /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit\Framework\MockObject\MockObject */
     private $http;
 
 
@@ -40,7 +40,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml');
         $this->http = $this->getMockBuilder(HttpAdapter::class)
@@ -191,7 +191,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase
     public function testMinInvalid()
     {
         $this->expectException(SspException::class);
-        $this->expectExceptionMessageRegExp('/Minimum/');
+        $this->expectExceptionMessageMatches('/Minimum/');
         $config = [
             'mail' => ['min' => false],
         ];
@@ -211,7 +211,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase
     public function testMinNegative()
     {
         $this->expectException(SspException::class);
-        $this->expectExceptionMessageRegExp('/Minimum/');
+        $this->expectExceptionMessageMatches('/Minimum/');
         $config = [
             'mail' => ['min' => -1],
         ];
@@ -231,7 +231,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase
     public function testMaxInvalid()
     {
         $this->expectException(SspException::class);
-        $this->expectExceptionMessageRegExp('/Maximum/');
+        $this->expectExceptionMessageMatches('/Maximum/');
         $config = [
             'mail' => ['max' => false],
         ];
@@ -251,7 +251,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase
     public function testMinGreaterThanMax()
     {
         $this->expectException(SspException::class);
-        $this->expectExceptionMessageRegExp('/less than/');
+        $this->expectExceptionMessageMatches('/less than/');
         $config = [
             'mail' => ['min' => 2, 'max' => 1],
         ];
@@ -271,7 +271,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase
     public function testInvalidAttributeName()
     {
         $this->expectException(SspException::class);
-        $this->expectExceptionMessageRegExp('/Invalid attribute/');
+        $this->expectExceptionMessageMatches('/Invalid attribute/');
         $config = [
             ['min' => 2, 'max' => 1],
         ];
diff --git a/tests/modules/core/lib/Auth/UserPassBaseTest.php b/tests/modules/core/lib/Auth/UserPassBaseTest.php
index 62755411ae3ffa84dee62cc4d697f858b662c5d9..79b1ce777262a169018a1ffb42f49bd1d56e68a4 100644
--- a/tests/modules/core/lib/Auth/UserPassBaseTest.php
+++ b/tests/modules/core/lib/Auth/UserPassBaseTest.php
@@ -29,10 +29,6 @@ class UserPassBaseTest extends \PHPUnit\Framework\TestCase
             ->setMethods(['login'])
             ->getMockForAbstractClass();
 
-        /**
-         * @psalm-suppress InvalidArgument   Remove when PHPunit 8 is in place
-         * @psalm-suppress UndefinedMethod
-         */
         $stub->expects($this->once())
             ->method('login')
             ->with($username, $password)
@@ -87,7 +83,6 @@ class UserPassBaseTest extends \PHPUnit\Framework\TestCase
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
 
-        /** @psalm-suppress UndefinedMethod   Remove when Psalm 3.x is in place */
         $stub->authenticate($state);
     }
 
@@ -113,10 +108,6 @@ class UserPassBaseTest extends \PHPUnit\Framework\TestCase
             ->setMethods(['login'])
             ->getMockForAbstractClass();
 
-        /**
-         * @psalm-suppress InvalidArgument   Remove when PHPunit 8 is in place
-         * @psalm-suppress UndefinedMethod
-         */
         $stub->expects($this->once())
             ->method('login')
             ->with($forcedUsername, $password)
diff --git a/tests/modules/core/lib/Controller/LoginTest.php b/tests/modules/core/lib/Controller/LoginTest.php
index 2b003b363286676be00168b900bb82591b829c4b..9cfafbc0bf40687b1467ed06dce50e8811d67fbb 100644
--- a/tests/modules/core/lib/Controller/LoginTest.php
+++ b/tests/modules/core/lib/Controller/LoginTest.php
@@ -40,7 +40,7 @@ class LoginTest extends ClearStateTestCase
      * Set up for each test.
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         parent::setUp();
         $this->authSources = [
diff --git a/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php b/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php
index 1f19058f8f21d9407bf2ee09848b601358968345..892c5b0397290a7eb4ecbc5406598a7a152ad154 100644
--- a/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php
+++ b/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php
@@ -18,7 +18,7 @@ class SQLPermanentStorageTest extends TestCase
     /**
      * @return void
      */
-    public static function setUpBeforeClass()
+    public static function setUpBeforeClass(): void
     {
         // Create instance
         $config = \SimpleSAML\Configuration::loadFromArray([
@@ -31,7 +31,7 @@ class SQLPermanentStorageTest extends TestCase
     /**
      * @return void
      */
-    public static function tearDownAfterClass()
+    public static function tearDownAfterClass(): void
     {
         self::$sql = null;
         unlink(sys_get_temp_dir() . '/sqllite/test.sqlite');
diff --git a/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php b/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php
index 635633037c1d86b6979d2cead36a2eb2ca37d0c1..bbed662671adfebe93863c3d2a82ebe4776b912d 100644
--- a/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php
+++ b/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php
@@ -20,7 +20,7 @@ class MultiAuthTest extends \SimpleSAML\Test\Utils\ClearStateTestCase
     /**
      * @return void
      */
-    public function setUp()
+    public function setUp(): void
     {
         $this->config = Configuration::loadFromArray(
             ['module.enable' => ['multiauth' => true]],
diff --git a/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php b/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php
index f9604be608b901843a991d6402ccbdd13e090caf..2e8838611c3087687f3ec99f7cd01aa6057f18de 100644
--- a/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php
+++ b/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php
@@ -49,7 +49,7 @@ class SPTest extends ClearStateTestCase
     /**
      * @return void
      */
-    protected function setUp()
+    protected function setUp(): void
     {
         parent::setUp();
         $this->idpConfigArray = [
@@ -124,11 +124,8 @@ class SPTest extends ClearStateTestCase
      */
     public function testAuthnRequest()
     {
-        /** @var \SAML2\AuthnRequest $ar */
         $ar = $this->createAuthnRequest();
 
-        // Assert values in the generated AuthnRequest
-        /** @var \DOMElement $xml */
         $xml = $ar->toSignedXML();
 
         /** @var \DOMAttr[] $q */
@@ -157,7 +154,6 @@ class SPTest extends ClearStateTestCase
             'saml:NameID' => ['Value' => 'user@example.org', 'Format' => \SAML2\Constants::NAMEID_UNSPECIFIED]
         ];
 
-        /** @var \SAML2\AuthnRequest $ar */
         $ar = $this->createAuthnRequest($state);
 
         /** @var \SAML2\XML\saml\NameID $nameID */
@@ -165,7 +161,6 @@ class SPTest extends ClearStateTestCase
         $this->assertEquals($state['saml:NameID']['Value'], $nameID->getValue());
         $this->assertEquals($state['saml:NameID']['Format'], $nameID->getFormat());
 
-        /** @var \DOMElement $xml */
         $xml = $ar->toSignedXML();
 
         /** @var \DOMAttr[] $q */
@@ -194,7 +189,6 @@ class SPTest extends ClearStateTestCase
             'saml:AuthnContextClassRef' => 'http://example.com/myAuthnContextClassRef'
         ];
 
-        /** @var \SAML2\AuthnRequest $ar */
         $ar = $this->createAuthnRequest($state);
 
         /** @var array $a */
@@ -204,7 +198,6 @@ class SPTest extends ClearStateTestCase
             $a['AuthnContextClassRef'][0]
         );
 
-        /** @var \DOMElement $xml */
         $xml = $ar->toSignedXML();
 
         $q = \SAML2\Utils::xpQuery($xml, '/samlp:AuthnRequest/samlp:RequestedAuthnContext/saml:AuthnContextClassRef');
@@ -227,7 +220,6 @@ class SPTest extends ClearStateTestCase
             'ForceAuthn' => true
         ];
 
-        /** @var \SAML2\AuthnRequest $ar */
         $ar = $this->createAuthnRequest($state);
 
         $this->assertEquals(
@@ -235,7 +227,6 @@ class SPTest extends ClearStateTestCase
             $ar->getForceAuthn()
         );
 
-        /** @var \DOMElement $xml */
         $xml = $ar->toSignedXML();
 
         /** @var \DOMAttr[] $q */
diff --git a/tests/modules/saml/lib/IdP/SAML2Test.php b/tests/modules/saml/lib/IdP/SAML2Test.php
index b2bcd5ab558feb2d3104c3be657450d841ebc929..664373b9c94b6eb2ca5a892210713b8ec9bffb85 100644
--- a/tests/modules/saml/lib/IdP/SAML2Test.php
+++ b/tests/modules/saml/lib/IdP/SAML2Test.php
@@ -162,7 +162,6 @@ class SAML2Test extends ClearStateTestCase
      */
     private function idpInitiatedHelper(array $queryParams): array
     {
-        /** @var \PHPUnit_Framework_MockObject_MockObject $idpStub */
         $idpStub = $this->getMockBuilder(IdP::class)
             ->disableOriginalConstructor()
             ->getMock();
@@ -171,7 +170,6 @@ class SAML2Test extends ClearStateTestCase
             'saml20.ecp' => true, //enable additional bindings so we can test selection logic
         ]);
 
-        /** @psalm-suppress UndefinedMethod   Remove when Psalm 3.x is in place */
         $idpStub->method("getConfig")
             ->willReturn($idpMetadata);
 
@@ -202,7 +200,6 @@ EOT;
 
         $state = [];
 
-        /** @psalm-suppress InvalidArgument   Remove when PHPunit 8 is in place */
         $idpStub->expects($this->once())
             ->method('handleAuthenticationRequest')
             ->with($this->callback(
diff --git a/tests/www/IndexTest.php b/tests/www/IndexTest.php
index 3fe984c2080f8b65a3296bcb83bc3a53bd9e88d5..09b92554cbcd5f689c5449cc058c19eddcc49104 100644
--- a/tests/www/IndexTest.php
+++ b/tests/www/IndexTest.php
@@ -42,7 +42,7 @@ class IndexTest extends TestCase
      * The setup method that is run before any tests in this class.
      * @return void
      */
-    protected function setup()
+    protected function setup(): void
     {
         $this->server = new BuiltInServer('configLoader');
         $this->server_addr = $this->server->start();
@@ -116,7 +116,7 @@ class IndexTest extends TestCase
      * The tear down method that is executed after all tests in this class.
      * @return void
      */
-    protected function tearDown()
+    protected function tearDown(): void
     {
         unlink($this->shared_file);
         $this->server->stop();
diff --git a/tests/www/RouterTest.php b/tests/www/RouterTest.php
index 0d60eed6db5b50a9c84cec101d6fa033cf71c817..50f8a4dad18ea5b9012dde7e47348f2e6b54d556 100644
--- a/tests/www/RouterTest.php
+++ b/tests/www/RouterTest.php
@@ -32,7 +32,7 @@ class RouterTest extends TestCase
                 foreach ($files as $file) {
                     if (preg_match('/.(yml|yaml)$/', $file)) {
                         try {
-                            $value = $yaml->parse(file_get_contents('modules/' . $module . '/' . $file));
+                            $yaml->parse(file_get_contents('modules/' . $module . '/' . $file));
                             $this->addToAssertionCount(1);
                         } catch (ParseException $e) {
                             $this->fail($e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine());
diff --git a/www/admin/metadata-converter.php b/www/admin/metadata-converter.php
index 83837409de1e921376f45cc036fa3a9d68adab9c..f9d0ffd914ceb28971ab5560440f8090064bd872 100644
--- a/www/admin/metadata-converter.php
+++ b/www/admin/metadata-converter.php
@@ -20,8 +20,6 @@ if (!empty($xmldata)) {
     // get all metadata for the entities
     foreach ($entities as &$entity) {
         $entity = [
-            'shib13-sp-remote'  => $entity->getMetadata1xSP(),
-            'shib13-idp-remote' => $entity->getMetadata1xIdP(),
             'saml20-sp-remote'  => $entity->getMetadata20SP(),
             'saml20-idp-remote' => $entity->getMetadata20IdP(),
         ];
diff --git a/www/errorreport.php b/www/errorreport.php
index 1c80713058474b613f35fa9a80b877493c7570b8..acfc317effe1f8e1d4aa95e786e4803767318b1b 100644
--- a/www/errorreport.php
+++ b/www/errorreport.php
@@ -9,7 +9,7 @@ if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
     // the message has been sent. Show error report page
 
     $t = new \SimpleSAML\XHTML\Template($config, 'errorreport.php', 'errors');
-    $t->show();
+    $t->send();
     exit;
 }
 
diff --git a/www/logout.php b/www/logout.php
index 97c7d2b41b2c768512fc4703fb4837e70eb50969..78f0e33a13aaf820f28db42c484deef3c4580ea5 100644
--- a/www/logout.php
+++ b/www/logout.php
@@ -19,5 +19,5 @@ if (array_key_exists('link_text', $_REQUEST)) {
 $t = new \SimpleSAML\XHTML\Template($config, 'logout.php');
 $t->data['link'] = $link;
 $t->data['text'] = $text;
-$t->show();
+$t->send();
 exit();
diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php
index 4ba2fa1d82b92e9ab30b0e5556955c4bd668b142..1c7983a6371bbf6f56d8e598e81309b79d6aa6c6 100644
--- a/www/saml2/idp/metadata.php
+++ b/www/saml2/idp/metadata.php
@@ -236,7 +236,7 @@ try {
         $t->data['metaurl'] = HTTP::getSelfURLNoQuery();
         $t->data['metadata'] = htmlspecialchars($metaxml);
         $t->data['metadataflat'] = htmlspecialchars($metaflat);
-        $t->show();
+        $t->send();
     } else {
         header('Content-Type: application/xml');
 
diff --git a/www/shib13/idp/SSOService.php b/www/shib13/idp/SSOService.php
deleted file mode 100644
index d99365867b8322486f15e7ac192c50ee8f548473..0000000000000000000000000000000000000000
--- a/www/shib13/idp/SSOService.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/**
- * The SSOService is part of the Shibboleth 1.3 IdP code, and it receives incoming Authentication Requests
- * from a Shibboleth 1.3 SP, parses, and process it, and then authenticates the user and sends the user back
- * to the SP with an Authentication Response.
- *
- * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
- * @package SimpleSAMLphp
- */
-
-require_once '../../_include.php';
-
-use Webmozart\Assert\Assert;
-
-\SimpleSAML\Logger::info('Shib1.3 - IdP.SSOService: Accessing Shibboleth 1.3 IdP endpoint SSOService');
-
-$metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler();
-$idpEntityId = $metadata->getMetaDataCurrentEntityID('shib13-idp-hosted');
-$idp = \SimpleSAML\IdP::getById('saml1:'.$idpEntityId);
-\SimpleSAML\Module\saml\IdP\SAML1::receiveAuthnRequest($idp);
-
-Assert::true(false);
diff --git a/www/shib13/idp/metadata.php b/www/shib13/idp/metadata.php
deleted file mode 100644
index d8063b444750ae43935e6137913b28efa353cdbf..0000000000000000000000000000000000000000
--- a/www/shib13/idp/metadata.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-require_once('../../_include.php');
-
-// load configuration and metadata
-$config = \SimpleSAML\Configuration::getInstance();
-$metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler();
-
-if (!$config->getBoolean('enable.shib13-idp', false)) {
-    throw new \SimpleSAML\Error\Error('NOACCESS');
-}
-
-// check if valid local session exists
-if ($config->getBoolean('admin.protectmetadata', false)) {
-    \SimpleSAML\Utils\Auth::requireAdmin();
-}
-
-try {
-    $idpentityid = isset($_GET['idpentityid']) ?
-        $_GET['idpentityid'] : $metadata->getMetaDataCurrentEntityID('shib13-idp-hosted');
-    $idpmeta = $metadata->getMetaDataConfig($idpentityid, 'shib13-idp-hosted');
-
-    $keys = [];
-    $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, false, 'new_');
-    if ($certInfo !== null) {
-        $keys[] = [
-            'type'            => 'X509Certificate',
-            'signing'         => true,
-            'encryption'      => false,
-            'X509Certificate' => $certInfo['certData'],
-        ];
-    }
-
-    $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, true);
-    $keys[] = [
-        'type'            => 'X509Certificate',
-        'signing'         => true,
-        'encryption'      => false,
-        'X509Certificate' => $certInfo['certData'],
-    ];
-
-    $metaArray = [
-        'metadata-set'        => 'shib13-idp-remote',
-        'entityid'            => $idpentityid,
-        'SingleSignOnService' => $metadata->getGenerated('SingleSignOnService', 'shib13-idp-hosted'),
-    ];
-
-    if (count($keys) === 1) {
-        $metaArray['certData'] = $keys[0]['X509Certificate'];
-    } else {
-        $metaArray['keys'] = $keys;
-    }
-
-    $metaArray['NameIDFormat'] = $idpmeta->getArrayizeString('NameIDFormat', 'urn:mace:shibboleth:1.0:nameIdentifier');
-
-    if ($idpmeta->hasValue('OrganizationName')) {
-        $metaArray['OrganizationName'] = $idpmeta->getLocalizedString('OrganizationName');
-        $metaArray['OrganizationDisplayName'] = $idpmeta->getLocalizedString(
-            'OrganizationDisplayName',
-            $metaArray['OrganizationName']
-        );
-
-        if (!$idpmeta->hasValue('OrganizationURL')) {
-            throw new \SimpleSAML\Error\Exception('If OrganizationName is set, OrganizationURL must also be set.');
-        }
-        $metaArray['OrganizationURL'] = $idpmeta->getLocalizedString('OrganizationURL');
-    }
-
-    $metaflat = '$metadata['.var_export($idpentityid, true).'] = '.var_export($metaArray, true).';';
-
-    $metaBuilder = new \SimpleSAML\Metadata\SAMLBuilder($idpentityid);
-    $metaBuilder->addMetadataIdP11($metaArray);
-    $metaBuilder->addOrganizationInfo($metaArray);
-    $metaBuilder->addContact('technical', \SimpleSAML\Utils\Config\Metadata::getContact([
-        'emailAddress' => $config->getString('technicalcontact_email', null),
-        'name'         => $config->getString('technicalcontact_name', null),
-        'contactType'  => 'technical',
-    ]));
-    $metaxml = $metaBuilder->getEntityDescriptorText();
-
-    // sign the metadata if enabled
-    $metaxml = \SimpleSAML\Metadata\Signer::sign($metaxml, $idpmeta->toArray(), 'Shib 1.3 IdP');
-
-    if (array_key_exists('output', $_GET) && $_GET['output'] == 'xhtml') {
-        $defaultidp = $config->getString('default-shib13-idp', null);
-
-        $t = new \SimpleSAML\XHTML\Template($config, 'metadata.tpl.php', 'admin');
-
-        $t->data['clipboard.js'] = true;
-        $t->data['header'] = 'shib13-idp'; // TODO: Replace with headerString in 2.0
-        $t->data['headerString'] = \SimpleSAML\Locale\Translate::noop('metadata_shib13-idp');
-        $t->data['metaurl'] = \SimpleSAML\Utils\HTTP::addURLParameters(
-            \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(),
-            ['output' => 'xml']
-        );
-        $t->data['metadata'] = htmlspecialchars($metaxml);
-        $t->data['metadataflat'] = htmlspecialchars($metaflat);
-
-        $t->data['defaultidp'] = $defaultidp;
-
-        $t->show();
-    } else {
-        header('Content-Type: application/xml');
-        echo $metaxml;
-        exit(0);
-    }
-} catch (\Exception $exception) {
-    throw new \SimpleSAML\Error\Error('METADATA', $exception);
-}