From 2c8aa8a6575b67fdeb936fb66aa3e65b44e3b977 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tim.dijen@minbzk.nl>
Date: Sat, 15 Feb 2020 15:06:13 +0100
Subject: [PATCH] Remove 2.0 deprecations (#1281)

* Remove deprecated classes

* Remove support for certificate fingerprints

* Remove many deprecated methods and pieces of code

* Remove SAML1.1/Shib1.3 support

* Remove many superfluous annotations

* Update unit test to work with new PHPunit

Closes #1268
Closes #1020
Closes #431
Closes #167
Closes #151
---
 .appveyor.yml                                 |    1 +
 .gitignore                                    |    1 +
 .travis.yml                                   |    9 +-
 composer.json                                 |   28 +-
 composer.lock                                 | 2176 +++++++++--------
 config-templates/config.php                   |   13 -
 docs/simplesamlphp-authproc.md                |    6 +-
 docs/simplesamlphp-errorhandling.md           |    2 +-
 docs/simplesamlphp-googleapps.md              |    1 -
 docs/simplesamlphp-idp-more.md                |   25 -
 docs/simplesamlphp-reference-idp-hosted.md    |   27 +-
 docs/simplesamlphp-reference-idp-remote.md    |    2 +-
 docs/simplesamlphp-reference-sp-remote.md     |   53 +-
 docs/simplesamlphp-sp.md                      |    2 +-
 extra/simplesamlphp.spec                      |    4 -
 lib/SimpleSAML/Auth/DefaultAuth.php           |  168 --
 lib/SimpleSAML/Auth/LDAP.php                  |   16 -
 lib/SimpleSAML/Auth/ProcessingChain.php       |   61 -
 lib/SimpleSAML/Auth/ProcessingFilter.php      |    1 +
 lib/SimpleSAML/Auth/TimeLimitedToken.php      |  155 --
 lib/SimpleSAML/Bindings/Shib13/Artifact.php   |  192 --
 lib/SimpleSAML/Bindings/Shib13/HTTPPost.php   |  157 --
 lib/SimpleSAML/Configuration.php              |  143 --
 lib/SimpleSAML/Error/Error.php                |    2 +-
 lib/SimpleSAML/Error/NoPassive.php            |   18 -
 lib/SimpleSAML/Error/ProxyCountExceeded.php   |   18 -
 lib/SimpleSAML/IdP.php                        |   11 +-
 lib/SimpleSAML/IdP/IFrameLogoutHandler.php    |    2 +-
 lib/SimpleSAML/Locale/Translate.php           |   70 -
 lib/SimpleSAML/Memcache.php                   |   37 +-
 .../Metadata/MetaDataStorageHandler.php       |    4 -
 .../MetaDataStorageHandlerFlatFile.php        |    1 -
 .../Metadata/MetaDataStorageHandlerPdo.php    |    5 -
 .../Metadata/MetaDataStorageHandlerXML.php    |   12 -
 .../Metadata/MetaDataStorageSource.php        |    5 +-
 lib/SimpleSAML/Metadata/SAMLBuilder.php       |    6 -
 lib/SimpleSAML/Metadata/SAMLParser.php        |  214 +-
 lib/SimpleSAML/Metadata/Sources/MDQ.php       |   42 +-
 lib/SimpleSAML/SessionHandler.php             |    1 -
 lib/SimpleSAML/SessionHandlerPHP.php          |    6 -
 lib/SimpleSAML/Stats.php                      |   10 +-
 lib/SimpleSAML/Stats/Output.php               |    1 +
 lib/SimpleSAML/Utilities.php                  |  870 -------
 lib/SimpleSAML/Utils/ClearableState.php       |    1 +
 lib/SimpleSAML/Utils/Config.php               |    1 -
 lib/SimpleSAML/Utils/Crypto.php               |   93 +-
 lib/SimpleSAML/Utils/HTTP.php                 |   12 +-
 lib/SimpleSAML/XHTML/IdPDisco.php             |    2 +-
 lib/SimpleSAML/XHTML/Template.php             |  222 --
 lib/SimpleSAML/XML/Shib13/AuthnRequest.php    |   91 -
 lib/SimpleSAML/XML/Shib13/AuthnResponse.php   |  528 ----
 lib/SimpleSAML/XML/Validator.php              |  277 ---
 lib/_autoload_modules.php                     |  130 -
 locales/ar/LC_MESSAGES/messages.po            |   22 +-
 locales/cs/LC_MESSAGES/messages.po            |   22 +-
 locales/da/LC_MESSAGES/messages.po            |   19 +-
 locales/de/LC_MESSAGES/messages.po            |   22 +-
 locales/el/LC_MESSAGES/messages.po            |   19 +-
 locales/en/LC_MESSAGES/messages.po            |   22 +-
 locales/es/LC_MESSAGES/messages.po            |   19 +-
 locales/et/LC_MESSAGES/messages.po            |   22 +-
 locales/eu/LC_MESSAGES/messages.po            |   22 +-
 locales/fr/LC_MESSAGES/messages.po            |   22 +-
 locales/he/LC_MESSAGES/messages.po            |   22 +-
 locales/hr/LC_MESSAGES/messages.po            |   22 +-
 locales/hu/LC_MESSAGES/messages.po            |   22 +-
 locales/id/LC_MESSAGES/messages.po            |   22 +-
 locales/it/LC_MESSAGES/messages.po            |   22 +-
 locales/ja/LC_MESSAGES/messages.po            |   19 +-
 locales/lt/LC_MESSAGES/messages.po            |   22 +-
 locales/lv/LC_MESSAGES/messages.po            |   22 +-
 locales/nb/LC_MESSAGES/messages.po            |   22 +-
 locales/nl/LC_MESSAGES/messages.po            |   19 +-
 locales/nn/LC_MESSAGES/messages.po            |   22 +-
 locales/pl/LC_MESSAGES/messages.po            |   15 -
 locales/pt-br/LC_MESSAGES/messages.po         |   22 +-
 locales/pt/LC_MESSAGES/messages.po            |   22 +-
 locales/ro/LC_MESSAGES/messages.po            |   22 +-
 locales/ru/LC_MESSAGES/messages.po            |   19 +-
 locales/sl/LC_MESSAGES/messages.po            |   22 +-
 locales/sr/LC_MESSAGES/messages.po            |   22 +-
 locales/sv/LC_MESSAGES/messages.po            |   22 +-
 locales/tr/LC_MESSAGES/messages.po            |   22 +-
 locales/zh-tw/LC_MESSAGES/messages.po         |   19 +-
 locales/zh/LC_MESSAGES/messages.po            |   22 +-
 metadata-templates/shib13-idp-hosted.php      |   26 -
 metadata-templates/shib13-idp-remote.php      |   16 -
 metadata-templates/shib13-sp-hosted.php       |   14 -
 metadata-templates/shib13-sp-remote.php       |   16 -
 modules/admin/lib/Controller/Config.php       |    1 -
 modules/admin/lib/Controller/Federation.php   |   50 -
 modules/admin/templates/config.twig           |    4 -
 modules/core/locales/ar/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/cs/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/da/LC_MESSAGES/core.po   |   11 -
 modules/core/locales/de/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/el/LC_MESSAGES/core.po   |   15 -
 modules/core/locales/en/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/es/LC_MESSAGES/core.po   |   11 -
 modules/core/locales/et/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/eu/LC_MESSAGES/core.po   |   11 -
 modules/core/locales/fi/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/fr/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/he/LC_MESSAGES/core.po   |   11 -
 modules/core/locales/hr/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/hu/LC_MESSAGES/core.po   |   15 -
 modules/core/locales/id/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/it/LC_MESSAGES/core.po   |   15 -
 modules/core/locales/ja/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/lb/LC_MESSAGES/core.po   |   11 -
 modules/core/locales/lt/LC_MESSAGES/core.po   |   15 -
 modules/core/locales/lv/LC_MESSAGES/core.po   |   11 -
 modules/core/locales/nb/LC_MESSAGES/core.po   |   11 -
 modules/core/locales/nl/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/nn/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/pl/LC_MESSAGES/core.po   |   13 -
 .../core/locales/pt-br/LC_MESSAGES/core.po    |   13 -
 modules/core/locales/pt/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/ro/LC_MESSAGES/core.po   |   15 -
 modules/core/locales/ru/LC_MESSAGES/core.po   |   13 -
 modules/core/locales/sl/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/sr/LC_MESSAGES/core.po   |   15 -
 modules/core/locales/sv/LC_MESSAGES/core.po   |    9 -
 modules/core/locales/tr/LC_MESSAGES/core.po   |   13 -
 .../core/locales/zh-tw/LC_MESSAGES/core.po    |    9 -
 modules/core/locales/zh/LC_MESSAGES/core.po   |    9 -
 modules/core/templates/frontpage_config.twig  |    4 -
 modules/core/www/authenticate.php             |    4 +-
 modules/core/www/cardinality_error.php        |    2 +-
 modules/core/www/frontpage_auth.php           |    2 +-
 modules/core/www/frontpage_config.php         |    3 +-
 modules/core/www/frontpage_federation.php     |   19 +-
 modules/core/www/frontpage_welcome.php        |    2 +-
 modules/core/www/idp/logout-iframe.php        |    2 +-
 modules/core/www/loginuserpass.php            |    2 +-
 modules/core/www/loginuserpassorg.php         |    2 +-
 modules/core/www/no_cookie.php                |    2 +-
 modules/core/www/postredirect.php             |    6 +-
 modules/core/www/short_sso_interval.php       |    2 +-
 modules/core/www/show_metadata.php            |    4 +-
 modules/cron/www/croninfo.php                 |    2 +-
 .../templates/authenticate.tpl.php            |   29 -
 modules/exampleauth/www/authpage.php          |    2 +-
 modules/multiauth/www/selectsource.php        |    2 +-
 modules/saml/docs/keyrollover.md              |    2 +-
 modules/saml/docs/sp.md                       |   15 +-
 modules/saml/lib/Auth/Source/SP.php           |   53 +-
 modules/saml/lib/IdP/SAML1.php                |  271 --
 modules/saml/lib/IdP/SAML2.php                |    2 -
 modules/saml/lib/Message.php                  |   24 -
 modules/saml/lib/SP/LogoutStore.php           |    1 -
 modules/saml/www/disco.php                    |    2 +-
 modules/saml/www/proxy/invalid_session.php    |    2 +-
 modules/saml/www/sp/metadata.php              |    2 +-
 modules/saml/www/sp/saml1-acs.php             |   96 -
 modules/saml/www/sp/saml2-acs.php             |    2 -
 modules/saml/www/sp/saml2-logout.php          |    1 -
 .../www/sp/wrong_authncontextclassref.php     |    2 +-
 phpunit.xml                                   |    2 +-
 psalm.xml                                     |    4 +-
 tests/SigningTestCase.php                     |    4 +-
 tests/Utils/ClearStateTestCase.php            |    6 +-
 tests/lib/AutoloadModulesTest.php             |   40 -
 .../SimpleSAML/Auth/TimeLimitedTokenTest.php  |   85 -
 tests/lib/SimpleSAML/ConfigurationTest.php    |   76 -
 tests/lib/SimpleSAML/DatabaseTest.php         |   28 +-
 .../SimpleSAML/Locale/LocalizationTest.php    |    2 +-
 tests/lib/SimpleSAML/Locale/TranslateTest.php |   19 -
 .../SimpleSAML/Metadata/SAMLBuilderTest.php   |   70 -
 .../SimpleSAML/Metadata/SAMLParserTest.php    |   94 -
 .../lib/SimpleSAML/SessionHandlerPHPTest.php  |   18 +-
 tests/lib/SimpleSAML/Store/RedisTest.php      |    9 +-
 tests/lib/SimpleSAML/Store/SQLTest.php        |    6 +-
 tests/lib/SimpleSAML/StoreTest.php            |    2 +-
 tests/lib/SimpleSAML/Utils/AttributesTest.php |   51 -
 tests/lib/SimpleSAML/Utils/CryptoTest.php     |  187 +-
 tests/lib/SimpleSAML/Utils/EMailTest.php      |    2 +-
 tests/lib/SimpleSAML/Utils/HTTPTest.php       |   30 +-
 tests/lib/SimpleSAML/Utils/SystemTest.php     |   19 +-
 tests/lib/SimpleSAML/Utils/TimeTest.php       |   24 -
 tests/lib/SimpleSAML/Utils/XMLTest.php        |    2 +-
 tests/lib/SimpleSAML/XML/ParserTest.php       |    2 +-
 .../XML/Shib13/AuthnResponseTest.php          |  124 -
 tests/lib/SimpleSAML/XML/SignerTest.php       |   16 +-
 tests/lib/SimpleSAML/XML/ValidatorTest.php    |  119 -
 .../lib/Auth/Process/AttributeLimitTest.php   |    2 +-
 .../Auth/Process/CardinalitySingleTest.php    |    4 +-
 .../core/lib/Auth/Process/CardinalityTest.php |   14 +-
 .../core/lib/Auth/UserPassBaseTest.php        |    9 -
 .../modules/core/lib/Controller/LoginTest.php |    2 +-
 .../lib/Storage/SQLPermanentStorageTest.php   |    4 +-
 .../lib/Auth/Source/MultiAuthTest.php         |    2 +-
 .../lib/Auth/Source/Auth_Source_SP_Test.php   |   11 +-
 tests/modules/saml/lib/IdP/SAML2Test.php      |    3 -
 tests/www/IndexTest.php                       |    4 +-
 tests/www/RouterTest.php                      |    2 +-
 www/admin/metadata-converter.php              |    2 -
 www/errorreport.php                           |    2 +-
 www/logout.php                                |    2 +-
 www/saml2/idp/metadata.php                    |    2 +-
 www/shib13/idp/SSOService.php                 |   23 -
 www/shib13/idp/metadata.php                   |  109 -
 202 files changed, 1506 insertions(+), 7436 deletions(-)
 delete mode 100644 lib/SimpleSAML/Auth/DefaultAuth.php
 delete mode 100644 lib/SimpleSAML/Auth/LDAP.php
 delete mode 100644 lib/SimpleSAML/Auth/TimeLimitedToken.php
 delete mode 100644 lib/SimpleSAML/Bindings/Shib13/Artifact.php
 delete mode 100644 lib/SimpleSAML/Bindings/Shib13/HTTPPost.php
 delete mode 100644 lib/SimpleSAML/Error/NoPassive.php
 delete mode 100644 lib/SimpleSAML/Error/ProxyCountExceeded.php
 delete mode 100644 lib/SimpleSAML/Utilities.php
 delete mode 100644 lib/SimpleSAML/XML/Shib13/AuthnRequest.php
 delete mode 100644 lib/SimpleSAML/XML/Shib13/AuthnResponse.php
 delete mode 100644 metadata-templates/shib13-idp-hosted.php
 delete mode 100644 metadata-templates/shib13-idp-remote.php
 delete mode 100644 metadata-templates/shib13-sp-hosted.php
 delete mode 100644 metadata-templates/shib13-sp-remote.php
 delete mode 100644 modules/exampleauth/templates/authenticate.tpl.php
 delete mode 100644 modules/saml/lib/IdP/SAML1.php
 delete mode 100644 modules/saml/www/sp/saml1-acs.php
 delete mode 100644 tests/lib/AutoloadModulesTest.php
 delete mode 100644 tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php
 delete mode 100644 tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php
 delete mode 100644 www/shib13/idp/SSOService.php
 delete mode 100644 www/shib13/idp/metadata.php

diff --git a/.appveyor.yml b/.appveyor.yml
index f61289ad6..492a83666 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 6bde92f3c..d5e68ae74 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 19c197da2..20266611c 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 9512ba875..2b9c14518 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 4d5e361b8..e54e4a73e 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 dc4280072..56c06aa93 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 4e42b7fe7..cf249bc2d 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 ddefac164..5dc6fa8ea 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 30cab4794..d74a04dbf 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 bb5ead1ac..a89c2c8af 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 3a6b47934..8291a610b 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 95b4eda3e..30059f2c8 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 423df7b37..fb71d24c0 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 1572e7975..45ddf79f6 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 b06ae0ef9..6a744a6e4 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 192868f31..000000000
--- 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 3977274e9..000000000
--- 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 468940c71..5ae89b31a 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 8622b987b..f3bf7cfeb 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 12b2096c7..000000000
--- 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 f1b6741c6..000000000
--- 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 82e491ad4..000000000
--- 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 7a58db7c3..c9c9f9082 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 ffa004f4e..1f0e87d97 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 5687adffd..000000000
--- 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 a92844f2e..000000000
--- 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 5590304f0..d91231183 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 b95fc62fe..6c7b2e7d5 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 4d441c21b..d8a77a749 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 84b5b83f4..196608bc7 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 c284deec7..292cdee7c 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 fb123fcb4..b1921c9a3 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 d6c08b0e9..27d185d7b 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 d1ae78c84..523b52e34 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 481572288..9a32daa8e 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 b066db742..392024ebf 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 458807880..7cb5b20d8 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 889b429e0..dea938b49 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 50498dcf4..df9fd6738 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 1952946d3..27fba38a8 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 281e35bb6..7bb0aa33d 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 7ac5a71ec..0fa1dbbda 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 ca5536a44..000000000
--- 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 5c90ccfc5..60550261e 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 6059ff35e..56fe3e044 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 c12519adb..425eb56a4 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 793718930..18a78cd67 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 8e9418798..b81df6870 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 4ceed77ea..b2404b826 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 ee16db4c3..000000000
--- 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 0d666a97f..000000000
--- 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 33c17bf23..f2f0ac1ab 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 3d7ca9184..621edabf0 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 45600f9e7..0017cd139 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 ca82ad8b3..eb77773b9 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 fa8cbc6b1..d6cf3cd58 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 a7dbdbf51..167f6fe9e 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 c0bc349fc..6c1e4cef5 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 eac57388e..f6edd046e 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 c6eb2c1f3..a9b3f9454 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 c4eb2f2a5..22e031c0e 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 83dc59ede..d37408c44 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 7e004a7c4..3e88b72bf 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 4983a25aa..4c65f1b09 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 0903bbbf6..29307a5e1 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 12c1bee66..3f6531b63 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 35c3a2a36..493e2f20b 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 3a5201192..4accd61b4 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 cc6d3fd36..782a677f5 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 05ce6bef7..ba00bcc3b 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 1ef6079ae..ba2133a36 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 26479a688..09858e939 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 9eed3f830..692a0d815 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 c22f8b668..9aac32e52 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 2a4dbb867..2c766cbbe 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 351ea0525..2a26fedb0 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 48cdd4f95..2add121d3 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 864bffb1d..af699cecc 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 f71ee414f..6dc35b848 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 130a27562..2d320d422 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 eec871b97..3b63b99ff 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 c090e00df..a5e374ca0 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 b882653da..dfb51e191 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 00b2748d0..ad3f1b19b 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 93b138bca..f78ef546a 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 dc6c9e0a9..000000000
--- 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 9aa6f0e64..000000000
--- 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 15a275a38..000000000
--- 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 b2fb1d8e0..000000000
--- 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 445ff8c23..ad94e0df7 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 93f0eeab3..6b6e0ca37 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 017b653ee..0fddf8fdb 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 84c0fc10c..6aab0ba6e 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 0c5a0b5c6..1d27e4a80 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 ed0dbe54c..7b48446e5 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 c6648ced4..4a53b4779 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 a2f7c1563..36d11b41c 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 b7c59dcf4..6abe03ef7 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 44ad5e2ef..4950c2496 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 0e39b15ba..699b09bf9 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 d979950a1..7337f6243 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 729b867ca..7c7b1d618 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 188d437f3..2178bffee 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 ea53dbbe1..af76673a8 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 4e0311f3d..c6b0ff417 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 2304e086d..e4363a422 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 75646d0a5..3dc63134e 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 555f86a8e..207a29513 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 95736ce65..d9f42d940 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 da87760a7..55cdbde96 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 aa83f7aaa..53bc9acb3 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 61743892b..36c334aeb 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 c10d9d2e5..c72b207ab 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 425e4712d..be8f20c20 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 368dd7e76..54942f81d 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 fadeeb468..1a461afe2 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 271528eb1..2d1b13141 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 599cf95aa..4ead99e9b 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 ead982bb2..9ebf3a698 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 699936c8d..328dbe2de 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 802a6f38c..389cc14db 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 9f7a9ea20..d064999dd 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 6adaceec5..20bc0f764 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 fd7f6435d..4aef1be2d 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 24d8ebbbf..3e27847d1 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 f883464c2..e74b5a0f3 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 c0fb87b95..74ac7c8a5 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 62ab03fc8..680ece576 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 cb76a072e..135493d50 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 a3bf112e1..cd6546f13 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 1cfba39f5..8243fae64 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 c33528b2f..66e896841 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 4dfb4fef1..22dc2d9f3 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 80f94cca9..442b26bd0 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 5655b67ce..27e432716 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 fd65a15db..be63c72bb 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 7ae3889d6..c2ff054fa 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 b5d08eeb0..07bac08e8 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 919210f53..2659471c1 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 ffad6572b..d9dd9ffdc 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 289dfe2c8..1c9ec0da2 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 fd112ff59..000000000
--- 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 795a13cba..b4b4b4458 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 2038e3087..6d7e5d97d 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 0fd99fc82..7a23448be 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 45da3fb1a..2579f27a3 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 e9ebaa259..91f2bd24b 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 5b2eeb226..000000000
--- 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 664bcf6f5..48403c62b 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 fe047d955..7027e4f7e 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 9123eadd0..8b941acd9 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 b7d06c454..93d8f68bb 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 3b9c09610..3a3d3b886 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 b13d86fed..e32b1d34b 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 34ca9ece6..000000000
--- 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 11a17bf4d..1f7e60313 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 9b756d8d6..76661b3eb 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 9cb93bf70..5c81d73e5 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 878768a43..84dc59b00 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 1cdd446a5..065e7d06b 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 75ff8c43d..e6b279f5c 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 aeed53ab7..0abe90fa4 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 57f26304f..000000000
--- 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 d955c552f..000000000
--- 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 528709ccb..63f59f9d3 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 47c253b60..eea953043 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 12b036eae..914dbc248 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 1e6cef3c3..3ff26ff0c 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 fe5e3fcb3..2c9b74d98 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 b538cafde..279990d53 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 c0b71a489..ff47cd55a 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 44ab5215e..915934493 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 a2ebb848e..485cd2729 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 672b4b205..1b4cfd1e6 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 42ae15c35..c82219829 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 f0d28123b..122728ce7 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 a7762655a..8dc6598b2 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 977fde1ca..4ee68e5f9 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 de126d6b9..5e60aa292 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 03f4e72a5..13817d424 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 7eb3a7919..7a552424f 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 ae5a978ae..aa709273f 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 a387c9e93..000000000
--- 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 a2d157659..b33837014 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 67a71d237..c182cd889 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 b79b7131a..5b43c5735 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 62de2e872..8c56658eb 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 03cb6aab3..7716ef151 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 62755411a..79b1ce777 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 2b003b363..9cfafbc0b 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 1f19058f8..892c5b039 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 635633037..bbed66267 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 f9604be60..2e8838611 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 b2bcd5ab5..664373b9c 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 3fe984c20..09b92554c 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 0d60eed6d..50f8a4dad 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 83837409d..f9d0ffd91 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 1c8071305..acfc317ef 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 97c7d2b41..78f0e33a1 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 4ba2fa1d8..1c7983a63 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 d99365867..000000000
--- 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 d8063b444..000000000
--- 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);
-}
-- 
GitLab